1 |
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],t):t((e=e||self).Potree={},e.THREE$2)}(this,function(W,Le){"use strict";function u(e,t){this.v=e,this.k=t}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function o(e){if(Array.isArray(e))return e}function c(e){var t,n,i,r=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,i=Symbol.iterator);r--;){if(n&&null!=(t=e[n]))return t.call(e);if(i&&null!=(t=e[i]))return new s(t.call(e));n="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}function s(e){function n(e){var t;return Object(e)!==e?Promise.reject(new TypeError(e+" is not an object.")):(t=e.done,Promise.resolve(e.value).then(function(e){return{value:e,done:t}}))}return(s=function(e){this.s=e,this.n=e.next}).prototype={s:null,n:null,next:function(){return n(this.n.apply(this.s,arguments))},return:function(e){var t=this.s.return;return void 0===t?Promise.resolve({value:e,done:!0}):n(t.apply(this.s,arguments))},throw:function(e){var t=this.s.return;return void 0===t?Promise.reject(e):n(t.apply(this.s,arguments))}},new s(e)}function d(e,t,n,i,r,a,o){try{var s=e[a](o),l=s.value}catch(e){return n(e)}s.done?t(l):Promise.resolve(l).then(i,r)}function J(s){return function(){var e=this,o=arguments;return new Promise(function(t,n){var i=s.apply(e,o);function r(e){d(i,t,n,r,a,"next",e)}function a(e){d(i,t,n,r,a,"throw",e)}r(void 0)})}}function h(e){return new u(e,0)}function le(e,t,n){return t=m(t),S(e,y()?Reflect.construct(t,n||[],m(e).constructor):t.apply(e,n))}function ue(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ie(e,t,n){var i;return y()?Reflect.construct.apply(null,arguments):((i=[null]).push.apply(i,t),t=new(e.bind.apply(e,i)),n&&_(t,n.prototype),t)}function p(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,L(i.key),i)}}function A(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function q(e,t){var n,i,r,a,o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(o)return r=!(i=!0),{s:function(){o=o.call(e)},n:function(){var e=o.next();return i=e.done,e},e:function(e){r=!0,n=e},f:function(){try{i||null==o.return||o.return()}finally{if(r)throw n}}};if(Array.isArray(e)||(o=z(e))||t&&e&&"number"==typeof e.length)return o&&(e=o),a=0,{s:t=function(){},n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Y(e,t,n){return(t=L(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(){return(f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=P(e,t);if(i)return(i=Object.getOwnPropertyDescriptor(i,t)).get?i.get.call(arguments.length<3?e:n):i.value}).apply(null,arguments)}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_(e,t)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function w(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function E(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function C(t,e){var n,i=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)),i}function g(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?C(Object(n),!0).forEach(function(e){Y(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function S(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");t=e;if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function X(){X=function(){return o};var l,o={},e=Object.prototype,u=e.hasOwnProperty,c=Object.defineProperty||function(e,t,n){e[t]=n.value},t="function"==typeof Symbol?Symbol:{},i=t.iterator||"@@iterator",n=t.asyncIterator||"@@asyncIterator",r=t.toStringTag||"@@toStringTag";function a(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{a({},"")}catch(l){a=function(e,t,n){return e[t]=n}}function s(e,t,n,i){var r,a,o,s,t=t&&t.prototype instanceof g?t:g,t=Object.create(t.prototype),i=new M(i||[]);return c(t,"_invoke",{value:(r=e,a=n,o=i,s=h,function(e,t){if(s===f)throw Error("Generator is already running");if(s===m){if("throw"===e)throw t;return{value:l,done:!0}}for(o.method=e,o.arg=t;;){var n=o.delegate;if(n){n=function e(t,n){var i=n.method,r=t.iterator[i];if(r===l)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=l,e(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),v;i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;r=i.arg;return r?r.done?(n[t.resultName]=r.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=l),n.delegate=null,v):r:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}(n,o);if(n){if(n===v)continue;return n}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(s===h)throw s=m,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);s=f;n=d(r,a,o);if("normal"===n.type){if(s=o.done?m:p,n.arg===v)continue;return{value:n.arg,done:o.done}}"throw"===n.type&&(s=m,o.method="throw",o.arg=n.arg)}})}),t}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}o.wrap=s;var h="suspendedStart",p="suspendedYield",f="executing",m="completed",v={};function g(){}function A(){}function y(){}var t={},w=(a(t,i,function(){return this}),Object.getPrototypeOf),w=w&&w(w(S([]))),b=(w&&w!==e&&u.call(w,i)&&(t=w),y.prototype=g.prototype=Object.create(t));function x(e){["next","throw","return"].forEach(function(t){a(e,t,function(e){return this._invoke(t,e)})})}function E(o,s){var t;c(this,"_invoke",{value:function(n,i){function e(){return new s(function(e,t){!function t(e,n,i,r){var a,e=d(o[e],o,n);if("throw"!==e.type)return(n=(a=e.arg).value)&&"object"==typeof n&&u.call(n,"__await")?s.resolve(n.__await).then(function(e){t("next",e,i,r)},function(e){t("throw",e,i,r)}):s.resolve(n).then(function(e){a.value=e,i(a)},function(e){return t("throw",e,i,r)});r(e.arg)}(n,i,e,t)})}return t=t?t.then(e,e):e()}})}function C(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function B(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function S(t){if(t||""===t){var n,e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return n=-1,(e=function e(){for(;++n<t.length;)if(u.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=l,e.done=!0,e}).next=e}throw new TypeError(typeof t+" is not iterable")}return c(b,"constructor",{value:A.prototype=y,configurable:!0}),c(y,"constructor",{value:A,configurable:!0}),A.displayName=a(y,r,"GeneratorFunction"),o.isGeneratorFunction=function(e){e="function"==typeof e&&e.constructor;return!!e&&(e===A||"GeneratorFunction"===(e.displayName||e.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,a(e,r,"GeneratorFunction")),e.prototype=Object.create(b),e},o.awrap=function(e){return{__await:e}},x(E.prototype),a(E.prototype,n,function(){return this}),o.AsyncIterator=E,o.async=function(e,t,n,i,r){void 0===r&&(r=Promise);var a=new E(s(e,t,n,i),r);return o.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},x(b),a(b,r,"Generator"),a(b,i,function(){return this}),a(b,"toString",function(){return"[object Generator]"}),o.keys=function(e){var t,n=Object(e),i=[];for(t in n)i.push(t);return i.reverse(),function e(){for(;i.length;){var t=i.pop();if(t in n)return e.value=t,e.done=!1,e}return e.done=!0,e}},o.values=S,M.prototype={constructor:M,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(B),!e)for(var t in this)"t"===t.charAt(0)&&u.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=l)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var i=this;function e(e,t){return a.type="throw",a.arg=n,i.next=e,t&&(i.method="next",i.arg=l),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t],a=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=u.call(r,"catchLoc"),s=u.call(r,"finallyLoc");if(o&&s){if(this.prev<r.catchLoc)return e(r.catchLoc,!0);if(this.prev<r.finallyLoc)return e(r.finallyLoc)}else if(o){if(this.prev<r.catchLoc)return e(r.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return e(r.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;0<=n;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&u.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}var a=(r=r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc?null:r)?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,v):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),B(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n,i,r=this.tryEntries[t];if(r.tryLoc===e)return"throw"===(n=r.completion).type&&(i=n.arg,B(r)),i}throw Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=l),v}},o}function T(e,t,n,i){return(T="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(e,t,n,i){var r,e=P(e,t);if(e){if((r=Object.getOwnPropertyDescriptor(e,t)).set)return r.set.call(i,n),!0;if(!r.writable)return!1}if(r=Object.getOwnPropertyDescriptor(i,t)){if(!r.writable)return!1;r.value=n,Object.defineProperty(i,t,r)}else Y(i,t,n);return!0})(e,t,n,i)}function _(e,t){return(_=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function U(e,t){return o(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){u=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw r}}return s}}(e,t)||z(e,t)||E()}function P(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=m(e)););return e}function I(e,t,n,i){var r=f(m(1&i?e.prototype:e),t,n);return 2&i?function(e){return r.apply(n,e)}:r}function k(e,t,n,i,r,a){a=m(a?e.prototype:e),e=n,n=r;if(!T(a,t,e,i||a)&&n)throw new TypeError("failed to set property")}function Fe(e){return function(e){if(Array.isArray(e))return i(e)}(e)||w(e)||z(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function L(e){e=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);if("object"!=typeof(n=n.call(e,t||"default")))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:e+""}function O(e){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function z(e,t){var n;if(e)return"string"==typeof e?i(e,t):"Map"===(n="Object"===(n={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}function G(e){return function(){return new re(e.apply(this,arguments))}}function re(o){var r,a;function s(n,e){try{var i=o[n](e),r=i.value,a=r instanceof u;Promise.resolve(a?r.v:r).then(function(e){if(a){var t="return"===n?"return":"next";if(!r.k||e.done)return s(t,e);e=o[t](e).value}l(i.done?"return":"normal",e)},function(e){s("throw",e)})}catch(e){l("throw",e)}}function l(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?s(r.key,r.arg):a=null}this._invoke=function(n,i){return new Promise(function(e,t){e={key:n,arg:i,resolve:e,reject:t,next:null};a?a=a.next=e:(r=a=e,s(n,i))})},"function"!=typeof o.return&&(this.return=void 0)}function ae(e){var n="function"==typeof Map?new Map:void 0;return function(e){if(null===e||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return ie(e,arguments,m(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),_(t,e)}(e)}re.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},re.prototype.next=function(e){return this._invoke("next",e)},re.prototype.throw=function(e){return this._invoke("throw",e)},re.prototype.return=function(e){return this._invoke("return",e)};var oe={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},se=0,ce=1,de=2,he=1,pe=3,fe=0,me=1,ve=2,ge=0,Ae=1,ye=2,we=3,be=4,xe=5,Ee=100,Ce=101,Te=102,_e=103,Pe=104,De=200,Ie=201,ke=202,Ne=203,ze=204,Ge=205,He=206,Ve=207,Qe=208,je=209,We=210,Je=0,qe=1,Ye=2,Xe=3,Ke=4,Ze=5,$e=6,et=7,tt=0,nt=0,it=301,rt=302,at=303,ot=304,st=306,lt=307,ut=1e3,ct=1001,dt=1002,ht=1003,pt=1004,ft=1005,N=1006,mt=1007,vt=1008,gt=1008,At=1009,yt=1010,wt=1011,bt=1012,xt=1013,Et=1014,Ct=1015,Bt=1016,Mt=1017,St=1018,Tt=1019,_t=1020,Pt=1021,Dt=1022,It=1023,kt=1024,Rt=1025,Lt=It,Ft=1026,Ot=1027,Ut=1028,Nt=1029,zt=1030,Gt=1031,Ht=1032,Vt=1033,Qt=33776,jt=33777,Wt=33778,Jt=33779,qt=35840,Yt=35841,Xt=35842,Kt=35843,Zt=36196,$t=37492,en=37496,tn=37808,nn=37809,rn=37810,an=37811,on=37812,sn=37813,ln=37814,un=37815,cn=37816,dn=37817,hn=37818,pn=37819,fn=37820,mn=37821,vn=36492,gn=37840,An=37841,yn=37842,wn=37843,bn=37844,xn=37845,En=37846,Cn=37847,Bn=37848,Mn=37849,Sn=37850,Tn=37851,_n=37852,Pn=37853,Dn=2300,In=2301,kn=2400,Rn=2401,Ln=2402,Fn=3e3,On=3001,Un=3201,Nn=0,zn=1,Gn=35044,Hn=35048,Vn="300 es";function Qn(){}Object.assign(Qn.prototype,{addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)},hasEventListener:function(e,t){var n;return void 0!==this._listeners&&void 0!==(n=this._listeners)[e]&&-1!==n[e].indexOf(t)},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;for(var n=t.slice(0),i=0,r=n.length;i<r;i++)n[i].call(this,e)}}}});for(var jn=[],Wn=0;Wn<256;Wn++)jn[Wn]=(Wn<16?"0":"")+Wn.toString(16);var Jn,qn=1234567,Be={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){var e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(jn[255&e]+jn[e>>8&255]+jn[e>>16&255]+jn[e>>24&255]+"-"+jn[255&t]+jn[t>>8&255]+"-"+jn[t>>16&15|64]+jn[t>>24&255]+"-"+jn[63&n|128]+jn[n>>8&255]+"-"+jn[n>>16&255]+jn[n>>24&255]+jn[255&i]+jn[i>>8&255]+jn[i>>16&255]+jn[i>>24&255]).toUpperCase()},clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:n<=e?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:n<=e?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){return((qn=16807*(qn=void 0!==e?e%2147483647:qn)%2147483647)-1)/2147483646},degToRad:function(e){return e*Be.DEG2RAD},radToDeg:function(e){return e*Be.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){var a=Math.cos,o=Math.sin,s=a(n/2),l=o(n/2),u=a((t+i)/2),c=o((t+i)/2),d=a((t-i)/2),h=o((t-i)/2),p=a((i-t)/2),f=o((i-t)/2);switch(r){case"XYX":e.set(s*c,l*d,l*h,s*u);break;case"YZY":e.set(l*h,s*c,l*d,s*u);break;case"ZXZ":e.set(l*d,l*h,s*c,s*u);break;case"XZX":e.set(s*c,l*f,l*p,s*u);break;case"YXY":e.set(l*p,s*c,l*f,s*u);break;case"ZYZ":e.set(l*f,l*p,s*c,s*u);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}},Re=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;ue(this,e),Object.defineProperty(this,"isVector2",{value:!0}),this.x=t,this.y=n},[{key:"width",get:function(){return this.x},set:function(e){this.x=e}},{key:"height",get:function(){return this.y},set:function(e){this.y=e}},{key:"set",value:function(e,t){return this.x=e,this.y=t,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}},{key:"multiply",value:function(e){return this.x*=e.x,this.y*=e.y,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"applyMatrix3",value:function(e){var t=this.x,n=this.y,e=e.elements;return this.x=e[0]*t+e[3]*n+e[6],this.y=e[1]*t+e[4]*n+e[7],this}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y}},{key:"cross",value:function(e){return this.x*e.y-this.y*e.x}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"angle",value:function(){return Math.atan2(-this.y,-this.x)+Math.PI}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,e=this.y-e.y;return t*t+e*e}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}},{key:"rotateAround",value:function(e,t){var n=Math.cos(t),t=Math.sin(t),i=this.x-e.x,r=this.y-e.y;return this.x=i*n-r*t+e.x,this.y=i*t+r*n+e.y,this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this}}])}(),Yn=function(){return A(function e(){ue(this,e),Object.defineProperty(this,"isMatrix3",{value:!0}),this.elements=[1,0,0,0,1,0,0,0,1],0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},[{key:"set",value:function(e,t,n,i,r,a,o,s,l){var u=this.elements;return u[0]=e,u[1]=i,u[2]=o,u[3]=t,u[4]=r,u[5]=s,u[6]=n,u[7]=a,u[8]=l,this}},{key:"identity",value:function(){return this.set(1,0,0,0,1,0,0,0,1),this}},{key:"clone",value:function(){return(new this.constructor).fromArray(this.elements)}},{key:"copy",value:function(e){var t=this.elements,e=e.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this}},{key:"extractBasis",value:function(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}},{key:"setFromMatrix4",value:function(e){e=e.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}},{key:"multiply",value:function(e){return this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var e=e.elements,t=t.elements,n=this.elements,i=e[0],r=e[3],a=e[6],o=e[1],s=e[4],l=e[7],u=e[2],c=e[5],e=e[8],d=t[0],h=t[3],p=t[6],f=t[1],m=t[4],v=t[7],g=t[2],A=t[5],t=t[8];return n[0]=i*d+r*f+a*g,n[3]=i*h+r*m+a*A,n[6]=i*p+r*v+a*t,n[1]=o*d+s*f+l*g,n[4]=o*h+s*m+l*A,n[7]=o*p+s*v+l*t,n[2]=u*d+c*f+e*g,n[5]=u*h+c*m+e*A,n[8]=u*p+c*v+e*t,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],e=e[8];return t*a*e-t*o*l-n*r*e+n*o*s+i*r*l-i*a*s}},{key:"invert",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=u*a-o*l,d=o*s-u*r,h=l*r-a*s,p=t*c+n*d+i*h;return 0==p?this.set(0,0,0,0,0,0,0,0,0):(e[0]=c*(c=1/p),e[1]=(i*l-u*n)*c,e[2]=(o*n-i*a)*c,e[3]=d*c,e[4]=(u*t-i*s)*c,e[5]=(i*r-o*t)*c,e[6]=h*c,e[7]=(n*s-l*t)*c,e[8]=(a*t-n*r)*c,this)}},{key:"transpose",value:function(){var e=this.elements,t=e[1];return 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}},{key:"getNormalMatrix",value:function(e){return this.setFromMatrix4(e).copy(this).invert().transpose()}},{key:"transposeIntoArray",value:function(e){var t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}},{key:"setUvTransform",value:function(e,t,n,i,r,a,o){var s=Math.cos(r),r=Math.sin(r);return this.set(n*s,n*r,-n*(s*a+r*o)+a+e,-i*r,i*s,-i*(-r*a+s*o)+o+t,0,0,1),this}},{key:"scale",value:function(e,t){var n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}},{key:"rotate",value:function(e){var t=Math.cos(e),e=Math.sin(e),n=this.elements,i=n[0],r=n[3],a=n[6],o=n[1],s=n[4],l=n[7];return n[0]=t*i+e*o,n[3]=t*r+e*s,n[6]=t*a+e*l,n[1]=-e*i+t*o,n[4]=-e*r+t*s,n[7]=-e*a+t*l,this}},{key:"translate",value:function(e,t){var n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}},{key:"equals",value:function(e){for(var t=this.elements,n=e.elements,i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<9;n++)this.elements[n]=e[n+t];return this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}}])}(),Xn={getDataURL:function(e){var t;return/^data:/i.test(e.src)||"undefined"==typeof HTMLCanvasElement?e.src:2048<(t=e instanceof HTMLCanvasElement?e:((Jn=void 0===Jn?document.createElementNS("http://www.w3.org/1999/xhtml","canvas"):Jn).width=e.width,Jn.height=e.height,t=Jn.getContext("2d"),e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),Jn)).width||2048<t.height?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}},Kn=0;function Zn(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Zn.DEFAULT_IMAGE,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Zn.DEFAULT_MAPPING,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:ct,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:ct,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:N,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:vt,o=6<arguments.length&&void 0!==arguments[6]?arguments[6]:It,s=7<arguments.length&&void 0!==arguments[7]?arguments[7]:At,l=8<arguments.length&&void 0!==arguments[8]?arguments[8]:1,u=9<arguments.length&&void 0!==arguments[9]?arguments[9]:Fn;Object.defineProperty(this,"id",{value:Kn++}),this.uuid=Be.generateUUID(),this.name="",this.image=e,this.mipmaps=[],this.mapping=t,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=s,this.offset=new Re(0,0),this.repeat=new Re(1,1),this.center=new Re(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Yn,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=u,this.version=0,this.onUpdate=null}function $n(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?Xn.getDataURL(e):e.data?{data:Array.prototype.slice.call(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}Zn.DEFAULT_IMAGE=void 0,Zn.DEFAULT_MAPPING=300,Zn.prototype=Object.assign(Object.create(Qn.prototype),{constructor:Zn,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this},toJSON:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];var n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){var i=this.image;if(void 0===i.uuid&&(i.uuid=Be.generateUUID()),!t&&void 0===e.images[i.uuid]){if(Array.isArray(i))for(var r=[],a=0,o=i.length;a<o;a++)i[a].isDataTexture?r.push($n(i[a].image)):r.push($n(i[a]));else r=$n(i);e.images[i.uuid]={uuid:i.uuid,url:r}}n.image=i.uuid}return t||(e.textures[this.uuid]=n),n},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(e){if(300===this.mapping){if(e.applyMatrix3(this.matrix),e.x<0||1<e.x)switch(this.wrapS){case ut:e.x=e.x-Math.floor(e.x);break;case ct:e.x=e.x<0?0:1;break;case dt:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||1<e.y)switch(this.wrapT){case ut:e.y=e.y-Math.floor(e.y);break;case ct:e.y=e.y<0?0:1;break;case dt:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}this.flipY&&(e.y=1-e.y)}return e}}),Object.defineProperty(Zn.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}});var ei=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;ue(this,e),Object.defineProperty(this,"isVector4",{value:!0}),this.x=t,this.y=n,this.z=i,this.w=r},[{key:"width",get:function(){return this.z},set:function(e){this.z=e}},{key:"height",get:function(){return this.w},set:function(e){this.w=e}},{key:"set",value:function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setW",value:function(e){return this.w=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z,this.w)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}},{key:"applyMatrix4",value:function(e){var t=this.x,n=this.y,i=this.z,r=this.w,e=e.elements;return this.x=e[0]*t+e[4]*n+e[8]*i+e[12]*r,this.y=e[1]*t+e[5]*n+e[9]*i+e[13]*r,this.z=e[2]*t+e[6]*n+e[10]*i+e[14]*r,this.w=e[3]*t+e[7]*n+e[11]*i+e[15]*r,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"setAxisAngleFromQuaternion",value:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}},{key:"setAxisAngleFromRotationMatrix",value:function(e){var t,n,i,r,a,o,s,l,u,c,e=e.elements,d=e[0],h=e[4],p=e[8],f=e[1],m=e[5],v=e[9],g=e[2],A=e[6],e=e[10];return Math.abs(h-f)<.01&&Math.abs(p-g)<.01&&Math.abs(v-A)<.01?Math.abs(h+f)<.1&&Math.abs(p+g)<.1&&Math.abs(v+A)<.1&&Math.abs(d+m+e-3)<.1?this.set(1,0,0,0):(r=Math.PI,o=(e+1)/2,s=(h+f)/4,l=(p+g)/4,u=(v+A)/4,(a=(m+1)/2)<(c=(d+1)/2)&&o<c?i=c<.01?(t=0,n=.707106781):(n=s/(t=Math.sqrt(c)),l/t):o<a?i=a<.01?(n=0,t=.707106781):(t=s/(n=Math.sqrt(a)),u/n):o<.01?(n=t=.707106781,i=0):(t=l/(i=Math.sqrt(o)),n=u/i),this.set(t,n,i,r)):(c=Math.sqrt((A-v)*(A-v)+(p-g)*(p-g)+(f-h)*(f-h)),Math.abs(c)<.001&&(c=1),this.x=(A-v)/c,this.y=(p-g)/c,this.z=(f-h)/c,this.w=Math.acos((d+m+e-1)/2)),this}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){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}},{key:"ceil",value:function(){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}},{key:"round",value:function(){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}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}}])}();function ti(e,t,n){this.width=e,this.height=t,this.scissor=new ei(0,0,e,t),this.scissorTest=!1,this.viewport=new ei(0,0,e,t),this.texture=new Zn(void 0,(n=n||{}).mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:N,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0!==n.stencilBuffer&&n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function ni(e,t,n){ti.call(this,e,t,n),this.samples=4}ti.prototype=Object.assign(Object.create(Qn.prototype),{constructor:ti,isWebGLRenderTarget:!0,setSize:function(e,t){this.width===e&&this.height===t||(this.width=e,this.height=t,this.texture.image.width=e,this.texture.image.height=t,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.width=e.width,this.height=e.height,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),ni.prototype=Object.assign(Object.create(ti.prototype),{constructor:ni,isWebGLMultisampleRenderTarget:!0,copy:function(e){return ti.prototype.copy.call(this,e),this.samples=e.samples,this}});var ii=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;ue(this,e),Object.defineProperty(this,"isQuaternion",{value:!0}),this._x=t,this._y=n,this._z=i,this._w=r},[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"w",get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}},{key:"set",value:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._w)}},{key:"copy",value:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}},{key:"setFromEuler",value:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=e._x,i=e._y,r=e._z,a=e._order,e=Math.cos,o=Math.sin,s=e(n/2),l=e(i/2),u=e(r/2),c=o(n/2),d=o(i/2),h=o(r/2);switch(a){case"XYZ":this._x=c*l*u+s*d*h,this._y=s*d*u-c*l*h,this._z=s*l*h+c*d*u,this._w=s*l*u-c*d*h;break;case"YXZ":this._x=c*l*u+s*d*h,this._y=s*d*u-c*l*h,this._z=s*l*h-c*d*u,this._w=s*l*u+c*d*h;break;case"ZXY":this._x=c*l*u-s*d*h,this._y=s*d*u+c*l*h,this._z=s*l*h+c*d*u,this._w=s*l*u-c*d*h;break;case"ZYX":this._x=c*l*u-s*d*h,this._y=s*d*u+c*l*h,this._z=s*l*h-c*d*u,this._w=s*l*u+c*d*h;break;case"YZX":this._x=c*l*u+s*d*h,this._y=s*d*u+c*l*h,this._z=s*l*h-c*d*u,this._w=s*l*u-c*d*h;break;case"XZY":this._x=c*l*u-s*d*h,this._y=s*d*u-c*l*h,this._z=s*l*h+c*d*u,this._w=s*l*u+c*d*h;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==t&&this._onChangeCallback(),this}},{key:"setFromAxisAngle",value:function(e,t){var t=t/2,n=Math.sin(t);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(t),this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e){var e=e.elements,t=e[0],n=e[4],i=e[8],r=e[1],a=e[5],o=e[9],s=e[2],l=e[6],e=e[10],u=t+a+e;return 0<u?(u=.5/Math.sqrt(u+1),this._w=.25/u,this._x=(l-o)*u,this._y=(i-s)*u,this._z=(r-n)*u):a<t&&e<t?(u=2*Math.sqrt(1+t-a-e),this._w=(l-o)/u,this._x=.25*u,this._y=(n+r)/u,this._z=(i+s)/u):e<a?(u=2*Math.sqrt(1+a-t-e),this._w=(i-s)/u,this._x=(n+r)/u,this._y=.25*u,this._z=(o+l)/u):(u=2*Math.sqrt(1+e-t-a),this._w=(r-n)/u,this._x=(i+s)/u,this._y=(o+l)/u,this._z=.25*u),this._onChangeCallback(),this}},{key:"setFromUnitVectors",value:function(e,t){var n=e.dot(t)+1;return n<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=n,this.normalize()}},{key:"angleTo",value:function(e){return 2*Math.acos(Math.abs(Be.clamp(this.dot(e),-1,1)))}},{key:"rotateTowards",value:function(e,t){var n=this.angleTo(e);return 0!==n&&(t=Math.min(1,t/n),this.slerp(e,t)),this}},{key:"identity",value:function(){return this.set(0,0,0,1)}},{key:"invert",value:function(){return this.conjugate()}},{key:"conjugate",value:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}},{key:"dot",value:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}},{key:"lengthSq",value:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}},{key:"length",value:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}},{key:"normalize",value:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(this._x=this._x*(e=1/e),this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}},{key:"premultiply",value:function(e){return this.multiplyQuaternions(e,this)}},{key:"multiplyQuaternions",value:function(e,t){var n=e._x,i=e._y,r=e._z,e=e._w,a=t._x,o=t._y,s=t._z,t=t._w;return this._x=n*t+e*a+i*s-r*o,this._y=i*t+e*o+r*a-n*s,this._z=r*t+e*s+n*o-i*a,this._w=e*t-n*a-i*o-r*s,this._onChangeCallback(),this}},{key:"slerp",value:function(e,t){if(0!==t){if(1===t)return this.copy(e);var n,i=this._x,r=this._y,a=this._z,o=this._w,s=o*e._w+i*e._x+r*e._y+a*e._z;s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),1<=s?(this._w=o,this._x=i,this._y=r,this._z=a):((e=1-s*s)<=Number.EPSILON?(this._w=(n=1-t)*o+t*this._w,this._x=n*i+t*this._x,this._y=n*r+t*this._y,this._z=n*a+t*this._z,this.normalize()):(n=Math.sqrt(e),e=Math.atan2(n,s),s=Math.sin((1-t)*e)/n,t=Math.sin(t*e)/n,this._w=o*s+this._w*t,this._x=i*s+this._x*t,this._y=r*s+this._y*t,this._z=a*s+this._z*t),this._onChangeCallback())}return this}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}},{key:"fromBufferAttribute",value:function(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}}],[{key:"slerp",value:function(e,t,n,i){return n.copy(e).slerp(t,i)}},{key:"slerpFlat",value:function(e,t,n,i,r,a,o){var s,l,u,c=n[i+0],d=n[i+1],h=n[i+2],n=n[i+3],i=r[a+0],p=r[a+1],f=r[a+2],r=r[a+3];n===r&&c===i&&d===p&&h===f||(a=1-o,s=0<=(l=c*i+d*p+h*f+n*r)?1:-1,(u=1-l*l)>Number.EPSILON&&(u=Math.sqrt(u),l=Math.atan2(u,l*s),a=Math.sin(a*l)/u,o=Math.sin(o*l)/u),c=c*a+i*(l=o*s),d=d*a+p*l,h=h*a+f*l,n=n*a+r*l,a===1-o&&(c*=u=1/Math.sqrt(c*c+d*d+h*h+n*n),d*=u,h*=u,n*=u)),e[t]=c,e[t+1]=d,e[t+2]=h,e[t+3]=n}},{key:"multiplyQuaternionsFlat",value:function(e,t,n,i,r,a){var o=n[i],s=n[i+1],l=n[i+2],n=n[i+3],i=r[a],u=r[a+1],c=r[a+2],r=r[a+3];return e[t]=o*r+n*i+s*c-l*u,e[t+1]=s*r+n*u+l*i-o*c,e[t+2]=l*r+n*c+o*u-s*i,e[t+3]=n*r-o*i-s*u-l*c,e}}])}(),Oe=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;ue(this,e),Object.defineProperty(this,"isVector3",{value:!0}),this.x=t,this.y=n,this.z=i},[{key:"set",value:function(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this}},{key:"multiplyVectors",value:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}},{key:"applyEuler",value:function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(ai.setFromEuler(e))}},{key:"applyAxisAngle",value:function(e,t){return this.applyQuaternion(ai.setFromAxisAngle(e,t))}},{key:"applyMatrix3",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements;return this.x=e[0]*t+e[3]*n+e[6]*i,this.y=e[1]*t+e[4]*n+e[7]*i,this.z=e[2]*t+e[5]*n+e[8]*i,this}},{key:"applyNormalMatrix",value:function(e){return this.applyMatrix3(e).normalize()}},{key:"applyMatrix4",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements,r=1/(e[3]*t+e[7]*n+e[11]*i+e[15]);return this.x=(e[0]*t+e[4]*n+e[8]*i+e[12])*r,this.y=(e[1]*t+e[5]*n+e[9]*i+e[13])*r,this.z=(e[2]*t+e[6]*n+e[10]*i+e[14])*r,this}},{key:"applyQuaternion",value:function(e){var t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,e=e.w,s=e*t+a*i-o*n,l=e*n+o*t-r*i,u=e*i+r*n-a*t,t=-r*t-a*n-o*i;return this.x=s*e+t*-r+l*-o-u*-a,this.y=l*e+t*-a+u*-r-s*-o,this.z=u*e+t*-o+s*-a-l*-r,this}},{key:"project",value:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}},{key:"unproject",value:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}},{key:"transformDirection",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements;return this.x=e[0]*t+e[4]*n+e[8]*i,this.y=e[1]*t+e[5]*n+e[9]*i,this.z=e[2]*t+e[6]*n+e[10]*i,this.normalize()}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y+this.z*e.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}},{key:"cross",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}},{key:"crossVectors",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=t.x,a=t.y,t=t.z;return this.x=i*t-e*a,this.y=e*r-n*t,this.z=n*a-i*r,this}},{key:"projectOnVector",value:function(e){var t=e.lengthSq();return 0===t?this.set(0,0,0):(t=e.dot(this)/t,this.copy(e).multiplyScalar(t))}},{key:"projectOnPlane",value:function(e){return ri.copy(this).projectOnVector(e),this.sub(ri)}},{key:"reflect",value:function(e){return this.sub(ri.copy(e).multiplyScalar(2*this.dot(e)))}},{key:"angleTo",value:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:(e=this.dot(e)/t,Math.acos(Be.clamp(e,-1,1)))}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,n=this.y-e.y,e=this.z-e.z;return t*t+n*n+e*e}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}},{key:"setFromSpherical",value:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}},{key:"setFromSphericalCoords",value:function(e,t,n){var i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}},{key:"setFromCylindrical",value:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}},{key:"setFromCylindricalCoords",value:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}},{key:"setFromMatrixPosition",value:function(e){e=e.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}},{key:"setFromMatrixScale",value:function(e){var t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),e=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=e,this}},{key:"setFromMatrixColumn",value:function(e,t){return this.fromArray(e.elements,4*t)}},{key:"setFromMatrix3Column",value:function(e,t){return this.fromArray(e.elements,3*t)}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}}])}(),ri=new Oe,ai=new ii,K=function(){return A(function e(t,n){ue(this,e),Object.defineProperty(this,"isBox3",{value:!0}),this.min=void 0!==t?t:new Oe(1/0,1/0,1/0),this.max=void 0!==n?n:new Oe(-1/0,-1/0,-1/0)},[{key:"set",value:function(e,t){return this.min.copy(e),this.max.copy(t),this}},{key:"setFromArray",value:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,l=e.length;s<l;s+=3){var u=e[s],c=e[s+1],d=e[s+2];u<t&&(t=u),c<n&&(n=c),d<i&&(i=d),r<u&&(r=u),a<c&&(a=c),o<d&&(o=d)}return this.min.set(t,n,i),this.max.set(r,a,o),this}},{key:"setFromBufferAttribute",value:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,l=e.count;s<l;s++){var u=e.getX(s),c=e.getY(s),d=e.getZ(s);u<t&&(t=u),c<n&&(n=c),d<i&&(i=d),r<u&&(r=u),a<c&&(a=c),o<d&&(o=d)}return this.min.set(t,n,i),this.max.set(r,a,o),this}},{key:"setFromPoints",value:function(e){this.makeEmpty();for(var t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}},{key:"setFromCenterAndSize",value:function(e,t){t=li.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(t),this.max.copy(e).add(t),this}},{key:"setFromObject",value:function(e){return this.makeEmpty(),this.expandByObject(e)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.min.copy(e.min),this.max.copy(e.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Box3: .getCenter() target is now required"),e=new Oe),this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(e){return void 0===e&&(console.warn("THREE.Box3: .getSize() target is now required"),e=new Oe),this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(e){return this.min.min(e),this.max.max(e),this}},{key:"expandByVector",value:function(e){return this.min.sub(e),this.max.add(e),this}},{key:"expandByScalar",value:function(e){return this.min.addScalar(-e),this.max.addScalar(e),this}},{key:"expandByObject",value:function(e){e.updateWorldMatrix(!1,!1);for(var t=e.geometry,n=(void 0!==t&&(null===t.boundingBox&&t.computeBoundingBox(),ui.copy(t.boundingBox),ui.applyMatrix4(e.matrixWorld),this.union(ui)),e.children),i=0,r=n.length;i<r;i++)this.expandByObject(n[i]);return this}},{key:"containsPoint",value:function(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}},{key:"containsBox",value:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}},{key:"getParameter",value:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new Oe),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}},{key:"intersectsBox",value:function(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}},{key:"intersectsSphere",value:function(e){return this.clampPoint(e.center,li),li.distanceToSquared(e.center)<=e.radius*e.radius}},{key:"intersectsPlane",value:function(e){var t,n=0<e.normal.x?(t=e.normal.x*this.min.x,e.normal.x*this.max.x):(t=e.normal.x*this.max.x,e.normal.x*this.min.x);return 0<e.normal.y?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),0<e.normal.z?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}},{key:"intersectsTriangle",value:function(e){return!this.isEmpty()&&(this.getCenter(vi),gi.subVectors(this.max,vi),ci.subVectors(e.a,vi),di.subVectors(e.b,vi),hi.subVectors(e.c,vi),pi.subVectors(di,ci),fi.subVectors(hi,di),mi.subVectors(ci,hi),!!oi([0,-pi.z,pi.y,0,-fi.z,fi.y,0,-mi.z,mi.y,pi.z,0,-pi.x,fi.z,0,-fi.x,mi.z,0,-mi.x,-pi.y,pi.x,0,-fi.y,fi.x,0,-mi.y,mi.x,0],ci,di,hi,gi))&&!!oi([1,0,0,0,1,0,0,0,1],ci,di,hi,gi)&&(Ai.crossVectors(pi,fi),oi([Ai.x,Ai.y,Ai.z],ci,di,hi,gi))}},{key:"clampPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new Oe),t.copy(e).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(e){return li.copy(e).clamp(this.min,this.max).sub(e).length()}},{key:"getBoundingSphere",value:function(e){return void 0===e&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=.5*this.getSize(li).length(),e}},{key:"intersect",value:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}},{key:"union",value:function(e){return this.min.min(e.min),this.max.max(e.max),this}},{key:"applyMatrix4",value:function(e){return this.isEmpty()||(si[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),si[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),si[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),si[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),si[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),si[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),si[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),si[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(si)),this}},{key:"translate",value:function(e){return this.min.add(e),this.max.add(e),this}},{key:"equals",value:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}])}();function oi(e,t,n,i,r){for(var a=0,o=e.length-3;a<=o;a+=3){yi.fromArray(e,a);var s=r.x*Math.abs(yi.x)+r.y*Math.abs(yi.y)+r.z*Math.abs(yi.z),l=t.dot(yi),u=n.dot(yi),c=i.dot(yi);if(Math.max(-Math.max(l,u,c),Math.min(l,u,c))>s)return!1}return!0}var si=[new Oe,new Oe,new Oe,new Oe,new Oe,new Oe,new Oe,new Oe],li=new Oe,ui=new K,ci=new Oe,di=new Oe,hi=new Oe,pi=new Oe,fi=new Oe,mi=new Oe,vi=new Oe,gi=new Oe,Ai=new Oe,yi=new Oe,wi=new K,bi=function(){return A(function e(t,n){ue(this,e),this.center=void 0!==t?t:new Oe,this.radius=void 0!==n?n:-1},[{key:"set",value:function(e,t){return this.center.copy(e),this.radius=t,this}},{key:"setFromPoints",value:function(e,t){for(var n=this.center,i=(void 0!==t?n.copy(t):wi.setFromPoints(e).getCenter(n),0),r=0,a=e.length;r<a;r++)i=Math.max(i,n.distanceToSquared(e[r]));return this.radius=Math.sqrt(i),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.center.copy(e.center),this.radius=e.radius,this}},{key:"isEmpty",value:function(){return this.radius<0}},{key:"makeEmpty",value:function(){return this.center.set(0,0,0),this.radius=-1,this}},{key:"containsPoint",value:function(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}},{key:"distanceToPoint",value:function(e){return e.distanceTo(this.center)-this.radius}},{key:"intersectsSphere",value:function(e){var t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}},{key:"intersectsBox",value:function(e){return e.intersectsSphere(this)}},{key:"intersectsPlane",value:function(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}},{key:"clampPoint",value:function(e,t){var n=this.center.distanceToSquared(e);return void 0===t&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),t=new Oe),t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}},{key:"getBoundingBox",value:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new K),this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}},{key:"applyMatrix4",value:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}},{key:"translate",value:function(e){return this.center.add(e),this}},{key:"equals",value:function(e){return e.center.equals(this.center)&&e.radius===this.radius}}])}(),xi=new Oe,Ei=new Oe,Ci=new Oe,Bi=new Oe,Mi=new Oe,Si=new Oe,Ti=new Oe,_i=function(){return A(function e(t,n){ue(this,e),this.origin=void 0!==t?t:new Oe,this.direction=void 0!==n?n:new Oe(0,0,-1)},[{key:"set",value:function(e,t){return this.origin.copy(e),this.direction.copy(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}},{key:"at",value:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new Oe),t.copy(this.direction).multiplyScalar(e).add(this.origin)}},{key:"lookAt",value:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this}},{key:"recast",value:function(e){return this.origin.copy(this.at(e,xi)),this}},{key:"closestPointToPoint",value:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new Oe),t.subVectors(e,this.origin);e=t.dot(this.direction);return e<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(e).add(this.origin)}},{key:"distanceToPoint",value:function(e){return Math.sqrt(this.distanceSqToPoint(e))}},{key:"distanceSqToPoint",value:function(e){var t=xi.subVectors(e,this.origin).dot(this.direction);return(t<0?this.origin:(xi.copy(this.direction).multiplyScalar(t).add(this.origin),xi)).distanceToSquared(e)}},{key:"distanceSqToSegment",value:function(e,t,n,i){Ei.copy(e).add(t).multiplyScalar(.5),Ci.copy(t).sub(e).normalize(),Bi.copy(this.origin).sub(Ei);var r,a,o,e=.5*e.distanceTo(t),t=-this.direction.dot(Ci),s=Bi.dot(this.direction),l=-Bi.dot(Ci),u=Bi.lengthSq(),c=Math.abs(1-t*t);return c=0<c?(a=t*s-l,o=e*c,0<=(r=t*l-s)?-o<=a?a<=o?(r*=c=1/c)*(r+t*(a*=c)+2*s)+a*(t*r+a+2*l)+u:(a=e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u):(a=-e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u):a<=-o?-(r=Math.max(0,-(-t*e+s)))*r+(a=0<r?-e:Math.min(Math.max(-e,-l),e))*(a+2*l)+u:a<=o?(r=0,(a=Math.min(Math.max(-e,-l),e))*(a+2*l)+u):-(r=Math.max(0,-(t*e+s)))*r+(a=0<r?e:Math.min(Math.max(-e,-l),e))*(a+2*l)+u):(a=0<t?-e:e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u),n&&n.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(Ci).multiplyScalar(a).add(Ei),c}},{key:"intersectSphere",value:function(e,t){xi.subVectors(e.center,this.origin);var n=xi.dot(this.direction),i=xi.dot(xi)-n*n,e=e.radius*e.radius;return e<i||(i=n+(e=Math.sqrt(e-i)),(n=n-e)<0&&i<0)?null:n<0?this.at(i,t):this.at(n,t)}},{key:"intersectsSphere",value:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}},{key:"distanceToPlane",value:function(e){var t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:null:0<=(e=-(this.origin.dot(e.normal)+e.constant)/t)?e:null}},{key:"intersectPlane",value:function(e,t){e=this.distanceToPlane(e);return null===e?null:this.at(e,t)}},{key:"intersectsPlane",value:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}},{key:"intersectBox",value:function(e,t){var n,i,r,a=1/this.direction.x,o=1/this.direction.y,s=1/this.direction.z,l=this.origin,a=0<=a?(n=(e.min.x-l.x)*a,(e.max.x-l.x)*a):(n=(e.max.x-l.x)*a,(e.min.x-l.x)*a),o=0<=o?(r=(e.min.y-l.y)*o,(e.max.y-l.y)*o):(r=(e.max.y-l.y)*o,(e.min.y-l.y)*o);return o<n||a<r||((n<r||n!=n)&&(n=r),(o<a||a!=a)&&(a=o),(r=0<=s?(i=(e.min.z-l.z)*s,(e.max.z-l.z)*s):(i=(e.max.z-l.z)*s,(e.min.z-l.z)*s))<n)||a<i||((n<i||n!=n)&&(n=i),(a=r<a||a!=a?r:a)<0)?null:this.at(0<=n?n:a,t)}},{key:"intersectsBox",value:function(e){return null!==this.intersectBox(e,xi)}},{key:"intersectTriangle",value:function(e,t,n,i,r){Mi.subVectors(t,e),Si.subVectors(n,e),Ti.crossVectors(Mi,Si);var a,t=this.direction.dot(Ti);if(0<t){if(i)return null;a=1}else{if(!(t<0))return null;a=-1,t=-t}Bi.subVectors(this.origin,e);n=a*this.direction.dot(Si.crossVectors(Bi,Si));return n<0||(i=a*this.direction.dot(Mi.cross(Bi)))<0||t<n+i||(e=-a*Bi.dot(Ti))<0?null:this.at(e/t,r)}},{key:"applyMatrix4",value:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}},{key:"equals",value:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}}])}(),Me=function(){function e(){ue(this,e),Object.defineProperty(this,"isMatrix4",{value:!0}),this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}return A(e,[{key:"set",value:function(e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m){var v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=r,v[5]=a,v[9]=o,v[13]=s,v[2]=l,v[6]=u,v[10]=c,v[14]=d,v[3]=h,v[7]=p,v[11]=f,v[15]=m,this}},{key:"identity",value:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}},{key:"clone",value:function(){return(new e).fromArray(this.elements)}},{key:"copy",value:function(e){var t=this.elements,e=e.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],this}},{key:"copyPosition",value:function(e){var t=this.elements,e=e.elements;return t[12]=e[12],t[13]=e[13],t[14]=e[14],this}},{key:"extractBasis",value:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}},{key:"makeBasis",value:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}},{key:"extractRotation",value:function(e){var t=this.elements,n=e.elements,i=1/Pi.setFromMatrixColumn(e,0).length(),r=1/Pi.setFromMatrixColumn(e,1).length(),e=1/Pi.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*e,t[9]=n[9]*e,t[10]=n[10]*e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},{key:"makeRotationFromEuler",value:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t,n,i,r,a=this.elements,o=e.x,s=e.y,l=e.z,u=Math.cos(o),o=Math.sin(o),c=Math.cos(s),s=Math.sin(s),d=Math.cos(l),l=Math.sin(l);return"XYZ"===e.order?(n=u*d,i=u*l,r=o*d,t=o*l,a[0]=c*d,a[4]=-c*l,a[8]=s,a[1]=i+r*s,a[5]=n-t*s,a[9]=-o*c,a[2]=t-n*s,a[6]=r+i*s,a[10]=u*c):"YXZ"===e.order?(t=c*l,n=s*d,a[0]=(r=c*d)+(i=s*l)*o,a[4]=n*o-t,a[8]=u*s,a[1]=u*l,a[5]=u*d,a[9]=-o,a[2]=t*o-n,a[6]=i+r*o,a[10]=u*c):"ZXY"===e.order?(t=c*l,n=s*d,a[0]=(i=c*d)-(r=s*l)*o,a[4]=-u*l,a[8]=n+t*o,a[1]=t+n*o,a[5]=u*d,a[9]=r-i*o,a[2]=-u*s,a[6]=o,a[10]=u*c):"ZYX"===e.order?(t=u*d,n=u*l,r=o*d,i=o*l,a[0]=c*d,a[4]=r*s-n,a[8]=t*s+i,a[1]=c*l,a[5]=i*s+t,a[9]=n*s-r,a[2]=-s,a[6]=o*c,a[10]=u*c):"YZX"===e.order?(i=u*c,t=u*s,n=o*c,r=o*s,a[0]=c*d,a[4]=r-i*l,a[8]=n*l+t,a[1]=l,a[5]=u*d,a[9]=-o*d,a[2]=-s*d,a[6]=t*l+n,a[10]=i-r*l):"XZY"===e.order&&(t=u*c,n=u*s,i=o*c,r=o*s,a[0]=c*d,a[4]=-l,a[8]=s*d,a[1]=t*l+r,a[5]=u*d,a[9]=n*l-i,a[2]=i*l-n,a[6]=o*d,a[10]=r*l+t),a[3]=0,a[7]=0,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,this}},{key:"makeRotationFromQuaternion",value:function(e){return this.compose(Ii,e,ki)}},{key:"lookAt",value:function(e,t,n){var i=this.elements;return Fi.subVectors(e,t),0===Fi.lengthSq()&&(Fi.z=1),Fi.normalize(),Ri.crossVectors(n,Fi),0===Ri.lengthSq()&&(1===Math.abs(n.z)?Fi.x+=1e-4:Fi.z+=1e-4,Fi.normalize(),Ri.crossVectors(n,Fi)),Ri.normalize(),Li.crossVectors(Fi,Ri),i[0]=Ri.x,i[4]=Li.x,i[8]=Fi.x,i[1]=Ri.y,i[5]=Li.y,i[9]=Fi.y,i[2]=Ri.z,i[6]=Li.z,i[10]=Fi.z,this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var e=e.elements,t=t.elements,n=this.elements,i=e[0],r=e[4],a=e[8],o=e[12],s=e[1],l=e[5],u=e[9],c=e[13],d=e[2],h=e[6],p=e[10],f=e[14],m=e[3],v=e[7],g=e[11],e=e[15],A=t[0],y=t[4],w=t[8],b=t[12],x=t[1],E=t[5],C=t[9],B=t[13],M=t[2],S=t[6],T=t[10],_=t[14],P=t[3],D=t[7],I=t[11],t=t[15];return n[0]=i*A+r*x+a*M+o*P,n[4]=i*y+r*E+a*S+o*D,n[8]=i*w+r*C+a*T+o*I,n[12]=i*b+r*B+a*_+o*t,n[1]=s*A+l*x+u*M+c*P,n[5]=s*y+l*E+u*S+c*D,n[9]=s*w+l*C+u*T+c*I,n[13]=s*b+l*B+u*_+c*t,n[2]=d*A+h*x+p*M+f*P,n[6]=d*y+h*E+p*S+f*D,n[10]=d*w+h*C+p*T+f*I,n[14]=d*b+h*B+p*_+f*t,n[3]=m*A+v*x+g*M+e*P,n[7]=m*y+v*E+g*S+e*D,n[11]=m*w+v*C+g*T+e*I,n[15]=m*b+v*B+g*_+e*t,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],o=e[5],s=e[9],l=e[13],u=e[2],c=e[6],d=e[10],h=e[14];return e[3]*(+r*s*c-i*l*c-r*o*d+n*l*d+i*o*h-n*s*h)+e[7]*(+t*s*h-t*l*d+r*a*d-i*a*h+i*l*u-r*s*u)+e[11]*(+t*l*c-t*o*h-r*a*c+n*a*h+r*o*u-n*l*u)+e[15]*(-i*o*u-t*s*c+t*o*d+i*a*c-n*a*d+n*s*u)}},{key:"transpose",value:function(){var e=this.elements,t=e[1];return 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}},{key:"setPosition",value:function(e,t,n){var i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}},{key:"invert",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],d=e[10],h=e[11],p=e[12],f=e[13],m=e[14],v=e[15],g=c*m*l-f*d*l+f*s*h-o*m*h-c*s*v+o*d*v,A=p*d*l-u*m*l-p*s*h+a*m*h+u*s*v-a*d*v,y=u*f*l-p*c*l+p*o*h-a*f*h-u*o*v+a*c*v,w=p*c*s-u*f*s-p*o*d+a*f*d+u*o*m-a*c*m,b=t*g+n*A+i*y+r*w;return 0==b?this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0):(e[0]=g*(g=1/b),e[1]=(f*d*r-c*m*r-f*i*h+n*m*h+c*i*v-n*d*v)*g,e[2]=(o*m*r-f*s*r+f*i*l-n*m*l-o*i*v+n*s*v)*g,e[3]=(c*s*r-o*d*r-c*i*l+n*d*l+o*i*h-n*s*h)*g,e[4]=A*g,e[5]=(u*m*r-p*d*r+p*i*h-t*m*h-u*i*v+t*d*v)*g,e[6]=(p*s*r-a*m*r-p*i*l+t*m*l+a*i*v-t*s*v)*g,e[7]=(a*d*r-u*s*r+u*i*l-t*d*l-a*i*h+t*s*h)*g,e[8]=y*g,e[9]=(p*c*r-u*f*r-p*n*h+t*f*h+u*n*v-t*c*v)*g,e[10]=(a*f*r-p*o*r+p*n*l-t*f*l-a*n*v+t*o*v)*g,e[11]=(u*o*r-a*c*r-u*n*l+t*c*l+a*n*h-t*o*h)*g,e[12]=w*g,e[13]=(u*f*i-p*c*i+p*n*d-t*f*d-u*n*m+t*c*m)*g,e[14]=(p*o*i-a*f*i-p*n*s+t*f*s+a*n*m-t*o*m)*g,e[15]=(a*c*i-u*o*i+u*n*s-t*c*s-a*n*d+t*o*d)*g,this)}},{key:"scale",value:function(e){var t=this.elements,n=e.x,i=e.y,e=e.z;return t[0]*=n,t[4]*=i,t[8]*=e,t[1]*=n,t[5]*=i,t[9]*=e,t[2]*=n,t[6]*=i,t[10]*=e,t[3]*=n,t[7]*=i,t[11]*=e,this}},{key:"getMaxScaleOnAxis",value:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,e))}},{key:"makeTranslation",value:function(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}},{key:"makeRotationX",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(1,0,0,0,0,t,-e,0,0,e,t,0,0,0,0,1),this}},{key:"makeRotationY",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(t,0,e,0,0,1,0,0,-e,0,t,0,0,0,0,1),this}},{key:"makeRotationZ",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(t,-e,0,0,e,t,0,0,0,0,1,0,0,0,0,1),this}},{key:"makeRotationAxis",value:function(e,t){var n=Math.cos(t),t=Math.sin(t),i=1-n,r=e.x,a=e.y,e=e.z,o=i*r,s=i*a;return this.set(o*r+n,o*a-t*e,o*e+t*a,0,o*a+t*e,s*a+n,s*e-t*r,0,o*e-t*a,s*e+t*r,i*e*e+n,0,0,0,0,1),this}},{key:"makeScale",value:function(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}},{key:"makeShear",value:function(e,t,n){return this.set(1,t,n,0,e,1,n,0,e,t,1,0,0,0,0,1),this}},{key:"compose",value:function(e,t,n){var i=this.elements,r=t._x,a=t._y,o=t._z,t=t._w,s=r+r,l=a+a,u=o+o,c=r*s,d=r*l,r=r*u,h=a*l,a=a*u,o=o*u,s=t*s,l=t*l,t=t*u,u=n.x,p=n.y,n=n.z;return i[0]=(1-(h+o))*u,i[1]=(d+t)*u,i[2]=(r-l)*u,i[3]=0,i[4]=(d-t)*p,i[5]=(1-(c+o))*p,i[6]=(a+s)*p,i[7]=0,i[8]=(r+l)*n,i[9]=(a-s)*n,i[10]=(1-(c+h))*n,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}},{key:"decompose",value:function(e,t,n){var i=this.elements,r=Pi.set(i[0],i[1],i[2]).length(),a=Pi.set(i[4],i[5],i[6]).length(),o=Pi.set(i[8],i[9],i[10]).length(),e=(this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Di.copy(this),1/r),i=1/a,s=1/o;return Di.elements[0]*=e,Di.elements[1]*=e,Di.elements[2]*=e,Di.elements[4]*=i,Di.elements[5]*=i,Di.elements[6]*=i,Di.elements[8]*=s,Di.elements[9]*=s,Di.elements[10]*=s,t.setFromRotationMatrix(Di),n.x=r,n.y=a,n.z=o,this}},{key:"makePerspective",value:function(e,t,n,i,r,a){void 0===a&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var o=this.elements,s=2*r/(n-i),l=(t+e)/(t-e),n=(n+i)/(n-i),i=-(a+r)/(a-r),a=-2*a*r/(a-r);return o[0]=2*r/(t-e),o[4]=0,o[8]=l,o[12]=0,o[1]=0,o[5]=s,o[9]=n,o[13]=0,o[2]=0,o[6]=0,o[10]=i,o[14]=a,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}},{key:"makeOrthographic",value:function(e,t,n,i,r,a){var o=this.elements,s=1/(t-e),l=1/(n-i),u=1/(a-r),t=(t+e)*s,e=(n+i)*l,n=(a+r)*u;return o[0]=2*s,o[4]=0,o[8]=0,o[12]=-t,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-e,o[2]=0,o[6]=0,o[10]=-2*u,o[14]=-n,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}},{key:"equals",value:function(e){for(var t=this.elements,n=e.elements,i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<16;n++)this.elements[n]=e[n+t];return this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}])}(),Pi=new Oe,Di=new Me,Ii=new Oe(0,0,0),ki=new Oe(1,1,1),Ri=new Oe,Li=new Oe,Fi=new Oe,Oi=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:e.DefaultOrder;ue(this,e),Object.defineProperty(this,"isEuler",{value:!0}),this._x=t,this._y=n,this._z=i,this._order=r},[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"order",get:function(){return this._order},set:function(e){this._order=e,this._onChangeCallback()}},{key:"set",value:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._order=i||this._order,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._order)}},{key:"copy",value:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e,t,n){var i=Be.clamp,e=e.elements,r=e[0],a=e[4],o=e[8],s=e[1],l=e[5],u=e[9],c=e[2],d=e[6],h=e[10];switch(t=t||this._order){case"XYZ":this._y=Math.asin(i(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,h),this._z=Math.atan2(s,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(i(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-c,h),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(s,r));break;case"ZYX":this._y=Math.asin(-i(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(d,h),this._z=Math.atan2(s,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(i(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(o,h));break;case"XZY":this._z=Math.asin(-i(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,h),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!1!==n&&this._onChangeCallback(),this}},{key:"setFromQuaternion",value:function(e,t,n){return Ui.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Ui,t,n)}},{key:"setFromVector3",value:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)}},{key:"reorder",value:function(e){return Ni.setFromEuler(this),this.setFromQuaternion(Ni,e)}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}},{key:"fromArray",value:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}},{key:"toVector3",value:function(e){return e?e.set(this._x,this._y,this._z):new Oe(this._x,this._y,this._z)}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}}])}(),Ui=(Oi.DefaultOrder="XYZ",Oi.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],new Me),Ni=new ii,zi=function(){return A(function e(){ue(this,e),this.mask=1},[{key:"set",value:function(e){this.mask=1<<e|0}},{key:"enable",value:function(e){this.mask|=1<<e|0}},{key:"enableAll",value:function(){this.mask=-1}},{key:"toggle",value:function(e){this.mask^=1<<e|0}},{key:"disable",value:function(e){this.mask&=~(1<<e|0)}},{key:"disableAll",value:function(){this.mask=0}},{key:"test",value:function(e){return 0!=(this.mask&e.mask)}}])}(),Gi=0,Hi=new Oe,Vi=new ii,Qi=new Me,ji=new Oe,Wi=new Oe,Ji=new Oe,qi=new ii,Yi=new Oe(1,0,0),Xi=new Oe(0,1,0),Ki=new Oe(0,0,1),Zi={type:"added"},$i={type:"removed"};function Z(){Object.defineProperty(this,"id",{value:Gi++}),this.uuid=Be.generateUUID(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Z.DefaultUp.clone();var e=new Oe,t=new Oi,n=new ii,i=new Oe(1,1,1);t._onChange(function(){n.setFromEuler(t,!1)}),n._onChange(function(){t.setFromQuaternion(n,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new Me},normalMatrix:{value:new Yn}}),this.matrix=new Me,this.matrixWorld=new Me,this.matrixAutoUpdate=Z.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new zi,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}Z.DefaultUp=new Oe(0,1,0),Z.DefaultMatrixAutoUpdate=!0,Z.prototype=Object.assign(Object.create(Qn.prototype),{constructor:Z,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix4:function(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function(e){return this.quaternion.premultiply(e),this},setRotationFromAxisAngle:function(e,t){this.quaternion.setFromAxisAngle(e,t)},setRotationFromEuler:function(e){this.quaternion.setFromEuler(e,!0)},setRotationFromMatrix:function(e){this.quaternion.setFromRotationMatrix(e)},setRotationFromQuaternion:function(e){this.quaternion.copy(e)},rotateOnAxis:function(e,t){return Vi.setFromAxisAngle(e,t),this.quaternion.multiply(Vi),this},rotateOnWorldAxis:function(e,t){return Vi.setFromAxisAngle(e,t),this.quaternion.premultiply(Vi),this},rotateX:function(e){return this.rotateOnAxis(Yi,e)},rotateY:function(e){return this.rotateOnAxis(Xi,e)},rotateZ:function(e){return this.rotateOnAxis(Ki,e)},translateOnAxis:function(e,t){return Hi.copy(e).applyQuaternion(this.quaternion),this.position.add(Hi.multiplyScalar(t)),this},translateX:function(e){return this.translateOnAxis(Yi,e)},translateY:function(e){return this.translateOnAxis(Xi,e)},translateZ:function(e){return this.translateOnAxis(Ki,e)},localToWorld:function(e){return e.applyMatrix4(this.matrixWorld)},worldToLocal:function(e){return e.applyMatrix4(Qi.copy(this.matrixWorld).invert())},lookAt:function(e,t,n){e.isVector3?ji.copy(e):ji.set(e,t,n);e=this.parent;this.updateWorldMatrix(!0,!1),Wi.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?Qi.lookAt(Wi,ji,this.up):Qi.lookAt(ji,Wi,this.up),this.quaternion.setFromRotationMatrix(Qi),e&&(Qi.extractRotation(e.matrixWorld),Vi.setFromRotationMatrix(Qi),this.quaternion.premultiply(Vi.invert()))},add:function(e){if(1<arguments.length)for(var t=0;t<arguments.length;t++)this.add(arguments[t]);else e===this?console.error("THREE.Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),(e.parent=this).children.push(e),e.dispatchEvent(Zi)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e);return this},remove:function(e){if(1<arguments.length)for(var t=0;t<arguments.length;t++)this.remove(arguments[t]);else{var n=this.children.indexOf(e);-1!==n&&(e.parent=null,this.children.splice(n,1),e.dispatchEvent($i))}return this},clear:function(){for(var e=0;e<this.children.length;e++){var t=this.children[e];t.parent=null,t.dispatchEvent($i)}return this.children.length=0,this},attach:function(e){return this.updateWorldMatrix(!0,!1),Qi.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),Qi.multiply(e.parent.matrixWorld)),e.applyMatrix4(Qi),e.updateWorldMatrix(!1,!1),this.add(e),this},getObjectById:function(e){return this.getObjectByProperty("id",e)},getObjectByName:function(e){return this.getObjectByProperty("name",e)},getObjectByProperty:function(e,t){if(this[e]===t)return this;for(var n=0,i=this.children.length;n<i;n++){var r=this.children[n].getObjectByProperty(e,t);if(void 0!==r)return r}},getWorldPosition:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldPosition() target is now required"),e=new Oe),this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"),e=new ii),this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Wi,e,Ji),e},getWorldScale:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldScale() target is now required"),e=new Oe),this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Wi,qi,e),e},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Object3D: .getWorldDirection() target is now required"),e=new Oe),this.updateWorldMatrix(!0,!1);var t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()},raycast:function(){},traverse:function(e){e(this);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].traverse(e)},traverseVisible:function(e){if(!1!==this.visible){e(this);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}},traverseAncestors:function(e){var t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),e=!(this.matrixWorldNeedsUpdate=!1));for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)},updateWorldMatrix:function(e,t){var n=this.parent;if(!0===e&&null!==n&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t)for(var i=this.children,r=0,a=i.length;r<a;r++)i[r].updateWorldMatrix(!1,!0)},toJSON:function(n){var e,t,i,r,a,o=void 0===n||"string"==typeof n,s={},l=(o&&(n={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{}},s.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"}),{});function u(e,t){return void 0===e[t.uuid]&&(e[t.uuid]=t.toJSON(n)),t.uuid}if(l.uuid=this.uuid,l.type=this.type,""!==this.name&&(l.name=this.name),!0===this.castShadow&&(l.castShadow=!0),!0===this.receiveShadow&&(l.receiveShadow=!0),!1===this.visible&&(l.visible=!1),!1===this.frustumCulled&&(l.frustumCulled=!1),0!==this.renderOrder&&(l.renderOrder=this.renderOrder),"{}"!==JSON.stringify(this.userData)&&(l.userData=this.userData),l.layers=this.layers.mask,l.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(l.matrixAutoUpdate=!1),this.isInstancedMesh&&(l.type="InstancedMesh",l.count=this.count,l.instanceMatrix=this.instanceMatrix.toJSON()),this.isMesh||this.isLine||this.isPoints){l.geometry=u(n.geometries,this.geometry);var c=this.geometry.parameters;if(void 0!==c&&void 0!==c.shapes){var d=c.shapes;if(Array.isArray(d))for(var h=0,p=d.length;h<p;h++){var f=d[h];u(n.shapes,f)}else u(n.shapes,d)}}if(this.isSkinnedMesh&&(l.bindMode=this.bindMode,l.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton)&&(u(n.skeletons,this.skeleton),l.skeleton=this.skeleton.uuid),void 0!==this.material)if(Array.isArray(this.material)){for(var m=[],v=0,g=this.material.length;v<g;v++)m.push(u(n.materials,this.material[v]));l.material=m}else l.material=u(n.materials,this.material);if(0<this.children.length){l.children=[];for(var A=0;A<this.children.length;A++)l.children.push(this.children[A].toJSON(n).object)}if(0<this.animations.length){l.animations=[];for(var y=0;y<this.animations.length;y++){var w=this.animations[y];l.animations.push(u(n.animations,w))}}return o&&(c=b(n.geometries),o=b(n.materials),e=b(n.textures),t=b(n.images),i=b(n.shapes),r=b(n.skeletons),a=b(n.animations),0<c.length&&(s.geometries=c),0<o.length&&(s.materials=o),0<e.length&&(s.textures=e),0<t.length&&(s.images=t),0<i.length&&(s.shapes=i),0<r.length&&(s.skeletons=r),0<a.length)&&(s.animations=a),s.object=l,s;function b(e){var t,n=[];for(t in e){var i=e[t];delete i.metadata,n.push(i)}return n}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var n=0;n<e.children.length;n++){var i=e.children[n];this.add(i.clone())}return this}});var er=new Oe,tr=new Oe,nr=new Yn,ir=function(){return A(function e(t,n){ue(this,e),Object.defineProperty(this,"isPlane",{value:!0}),this.normal=void 0!==t?t:new Oe(1,0,0),this.constant=void 0!==n?n:0},[{key:"set",value:function(e,t){return this.normal.copy(e),this.constant=t,this}},{key:"setComponents",value:function(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}},{key:"setFromNormalAndCoplanarPoint",value:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}},{key:"setFromCoplanarPoints",value:function(e,t,n){n=er.subVectors(n,t).cross(tr.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this}},{key:"normalize",value:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}},{key:"negate",value:function(){return this.constant*=-1,this.normal.negate(),this}},{key:"distanceToPoint",value:function(e){return this.normal.dot(e)+this.constant}},{key:"distanceToSphere",value:function(e){return this.distanceToPoint(e.center)-e.radius}},{key:"projectPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new Oe),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}},{key:"intersectLine",value:function(e,t){void 0===t&&(console.warn("THREE.Plane: .intersectLine() target is now required"),t=new Oe);var n=e.delta(er),i=this.normal.dot(n);return 0===i?0===this.distanceToPoint(e.start)?t.copy(e.start):void 0:(i=-(e.start.dot(this.normal)+this.constant)/i)<0||1<i?void 0:t.copy(n).multiplyScalar(i).add(e.start)}},{key:"intersectsLine",value:function(e){var t=this.distanceToPoint(e.start),e=this.distanceToPoint(e.end);return t<0&&0<e||e<0&&0<t}},{key:"intersectsBox",value:function(e){return e.intersectsPlane(this)}},{key:"intersectsSphere",value:function(e){return e.intersectsPlane(this)}},{key:"coplanarPoint",value:function(e){return void 0===e&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new Oe),e.copy(this.normal).multiplyScalar(-this.constant)}},{key:"applyMatrix4",value:function(e,t){t=t||nr.getNormalMatrix(e),e=this.coplanarPoint(er).applyMatrix4(e),t=this.normal.applyMatrix3(t).normalize();return this.constant=-e.dot(t),this}},{key:"translate",value:function(e){return this.constant-=e.dot(this.normal),this}},{key:"equals",value:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}}])}(),rr=new Oe,ar=new Oe,or=new Oe,sr=new Oe,lr=new Oe,ur=new Oe,cr=new Oe,dr=new Oe,hr=new Oe,pr=new Oe,fr=function(){function a(e,t,n){ue(this,a),this.a=void 0!==e?e:new Oe,this.b=void 0!==t?t:new Oe,this.c=void 0!==n?n:new Oe}return A(a,[{key:"set",value:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}},{key:"setFromPointsAndIndices",value:function(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}},{key:"getArea",value:function(){return rr.subVectors(this.c,this.b),ar.subVectors(this.a,this.b),.5*rr.cross(ar).length()}},{key:"getMidpoint",value:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new Oe),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}},{key:"getNormal",value:function(e){return a.getNormal(this.a,this.b,this.c,e)}},{key:"getPlane",value:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new ir),e.setFromCoplanarPoints(this.a,this.b,this.c)}},{key:"getBarycoord",value:function(e,t){return a.getBarycoord(e,this.a,this.b,this.c,t)}},{key:"getUV",value:function(e,t,n,i,r){return a.getUV(e,this.a,this.b,this.c,t,n,i,r)}},{key:"containsPoint",value:function(e){return a.containsPoint(e,this.a,this.b,this.c)}},{key:"isFrontFacing",value:function(e){return a.isFrontFacing(this.a,this.b,this.c,e)}},{key:"intersectsBox",value:function(e){return e.intersectsTriangle(this)}},{key:"closestPointToPoint",value:function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new Oe);var n=this.a,i=this.b,r=this.c,a=(lr.subVectors(i,n),ur.subVectors(r,n),dr.subVectors(e,n),lr.dot(dr)),o=ur.dot(dr);if(a<=0&&o<=0)return t.copy(n);hr.subVectors(e,i);var s=lr.dot(hr),l=ur.dot(hr);if(0<=s&&l<=s)return t.copy(i);var u=a*l-s*o;if(u<=0&&0<=a&&s<=0)return c=a/(a-s),t.copy(n).addScaledVector(lr,c);pr.subVectors(e,r);var c,d,e=lr.dot(pr),h=ur.dot(pr);return 0<=h&&e<=h?t.copy(r):(a=e*o-a*h)<=0&&0<=o&&h<=0?(d=o/(o-h),t.copy(n).addScaledVector(ur,d)):(o=s*h-e*l)<=0&&0<=l-s&&0<=e-h?(cr.subVectors(r,i),d=(l-s)/(l-s+(e-h)),t.copy(i).addScaledVector(cr,d)):(c=a*(r=1/(o+a+u)),d=u*r,t.copy(n).addScaledVector(lr,c).addScaledVector(ur,d))}},{key:"equals",value:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}],[{key:"getNormal",value:function(e,t,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new Oe),i.subVectors(n,t),rr.subVectors(e,t),i.cross(rr);n=i.lengthSq();return 0<n?i.multiplyScalar(1/Math.sqrt(n)):i.set(0,0,0)}},{key:"getBarycoord",value:function(e,t,n,i,r){rr.subVectors(i,t),ar.subVectors(n,t),or.subVectors(e,t);var i=rr.dot(rr),n=rr.dot(ar),e=rr.dot(or),t=ar.dot(ar),a=ar.dot(or),o=i*t-n*n;return void 0===r&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new Oe),0==o?r.set(-2,-1,-1):r.set(1-(t=(t*e-n*a)*(r=1/o))-(o=(i*a-n*e)*r),o,t)}},{key:"containsPoint",value:function(e,t,n,i){return this.getBarycoord(e,t,n,i,sr),0<=sr.x&&0<=sr.y&&sr.x+sr.y<=1}},{key:"getUV",value:function(e,t,n,i,r,a,o,s){return this.getBarycoord(e,t,n,i,sr),s.set(0,0),s.addScaledVector(r,sr.x),s.addScaledVector(a,sr.y),s.addScaledVector(o,sr.z),s}},{key:"isFrontFacing",value:function(e,t,n,i){return rr.subVectors(n,t),ar.subVectors(e,t),rr.cross(ar).dot(i)<0}}])}(),mr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},vr={h:0,s:0,l:0},gr={h:0,s:0,l:0};function Ar(e,t,n){return n<0&&(n+=1),1<n&&--n,n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}function yr(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function wr(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var Se=function(){return A(function e(t,n,i){return ue(this,e),Object.defineProperty(this,"isColor",{value:!0}),void 0===n&&void 0===i?this.set(t):this.setRGB(t,n,i)},[{key:"set",value:function(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}},{key:"setScalar",value:function(e){return this.r=e,this.g=e,this.b=e,this}},{key:"setHex",value:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this}},{key:"setRGB",value:function(e,t,n){return this.r=e,this.g=t,this.b=n,this}},{key:"setHSL",value:function(e,t,n){return e=Be.euclideanModulo(e,1),t=Be.clamp(t,0,1),n=Be.clamp(n,0,1),0===t?this.r=this.g=this.b=n:(this.r=Ar(t=2*n-(n=n<=.5?n*(1+t):n+t-n*t),n,e+1/3),this.g=Ar(t,n,e),this.b=Ar(t,n,e-1/3)),this}},{key:"setStyle",value:function(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}if(l=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)){var n,i,r,a,o=l[1],s=l[2];switch(o){case"rgb":case"rgba":if(n=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(n[1],10))/255,this.g=Math.min(255,parseInt(n[2],10))/255,this.b=Math.min(255,parseInt(n[3],10))/255,e(n[4]),this;if(n=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(n[1],10))/100,this.g=Math.min(100,parseInt(n[2],10))/100,this.b=Math.min(100,parseInt(n[3],10))/100,e(n[4]),this;break;case"hsl":case"hsla":if(n=/^(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i=parseFloat(n[1])/360,r=parseInt(n[2],10)/100,a=parseInt(n[3],10)/100,e(n[4]),this.setHSL(i,r,a)}}else if(l=/^\#([A-Fa-f\d]+)$/.exec(t)){var o=l[1],l=o.length;if(3===l)return this.r=parseInt(o.charAt(0)+o.charAt(0),16)/255,this.g=parseInt(o.charAt(1)+o.charAt(1),16)/255,this.b=parseInt(o.charAt(2)+o.charAt(2),16)/255,this;if(6===l)return this.r=parseInt(o.charAt(0)+o.charAt(1),16)/255,this.g=parseInt(o.charAt(2)+o.charAt(3),16)/255,this.b=parseInt(o.charAt(4)+o.charAt(5),16)/255,this}return t&&0<t.length?this.setColorName(t):this}},{key:"setColorName",value:function(e){var t=mr[e];return void 0!==t?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}},{key:"clone",value:function(){return new this.constructor(this.r,this.g,this.b)}},{key:"copy",value:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}},{key:"copyGammaToLinear",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2;return this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this}},{key:"copyLinearToGamma",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2,t=0<t?1/t:1;return this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this}},{key:"convertGammaToLinear",value:function(e){return this.copyGammaToLinear(this,e),this}},{key:"convertLinearToGamma",value:function(e){return this.copyLinearToGamma(this,e),this}},{key:"copySRGBToLinear",value:function(e){return this.r=yr(e.r),this.g=yr(e.g),this.b=yr(e.b),this}},{key:"copyLinearToSRGB",value:function(e){return this.r=wr(e.r),this.g=wr(e.g),this.b=wr(e.b),this}},{key:"convertSRGBToLinear",value:function(){return this.copySRGBToLinear(this),this}},{key:"convertLinearToSRGB",value:function(){return this.copyLinearToSRGB(this),this}},{key:"getHex",value:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0}},{key:"getHexString",value:function(){return("000000"+this.getHex().toString(16)).slice(-6)}},{key:"getHSL",value:function(e){void 0===e&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});var t,n=this.r,i=this.g,r=this.b,a=Math.max(n,i,r),o=Math.min(n,i,r),s=(o+a)/2;if(o===a)u=t=0;else{var l=a-o,u=s<=.5?l/(a+o):l/(2-a-o);switch(a){case n:t=(i-r)/l+(i<r?6:0);break;case i:t=(r-n)/l+2;break;case r:t=(n-i)/l+4}t/=6}return e.h=t,e.s=u,e.l=s,e}},{key:"getStyle",value:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"}},{key:"offsetHSL",value:function(e,t,n){return this.getHSL(vr),vr.h+=e,vr.s+=t,vr.l+=n,this.setHSL(vr.h,vr.s,vr.l),this}},{key:"add",value:function(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}},{key:"addColors",value:function(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}},{key:"addScalar",value:function(e){return this.r+=e,this.g+=e,this.b+=e,this}},{key:"sub",value:function(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}},{key:"multiply",value:function(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}},{key:"multiplyScalar",value:function(e){return this.r*=e,this.g*=e,this.b*=e,this}},{key:"lerp",value:function(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}},{key:"lerpHSL",value:function(e,t){this.getHSL(vr),e.getHSL(gr);var e=Be.lerp(vr.h,gr.h,t),n=Be.lerp(vr.s,gr.s,t),t=Be.lerp(vr.l,gr.l,t);return this.setHSL(e,n,t),this}},{key:"equals",value:function(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}},{key:"fromBufferAttribute",value:function(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),!0===e.normalized&&(this.r/=255,this.g/=255,this.b/=255),this}},{key:"toJSON",value:function(){return this.getHex()}}])}(),br=(Se.NAMES=mr,Se.prototype.r=1,Se.prototype.g=1,Se.prototype.b=1,function(){return A(function e(t,n,i,r,a){var o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;ue(this,e),this.a=t,this.b=n,this.c=i,this.normal=r&&r.isVector3?r:new Oe,this.vertexNormals=Array.isArray(r)?r:[],this.color=a&&a.isColor?a:new Se,this.vertexColors=Array.isArray(a)?a:[],this.materialIndex=o},[{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(var t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(var i=0,r=e.vertexColors.length;i<r;i++)this.vertexColors[i]=e.vertexColors[i].clone();return this}}])}()),xr=0;function Er(){Object.defineProperty(this,"id",{value:xr++}),this.uuid=Be.generateUUID(),this.name="",this.type="Material",this.fog=!0,this.blending=Ae,this.side=fe,this.flatShading=!1,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=ze,this.blendDst=Ge,this.blendEquation=Ee,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Xe,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.alphaTest=0,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0}function R(e){Er.call(this),this.type="MeshBasicMaterial",this.color=new Se(16777215),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.combine=tt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.setValues(e)}Er.prototype=Object.assign(Object.create(Qn.prototype),{constructor:Er,isMaterial:!0,onBeforeCompile:function(){},customProgramCacheKey:function(){return this.onBeforeCompile.toString()},setValues:function(e){if(void 0!==e)for(var t in e){var n,i=e[t];void 0===i?console.warn("THREE.Material: '"+t+"' parameter is undefined."):"shading"===t?(console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===i):void 0!==(n=this[t])&&(n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i)}},toJSON:function(e){var t=void 0===e||"string"==typeof e,n=(t&&(e={textures:{},images:{}}),{metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}});function i(e){var t,n=[];for(t in e){var i=e[t];delete i.metadata,n.push(i)}return n}return n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),this.sheen&&this.sheen.isColor&&(n.sheen=this.sheen.getHex()),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,n.reflectivity=this.reflectivity,n.refractionRatio=this.refractionRatio,void 0!==this.combine&&(n.combine=this.combine),void 0!==this.envMapIntensity)&&(n.envMapIntensity=this.envMapIntensity),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.size&&(n.size=this.size),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Ae&&(n.blending=this.blending),!0===this.flatShading&&(n.flatShading=this.flatShading),this.side!==fe&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),0<this.alphaTest&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),1<this.wireframeLinewidth&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t&&(t=i(e.textures),e=i(e.images),0<t.length&&(n.textures=t),0<e.length)&&(n.images=e),n},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;var t=e.clippingPlanes,n=null;if(null!==t)for(var i=t.length,n=new Array(i),r=0;r!==i;++r)n[r]=t[r].clone();return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(Er.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),((R.prototype=Object.create(Er.prototype)).constructor=R).prototype.isMeshBasicMaterial=!0,R.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this};var Cr=new Oe,Br=new Re;function H(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=Gn,this.updateRange={offset:0,count:-1},this.version=0}function Mr(e,t,n){H.call(this,new Int8Array(e),t,n)}function Sr(e,t,n){H.call(this,new Uint8Array(e),t,n)}function Tr(e,t,n){H.call(this,new Uint8ClampedArray(e),t,n)}function _r(e,t,n){H.call(this,new Int16Array(e),t,n)}function Pr(e,t,n){H.call(this,new Uint16Array(e),t,n)}function Dr(e,t,n){H.call(this,new Int32Array(e),t,n)}function Ir(e,t,n){H.call(this,new Uint32Array(e),t,n)}function kr(e,t,n){H.call(this,new Uint16Array(e),t,n)}function ee(e,t,n){H.call(this,new Float32Array(e),t,n)}function Rr(e,t,n){H.call(this,new Float64Array(e),t,n)}Object.defineProperty(H.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(H.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.itemSize,n*=t.itemSize;for(var i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this},copyArray:function(e){return this.array.set(e),this},copyColorsArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",i),a=new Se),t[n++]=a.r,t[n++]=a.g,t[n++]=a.b}return this},copyVector2sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",i),a=new Re),t[n++]=a.x,t[n++]=a.y}return this},copyVector3sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",i),a=new Oe),t[n++]=a.x,t[n++]=a.y,t[n++]=a.z}return this},copyVector4sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",i),a=new ei),t[n++]=a.x,t[n++]=a.y,t[n++]=a.z,t[n++]=a.w}return this},applyMatrix3:function(e){if(2===this.itemSize)for(var t=0,n=this.count;t<n;t++)Br.fromBufferAttribute(this,t),Br.applyMatrix3(e),this.setXY(t,Br.x,Br.y);else if(3===this.itemSize)for(var i=0,r=this.count;i<r;i++)Cr.fromBufferAttribute(this,i),Cr.applyMatrix3(e),this.setXYZ(i,Cr.x,Cr.y,Cr.z);return this},applyMatrix4:function(e){for(var t=0,n=this.count;t<n;t++)Cr.x=this.getX(t),Cr.y=this.getY(t),Cr.z=this.getZ(t),Cr.applyMatrix4(e),this.setXYZ(t,Cr.x,Cr.y,Cr.z);return this},applyNormalMatrix:function(e){for(var t=0,n=this.count;t<n;t++)Cr.x=this.getX(t),Cr.y=this.getY(t),Cr.z=this.getZ(t),Cr.applyNormalMatrix(e),this.setXYZ(t,Cr.x,Cr.y,Cr.z);return this},transformDirection:function(e){for(var t=0,n=this.count;t<n;t++)Cr.x=this.getX(t),Cr.y=this.getY(t),Cr.z=this.getZ(t),Cr.transformDirection(e),this.setXYZ(t,Cr.x,Cr.y,Cr.z);return this},set:function(e){return this.array.set(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:0),this},getX:function(e){return this.array[e*this.itemSize]},setX:function(e,t){return this.array[e*this.itemSize]=t,this},getY:function(e){return this.array[e*this.itemSize+1]},setY:function(e,t){return this.array[e*this.itemSize+1]=t,this},getZ:function(e){return this.array[e*this.itemSize+2]},setZ:function(e,t){return this.array[e*this.itemSize+2]=t,this},getW:function(e){return this.array[e*this.itemSize+3]},setW:function(e,t){return this.array[e*this.itemSize+3]=t,this},setXY:function(e,t,n){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this},setXYZ:function(e,t,n,i){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this},setXYZW:function(e,t,n,i,r){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this},onUpload:function(e){return this.onUploadCallback=e,this},clone:function(){return new this.constructor(this.array,this.itemSize).copy(this)},toJSON:function(){return{itemSize:this.itemSize,type:this.array.constructor.name,array:Array.prototype.slice.call(this.array),normalized:this.normalized}}}),(Mr.prototype=Object.create(H.prototype)).constructor=Mr,(Sr.prototype=Object.create(H.prototype)).constructor=Sr,(Tr.prototype=Object.create(H.prototype)).constructor=Tr,(_r.prototype=Object.create(H.prototype)).constructor=_r,Pr.prototype=Object.create(H.prototype),Pr.prototype.constructor=Pr,(Dr.prototype=Object.create(H.prototype)).constructor=Dr,Ir.prototype=Object.create(H.prototype),Ir.prototype.constructor=Ir,((kr.prototype=Object.create(H.prototype)).constructor=kr).prototype.isFloat16BufferAttribute=!0,(ee.prototype=Object.create(H.prototype)).constructor=ee,(Rr.prototype=Object.create(H.prototype)).constructor=Rr;var Lr=function(){return A(function e(){ue(this,e),this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1},[{key:"computeGroups",value:function(e){for(var t,n=[],i=void 0,r=e.faces,a=0;a<r.length;a++){var o=r[a];o.materialIndex!==i&&(i=o.materialIndex,void 0!==t&&(t.count=3*a-t.start,n.push(t)),t={start:3*a,materialIndex:i})}void 0!==t&&(t.count=3*a-t.start,n.push(t)),this.groups=n}},{key:"fromGeometry",value:function(e){var t=e.faces,n=e.vertices,i=e.faceVertexUvs,r=i[0]&&0<i[0].length,a=i[1]&&0<i[1].length,o=e.morphTargets,s=o.length;if(0<s){for(var l=[],u=0;u<s;u++)l[u]={name:o[u].name,data:[]};this.morphTargets.position=l}var c=e.morphNormals,d=c.length;if(0<d){for(var h=[],p=0;p<d;p++)h[p]={name:c[p].name,data:[]};this.morphTargets.normal=h}var f=e.skinIndices,m=e.skinWeights,v=f.length===n.length,g=m.length===n.length;0<n.length&&0===t.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var A=0;A<t.length;A++){var y=t[A],w=(this.vertices.push(n[y.a],n[y.b],n[y.c]),y.vertexNormals),w=(3===w.length?this.normals.push(w[0],w[1],w[2]):(w=y.normal,this.normals.push(w,w,w)),y.vertexColors);3===w.length?this.colors.push(w[0],w[1],w[2]):(w=y.color,this.colors.push(w,w,w)),!0===r&&(void 0!==(w=i[0][A])?this.uvs.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",A),this.uvs.push(new Re,new Re,new Re))),!0===a&&(void 0!==(w=i[1][A])?this.uvs2.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",A),this.uvs2.push(new Re,new Re,new Re)));for(var b=0;b<s;b++){var x=o[b].vertices;l[b].data.push(x[y.a],x[y.b],x[y.c])}for(var E=0;E<d;E++){var C=c[E].vertexNormals[A];h[E].data.push(C.a,C.b,C.c)}v&&this.skinIndices.push(f[y.a],f[y.b],f[y.c]),g&&this.skinWeights.push(m[y.a],m[y.b],m[y.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this}}])}();function Fr(e){if(0===e.length)return-1/0;for(var t=e[0],n=1,i=e.length;n<i;++n)e[n]>t&&(t=e[n]);return t}var Or={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!=typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Ur(e,t){return new Or[e](t)}var Nr=1,zr=new Me,Gr=new Z,Hr=new Oe,Vr=new K,Qr=new K,jr=new Oe;function V(){Object.defineProperty(this,"id",{value:Nr+=2}),this.uuid=Be.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}V.prototype=Object.assign(Object.create(Qn.prototype),{constructor:V,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(e){return Array.isArray(e)?this.index=new(65535<Fr(e)?Ir:Pr)(e,1):this.index=e,this},getAttribute:function(e){return this.attributes[e]},setAttribute:function(e,t){return this.attributes[e]=t,this},deleteAttribute:function(e){return delete this.attributes[e],this},hasAttribute:function(e){return void 0!==this.attributes[e]},addGroup:function(e,t){this.groups.push({start:e,count:t,materialIndex:2<arguments.length&&void 0!==arguments[2]?arguments[2]:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix4:function(e){var t=this.attributes.position,t=(void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0),this.attributes.normal),n=(void 0!==t&&(n=(new Yn).getNormalMatrix(e),t.applyNormalMatrix(n),t.needsUpdate=!0),this.attributes.tangent);return void 0!==n&&(n.transformDirection(e),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(e){return zr.makeRotationX(e),this.applyMatrix4(zr),this},rotateY:function(e){return zr.makeRotationY(e),this.applyMatrix4(zr),this},rotateZ:function(e){return zr.makeRotationZ(e),this.applyMatrix4(zr),this},translate:function(e,t,n){return zr.makeTranslation(e,t,n),this.applyMatrix4(zr),this},scale:function(e,t,n){return zr.makeScale(e,t,n),this.applyMatrix4(zr),this},lookAt:function(e){return Gr.lookAt(e),Gr.updateMatrix(),this.applyMatrix4(Gr.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Hr).negate(),this.translate(Hr.x,Hr.y,Hr.z),this},setFromObject:function(e){var t,n,i=e.geometry;return e.isPoints||e.isLine?(n=new ee(3*i.vertices.length,3),t=new ee(3*i.colors.length,3),this.setAttribute("position",n.copyVector3sArray(i.vertices)),this.setAttribute("color",t.copyColorsArray(i.colors)),i.lineDistances&&i.lineDistances.length===i.vertices.length&&(n=new ee(i.lineDistances.length,1),this.setAttribute("lineDistance",n.copyArray(i.lineDistances))),null!==i.boundingSphere&&(this.boundingSphere=i.boundingSphere.clone()),null!==i.boundingBox&&(this.boundingBox=i.boundingBox.clone())):e.isMesh&&i&&i.isGeometry&&this.fromGeometry(i),this},setFromPoints:function(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];t.push(r.x,r.y,r.z||0)}return this.setAttribute("position",new ee(t,3)),this},updateFromObject:function(e){var t=e.geometry;if(e.isMesh){var n=t.__directGeometry;if(!0===t.elementsNeedUpdate&&(n=void 0,t.elementsNeedUpdate=!1),void 0===n)return this.fromGeometry(t);n.verticesNeedUpdate=t.verticesNeedUpdate,n.normalsNeedUpdate=t.normalsNeedUpdate,n.colorsNeedUpdate=t.colorsNeedUpdate,n.uvsNeedUpdate=t.uvsNeedUpdate,n.groupsNeedUpdate=t.groupsNeedUpdate,t.verticesNeedUpdate=!1,t.normalsNeedUpdate=!1,t.colorsNeedUpdate=!1,t.uvsNeedUpdate=!1,t.groupsNeedUpdate=!1,t=n}return!0===t.verticesNeedUpdate&&(void 0!==(n=this.attributes.position)&&(n.copyVector3sArray(t.vertices),n.needsUpdate=!0),t.verticesNeedUpdate=!1),!0===t.normalsNeedUpdate&&(void 0!==(n=this.attributes.normal)&&(n.copyVector3sArray(t.normals),n.needsUpdate=!0),t.normalsNeedUpdate=!1),!0===t.colorsNeedUpdate&&(void 0!==(n=this.attributes.color)&&(n.copyColorsArray(t.colors),n.needsUpdate=!0),t.colorsNeedUpdate=!1),t.uvsNeedUpdate&&(void 0!==(n=this.attributes.uv)&&(n.copyVector2sArray(t.uvs),n.needsUpdate=!0),t.uvsNeedUpdate=!1),t.lineDistancesNeedUpdate&&(void 0!==(n=this.attributes.lineDistance)&&(n.copyArray(t.lineDistances),n.needsUpdate=!0),t.lineDistancesNeedUpdate=!1),t.groupsNeedUpdate&&(t.computeGroups(e.geometry),this.groups=t.groups,t.groupsNeedUpdate=!1),this},fromGeometry:function(e){return e.__directGeometry=(new Lr).fromGeometry(e),this.fromDirectGeometry(e.__directGeometry)},fromDirectGeometry:function(e){var t,n=new Float32Array(3*e.vertices.length);for(t in this.setAttribute("position",new H(n,3).copyVector3sArray(e.vertices)),0<e.normals.length&&(n=new Float32Array(3*e.normals.length),this.setAttribute("normal",new H(n,3).copyVector3sArray(e.normals))),0<e.colors.length&&(n=new Float32Array(3*e.colors.length),this.setAttribute("color",new H(n,3).copyColorsArray(e.colors))),0<e.uvs.length&&(n=new Float32Array(2*e.uvs.length),this.setAttribute("uv",new H(n,2).copyVector2sArray(e.uvs))),0<e.uvs2.length&&(n=new Float32Array(2*e.uvs2.length),this.setAttribute("uv2",new H(n,2).copyVector2sArray(e.uvs2))),this.groups=e.groups,e.morphTargets){for(var i=[],r=e.morphTargets[t],a=0,o=r.length;a<o;a++){var s=r[a],l=new ee(3*s.data.length,3);l.name=s.name,i.push(l.copyVector3sArray(s.data))}this.morphAttributes[t]=i}return 0<e.skinIndices.length&&(n=new ee(4*e.skinIndices.length,4),this.setAttribute("skinIndex",n.copyVector4sArray(e.skinIndices))),0<e.skinWeights.length&&(n=new ee(4*e.skinWeights.length,4),this.setAttribute("skinWeight",n.copyVector4sArray(e.skinWeights))),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new K);var e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new Oe(-1/0,-1/0,-1/0),new Oe(1/0,1/0,1/0));else{if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(var n=0,i=t.length;n<i;n++){var r=t[n];Vr.setFromBufferAttribute(r),this.morphTargetsRelative?(jr.addVectors(this.boundingBox.min,Vr.min),this.boundingBox.expandByPoint(jr),jr.addVectors(this.boundingBox.max,Vr.max),this.boundingBox.expandByPoint(jr)):(this.boundingBox.expandByPoint(Vr.min),this.boundingBox.expandByPoint(Vr.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new bi);var e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new Oe,1/0);else if(e){var n=this.boundingSphere.center;if(Vr.setFromBufferAttribute(e),t)for(var i=0,r=t.length;i<r;i++){var a=t[i];Qr.setFromBufferAttribute(a),this.morphTargetsRelative?(jr.addVectors(Vr.min,Qr.min),Vr.expandByPoint(jr),jr.addVectors(Vr.max,Qr.max),Vr.expandByPoint(jr)):(Vr.expandByPoint(Qr.min),Vr.expandByPoint(Qr.max))}Vr.getCenter(n);for(var o=0,s=0,l=e.count;s<l;s++)jr.fromBufferAttribute(e,s),o=Math.max(o,n.distanceToSquared(jr));if(t)for(var u=0,c=t.length;u<c;u++)for(var d=t[u],h=this.morphTargetsRelative,p=0,f=d.count;p<f;p++)jr.fromBufferAttribute(d,p),h&&(Hr.fromBufferAttribute(e,p),jr.add(Hr)),o=Math.max(o,n.distanceToSquared(jr));this.boundingSphere.radius=Math.sqrt(o),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}},computeFaceNormals:function(){},computeVertexNormals:function(){var e=this.index,t=this.getAttribute("position");if(void 0!==t){var n=this.getAttribute("normal");if(void 0===n)n=new H(new Float32Array(3*t.count),3),this.setAttribute("normal",n);else for(var i=0,r=n.count;i<r;i++)n.setXYZ(i,0,0,0);var a=new Oe,o=new Oe,s=new Oe,l=new Oe,u=new Oe,c=new Oe,d=new Oe,h=new Oe;if(e)for(var p=0,f=e.count;p<f;p+=3){var m=e.getX(p+0),v=e.getX(p+1),g=e.getX(p+2);a.fromBufferAttribute(t,m),o.fromBufferAttribute(t,v),s.fromBufferAttribute(t,g),d.subVectors(s,o),h.subVectors(a,o),d.cross(h),l.fromBufferAttribute(n,m),u.fromBufferAttribute(n,v),c.fromBufferAttribute(n,g),l.add(d),u.add(d),c.add(d),n.setXYZ(m,l.x,l.y,l.z),n.setXYZ(v,u.x,u.y,u.z),n.setXYZ(g,c.x,c.y,c.z)}else for(var A=0,y=t.count;A<y;A+=3)a.fromBufferAttribute(t,A+0),o.fromBufferAttribute(t,A+1),s.fromBufferAttribute(t,A+2),d.subVectors(s,o),h.subVectors(a,o),d.cross(h),n.setXYZ(A+0,d.x,d.y,d.z),n.setXYZ(A+1,d.x,d.y,d.z),n.setXYZ(A+2,d.x,d.y,d.z);this.normalizeNormals(),n.needsUpdate=!0}},merge:function(e,t){if(e&&e.isBufferGeometry){void 0===t&&(t=0,console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));var n,i=this.attributes;for(n in i)if(void 0!==e.attributes[n])for(var r=i[n].array,a=e.attributes[n],o=a.array,a=a.itemSize*t,s=Math.min(o.length,r.length-a),l=0,u=a;l<s;l++,u++)r[u]=o[l];return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",e)},normalizeNormals:function(){for(var e=this.attributes.normal,t=0,n=e.count;t<n;t++)jr.fromBufferAttribute(e,t),jr.normalize(),e.setXYZ(t,jr.x,jr.y,jr.z)},toNonIndexed:function(){function e(e,t){for(var n=e.array,i=e.itemSize,e=e.normalized,r=new n.constructor(t.length*i),a=0,o=0,s=0,l=t.length;s<l;s++)for(var a=t[s]*i,u=0;u<i;u++)r[o++]=n[a++];return new H(r,i,e)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var t,n=new V,i=this.index.array,r=this.attributes;for(t in r){var a=e(r[t],i);n.setAttribute(t,a)}var o,s=this.morphAttributes;for(o in s){for(var l=[],u=s[o],c=0,d=u.length;c<d;c++){var h=e(u[c],i);l.push(h)}n.morphAttributes[o]=l}n.morphTargetsRelative=this.morphTargetsRelative;for(var p=this.groups,f=0,m=p.length;f<m;f++){var v=p[f];n.addGroup(v.start,v.count,v.materialIndex)}return n},toJSON:function(){var e={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),0<Object.keys(this.userData).length&&(e.userData=this.userData),void 0!==this.parameters){var t,n=this.parameters;for(t in n)void 0!==n[t]&&(e[t]=n[t])}else{e.data={attributes:{}};var i,r=this.index,a=(null!==r&&(e.data.index={type:r.array.constructor.name,array:Array.prototype.slice.call(r.array)}),this.attributes);for(i in a){var o=a[i],s=o.toJSON(e.data);""!==o.name&&(s.name=o.name),e.data.attributes[i]=s}var l,u={},c=!1;for(l in this.morphAttributes){for(var d=this.morphAttributes[l],h=[],p=0,f=d.length;p<f;p++){var m=d[p],v=m.toJSON(e.data);""!==m.name&&(v.name=m.name),h.push(v)}0<h.length&&(u[l]=h,c=!0)}c&&(e.data.morphAttributes=u,e.data.morphTargetsRelative=this.morphTargetsRelative);r=this.groups,r=(0<r.length&&(e.data.groups=JSON.parse(JSON.stringify(r))),this.boundingSphere);null!==r&&(e.data.boundingSphere={center:r.center.toArray(),radius:r.radius})}return e},clone:function(){return(new V).copy(this)},copy:function(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;var t,n={},i=(this.name=e.name,e.index),r=(null!==i&&this.setIndex(i.clone(n)),e.attributes);for(t in r){var a=r[t];this.setAttribute(t,a.clone(n))}var o,s=e.morphAttributes;for(o in s){for(var l=[],u=s[o],c=0,d=u.length;c<d;c++)l.push(u[c].clone(n));this.morphAttributes[o]=l}this.morphTargetsRelative=e.morphTargetsRelative;for(var h=e.groups,p=0,f=h.length;p<f;p++){var m=h[p];this.addGroup(m.start,m.count,m.materialIndex)}i=e.boundingBox,null!==i&&(this.boundingBox=i.clone()),i=e.boundingSphere;return null!==i&&(this.boundingSphere=i.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});var Wr=new Me,Jr=new _i,qr=new bi,Yr=new Oe,Xr=new Oe,Kr=new Oe,Zr=new Oe,$r=new Oe,ea=new Oe,ta=new Oe,na=new Oe,ia=new Oe,ra=new Re,aa=new Re,oa=new Re,sa=new Oe,la=new Oe;function Q(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new V,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new R;Z.call(this),this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}function ua(e,t,n,i,r,a,o,s){i=t.side===me?i.intersectTriangle(o,a,r,!0,s):i.intersectTriangle(r,a,o,t.side!==ve,s);if(null===i)return null;la.copy(s),la.applyMatrix4(e.matrixWorld);r=n.ray.origin.distanceTo(la);return r<n.near||r>n.far?null:{distance:r,point:la.clone(),object:e}}function ca(e,t,n,i,r,a,o,s,l,u,c,d){Yr.fromBufferAttribute(r,u),Xr.fromBufferAttribute(r,c),Kr.fromBufferAttribute(r,d);var h=e.morphTargetInfluences;if(t.morphTargets&&a&&h){ta.set(0,0,0),na.set(0,0,0),ia.set(0,0,0);for(var p=0,f=a.length;p<f;p++){var m=h[p],v=a[p];0!==m&&(Zr.fromBufferAttribute(v,u),$r.fromBufferAttribute(v,c),ea.fromBufferAttribute(v,d),o?(ta.addScaledVector(Zr,m),na.addScaledVector($r,m),ia.addScaledVector(ea,m)):(ta.addScaledVector(Zr.sub(Yr),m),na.addScaledVector($r.sub(Xr),m),ia.addScaledVector(ea.sub(Kr),m)))}Yr.add(ta),Xr.add(na),Kr.add(ia)}e.isSkinnedMesh&&(e.boneTransform(u,Yr),e.boneTransform(c,Xr),e.boneTransform(d,Kr));r=ua(e,t,n,i,Yr,Xr,Kr,sa);return r&&(s&&(ra.fromBufferAttribute(s,u),aa.fromBufferAttribute(s,c),oa.fromBufferAttribute(s,d),r.uv=fr.getUV(sa,Yr,Xr,Kr,ra,aa,oa,new Re)),l&&(ra.fromBufferAttribute(l,u),aa.fromBufferAttribute(l,c),oa.fromBufferAttribute(l,d),r.uv2=fr.getUV(sa,Yr,Xr,Kr,ra,aa,oa,new Re)),e=new br(u,c,d),fr.getNormal(Yr,Xr,Kr,e.normal),r.face=e),r}Q.prototype=Object.assign(Object.create(Z.prototype),{constructor:Q,isMesh:!0,copy:function(e){return Z.prototype.copy.call(this,e),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(e,t){var n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0!==i&&(null===n.boundingSphere&&n.computeBoundingSphere(),qr.copy(n.boundingSphere),qr.applyMatrix4(r),!1!==e.ray.intersectsSphere(qr)&&(Wr.copy(r).invert(),Jr.copy(e.ray).applyMatrix4(Wr),null===n.boundingBox||!1!==Jr.intersectsBox(n.boundingBox))))if(n.isBufferGeometry){var a=n.index,o=n.attributes.position,s=n.morphAttributes.position,l=n.morphTargetsRelative,u=n.attributes.uv,c=n.attributes.uv2,d=n.groups,h=n.drawRange;if(null!==a)if(Array.isArray(i))for(var p=0,f=d.length;p<f;p++)for(var m=d[p],v=i[m.materialIndex],g=Math.max(m.start,h.start),A=Math.min(m.start+m.count,h.start+h.count);g<A;g+=3){var y,w=a.getX(g),b=a.getX(g+1),F=a.getX(g+2);(y=ca(this,v,e,Jr,o,s,l,u,c,w,b,F))&&(y.faceIndex=Math.floor(g/3),y.face.materialIndex=m.materialIndex,t.push(y))}else for(var x=Math.max(0,h.start),O=Math.min(a.count,h.start+h.count);x<O;x+=3){var U=a.getX(x),N=a.getX(x+1),z=a.getX(x+2);(y=ca(this,i,e,Jr,o,s,l,u,c,U,N,z))&&(y.faceIndex=Math.floor(x/3),t.push(y))}else if(void 0!==o)if(Array.isArray(i))for(var E=0,G=d.length;E<G;E++)for(var C=d[E],H=i[C.materialIndex],B=Math.max(C.start,h.start),V=Math.min(C.start+C.count,h.start+h.count);B<V;B+=3)(y=ca(this,H,e,Jr,o,s,l,u,c,B,B+1,B+2))&&(y.faceIndex=Math.floor(B/3),y.face.materialIndex=C.materialIndex,t.push(y));else for(var M=Math.max(0,h.start),Q=Math.min(o.count,h.start+h.count);M<Q;M+=3)(y=ca(this,i,e,Jr,o,s,l,u,c,M,M+1,M+2))&&(y.faceIndex=Math.floor(M/3),t.push(y))}else if(n.isGeometry){var S,j=Array.isArray(i),T=n.vertices,_=n.faces,r=n.faceVertexUvs[0];0<r.length&&(S=r);for(var P=0,W=_.length;P<W;P++){var D,I,k,R=_[P],L=j?i[R.materialIndex]:i;void 0!==L&&(D=T[R.a],I=T[R.b],k=T[R.c],y=ua(this,L,e,Jr,D,I,k,sa))&&(S&&S[P]&&(L=S[P],ra.copy(L[0]),aa.copy(L[1]),oa.copy(L[2]),y.uv=fr.getUV(sa,D,I,k,ra,aa,oa,new Re)),y.face=R,y.faceIndex=P,t.push(y))}}}});var da=function(){function l(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,P=(ue(this,l),(e=le(this,l)).type="BoxBufferGeometry",e.parameters={width:t,height:n,depth:i,widthSegments:r,heightSegments:a,depthSegments:o},e),r=Math.floor(r),a=Math.floor(a),o=Math.floor(o),D=[],I=[],k=[],R=[],L=0,F=0;function s(e,t,n,i,r,a,o,s,l,u,c){for(var d=a/l,h=o/u,p=a/2,f=o/2,m=s/2,v=l+1,g=u+1,A=0,y=0,w=new Oe,b=0;b<g;b++)for(var x=b*h-f,E=0;E<v;E++)w[e]=(E*d-p)*i,w[t]=x*r,w[n]=m,I.push(w.x,w.y,w.z),w[e]=0,w[t]=0,w[n]=0<s?1:-1,k.push(w.x,w.y,w.z),R.push(E/l),R.push(1-b/u),A+=1;for(var C=0;C<u;C++)for(var B=0;B<l;B++){var M=L+B+v*C,S=L+B+v*(C+1),T=L+(B+1)+v*(C+1),_=L+(B+1)+v*C;D.push(M,S,_),D.push(S,T,_),y+=6}P.addGroup(F,y,c),F+=y,L+=A}return s("z","y","x",-1,-1,i,n,t,o,a,0),s("z","y","x",1,-1,i,n,-t,o,a,1),s("x","z","y",1,1,t,i,n,r,o,2),s("x","z","y",1,-1,t,i,-n,r,o,3),s("x","y","z",1,-1,t,n,i,r,a,4),s("x","y","z",-1,-1,t,n,-i,r,a,5),e.setIndex(D),e.setAttribute("position",new ee(I,3)),e.setAttribute("normal",new ee(k,3)),e.setAttribute("uv",new ee(R,2)),e}return v(l,V),A(l)}();function ha(e){var t,n={};for(t in e)for(var i in n[t]={},e[t]){var r=e[t][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture)?n[t][i]=r.clone():Array.isArray(r)?n[t][i]=r.slice():n[t][i]=r}return n}function pa(e){for(var t={},n=0;n<e.length;n++){var i,r=ha(e[n]);for(i in r)t[i]=r[i]}return t}var fa={clone:ha,merge:pa},ma="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",va="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";function ga(e){Er.call(this),this.type="ShaderMaterial",this.defines={},this.uniforms={},this.vertexShader=ma,this.fragmentShader=va,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&(void 0!==e.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(e))}function Aa(){Z.call(this),this.type="Camera",this.matrixWorldInverse=new Me,this.projectionMatrix=new Me,this.projectionMatrixInverse=new Me}function ya(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:50,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2e3;Aa.call(this),this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}((ga.prototype=Object.create(Er.prototype)).constructor=ga).prototype.isShaderMaterial=!0,ga.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ha(e.uniforms),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.lights=e.lights,this.clipping=e.clipping,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this},ga.prototype.toJSON=function(e){var t,n=Er.prototype.toJSON.call(this,e);for(t in n.glslVersion=this.glslVersion,n.uniforms={},this.uniforms){var i=this.uniforms[t].value;i&&i.isTexture?n.uniforms[t]={type:"t",value:i.toJSON(e).uuid}:i&&i.isColor?n.uniforms[t]={type:"c",value:i.getHex()}:i&&i.isVector2?n.uniforms[t]={type:"v2",value:i.toArray()}:i&&i.isVector3?n.uniforms[t]={type:"v3",value:i.toArray()}:i&&i.isVector4?n.uniforms[t]={type:"v4",value:i.toArray()}:i&&i.isMatrix3?n.uniforms[t]={type:"m3",value:i.toArray()}:i&&i.isMatrix4?n.uniforms[t]={type:"m4",value:i.toArray()}:n.uniforms[t]={value:i}}0<Object.keys(this.defines).length&&(n.defines=this.defines),n.vertexShader=this.vertexShader,n.fragmentShader=this.fragmentShader;var r,a={};for(r in this.extensions)!0===this.extensions[r]&&(a[r]=!0);return 0<Object.keys(a).length&&(n.extensions=a),n},Aa.prototype=Object.assign(Object.create(Z.prototype),{constructor:Aa,isCamera:!0,copy:function(e,t){return Z.prototype.copy.call(this,e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new Oe),this.updateWorldMatrix(!0,!1);var t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()},updateMatrixWorld:function(e){Z.prototype.updateMatrixWorld.call(this,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()},updateWorldMatrix:function(e,t){Z.prototype.updateWorldMatrix.call(this,e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()},clone:function(){return(new this.constructor).copy(this)}}),ya.prototype=Object.assign(Object.create(Aa.prototype),{constructor:ya,isPerspectiveCamera:!0,copy:function(e,t){return Aa.prototype.copy.call(this,e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this},setFocalLength:function(e){e=.5*this.getFilmHeight()/e;this.fov=2*Be.RAD2DEG*Math.atan(e),this.updateProjectionMatrix()},getFocalLength:function(){var e=Math.tan(.5*Be.DEG2RAD*this.fov);return.5*this.getFilmHeight()/e},getEffectiveFOV:function(){return 2*Be.RAD2DEG*Math.atan(Math.tan(.5*Be.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(e,t,n,i,r,a){this.aspect=e/t,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=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e,t=this.near,n=t*Math.tan(.5*Be.DEG2RAD*this.fov)/this.zoom,i=2*n,r=this.aspect*i,a=-.5*r,o=this.view,s=(null!==this.view&&this.view.enabled&&(s=o.fullWidth,e=o.fullHeight,a+=o.offsetX*r/s,n-=o.offsetY*i/e,r*=o.width/s,i*=o.height/e),this.filmOffset);0!==s&&(a+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+r,n,n-i,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()},toJSON:function(e){e=Z.prototype.toJSON.call(this,e);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}});function wa(e,t,a){var o,s,l,u,c,d;Z.call(this),this.type="CubeCamera",!0!==a.isWebGLCubeRenderTarget?console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter."):(this.renderTarget=a,(o=new ya(90,1,e,t)).layers=this.layers,o.up.set(0,-1,0),o.lookAt(new Oe(1,0,0)),this.add(o),(s=new ya(90,1,e,t)).layers=this.layers,s.up.set(0,-1,0),s.lookAt(new Oe(-1,0,0)),this.add(s),(l=new ya(90,1,e,t)).layers=this.layers,l.up.set(0,0,1),l.lookAt(new Oe(0,1,0)),this.add(l),(u=new ya(90,1,e,t)).layers=this.layers,u.up.set(0,0,-1),u.lookAt(new Oe(0,-1,0)),this.add(u),(c=new ya(90,1,e,t)).layers=this.layers,c.up.set(0,-1,0),c.lookAt(new Oe(0,0,1)),this.add(c),(d=new ya(90,1,e,t)).layers=this.layers,d.up.set(0,-1,0),d.lookAt(new Oe(0,0,-1)),this.add(d),this.update=function(e,t){null===this.parent&&this.updateMatrixWorld();var n=e.xr.enabled,i=e.getRenderTarget(),r=(e.xr.enabled=!1,a.texture.generateMipmaps);a.texture.generateMipmaps=!1,e.setRenderTarget(a,0),e.render(t,o),e.setRenderTarget(a,1),e.render(t,s),e.setRenderTarget(a,2),e.render(t,l),e.setRenderTarget(a,3),e.render(t,u),e.setRenderTarget(a,4),e.render(t,c),a.texture.generateMipmaps=r,e.setRenderTarget(a,5),e.render(t,d),e.setRenderTarget(i),e.xr.enabled=n})}function ba(e,t,n,i,r,a,o,s,l,u){Zn.call(this,e=void 0!==e?e:[],t=void 0!==t?t:it,n,i,r,a,o=void 0!==o?o:Dt,s,l,u),this.flipY=!1,this._needsFlipEnvMap=!0}function xa(e,t,n){Number.isInteger(t)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),t=n),ti.call(this,e,e,t),this.texture=new ba(void 0,(t=t||{}).mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture._needsFlipEnvMap=!1}function Ea(e,t,n,i,r,a,o,s,l,u,c,d){Zn.call(this,null,a,o,s,l,u,i,r,c,d),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=void 0!==l?l:ht,this.minFilter=void 0!==u?u:ht,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}(wa.prototype=Object.create(Z.prototype)).constructor=wa,((ba.prototype=Object.create(Zn.prototype)).constructor=ba).prototype.isCubeTexture=!0,Object.defineProperty(ba.prototype,"images",{get:function(){return this.image},set:function(e){this.image=e}}),((xa.prototype=Object.create(ti.prototype)).constructor=xa).prototype.isWebGLCubeRenderTarget=!0,xa.prototype.fromEquirectangularTexture=function(e,t){this.texture.type=t.type,this.texture.format=It,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;var n={tEquirect:{value:null}},i="\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include <begin_vertex>\n\t\t\t\t#include <project_vertex>\n\n\t\t\t}\n\t\t",r="\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t",a=new da(5,5,5),n=new ga({name:"CubemapFromEquirect",uniforms:ha(n),vertexShader:i,fragmentShader:r,side:me,blending:ge}),i=(n.uniforms.tEquirect.value=t,new Q(a,n)),r=t.minFilter;return t.minFilter===vt&&(t.minFilter=N),new wa(1,10,this).update(e,i),t.minFilter=r,i.geometry.dispose(),i.material.dispose(),this},xa.prototype.clear=function(e,t,n,i){for(var r=e.getRenderTarget(),a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,i);e.setRenderTarget(r)},((Ea.prototype=Object.create(Zn.prototype)).constructor=Ea).prototype.isDataTexture=!0;var Ca=new bi,Ba=new Oe,Ma=function(){return A(function e(t,n,i,r,a,o){ue(this,e),this.planes=[void 0!==t?t:new ir,void 0!==n?n:new ir,void 0!==i?i:new ir,void 0!==r?r:new ir,void 0!==a?a:new ir,void 0!==o?o:new ir]},[{key:"set",value:function(e,t,n,i,r,a){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){for(var t=this.planes,n=0;n<6;n++)t[n].copy(e.planes[n]);return this}},{key:"setFromProjectionMatrix",value:function(e){var t=this.planes,e=e.elements,n=e[0],i=e[1],r=e[2],a=e[3],o=e[4],s=e[5],l=e[6],u=e[7],c=e[8],d=e[9],h=e[10],p=e[11],f=e[12],m=e[13],v=e[14],e=e[15];return t[0].setComponents(a-n,u-o,p-c,e-f).normalize(),t[1].setComponents(a+n,u+o,p+c,e+f).normalize(),t[2].setComponents(a+i,u+s,p+d,e+m).normalize(),t[3].setComponents(a-i,u-s,p-d,e-m).normalize(),t[4].setComponents(a-r,u-l,p-h,e-v).normalize(),t[5].setComponents(a+r,u+l,p+h,e+v).normalize(),this}},{key:"intersectsObject",value:function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Ca.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Ca)}},{key:"intersectsSprite",value:function(e){return Ca.center.set(0,0,0),Ca.radius=.7071067811865476,Ca.applyMatrix4(e.matrixWorld),this.intersectsSphere(Ca)}},{key:"intersectsSphere",value:function(e){for(var t=this.planes,n=e.center,i=-e.radius,r=0;r<6;r++)if(t[r].distanceToPoint(n)<i)return!1;return!0}},{key:"intersectsBox",value:function(e){for(var t=this.planes,n=0;n<6;n++){var i=t[n];if(Ba.x=(0<i.normal.x?e.max:e.min).x,Ba.y=(0<i.normal.y?e.max:e.min).y,Ba.z=(0<i.normal.z?e.max:e.min).z,i.distanceToPoint(Ba)<0)return!1}return!0}},{key:"containsPoint",value:function(e){for(var t=this.planes,n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}}])}();function Sa(){var n=null,e=!1,i=null,r=null;function a(e,t){i(e,t),r=n.requestAnimationFrame(a)}return{start:function(){!0!==e&&null!==i&&(r=n.requestAnimationFrame(a),e=!0)},stop:function(){n.cancelAnimationFrame(r),e=!1},setAnimationLoop:function(e){i=e},setContext:function(e){n=e}}}function Ta(l,e){var u=e.isWebGL2,c=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),c.get(e)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);var t=c.get(e);t&&(l.deleteBuffer(t.buffer),c.delete(e))},update:function(e,t){var n,i,r,a,o,s;e.isGLBufferAttribute?(!(n=c.get(e))||n.version<e.version)&&c.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version}):(e.isInterleavedBufferAttribute&&(e=e.data),void 0===(n=c.get(e))?c.set(e,(r=t,a=(i=e).array,o=i.usage,s=l.createBuffer(),l.bindBuffer(r,s),l.bufferData(r,a,o),i.onUploadCallback(),r=5126,a instanceof Float32Array?r=5126:a instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):a instanceof Uint16Array?i.isFloat16BufferAttribute?u?r=5131:console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."):r=5123:a instanceof Int16Array?r=5122:a instanceof Uint32Array?r=5125:a instanceof Int32Array?r=5124:a instanceof Int8Array?r=5120:a instanceof Uint8Array&&(r=5121),{buffer:s,type:r,bytesPerElement:a.BYTES_PER_ELEMENT,version:i.version})):n.version<e.version&&(o=n.buffer,s=t,a=(r=e).array,r=r.updateRange,l.bindBuffer(s,o),-1===r.count?l.bufferSubData(s,0,a):(u?l.bufferSubData(s,r.offset*a.BYTES_PER_ELEMENT,a,r.offset,r.count):l.bufferSubData(s,r.offset*a.BYTES_PER_ELEMENT,a.subarray(r.offset,r.offset+r.count)),r.count=-1),n.version=e.version))}}}var _a=function(){function B(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=(ue(this,B),(e=le(this,B)).type="PlaneBufferGeometry",e.parameters={width:t,height:n,widthSegments:i,heightSegments:r},t/2),o=n/2,s=Math.floor(i),l=Math.floor(r),u=s+1,c=l+1,d=t/s,h=n/l,p=[],f=[],m=[],v=[],g=0;g<c;g++)for(var A=g*h-o,y=0;y<u;y++)f.push(y*d-a,-A,0),m.push(0,0,1),v.push(y/s),v.push(1-g/l);for(var w=0;w<l;w++)for(var b=0;b<s;b++){var x=b+u*(w+1),E=b+1+u*(w+1),C=b+1+u*w;p.push(b+u*w,x,C),p.push(x,E,C)}return e.setIndex(p),e.setAttribute("position",new ee(f,3)),e.setAttribute("normal",new ee(m,3)),e.setAttribute("uv",new ee(v,2)),e}return v(B,V),A(B)}(),Pa={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor.xyz *= color.xyz;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat specularRoughness;\n\tvec3 specularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmissionmap_fragment:"#ifdef USE_TRANSMISSIONMAP\n\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\n#endif",transmissionmap_pars_fragment:"#ifdef USE_TRANSMISSIONMAP\n\tuniform sampler2D transmissionMap;\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include <envmap_common_pars_fragment>\nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include <envmap_fragment>\n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshbasic_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSMISSION\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSMISSION\n\tuniform float transmission;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <transmissionmap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#ifdef TRANSMISSION\n\t\tfloat totalTransmission = transmission;\n\t#endif\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <transmissionmap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSMISSION\n\t\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",shadow_vert:"#include <common>\n#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}"},D={common:{diffuse:{value:new Se(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Yn},uv2Transform:{value:new Yn},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Re(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Se(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Se(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Yn}},sprite:{diffuse:{value:new Se(15658734)},opacity:{value:1},center:{value:new Re(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Yn}}},Da={basic:{uniforms:pa([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.fog]),vertexShader:Pa.meshbasic_vert,fragmentShader:Pa.meshbasic_frag},lambert:{uniforms:pa([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.fog,D.lights,{emissive:{value:new Se(0)}}]),vertexShader:Pa.meshlambert_vert,fragmentShader:Pa.meshlambert_frag},phong:{uniforms:pa([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.fog,D.lights,{emissive:{value:new Se(0)},specular:{value:new Se(1118481)},shininess:{value:30}}]),vertexShader:Pa.meshphong_vert,fragmentShader:Pa.meshphong_frag},standard:{uniforms:pa([D.common,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.roughnessmap,D.metalnessmap,D.fog,D.lights,{emissive:{value:new Se(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Pa.meshphysical_vert,fragmentShader:Pa.meshphysical_frag},toon:{uniforms:pa([D.common,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.gradientmap,D.fog,D.lights,{emissive:{value:new Se(0)}}]),vertexShader:Pa.meshtoon_vert,fragmentShader:Pa.meshtoon_frag},matcap:{uniforms:pa([D.common,D.bumpmap,D.normalmap,D.displacementmap,D.fog,{matcap:{value:null}}]),vertexShader:Pa.meshmatcap_vert,fragmentShader:Pa.meshmatcap_frag},points:{uniforms:pa([D.points,D.fog]),vertexShader:Pa.points_vert,fragmentShader:Pa.points_frag},dashed:{uniforms:pa([D.common,D.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Pa.linedashed_vert,fragmentShader:Pa.linedashed_frag},depth:{uniforms:pa([D.common,D.displacementmap]),vertexShader:Pa.depth_vert,fragmentShader:Pa.depth_frag},normal:{uniforms:pa([D.common,D.bumpmap,D.normalmap,D.displacementmap,{opacity:{value:1}}]),vertexShader:Pa.normal_vert,fragmentShader:Pa.normal_frag},sprite:{uniforms:pa([D.sprite,D.fog]),vertexShader:Pa.sprite_vert,fragmentShader:Pa.sprite_frag},background:{uniforms:{uvTransform:{value:new Yn},t2D:{value:null}},vertexShader:Pa.background_vert,fragmentShader:Pa.background_frag},cube:{uniforms:pa([D.envmap,{opacity:{value:1}}]),vertexShader:Pa.cube_vert,fragmentShader:Pa.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Pa.equirect_vert,fragmentShader:Pa.equirect_frag},distanceRGBA:{uniforms:pa([D.common,D.displacementmap,{referencePosition:{value:new Oe},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Pa.distanceRGBA_vert,fragmentShader:Pa.distanceRGBA_frag},shadow:{uniforms:pa([D.lights,D.fog,{color:{value:new Se(0)},opacity:{value:1}}]),vertexShader:Pa.shadow_vert,fragmentShader:Pa.shadow_frag}};function Ia(a,o,n,s,i){var l,u,c=new Se(0),d=0,h=null,p=0,f=null;function m(e,t){n.buffers.color.setClear(e.r,e.g,e.b,t,i)}return{getClearColor:function(){return c},setClearColor:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;c.set(e),m(c,d=t)},getClearAlpha:function(){return d},setClearAlpha:function(e){m(c,d=e)},render:function(e,t,n,i){(t=!0===t.isScene?t.background:null)&&t.isTexture&&(t=o.get(t));var r=(r=a.xr).getSession&&r.getSession();null===(t=r&&"additive"===r.environmentBlendMode?null:t)?m(c,d):t&&t.isColor&&(m(t,1),i=!0),(a.autoClear||i)&&a.clear(a.autoClearColor,a.autoClearDepth,a.autoClearStencil),t&&(t.isCubeTexture||t.isWebGLCubeRenderTarget||t.mapping===st)?(void 0===u&&((u=new Q(new da(1,1,1),new ga({name:"BackgroundCubeMaterial",uniforms:ha(Da.cube.uniforms),vertexShader:Da.cube.vertexShader,fragmentShader:Da.cube.fragmentShader,side:me,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),t.isWebGLCubeRenderTarget&&(t=t.texture),u.material.uniforms.envMap.value=t,u.material.uniforms.flipEnvMap.value=t.isCubeTexture&&t._needsFlipEnvMap?-1:1,h===t&&p===t.version&&f===a.toneMapping||(u.material.needsUpdate=!0,p=(h=t).version,f=a.toneMapping),e.unshift(u,u.geometry,u.material,0,0,null)):t&&t.isTexture&&(void 0===l&&((l=new Q(new _a(2,2),new ga({name:"BackgroundMaterial",uniforms:ha(Da.background.uniforms),vertexShader:Da.background.vertexShader,fragmentShader:Da.background.fragmentShader,side:fe,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(l)),!0===(l.material.uniforms.t2D.value=t).matrixAutoUpdate&&t.updateMatrix(),l.material.uniforms.uvTransform.value.copy(t.matrix),h===t&&p===t.version&&f===a.toneMapping||(l.material.needsUpdate=!0,p=(h=t).version,f=a.toneMapping),e.unshift(l,l.geometry,l.material,0,0,null))}}}function ka(y,w,b,x){var a=y.getParameter(34921),p=x.isWebGL2?null:w.get("OES_vertex_array_object"),f=x.isWebGL2||null!==p,m={},e=A(null),v=e;function g(e){if(x.isWebGL2)return y.bindVertexArray(e);p.bindVertexArrayOES(e)}function o(e){if(x.isWebGL2)return y.deleteVertexArray(e);p.deleteVertexArrayOES(e)}function A(e){for(var t=[],n=[],i=[],r=0;r<a;r++)i[r]=n[r]=t[r]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:n,attributeDivisors:i,object:e,attributes:{},index:null}}function E(){for(var e=v.newAttributes,t=0,n=e.length;t<n;t++)e[t]=0}function C(e){B(e,0)}function B(e,t){var n=v.newAttributes,i=v.enabledAttributes,r=v.attributeDivisors;n[e]=1,0===i[e]&&(y.enableVertexAttribArray(e),i[e]=1),r[e]!==t&&((x.isWebGL2?y:w.get("ANGLE_instanced_arrays"))[x.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](e,t),r[e]=t)}function M(){for(var e=v.newAttributes,t=v.enabledAttributes,n=0,i=t.length;n<i;n++)t[n]!==e[n]&&(y.disableVertexAttribArray(n),t[n]=0)}function S(e,t,n,i,r,a){!0!==x.isWebGL2||5124!==n&&5125!==n?y.vertexAttribPointer(e,t,n,i,r,a):y.vertexAttribIPointer(e,t,n,r,a)}function s(){t(),v!==e&&g((v=e).object)}function t(){e.geometry=null,e.program=null,e.wireframe=!1}return{setup:function(e,t,n,i,r){var a=!1;if(f){var o=function(e,t,n){var n=!0===n.wireframe,i=m[e.id];void 0===i&&(i={},m[e.id]=i);e=i[t.id];void 0===e&&(e={},i[t.id]=e);i=e[n];void 0===i&&(i=A(x.isWebGL2?y.createVertexArray():p.createVertexArrayOES()),e[n]=i);return i}(i,n,t);if(v!==o&&g((v=o).object),a=function(e,t){var n,i=v.attributes,r=e.attributes,a=0;for(n in r){var o=i[n],s=r[n];if(void 0===o)return!0;if(o.attribute!==s)return!0;if(o.data!==s.data)return!0;a++}return v.attributesNum!==a||v.index!==t}(i,r)){var s,o=r,l={},u=i.attributes,c=0;for(s in u){var d=u[s],h={};(h.attribute=d).data&&(h.data=d.data),l[s]=h,c++}v.attributes=l,v.attributesNum=c,v.index=o}}else{o=!0===t.wireframe;v.geometry===i.id&&v.program===n.id&&v.wireframe===o||(v.geometry=i.id,v.program=n.id,v.wireframe=o,a=!0)}!0===e.isInstancedMesh&&(a=!0),null!==r&&b.update(r,34963),a&&(function(e,t,n,i){if(!1===x.isWebGL2&&(e.isInstancedMesh||i.isInstancedBufferGeometry)&&null===w.get("ANGLE_instanced_arrays"))return;E();var r,a=i.attributes,o=n.getAttributes(),s=t.defaultAttributeValues;for(r in o){var l=o[r];if(0<=l){var u=a[r];if(void 0!==u){var c,d=u.normalized,h=u.itemSize,p=b.get(u);void 0!==p&&(g=p.buffer,c=p.type,p=p.bytesPerElement,u.isInterleavedBufferAttribute?(v=u.data,f=v.stride,m=u.offset,v&&v.isInstancedInterleavedBuffer?(B(l,v.meshPerAttribute),void 0===i._maxInstanceCount&&(i._maxInstanceCount=v.meshPerAttribute*v.count)):C(l),y.bindBuffer(34962,g),S(l,h,c,d,f*p,m*p)):(u.isInstancedBufferAttribute?(B(l,u.meshPerAttribute),void 0===i._maxInstanceCount&&(i._maxInstanceCount=u.meshPerAttribute*u.count)):C(l),y.bindBuffer(34962,g),S(l,h,c,d,0,0)))}else if("instanceMatrix"===r){var f,m,v=b.get(e.instanceMatrix);void 0!==v&&(f=v.buffer,m=v.type,B(l+0,1),B(l+1,1),B(l+2,1),B(l+3,1),y.bindBuffer(34962,f),y.vertexAttribPointer(l+0,4,m,!1,64,0),y.vertexAttribPointer(l+1,4,m,!1,64,16),y.vertexAttribPointer(l+2,4,m,!1,64,32),y.vertexAttribPointer(l+3,4,m,!1,64,48))}else if("instanceColor"===r){var g,p=b.get(e.instanceColor);void 0!==p&&(u=p.buffer,g=p.type,B(l,1),y.bindBuffer(34962,u),y.vertexAttribPointer(l,3,g,!1,12,0))}else if(void 0!==s){var A=s[r];if(void 0!==A)switch(A.length){case 2:y.vertexAttrib2fv(l,A);break;case 3:y.vertexAttrib3fv(l,A);break;case 4:y.vertexAttrib4fv(l,A);break;default:y.vertexAttrib1fv(l,A)}}}}M()}(e,t,n,i),null!==r)&&y.bindBuffer(34963,b.get(r).buffer)},reset:s,resetDefaultState:t,dispose:function(){for(var e in s(),m){var t,n=m[e];for(t in n){var i,r=n[t];for(i in r)o(r[i].object),delete r[i];delete n[t]}delete m[e]}},releaseStatesOfGeometry:function(e){if(void 0!==m[e.id]){var t,n=m[e.id];for(t in n){var i,r=n[t];for(i in r)o(r[i].object),delete r[i];delete n[t]}delete m[e.id]}},releaseStatesOfProgram:function(e){for(var t in m){t=m[t];if(void 0!==t[e.id]){var n,i=t[e.id];for(n in i)o(i[n].object),delete i[n];delete t[e.id]}}},initAttributes:E,enableAttribute:C,disableUnusedAttributes:M}}function Ra(a,o,s,e){var l,u=e.isWebGL2;this.setMode=function(e){l=e},this.render=function(e,t){a.drawArrays(l,e,t),s.update(t,l,1)},this.renderInstances=function(e,t,n){if(0!==n){var i,r;if(u)i=a,r="drawArraysInstanced";else if(r="drawArraysInstancedANGLE",null===(i=o.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");i[r](l,e,t,n),s.update(t,l,n)}}}function La(t,n,e){var i;function r(e){if("highp"===e){if(0<t.getShaderPrecisionFormat(35633,36338).precision&&0<t.getShaderPrecisionFormat(35632,36338).precision)return"highp";e="mediump"}return"mediump"===e&&0<t.getShaderPrecisionFormat(35633,36337).precision&&0<t.getShaderPrecisionFormat(35632,36337).precision?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext,o=void 0!==e.precision?e.precision:"highp",s=r(o),s=(s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s),!0===e.logarithmicDepthBuffer),e=t.getParameter(34930),l=t.getParameter(35660),u=t.getParameter(3379),c=t.getParameter(34076),d=t.getParameter(34921),h=t.getParameter(36347),p=t.getParameter(36348),f=t.getParameter(36349),m=0<l,v=a||!!n.get("OES_texture_float");return{isWebGL2:a,getMaxAnisotropy:function(){var e;return void 0===i&&(e=n.get("EXT_texture_filter_anisotropic"),i=null!==e?t.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0),i},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:s,maxTextures:e,maxVertexTextures:l,maxTextureSize:u,maxCubemapSize:c,maxAttributes:d,maxVertexUniforms:h,maxVaryings:p,maxFragmentUniforms:f,vertexTextures:m,floatFragmentTextures:v,floatVertexTextures:m&&v,maxSamples:a?t.getParameter(36183):0}}function Fa(u){var c=this,d=null,h=0,p=!1,f=!1,m=new ir,v=new Yn,g={value:null,needsUpdate:!1};function A(){g.value!==d&&(g.value=d,g.needsUpdate=0<h),c.numPlanes=h,c.numIntersection=0}function y(e,t,n,i){var r=null!==e?e.length:0,a=null;if(0!==r){if(a=g.value,!0!==i||null===a){var i=n+4*r,o=t.matrixWorldInverse;v.getNormalMatrix(o),(null===a||a.length<i)&&(a=new Float32Array(i));for(var s=0,l=n;s!==r;++s,l+=4)m.copy(e[s]).applyMatrix4(o,v),m.normal.toArray(a,l),a[l+3]=m.constant}g.value=a,g.needsUpdate=!0}return c.numPlanes=r,c.numIntersection=0,a}this.uniform=g,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t,n){var i=0!==e.length||t||0!==h||p;return p=t,d=y(e,n,0),h=e.length,i},this.beginShadows=function(){f=!0,y(null)},this.endShadows=function(){f=!1,A()},this.setState=function(e,t,n){var i=e.clippingPlanes,r=e.clipIntersection,a=e.clipShadows,e=u.get(e);if(!p||null===i||0===i.length||f&&!a)f?y(null):A();else{var a=f?0:h,o=4*a,s=e.clippingState||null;g.value=s;for(var s=y(i,t,o,n),l=0;l!==o;++l)s[l]=d[l];e.clippingState=s,this.numIntersection=r?this.numPlanes:0,this.numPlanes+=a}}}function Oa(r){var a=new WeakMap;function o(e,t){return t===at?e.mapping=it:t===ot&&(e.mapping=rt),e}function s(e){var e=e.target,t=(e.removeEventListener("dispose",s),a.get(e));void 0!==t&&(a.delete(e),t.dispose())}return{get:function(e){if(e&&e.isTexture){var t,n,i=e.mapping;if(i===at||i===ot)return a.has(e)?o(a.get(e).texture,e.mapping):(i=e.image)&&0<i.height?(t=r.getRenderList(),n=r.getRenderTarget(),(i=new xa(i.height/2)).fromEquirectangularTexture(r,e),a.set(e,i),r.setRenderTarget(n),r.setRenderList(t),e.addEventListener("dispose",s),o(i.texture,e.mapping)):null}return e},dispose:function(){a=new WeakMap}}}function Ua(n){var i={};return{has:function(e){if(void 0!==i[e])return null!==i[e];var t;switch(e){case"WEBGL_depth_texture":t=n.getExtension("WEBGL_depth_texture")||n.getExtension("MOZ_WEBGL_depth_texture")||n.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":t=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":t=n.getExtension("WEBGL_compressed_texture_s3tc")||n.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":t=n.getExtension("WEBGL_compressed_texture_pvrtc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:t=n.getExtension(e)}return null!==(i[e]=t)},get:function(e){return this.has(e)||console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),i[e]}}}function Na(e,v,r,a){var o=new WeakMap,g=new WeakMap;function s(e){var t,e=e.target,n=o.get(e);for(t in null!==n.index&&v.remove(n.index),n.attributes)v.remove(n.attributes[t]);e.removeEventListener("dispose",s),o.delete(e);var i=g.get(n);i&&(v.remove(i),g.delete(n)),a.releaseStatesOfGeometry(n),!0===e.isInstancedBufferGeometry&&delete e._maxInstanceCount,r.memory.geometries--}function i(e){var t=[],n=e.index,i=e.attributes.position,r=0;if(null!==n)for(var a=n.array,r=n.version,o=0,s=a.length;o<s;o+=3){var l=a[o+0],u=a[o+1],c=a[o+2];t.push(l,u,u,c,c,l)}else{n=i.array;r=i.version;for(var d=0,h=n.length/3-1;d<h;d+=3){var p=d+0,f=d+1,m=d+2;t.push(p,f,f,m,m,p)}}i=new(65535<Fr(t)?Ir:Pr)(t,1),i.version=r,n=g.get(e);n&&v.remove(n),g.set(e,i)}return{get:function(e,t){var n=o.get(t);return n||(t.addEventListener("dispose",s),t.isBufferGeometry?n=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new V).setFromObject(e)),n=t._bufferGeometry),o.set(t,n),r.memory.geometries++),n},update:function(e){var t,n=e.attributes;for(t in n)v.update(n[t],34962);var i,r=e.morphAttributes;for(i in r)for(var a=r[i],o=0,s=a.length;o<s;o++)v.update(a[o],34962)},getWireframeAttribute:function(e){var t,n=g.get(e);return(!n||null!==(t=e.index)&&n.version<t.version)&&i(e),g.get(e)}}}function za(a,o,s,e){var l,u,c,d=e.isWebGL2;this.setMode=function(e){l=e},this.setIndex=function(e){u=e.type,c=e.bytesPerElement},this.render=function(e,t){a.drawElements(l,t,u,e*c),s.update(t,l,1)},this.renderInstances=function(e,t,n){if(0!==n){var i,r;if(d)i=a,r="drawElementsInstanced";else if(r="drawElementsInstancedANGLE",null===(i=o.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");i[r](l,t,u,e*c,n),s.update(t,l,n)}}}function Ga(e){var i={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:i,programs:null,autoReset:!0,reset:function(){i.frame++,i.calls=0,i.triangles=0,i.points=0,i.lines=0},update:function(e,t,n){switch(i.calls++,t){case 4:i.triangles+=n*(e/3);break;case 1:i.lines+=n*(e/2);break;case 3:i.lines+=n*(e-1);break;case 2:i.lines+=n*e;break;case 0:i.points+=n*e;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",t)}}}}function Ha(e,t){return e[0]-t[0]}function Va(e,t){return Math.abs(t[1])-Math.abs(e[1])}function Qa(g){for(var A={},y=new Float32Array(8),w=[],e=0;e<8;e++)w[e]=[e,0];return{update:function(e,t,n,i){var r=e.morphTargetInfluences,a=void 0===r?0:r.length;if(void 0===(o=A[t.id])){for(var o=[],s=0;s<a;s++)o[s]=[s,0];A[t.id]=o}for(var l=0;l<a;l++){var u=o[l];u[0]=l,u[1]=r[l]}o.sort(Va);for(var c=0;c<8;c++)c<a&&o[c][1]?(w[c][0]=o[c][0],w[c][1]=o[c][1]):(w[c][0]=Number.MAX_SAFE_INTEGER,w[c][1]=0);w.sort(Ha);for(var d=n.morphTargets&&t.morphAttributes.position,h=n.morphNormals&&t.morphAttributes.normal,p=0,f=0;f<8;f++){var m=w[f],v=m[0],m=m[1];v!==Number.MAX_SAFE_INTEGER&&m?(d&&t.getAttribute("morphTarget"+f)!==d[v]&&t.setAttribute("morphTarget"+f,d[v]),h&&t.getAttribute("morphNormal"+f)!==h[v]&&t.setAttribute("morphNormal"+f,h[v]),p+=y[f]=m):(d&&!0===t.hasAttribute("morphTarget"+f)&&t.deleteAttribute("morphTarget"+f),h&&!0===t.hasAttribute("morphNormal"+f)&&t.deleteAttribute("morphNormal"+f),y[f]=0)}e=t.morphTargetsRelative?1:1-p,i.getUniforms().setValue(g,"morphTargetBaseInfluence",e),i.getUniforms().setValue(g,"morphTargetInfluences",y)}}}function ja(e,r,a,o){var s=new WeakMap;function l(e){e=e.target;e.removeEventListener("dispose",l),a.remove(e.instanceMatrix),null!==e.instanceColor&&a.remove(e.instanceColor)}return{update:function(e){var t=o.render.frame,n=e.geometry,i=r.get(e,n);return s.get(i)!==t&&(n.isGeometry&&i.updateFromObject(e),r.update(i),s.set(i,t)),e.isInstancedMesh&&(!1===e.hasEventListener("dispose",l)&&e.addEventListener("dispose",l),a.update(e.instanceMatrix,34962),null!==e.instanceColor)&&a.update(e.instanceColor,34962),i},dispose:function(){s=new WeakMap}}}function Wa(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;Zn.call(this,null),this.image={data:e,width:t,height:n,depth:i},this.magFilter=ht,this.minFilter=ht,this.wrapR=ct,this.generateMipmaps=!1,this.flipY=!1,this.needsUpdate=!0}function Ja(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;Zn.call(this,null),this.image={data:e,width:t,height:n,depth:i},this.magFilter=ht,this.minFilter=ht,this.wrapR=ct,this.generateMipmaps=!1,this.flipY=!1,this.needsUpdate=!0}Da.physical={uniforms:pa([Da.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Re(1,1)},clearcoatNormalMap:{value:null},sheen:{value:new Se(0)},transmission:{value:0},transmissionMap:{value:null}}]),vertexShader:Pa.meshphysical_vert,fragmentShader:Pa.meshphysical_frag},((Wa.prototype=Object.create(Zn.prototype)).constructor=Wa).prototype.isDataTexture2DArray=!0,((Ja.prototype=Object.create(Zn.prototype)).constructor=Ja).prototype.isDataTexture3D=!0;var qa=new Zn,Ya=new Wa,Xa=new Ja,Ka=new ba,Za=[],$a=[],eo=new Float32Array(16),to=new Float32Array(9),no=new Float32Array(4);function io(e,t,n){var i=e[0];if(i<=0||0<i)return e;var r=t*n,a=Za[r];if(void 0===a&&(a=new Float32Array(r),Za[r]=a),0!==t){i.toArray(a,0);for(var o=1,s=0;o!==t;++o)e[o].toArray(a,s+=n)}return a}function ro(e,t){if(e.length===t.length){for(var n=0,i=e.length;n<i;n++)if(e[n]!==t[n])return;return 1}}function ao(e,t){for(var n=0,i=t.length;n<i;n++)e[n]=t[n]}function oo(e,t){var n=$a[t];void 0===n&&(n=new Int32Array(t),$a[t]=n);for(var i=0;i!==t;++i)n[i]=e.allocateTextureUnit();return n}function so(e,t){var n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function lo(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y||(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y):ro(n,t)||(e.uniform2fv(this.addr,t),ao(n,t))}function uo(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z):void 0!==t.r?n[0]===t.r&&n[1]===t.g&&n[2]===t.b||(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b):ro(n,t)||(e.uniform3fv(this.addr,t),ao(n,t))}function co(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w):ro(n,t)||(e.uniform4fv(this.addr,t),ao(n,t))}function ho(e,t){var n=this.cache,i=t.elements;void 0===i?ro(n,t)||(e.uniformMatrix2fv(this.addr,!1,t),ao(n,t)):ro(n,i)||(no.set(i),e.uniformMatrix2fv(this.addr,!1,no),ao(n,i))}function po(e,t){var n=this.cache,i=t.elements;void 0===i?ro(n,t)||(e.uniformMatrix3fv(this.addr,!1,t),ao(n,t)):ro(n,i)||(to.set(i),e.uniformMatrix3fv(this.addr,!1,to),ao(n,i))}function fo(e,t){var n=this.cache,i=t.elements;void 0===i?ro(n,t)||(e.uniformMatrix4fv(this.addr,!1,t),ao(n,t)):ro(n,i)||(eo.set(i),e.uniformMatrix4fv(this.addr,!1,eo),ao(n,i))}function mo(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.safeSetTexture2D(t||qa,r)}function vo(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(t||Ya,r)}function go(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(t||Xa,r)}function Ao(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.safeSetTextureCube(t||Ka,r)}function yo(e,t){var n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function wo(e,t){var n=this.cache;ro(n,t)||(e.uniform2iv(this.addr,t),ao(n,t))}function bo(e,t){var n=this.cache;ro(n,t)||(e.uniform3iv(this.addr,t),ao(n,t))}function xo(e,t){var n=this.cache;ro(n,t)||(e.uniform4iv(this.addr,t),ao(n,t))}function Eo(e,t){var n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function Co(e,t){e.uniform1fv(this.addr,t)}function Bo(e,t){e.uniform1iv(this.addr,t)}function Mo(e,t){e.uniform2iv(this.addr,t)}function So(e,t){e.uniform3iv(this.addr,t)}function To(e,t){e.uniform4iv(this.addr,t)}function _o(e,t){t=io(t,this.size,2);e.uniform2fv(this.addr,t)}function Po(e,t){t=io(t,this.size,3);e.uniform3fv(this.addr,t)}function Do(e,t){t=io(t,this.size,4);e.uniform4fv(this.addr,t)}function Io(e,t){t=io(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,t)}function ko(e,t){t=io(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,t)}function Ro(e,t){t=io(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,t)}function Lo(e,t,n){var i=t.length,r=oo(n,i);e.uniform1iv(this.addr,r);for(var a=0;a!==i;++a)n.safeSetTexture2D(t[a]||qa,r[a])}function Fo(e,t,n){var i=t.length,r=oo(n,i);e.uniform1iv(this.addr,r);for(var a=0;a!==i;++a)n.safeSetTextureCube(t[a]||Ka,r[a])}function Oo(e,t,n){this.id=e,this.addr=n,this.cache=[],this.setValue=function(e){switch(e){case 5126:return so;case 35664:return lo;case 35665:return uo;case 35666:return co;case 35674:return ho;case 35675:return po;case 35676:return fo;case 5124:case 35670:return yo;case 35667:case 35671:return wo;case 35668:case 35672:return bo;case 35669:case 35673:return xo;case 5125:return Eo;case 35678:case 36198:case 36298:case 36306:case 35682:return mo;case 35679:case 36299:case 36307:return go;case 35680:case 36300:case 36308:case 36293:return Ao;case 36289:case 36303:case 36311:case 36292:return vo}}(t.type)}function Uo(e,t,n){this.id=e,this.addr=n,this.cache=[],this.size=t.size,this.setValue=function(e){switch(e){case 5126:return Co;case 35664:return _o;case 35665:return Po;case 35666:return Do;case 35674:return Io;case 35675:return ko;case 35676:return Ro;case 5124:case 35670:return Bo;case 35667:case 35671:return Mo;case 35668:case 35672:return So;case 35669:case 35673:return To;case 35678:case 36198:case 36298:case 36306:case 35682:return Lo;case 35680:case 36300:case 36308:case 36293:return Fo}}(t.type)}function No(e){this.id=e,this.seq=[],this.map={}}Uo.prototype.updateCache=function(e){var t=this.cache;e instanceof Float32Array&&t.length!==e.length&&(this.cache=new Float32Array(e.length)),ao(t,e)},No.prototype.setValue=function(e,t,n){for(var i=this.seq,r=0,a=i.length;r!==a;++r){var o=i[r];o.setValue(e,t[o.id],n)}};var zo=/(\w+)(\])?(\[|\.)?/g;function Go(e,t){e.seq.push(t),e.map[t.id]=t}function Ho(e,t){this.seq=[],this.map={};for(var n=e.getProgramParameter(t,35718),i=0;i<n;++i){var r=e.getActiveUniform(t,i),a=e.getUniformLocation(t,r.name),o=(f=p=h=d=c=u=l=s=o=void 0,r),s=a,l=this,u=o.name,c=u.length;for(zo.lastIndex=0;;){var d=zo.exec(u),h=zo.lastIndex,p=d[1],f="]"===d[2],d=d[3];if(f&&(p|=0),void 0===d||"["===d&&h+2===c){Go(l,new(void 0===d?Oo:Uo)(p,o,s));break}f=l.map[p];void 0===f&&Go(l,f=new No(p)),l=f}}}function Vo(e,t,n){t=e.createShader(t);return e.shaderSource(t,n),e.compileShader(t),t}Ho.prototype.setValue=function(e,t,n,i){t=this.map[t];void 0!==t&&t.setValue(e,n,i)},Ho.prototype.setOptional=function(e,t,n){t=t[n];void 0!==t&&this.setValue(e,n,t)},Ho.upload=function(e,t,n,i){for(var r=0,a=t.length;r!==a;++r){var o=t[r],s=n[o.id];!1!==s.needsUpdate&&o.setValue(e,s.value,i)}},Ho.seqWithValue=function(e,t){for(var n=[],i=0,r=e.length;i!==r;++i){var a=e[i];a.id in t&&n.push(a)}return n};var Qo=0;function jo(e){switch(e){case Fn:return["Linear","( value )"];case On:return["sRGB","( value )"];case 3002:return["RGBE","( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];case 3003:return["LogLuv","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}function Wo(e,t,n){var i=e.getShaderParameter(t,35713),r=e.getShaderInfoLog(t).trim();return i&&""===r?"":"THREE.WebGLShader: gl.getShaderInfoLog() "+n+"\n"+r+function(e){for(var t=e.split("\n"),n=0;n<t.length;n++)t[n]=n+1+": "+t[n];return t.join("\n")}(e.getShaderSource(t))}function Jo(e,t){t=jo(t);return"vec4 "+e+"( vec4 value ) { return "+t[0]+"ToLinear"+t[1]+"; }"}function qo(e){return""!==e}function Yo(e,t){return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Xo(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var Ko=/^[ \t]*#include +<([\w\d./]+)>/gm;function Zo(e){return e.replace(Ko,$o)}function $o(e,t){var n=Pa[t];if(void 0===n)throw new Error("Can not resolve #include <"+t+">");return Zo(n)}var es=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,ts=/#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 ns(e){return e.replace(ts,rs).replace(es,is)}function is(e,t,n,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),rs(0,t,n,i)}function rs(e,t,n,i){for(var r="",a=parseInt(t);a<parseInt(n);a++)r+=i.replace(/\[\s*i\s*\]/g,"[ "+a+" ]").replace(/UNROLLED_LOOP_INDEX/g,a);return r}function as(e){var t="precision "+e.precision+" float;\nprecision "+e.precision+" int;";return"highp"===e.precision?t+="\n#define HIGH_PRECISION":"mediump"===e.precision?t+="\n#define MEDIUM_PRECISION":"lowp"===e.precision&&(t+="\n#define LOW_PRECISION"),t}function os(e,t,n,i){var r,a,o,s,l,u=e.getContext(),c=n.defines,d=n.vertexShader,h=n.fragmentShader,p=(f="SHADOWMAP_TYPE_BASIC",(p=n).shadowMapType===he?f="SHADOWMAP_TYPE_PCF":2===p.shadowMapType?f="SHADOWMAP_TYPE_PCF_SOFT":p.shadowMapType===pe&&(f="SHADOWMAP_TYPE_VSM"),f),f=function(e){var t="ENVMAP_TYPE_CUBE";if(e.envMap)switch(e.envMapMode){case it:case rt:t="ENVMAP_TYPE_CUBE";break;case st:case lt:t="ENVMAP_TYPE_CUBE_UV"}return t}(n),m=function(e){var t="ENVMAP_MODE_REFLECTION";if(e.envMap)switch(e.envMapMode){case rt:case lt:t="ENVMAP_MODE_REFRACTION"}return t}(n),v=function(e){var t="ENVMAP_BLENDING_NONE";if(e.envMap)switch(e.combine){case tt:t="ENVMAP_BLENDING_MULTIPLY";break;case 1:t="ENVMAP_BLENDING_MIX";break;case 2:t="ENVMAP_BLENDING_ADD"}return t}(n),g=0<e.gammaFactor?e.gammaFactor:1,A=n.isWebGL2?"":[(A=n).extensionDerivatives||A.envMapCubeUV||A.bumpMap||A.tangentSpaceNormalMap||A.clearcoatNormalMap||A.flatShading||"physical"===A.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(A.extensionFragDepth||A.logarithmicDepthBuffer)&&A.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",A.extensionDrawBuffers&&A.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(A.extensionShaderTextureLOD||A.envMap)&&A.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(qo).join("\n"),c=function(e){var t,n=[];for(t in e){var i=e[t];!1!==i&&n.push("#define "+t+" "+i)}return n.join("\n")}(c),y=u.createProgram(),w=n.glslVersion?"#version "+n.glslVersion+"\n":"",f=(n.isRawShaderMaterial?(0<(r=[c].filter(qo).join("\n")).length&&(r+="\n"),0<(a=[A,c].filter(qo).join("\n")).length&&(a+="\n")):(r=[as(n),"#define SHADER_NAME "+n.shaderName,c,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+g,"#define MAX_BONES "+n.maxBones,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.displacementMap&&n.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+p:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(qo).join("\n"),a=[A,as(n),"#define SHADER_NAME "+n.shaderName,c,n.alphaTest?"#define ALPHATEST "+n.alphaTest+(n.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+g,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+f:"",n.envMap?"#define "+m:"",n.envMap?"#define "+v:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.sheen?"#define USE_SHEEN":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+p:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(n.extensionShaderTextureLOD||n.envMap)&&n.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==nt?"#define TONE_MAPPING":"",n.toneMapping!==nt?Pa.tonemapping_pars_fragment:"",n.toneMapping!==nt?function(e,t){var n;switch(t){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="OptimizedCineon";break;case 4:n="ACESFilmic";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),n="Linear"}return"vec3 "+e+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",Pa.encodings_pars_fragment,n.map?Jo("mapTexelToLinear",n.mapEncoding):"",n.matcap?Jo("matcapTexelToLinear",n.matcapEncoding):"",n.envMap?Jo("envMapTexelToLinear",n.envMapEncoding):"",n.emissiveMap?Jo("emissiveMapTexelToLinear",n.emissiveMapEncoding):"",n.lightMap?Jo("lightMapTexelToLinear",n.lightMapEncoding):"",(c="linearToOutputTexel",g=jo(g=n.outputEncoding),"vec4 "+c+"( vec4 value ) { return LinearTo"+g[0]+g[1]+"; }"),n.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(qo).join("\n")),d=Xo(Yo(Zo(d),n),n),h=Xo(Yo(Zo(h),n),n),d=ns(d),h=ns(h),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(w="#version 300 es\n",r=["#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+r,a=["#define varying in",n.glslVersion===Vn?"":"out highp vec4 pc_fragColor;",n.glslVersion===Vn?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+a),w+r+d),m=w+a+h,v=Vo(u,35633,f),p=Vo(u,35632,m);return u.attachShader(y,v),u.attachShader(y,p),void 0!==n.index0AttributeName?u.bindAttribLocation(y,0,n.index0AttributeName):!0===n.morphTargets&&u.bindAttribLocation(y,0,"position"),u.linkProgram(y),e.debug.checkShaderErrors&&(c=u.getProgramInfoLog(y).trim(),g=u.getShaderInfoLog(v).trim(),d=u.getShaderInfoLog(p).trim(),!(h=w=!0)===u.getProgramParameter(y,35714)?(w=!1,e=Wo(u,v,"vertex"),o=Wo(u,p,"fragment"),console.error("THREE.WebGLProgram: shader error: ",u.getError(),"35715",u.getProgramParameter(y,35715),"gl.getProgramInfoLog",c,e,o),o?console.log(m.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n")):console.log(f.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"))):""!==c?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",c):""!==g&&""!==d||(h=!1),h)&&(this.diagnostics={runnable:w,programLog:c,vertexShader:{log:g,prefix:r},fragmentShader:{log:d,prefix:a}}),u.deleteShader(v),u.deleteShader(p),this.getUniforms=function(){return s=void 0===s?new Ho(u,y):s},this.getAttributes=function(){return l=void 0===l?function(e,t){for(var n={},i=e.getProgramParameter(t,35721),r=0;r<i;r++){var a=e.getActiveAttrib(t,r).name;n[a]=e.getAttribLocation(t,a)}return n}(u,y):l},this.destroy=function(){i.releaseStatesOfProgram(this),u.deleteProgram(y),this.program=void 0},this.name=n.shaderName,this.id=Qo++,this.cacheKey=t,this.usedTimes=1,this.program=y,this.vertexShader=v,this.fragmentShader=p,this}function ss(h,p,f,m,o,v){var s=[],g=m.isWebGL2,A=m.logarithmicDepthBuffer,y=m.floatVertexTextures,w=m.maxVertexUniforms,b=m.vertexTextures,x=m.precision,E={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},r=["precision","isWebGL2","supportsVertexTextures","outputEncoding","instancing","instancingColor","map","mapEncoding","matcap","matcapEncoding","envMap","envMapMode","envMapEncoding","envMapCubeUV","lightMap","lightMapEncoding","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","objectSpaceNormalMap","tangentSpaceNormalMap","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","vertexTangents","vertexUvs","uvsVertexOnly","fog","useFog","fogExp2","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","maxMorphTargets","maxMorphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","numDirLightShadows","numPointLightShadows","numSpotLightShadows","shadowMapEnabled","shadowMapType","toneMapping","physicallyCorrectLights","alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering","sheen","transmissionMap"];function C(e){e=e&&e.isTexture?e.encoding:e&&e.isWebGLRenderTarget?(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),e.texture.encoding):Fn;return e}return{getParameters:function(e,t,n,i,r){var a,o,s,l=i.fog,i=e.isMeshStandardMaterial?i.environment:null,i=p.get(e.envMap||i),u=E[e.type],c=r.isSkinnedMesh?(c=(c=r).skeleton.bones,y?1024:(a=Math.floor((w-20)/4),(a=Math.min(a,c.length))<c.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+c.length+" bones. This GPU supports "+a+"."),0):a)):0,d=(null!==e.precision&&(x=m.getMaxPrecision(e.precision))!==e.precision&&console.warn("THREE.WebGLProgram.getParameters:",e.precision,"not supported, using",x,"instead."),s=(u?(o=(a=Da[u]).vertexShader,a):(o=e.vertexShader,e)).fragmentShader,h.getRenderTarget());return{isWebGL2:g,shaderID:u,shaderName:e.type,vertexShader:o,fragmentShader:s,defines:e.defines,isRawShaderMaterial:!0===e.isRawShaderMaterial,glslVersion:e.glslVersion,precision:x,instancing:!0===r.isInstancedMesh,instancingColor:!0===r.isInstancedMesh&&null!==r.instanceColor,supportsVertexTextures:b,outputEncoding:null!==d?C(d.texture):h.outputEncoding,map:!!e.map,mapEncoding:C(e.map),matcap:!!e.matcap,matcapEncoding:C(e.matcap),envMap:!!i,envMapMode:i&&i.mapping,envMapEncoding:C(i),envMapCubeUV:!!i&&(i.mapping===st||i.mapping===lt),lightMap:!!e.lightMap,lightMapEncoding:C(e.lightMap),aoMap:!!e.aoMap,emissiveMap:!!e.emissiveMap,emissiveMapEncoding:C(e.emissiveMap),bumpMap:!!e.bumpMap,normalMap:!!e.normalMap,objectSpaceNormalMap:e.normalMapType===zn,tangentSpaceNormalMap:e.normalMapType===Nn,clearcoatMap:!!e.clearcoatMap,clearcoatRoughnessMap:!!e.clearcoatRoughnessMap,clearcoatNormalMap:!!e.clearcoatNormalMap,displacementMap:!!e.displacementMap,roughnessMap:!!e.roughnessMap,metalnessMap:!!e.metalnessMap,specularMap:!!e.specularMap,alphaMap:!!e.alphaMap,gradientMap:!!e.gradientMap,sheen:!!e.sheen,transmissionMap:!!e.transmissionMap,combine:e.combine,vertexTangents:e.normalMap&&e.vertexTangents,vertexColors:e.vertexColors,vertexUvs:!!(e.map||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e.emissiveMap||e.roughnessMap||e.metalnessMap||e.clearcoatMap||e.clearcoatRoughnessMap||e.clearcoatNormalMap||e.displacementMap||e.transmissionMap),uvsVertexOnly:!(e.map||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e.emissiveMap||e.roughnessMap||e.metalnessMap||e.clearcoatNormalMap||e.transmissionMap||!e.displacementMap),fog:!!l,useFog:e.fog,fogExp2:l&&l.isFogExp2,flatShading:e.flatShading,sizeAttenuation:e.sizeAttenuation,logarithmicDepthBuffer:A,skinning:e.skinning&&0<c,maxBones:c,useVertexTexture:y,morphTargets:e.morphTargets,morphNormals:e.morphNormals,maxMorphTargets:h.maxMorphTargets,maxMorphNormals:h.maxMorphNormals,numDirLights:t.directional.length,numPointLights:t.point.length,numSpotLights:t.spot.length,numRectAreaLights:t.rectArea.length,numHemiLights:t.hemi.length,numDirLightShadows:t.directionalShadowMap.length,numPointLightShadows:t.pointShadowMap.length,numSpotLightShadows:t.spotShadowMap.length,numClippingPlanes:v.numPlanes,numClipIntersection:v.numIntersection,dithering:e.dithering,shadowMapEnabled:h.shadowMap.enabled&&0<n.length,shadowMapType:h.shadowMap.type,toneMapping:e.toneMapped?h.toneMapping:nt,physicallyCorrectLights:h.physicallyCorrectLights,premultipliedAlpha:e.premultipliedAlpha,alphaTest:e.alphaTest,doubleSided:e.side===ve,flipSided:e.side===me,depthPacking:void 0!==e.depthPacking&&e.depthPacking,index0AttributeName:e.index0AttributeName,extensionDerivatives:e.extensions&&e.extensions.derivatives,extensionFragDepth:e.extensions&&e.extensions.fragDepth,extensionDrawBuffers:e.extensions&&e.extensions.drawBuffers,extensionShaderTextureLOD:e.extensions&&e.extensions.shaderTextureLOD,rendererExtensionFragDepth:g||f.has("EXT_frag_depth"),rendererExtensionDrawBuffers:g||f.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:g||f.has("EXT_shader_texture_lod"),customProgramCacheKey:e.customProgramCacheKey()}},getProgramCacheKey:function(e){var t=[];if(e.shaderID?t.push(e.shaderID):(t.push(e.fragmentShader),t.push(e.vertexShader)),void 0!==e.defines)for(var n in e.defines)t.push(n),t.push(e.defines[n]);if(!1===e.isRawShaderMaterial){for(var i=0;i<r.length;i++)t.push(e[r[i]]);t.push(h.outputEncoding),t.push(h.gammaFactor)}return t.push(e.customProgramCacheKey),t.join()},getUniforms:function(e){var t=E[e.type];return t?(t=Da[t],fa.clone(t.uniforms)):e.uniforms},acquireProgram:function(e,t){for(var n,i=0,r=s.length;i<r;i++){var a=s[i];if(a.cacheKey===t){++(n=a).usedTimes;break}}return void 0===n&&(n=new os(h,t,e,o),s.push(n)),n},releaseProgram:function(e){var t;0==--e.usedTimes&&(t=s.indexOf(e),s[t]=s[s.length-1],s.pop(),e.destroy())},programs:s}}function ls(){var i=new WeakMap;return{get:function(e){var t=i.get(e);return void 0===t&&i.set(e,t={}),t},remove:function(e){i.delete(e)},update:function(e,t,n){i.get(e)[t]=n},dispose:function(){i=new WeakMap}}}function us(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.program!==t.program?e.program.id-t.program.id:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function cs(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function ds(l){var u=[],c=0,o=[],s=[],d={id:-1};function h(e,t,n,i,r,a){var o=u[c],s=l.get(n);return void 0===o?(o={id:e.id,object:e,geometry:t,material:n,program:s.program||d,groupOrder:i,renderOrder:e.renderOrder,z:r,group:a},u[c]=o):(o.id=e.id,o.object=e,o.geometry=t,o.material=n,o.program=s.program||d,o.groupOrder=i,o.renderOrder=e.renderOrder,o.z=r,o.group=a),c++,o}return{opaque:o,transparent:s,init:function(){c=0,s.length=o.length=0},push:function(e,t,n,i,r,a){e=h(e,t,n,i,r,a),(!0===n.transparent?s:o).push(e)},unshift:function(e,t,n,i,r,a){e=h(e,t,n,i,r,a),(!0===n.transparent?s:o).unshift(e)},finish:function(){for(var e=c,t=u.length;e<t;e++){var n=u[e];if(null===n.id)break;n.id=null,n.object=null,n.geometry=null,n.material=null,n.program=null,n.group=null}},sort:function(e,t){1<o.length&&o.sort(e||us),1<s.length&&s.sort(t||cs)}}}function hs(r){var a=new WeakMap;return{get:function(e,t){var n,i=a.get(e);return void 0===i?(n=new ds(r),a.set(e,new WeakMap),a.get(e).set(t,n)):void 0===(n=i.get(t))&&(n=new ds(r),i.set(t,n)),n},dispose:function(){a=new WeakMap}}}function ps(){var n={};return{get:function(e){if(void 0!==n[e.id])return n[e.id];var t;switch(e.type){case"DirectionalLight":t={direction:new Oe,color:new Se};break;case"SpotLight":t={position:new Oe,direction:new Oe,color:new Se,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new Oe,color:new Se,distance:0,decay:0};break;case"HemisphereLight":t={direction:new Oe,skyColor:new Se,groundColor:new Se};break;case"RectAreaLight":t={color:new Se,position:new Oe,halfWidth:new Oe,halfHeight:new Oe}}return n[e.id]=t}}}var fs=0;function ms(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function vs(M,S){for(var n,T=new ps,_=(n={},{get:function(e){if(void 0!==n[e.id])return n[e.id];var t;switch(e.type){case"DirectionalLight":case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Re};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Re,shadowCameraNear:1,shadowCameraFar:1e3}}return n[e.id]=t}}),P={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},e=0;e<9;e++)P.probe.push(new Oe);var f=new Oe,m=new Me,v=new Me;return{setup:function(e){for(var t=0,n=0,i=0,r=0;r<9;r++)P.probe[r].set(0,0,0);var a=0,o=0,s=0,l=0,u=0,c=0,d=0,h=0;e.sort(ms);for(var p=0,f=e.length;p<f;p++){var m,v,g,A,y=e[p],w=y.color,b=y.intensity,x=y.distance,E=y.shadow&&y.shadow.map?y.shadow.map.texture:null;if(y.isAmbientLight)t+=w.r*b,n+=w.g*b,i+=w.b*b;else if(y.isLightProbe)for(var C=0;C<9;C++)P.probe[C].addScaledVector(y.sh.coefficients[C],b);else y.isDirectionalLight?((g=T.get(y)).color.copy(y.color).multiplyScalar(y.intensity),y.castShadow&&(m=y.shadow,(v=_.get(y)).shadowBias=m.bias,v.shadowNormalBias=m.normalBias,v.shadowRadius=m.radius,v.shadowMapSize=m.mapSize,P.directionalShadow[a]=v,P.directionalShadowMap[a]=E,P.directionalShadowMatrix[a]=y.shadow.matrix,c++),P.directional[a]=g,a++):y.isSpotLight?((m=T.get(y)).position.setFromMatrixPosition(y.matrixWorld),m.color.copy(w).multiplyScalar(b),m.distance=x,m.coneCos=Math.cos(y.angle),m.penumbraCos=Math.cos(y.angle*(1-y.penumbra)),m.decay=y.decay,y.castShadow&&(v=y.shadow,(g=_.get(y)).shadowBias=v.bias,g.shadowNormalBias=v.normalBias,g.shadowRadius=v.radius,g.shadowMapSize=v.mapSize,P.spotShadow[s]=g,P.spotShadowMap[s]=E,P.spotShadowMatrix[s]=y.shadow.matrix,h++),P.spot[s]=m,s++):y.isRectAreaLight?((x=T.get(y)).color.copy(w).multiplyScalar(b),x.halfWidth.set(.5*y.width,0,0),x.halfHeight.set(0,.5*y.height,0),P.rectArea[l]=x,l++):y.isPointLight?((w=T.get(y)).color.copy(y.color).multiplyScalar(y.intensity),w.distance=y.distance,w.decay=y.decay,y.castShadow&&(x=y.shadow,(A=_.get(y)).shadowBias=x.bias,A.shadowNormalBias=x.normalBias,A.shadowRadius=x.radius,A.shadowMapSize=x.mapSize,A.shadowCameraNear=x.camera.near,A.shadowCameraFar=x.camera.far,P.pointShadow[o]=A,P.pointShadowMap[o]=E,P.pointShadowMatrix[o]=y.shadow.matrix,d++),P.point[o]=w,o++):y.isHemisphereLight&&((x=T.get(y)).skyColor.copy(y.color).multiplyScalar(b),x.groundColor.copy(y.groundColor).multiplyScalar(b),P.hemi[u]=x,u++)}0<l&&(S.isWebGL2||!0===M.has("OES_texture_float_linear")?(P.rectAreaLTC1=D.LTC_FLOAT_1,P.rectAreaLTC2=D.LTC_FLOAT_2):!0===M.has("OES_texture_half_float_linear")?(P.rectAreaLTC1=D.LTC_HALF_1,P.rectAreaLTC2=D.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),P.ambient[0]=t,P.ambient[1]=n,P.ambient[2]=i;var B=P.hash;B.directionalLength===a&&B.pointLength===o&&B.spotLength===s&&B.rectAreaLength===l&&B.hemiLength===u&&B.numDirectionalShadows===c&&B.numPointShadows===d&&B.numSpotShadows===h||(P.directional.length=a,P.spot.length=s,P.rectArea.length=l,P.point.length=o,P.hemi.length=u,P.directionalShadow.length=c,P.directionalShadowMap.length=c,P.pointShadow.length=d,P.pointShadowMap.length=d,P.spotShadow.length=h,P.spotShadowMap.length=h,P.directionalShadowMatrix.length=c,P.pointShadowMatrix.length=d,P.spotShadowMatrix.length=h,B.directionalLength=a,B.pointLength=o,B.spotLength=s,B.rectAreaLength=l,B.hemiLength=u,B.numDirectionalShadows=c,B.numPointShadows=d,B.numSpotShadows=h,P.version=fs++)},setupView:function(e,t){for(var n=0,i=0,r=0,a=0,o=0,s=t.matrixWorldInverse,l=0,u=e.length;l<u;l++){var c,d,h,p=e[l];p.isDirectionalLight?((c=P.directional[n]).direction.setFromMatrixPosition(p.matrixWorld),f.setFromMatrixPosition(p.target.matrixWorld),c.direction.sub(f),c.direction.transformDirection(s),n++):p.isSpotLight?((c=P.spot[r]).position.setFromMatrixPosition(p.matrixWorld),c.position.applyMatrix4(s),c.direction.setFromMatrixPosition(p.matrixWorld),f.setFromMatrixPosition(p.target.matrixWorld),c.direction.sub(f),c.direction.transformDirection(s),r++):p.isRectAreaLight?((d=P.rectArea[a]).position.setFromMatrixPosition(p.matrixWorld),d.position.applyMatrix4(s),v.identity(),m.copy(p.matrixWorld),m.premultiply(s),v.extractRotation(m),d.halfWidth.set(.5*p.width,0,0),d.halfHeight.set(0,.5*p.height,0),d.halfWidth.applyMatrix4(v),d.halfHeight.applyMatrix4(v),a++):p.isPointLight?((d=P.point[i]).position.setFromMatrixPosition(p.matrixWorld),d.position.applyMatrix4(s),i++):p.isHemisphereLight&&((h=P.hemi[o]).direction.setFromMatrixPosition(p.matrixWorld),h.direction.transformDirection(s),h.direction.normalize(),o++)}},state:P}}function gs(e,t){var n=new vs(e,t),i=[],r=[];return{init:function(){i.length=0,r.length=0},state:{lightsArray:i,shadowsArray:r,lights:n},setupLights:function(){n.setup(i)},setupLightsView:function(e){n.setupView(i,e)},pushLight:function(e){i.push(e)},pushShadow:function(e){r.push(e)}}}function As(i,r){var a=new WeakMap;return{get:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return!1===a.has(e)?(t=new gs(i,r),a.set(e,[]),a.get(e).push(t)):n>=a.get(e).length?(t=new gs(i,r),a.get(e).push(t)):t=a.get(e)[n],t},dispose:function(){a=new WeakMap}}}function ys(e){Er.call(this),this.type="MeshDepthMaterial",this.depthPacking=3200,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}function ws(e){Er.call(this),this.type="MeshDistanceMaterial",this.referencePosition=new Oe,this.nearDistance=1,this.farDistance=1e3,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}((ys.prototype=Object.create(Er.prototype)).constructor=ys).prototype.isMeshDepthMaterial=!0,ys.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},((ws.prototype=Object.create(Er.prototype)).constructor=ws).prototype.isMeshDistanceMaterial=!0,ws.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this};var bs="uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean * HALF_SAMPLE_RATE;\n\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}",xs="void main() {\n\tgl_Position = vec4( position, 1.0 );\n}";function Es(g,A,y){var w=new Ma,b=new Re,x=new Re,E=new ei,r=[],a=[],d={},h={0:me,1:fe,2:ve},C=new ga({defines:{SAMPLE_RATE:.25,HALF_SAMPLE_RATE:1/8},uniforms:{shadow_pass:{value:null},resolution:{value:new Re},radius:{value:4}},vertexShader:xs,fragmentShader:bs}),B=C.clone(),e=(B.defines.HORIZONTAL_PASS=1,new V),M=(e.setAttribute("position",new H(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3)),new Q(e,C)),S=this;function p(e,t,n){var n=e<<0|t<<1|n<<2,i=r[n];return void 0===i&&(i=new ys({depthPacking:Un,morphTargets:e,skinning:t}),r[n]=i),i}function f(e,t,n){var n=e<<0|t<<1|n<<2,i=a[n];return void 0===i&&(i=new ws({morphTargets:e,skinning:t}),a[n]=i),i}function T(e,t,n,i,r,a,o){var s,l=null,u=p,c=e.customDepthMaterial;return!0===i.isPointLight&&(u=f,c=e.customDistanceMaterial),l=void 0===c?(!(s=!1)===n.morphTargets&&(s=t.morphAttributes&&t.morphAttributes.position&&0<t.morphAttributes.position.length),!(t=!1)===e.isSkinnedMesh&&(!0===n.skinning?t=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",e)),u(s,t,!0===e.isInstancedMesh)):c,g.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length&&(u=l.uuid,s=n.uuid,void 0===(t=d[u])&&(d[u]=t={}),void 0===(e=t[s])&&(e=l.clone(),t[s]=e),l=e),l.visible=n.visible,l.wireframe=n.wireframe,l.side=o===pe?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:h[n.side],l.clipShadows=n.clipShadows,l.clippingPlanes=n.clippingPlanes,l.clipIntersection=n.clipIntersection,l.wireframeLinewidth=n.wireframeLinewidth,l.linewidth=n.linewidth,!0===i.isPointLight&&!0===l.isMeshDistanceMaterial&&(l.referencePosition.setFromMatrixPosition(i.matrixWorld),l.nearDistance=r,l.farDistance=a),l}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=he,this.render=function(e,t,n){if(!1!==S.enabled&&(!1!==S.autoUpdate||!1!==S.needsUpdate)&&0!==e.length){var i=g.getRenderTarget(),r=g.getActiveCubeFace(),a=g.getActiveMipmapLevel(),o=g.state;o.setBlending(ge),o.buffers.color.setClear(1,1,1,1),o.buffers.depth.setTest(!0),o.setScissorTest(!1);for(var s,l,u=0,c=e.length;u<c;u++){var d=e[u],h=d.shadow;if(void 0===h)console.warn("THREE.WebGLShadowMap:",d,"has no shadow.");else if(!1!==h.autoUpdate||!1!==h.needsUpdate){b.copy(h.mapSize);for(var p=h.getFrameExtents(),f=(b.multiply(p),x.copy(h.mapSize),(b.x>y||b.y>y)&&(b.x>y&&(x.x=Math.floor(y/p.x),b.x=x.x*p.x,h.mapSize.x=x.x),b.y>y)&&(x.y=Math.floor(y/p.y),b.y=x.y*p.y,h.mapSize.y=x.y),null!==h.map||h.isPointLightShadow||this.type!==pe||(h.map=new ti(b.x,b.y,p={minFilter:N,magFilter:N,format:It}),h.map.texture.name=d.name+".shadowMap",h.mapPass=new ti(b.x,b.y,p),h.camera.updateProjectionMatrix()),null===h.map&&(h.map=new ti(b.x,b.y,{minFilter:ht,magFilter:ht,format:It}),h.map.texture.name=d.name+".shadowMap",h.camera.updateProjectionMatrix()),g.setRenderTarget(h.map),g.clear(),h.getViewportCount()),m=0;m<f;m++){var v=h.getViewport(m);E.set(x.x*v.x,x.y*v.y,x.x*v.z,x.y*v.w),o.viewport(E),h.updateMatrices(d,m),w=h.getFrustum(),!function e(t,n,i,r,a){if(!1===t.visible)return;var o=t.layers.test(n.layers);if(o&&(t.isMesh||t.isLine||t.isPoints)&&(t.castShadow||t.receiveShadow&&a===pe)&&(!t.frustumCulled||w.intersectsObject(t))){t.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,t.matrixWorld);var s=A.update(t),l=t.material;if(Array.isArray(l))for(var u=s.groups,c=0,d=u.length;c<d;c++){var h=u[c],p=l[h.materialIndex];p&&p.visible&&(p=T(t,s,p,r,i.near,i.far,a),g.renderBufferDirect(i,null,s,p,t,h))}else l.visible&&(o=T(t,s,l,r,i.near,i.far,a),g.renderBufferDirect(i,null,s,o,t,null))}var f=t.children;for(var m=0,v=f.length;m<v;m++)e(f[m],n,i,r,a)}(t,n,h.camera,d,this.type)}h.isPointLightShadow||this.type!==pe||(p=h,s=n,l=void 0,l=A.update(M),C.uniforms.shadow_pass.value=p.map.texture,C.uniforms.resolution.value=p.mapSize,C.uniforms.radius.value=p.radius,g.setRenderTarget(p.mapPass),g.clear(),g.renderBufferDirect(s,null,l,C,M,null),B.uniforms.shadow_pass.value=p.mapPass.texture,B.uniforms.resolution.value=p.mapSize,B.uniforms.radius.value=p.radius,g.setRenderTarget(p.map),g.clear(),g.renderBufferDirect(s,null,l,B,M,null)),h.needsUpdate=!1}}S.needsUpdate=!1,g.setRenderTarget(i,r,a)}}}function Cs(c,F,e){e=e.isWebGL2;var i=new function(){var t=!1,a=new ei,n=null,o=new ei(0,0,0,0);return{setMask:function(e){n===e||t||(c.colorMask(e,e,e,e),n=e)},setLocked:function(e){t=e},setClear:function(e,t,n,i,r){!0===r&&(e*=i,t*=i,n*=i),a.set(e,t,n,i),!1===o.equals(a)&&(c.clearColor(e,t,n,i),o.copy(a))},reset:function(){t=!1,n=null,o.set(-1,0,0,0)}}},r=new function(){var t=!1,n=null,i=null,r=null;return{setTest:function(e){(e?P:D)(2929)},setMask:function(e){n===e||t||(c.depthMask(e),n=e)},setFunc:function(e){if(i!==e){if(e)switch(e){case Je:c.depthFunc(512);break;case qe:c.depthFunc(519);break;case Ye:c.depthFunc(513);break;case Xe:c.depthFunc(515);break;case Ke:c.depthFunc(514);break;case Ze:c.depthFunc(518);break;case $e:c.depthFunc(516);break;case et:c.depthFunc(517);break;default:c.depthFunc(515)}else c.depthFunc(515);i=e}},setLocked:function(e){t=e},setClear:function(e){r!==e&&(c.clearDepth(e),r=e)},reset:function(){t=!1,r=i=n=null}}},a=new function(){var t=!1,n=null,i=null,r=null,a=null,o=null,s=null,l=null,u=null;return{setTest:function(e){t||(e?P:D)(2960)},setMask:function(e){n===e||t||(c.stencilMask(e),n=e)},setFunc:function(e,t,n){i===e&&r===t&&a===n||(c.stencilFunc(e,t,n),i=e,r=t,a=n)},setOp:function(e,t,n){o===e&&s===t&&l===n||(c.stencilOp(e,t,n),o=e,s=t,l=n)},setLocked:function(e){t=e},setClear:function(e){u!==e&&(c.clearStencil(e),u=e)},reset:function(){t=!1,u=l=s=o=a=r=i=n=null}}},t={},n=null,l=null,u=null,d=null,h=null,p=null,f=null,m=null,v=null,g=!1,o=null,s=null,A=null,y=null,w=null,O=c.getParameter(35661),b=!1,x=0,E=c.getParameter(7938),C=(-1!==E.indexOf("WebGL")?(x=parseFloat(/^WebGL (\d)/.exec(E)[1]),b=1<=x):-1!==E.indexOf("OpenGL ES")&&(x=parseFloat(/^OpenGL ES (\d)/.exec(E)[1]),b=2<=x),null),B={},M=new ei,S=new ei;function T(e,t,n){var i=new Uint8Array(4),r=c.createTexture();c.bindTexture(e,r),c.texParameteri(e,10241,9728),c.texParameteri(e,10240,9728);for(var a=0;a<n;a++)c.texImage2D(t+a,0,6408,1,1,0,6408,5121,i);return r}var _={};function P(e){!0!==t[e]&&(c.enable(e),t[e]=!0)}function D(e){!1!==t[e]&&(c.disable(e),t[e]=!1)}_[3553]=T(3553,3553,1),_[34067]=T(34067,34069,6),i.setClear(0,0,0,1),r.setClear(1),a.setClear(0),P(2929),r.setFunc(Xe),L(!1),U(ce),P(2884),R(ge);var I=Y(Y(Y({},Ee,32774),Ce,32778),Te,32779),k=(e?(I[_e]=32775,I[Pe]=32776):null!==(E=F.get("EXT_blend_minmax"))&&(I[_e]=E.MIN_EXT,I[Pe]=E.MAX_EXT),Y(Y(Y(Y(Y(Y(Y(Y(Y(Y(x={},De,0),Ie,1),ke,768),ze,770),We,776),Qe,774),He,772),Ne,769),Ge,771),je,775),Y(x,Ve,773));function R(e,t,n,i,r,a,o,s){if(e===ge)l&&(D(3042),l=!1);else if(l||(P(3042),l=!0),e!==xe){if(e!==u||s!==g){if(d===Ee&&f===Ee||(c.blendEquation(32774),f=d=Ee),s)switch(e){case Ae:c.blendFuncSeparate(1,771,1,771);break;case ye:c.blendFunc(1,1);break;case we:c.blendFuncSeparate(0,0,769,771);break;case be:c.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}else switch(e){case Ae:c.blendFuncSeparate(770,771,1,771);break;case ye:c.blendFunc(770,1);break;case we:c.blendFunc(0,769);break;case be:c.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}v=m=p=h=null,u=e,g=s}}else r=r||t,a=a||n,o=o||i,t===d&&r===f||(c.blendEquationSeparate(I[t],I[r]),d=t,f=r),n===h&&i===p&&a===m&&o===v||(c.blendFuncSeparate(k[n],k[i],k[a],k[o]),h=n,p=i,m=a,v=o),u=e,g=null}function L(e){o!==e&&(e?c.frontFace(2304):c.frontFace(2305),o=e)}function U(e){e!==se?(P(2884),e!==s&&(e===ce?c.cullFace(1029):e===de?c.cullFace(1028):c.cullFace(1032))):D(2884),s=e}function N(e,t,n){e?(P(32823),y===t&&w===n||(c.polygonOffset(t,n),y=t,w=n)):D(32823)}function z(e){C!==(e=void 0===e?33984+O-1:e)&&(c.activeTexture(e),C=e)}return{buffers:{color:i,depth:r,stencil:a},enable:P,disable:D,useProgram:function(e){return n!==e&&(c.useProgram(e),n=e,!0)},setBlending:R,setMaterial:function(e,t){(e.side===ve?D:P)(2884);var n=e.side===me,t=(L(n=t?!n:n),e.blending===Ae&&!1===e.transparent?R(ge):R(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.premultipliedAlpha),r.setFunc(e.depthFunc),r.setTest(e.depthTest),r.setMask(e.depthWrite),i.setMask(e.colorWrite),e.stencilWrite);a.setTest(t),t&&(a.setMask(e.stencilWriteMask),a.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),a.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),N(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits)},setFlipSided:L,setCullFace:U,setLineWidth:function(e){e!==A&&(b&&c.lineWidth(e),A=e)},setPolygonOffset:N,setScissorTest:function(e){(e?P:D)(3089)},activeTexture:z,bindTexture:function(e,t){null===C&&z();var n=B[C];void 0===n&&(B[C]=n={type:void 0,texture:void 0}),n.type===e&&n.texture===t||(c.bindTexture(e,t||_[e]),n.type=e,n.texture=t)},unbindTexture:function(){var e=B[C];void 0!==e&&void 0!==e.type&&(c.bindTexture(e.type,null),e.type=void 0,e.texture=void 0)},compressedTexImage2D:function(){try{c.compressedTexImage2D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function(){try{c.texImage2D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function(){try{c.texImage3D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function(e){!1===M.equals(e)&&(c.scissor(e.x,e.y,e.z,e.w),M.copy(e))},viewport:function(e){!1===S.equals(e)&&(c.viewport(e.x,e.y,e.z,e.w),S.copy(e))},reset:function(){t={},g=!(B={}),w=y=A=s=o=v=m=f=p=h=d=u=l=n=C=null,i.reset(),r.reset(),a.reset()}}}function Bs(x,i,E,C,r,B,u){var a,M=r.isWebGL2,t=r.maxTextures,S=r.maxCubemapSize,v=r.maxTextureSize,O=r.maxSamples,o=new WeakMap,n=!1;try{n="undefined"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function s(e,t){return n?new OffscreenCanvas(e,t):document.createElementNS("http://www.w3.org/1999/xhtml","canvas")}function T(e,t,n,i){var r=1;return(r=e.width>i||e.height>i?i/Math.max(e.width,e.height):r)<1||!0===t?"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?(t=(i=t?Be.floorPowerOfTwo:Math.floor)(r*e.width),i=i(r*e.height),void 0===a&&(a=s(t,i)),(r=n?s(t,i):a).width=t,r.height=i,r.getContext("2d").drawImage(e,0,0,t,i),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+t+"x"+i+")."),r):("data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e):e}function _(e){return Be.isPowerOfTwo(e.width)&&Be.isPowerOfTwo(e.height)}function P(e,t){return e.generateMipmaps&&t&&e.minFilter!==ht&&e.minFilter!==N}function D(e,t,n,i){x.generateMipmap(e),C.get(t).__maxMipLevel=Math.log(Math.max(n,i))*Math.LOG2E}function I(e,t,n){if(!1===M)return t;if(null!==e){if(void 0!==x[e])return x[e];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+e+"'")}e=t;return 6403===t&&(5126===n&&(e=33326),5131===n&&(e=33325),5121===n)&&(e=33321),6407===t&&(5126===n&&(e=34837),5131===n&&(e=34843),5121===n)&&(e=32849),33325!==(e=6408===t&&(5126===n&&(e=34836),5131===n&&(e=34842),5121===n)?32856:e)&&33326!==e&&34842!==e&&34836!==e||i.get("EXT_color_buffer_float"),e}function l(e){return e===ht||e===pt||e===ft?9728:9729}function c(e){var t,n,e=e.target;e.removeEventListener("dispose",c),t=e,void 0!==(n=C.get(t)).__webglInit&&(x.deleteTexture(n.__webglTexture),C.remove(t)),e.isVideoTexture&&o.delete(e),u.memory.textures--}function d(e){var e=e.target,t=(e.removeEventListener("dispose",d),C.get(e)),n=C.get(e.texture);if(e){if(void 0!==n.__webglTexture&&x.deleteTexture(n.__webglTexture),e.depthTexture&&e.depthTexture.dispose(),e.isWebGLCubeRenderTarget)for(var i=0;i<6;i++)x.deleteFramebuffer(t.__webglFramebuffer[i]),t.__webglDepthbuffer&&x.deleteRenderbuffer(t.__webglDepthbuffer[i]);else x.deleteFramebuffer(t.__webglFramebuffer),t.__webglDepthbuffer&&x.deleteRenderbuffer(t.__webglDepthbuffer),t.__webglMultisampledFramebuffer&&x.deleteFramebuffer(t.__webglMultisampledFramebuffer),t.__webglColorRenderbuffer&&x.deleteRenderbuffer(t.__webglColorRenderbuffer),t.__webglDepthRenderbuffer&&x.deleteRenderbuffer(t.__webglDepthRenderbuffer);C.remove(e.texture),C.remove(e)}u.memory.textures--}var h=0;function p(e,t){var n,i=C.get(e);if(e.isVideoTexture&&(n=e,r=u.render.frame,o.get(n)!==r)&&(o.set(n,r),n.update()),0<e.version&&i.__version!==e.version){var r=e.image;if(void 0===r)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==r.complete)return void A(i,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}E.activeTexture(33984+t),E.bindTexture(3553,i.__webglTexture)}function f(e,t){var n=C.get(e);if(0<e.version&&n.__version!==e.version){var i=n,r=e,e=t;if(6===r.image.length){R(i,r),E.activeTexture(33984+e),E.bindTexture(34067,i.__webglTexture),x.pixelStorei(37440,r.flipY);for(var a=r&&(r.isCompressedTexture||r.image[0].isCompressedTexture),o=r.image[0]&&r.image[0].isDataTexture,s=[],l=0;l<6;l++)s[l]=a||o?o?r.image[l].image:r.image[l]:T(r.image[l],!1,!0,S);var u,e=s[0],c=_(e)||M,d=B.convert(r.format),h=B.convert(r.type),p=I(r.internalFormat,d,h);if(k(34067,r,c),a){for(var f=0;f<6;f++){u=s[f].mipmaps;for(var m=0;m<u.length;m++){var v=u[m];r.format!==It&&r.format!==Dt?null!==d?E.compressedTexImage2D(34069+f,m,p,v.width,v.height,0,v.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):E.texImage2D(34069+f,m,p,v.width,v.height,0,d,h,v.data)}}i.__maxMipLevel=u.length-1}else{u=r.mipmaps;for(var g=0;g<6;g++)if(o){E.texImage2D(34069+g,0,p,s[g].width,s[g].height,0,d,h,s[g].data);for(var A=0;A<u.length;A++){var y=u[A].image[g].image;E.texImage2D(34069+g,A+1,p,y.width,y.height,0,d,h,y.data)}}else{E.texImage2D(34069+g,0,p,d,h,s[g]);for(var w=0;w<u.length;w++){var b=u[w];E.texImage2D(34069+g,w+1,p,d,h,b.image[g])}}i.__maxMipLevel=u.length}P(r,c)&&D(34067,r,e.width,e.height),i.__version=r.version,r.onUpdate&&r.onUpdate(r)}}else E.activeTexture(33984+t),E.bindTexture(34067,n.__webglTexture)}var m=Y(Y(Y({},ut,10497),ct,33071),dt,33648),g=Y(Y(Y(Y(Y(Y({},ht,9728),pt,9984),ft,9986),N,9729),mt,9985),vt,9987);function k(e,t,n){n?(x.texParameteri(e,10242,m[t.wrapS]),x.texParameteri(e,10243,m[t.wrapT]),32879!==e&&35866!==e||x.texParameteri(e,32882,m[t.wrapR]),x.texParameteri(e,10240,g[t.magFilter]),x.texParameteri(e,10241,g[t.minFilter])):(x.texParameteri(e,10242,33071),x.texParameteri(e,10243,33071),32879!==e&&35866!==e||x.texParameteri(e,32882,33071),t.wrapS===ct&&t.wrapT===ct||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),x.texParameteri(e,10240,l(t.magFilter)),x.texParameteri(e,10241,l(t.minFilter)),t.minFilter!==ht&&t.minFilter!==N&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));n=i.get("EXT_texture_filter_anisotropic");!n||t.type===Ct&&null===i.get("OES_texture_float_linear")||t.type===Bt&&null===(M||i.get("OES_texture_half_float_linear"))||(1<t.anisotropy||C.get(t).__currentAnisotropy)&&(x.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,r.getMaxAnisotropy())),C.get(t).__currentAnisotropy=t.anisotropy)}function R(e,t){void 0===e.__webglInit&&(e.__webglInit=!0,t.addEventListener("dispose",c),e.__webglTexture=x.createTexture(),u.memory.textures++)}function A(e,t,n){var i,r=3553,n=(t.isDataTexture2DArray&&(r=35866),t.isDataTexture3D&&(r=32879),R(e,t),E.activeTexture(33984+n),E.bindTexture(r,e.__webglTexture),x.pixelStorei(37440,t.flipY),x.pixelStorei(37441,t.premultiplyAlpha),x.pixelStorei(3317,t.unpackAlignment),n=t,!M&&(n.wrapS!==ct||n.wrapT!==ct||n.minFilter!==ht&&n.minFilter!==N)&&!1===_(t.image)),n=T(t.image,n,!1,v),a=_(n)||M,o=B.convert(t.format),s=B.convert(t.type),l=I(t.internalFormat,o,s),u=(k(r,t,a),t.mipmaps);if(t.isDepthTexture)l=6402,M?l=t.type===Ct?36012:t.type===Et?33190:t.type===_t?35056:33189:t.type===Ct&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),t.format===Ft&&6402===l&&t.type!==bt&&t.type!==Et&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),t.type=bt,s=B.convert(t.type)),t.format===Ot&&6402===l&&(l=34041,t.type!==_t)&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),t.type=_t,s=B.convert(t.type)),E.texImage2D(3553,0,l,n.width,n.height,0,o,s,null);else if(t.isDataTexture)if(0<u.length&&a){for(var c=0,d=u.length;c<d;c++)i=u[c],E.texImage2D(3553,c,l,i.width,i.height,0,o,s,i.data);t.generateMipmaps=!1,e.__maxMipLevel=u.length-1}else E.texImage2D(3553,0,l,n.width,n.height,0,o,s,n.data),e.__maxMipLevel=0;else if(t.isCompressedTexture){for(var h=0,p=u.length;h<p;h++)i=u[h],t.format!==It&&t.format!==Dt?null!==o?E.compressedTexImage2D(3553,h,l,i.width,i.height,0,i.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):E.texImage2D(3553,h,l,i.width,i.height,0,o,s,i.data);e.__maxMipLevel=u.length-1}else if(t.isDataTexture2DArray)E.texImage3D(35866,0,l,n.width,n.height,n.depth,0,o,s,n.data),e.__maxMipLevel=0;else if(t.isDataTexture3D)E.texImage3D(32879,0,l,n.width,n.height,n.depth,0,o,s,n.data),e.__maxMipLevel=0;else if(0<u.length&&a){for(var f=0,m=u.length;f<m;f++)i=u[f],E.texImage2D(3553,f,l,o,s,i);t.generateMipmaps=!1,e.__maxMipLevel=u.length-1}else E.texImage2D(3553,0,l,o,s,n),e.__maxMipLevel=0;P(t,a)&&D(r,t,n.width,n.height),e.__version=t.version,t.onUpdate&&t.onUpdate(t)}function y(e,t,n,i){var r=B.convert(t.texture.format),a=B.convert(t.texture.type),o=I(t.texture.internalFormat,r,a);E.texImage2D(i,0,o,t.width,t.height,0,r,a,null),x.bindFramebuffer(36160,e),x.framebufferTexture2D(36160,n,i,C.get(t.texture).__webglTexture,0),x.bindFramebuffer(36160,null)}function w(e,t,n){var i,r;x.bindRenderbuffer(36161,e),t.depthBuffer&&!t.stencilBuffer?(r=33189,n?((i=t.depthTexture)&&i.isDepthTexture&&(i.type===Ct?r=36012:i.type===Et&&(r=33190)),i=b(t),x.renderbufferStorageMultisample(36161,i,r,t.width,t.height)):x.renderbufferStorage(36161,r,t.width,t.height),x.framebufferRenderbuffer(36160,36096,36161,e)):t.depthBuffer&&t.stencilBuffer?(n?(i=b(t),x.renderbufferStorageMultisample(36161,i,35056,t.width,t.height)):x.renderbufferStorage(36161,34041,t.width,t.height),x.framebufferRenderbuffer(36160,33306,36161,e)):(r=B.convert(t.texture.format),i=B.convert(t.texture.type),e=I(t.texture.internalFormat,r,i),n?(r=b(t),x.renderbufferStorageMultisample(36161,r,e,t.width,t.height)):x.renderbufferStorage(36161,e,t.width,t.height)),x.bindRenderbuffer(36161,null)}function U(e){var t=C.get(e),n=!0===e.isWebGLCubeRenderTarget;if(e.depthTexture){if(n)throw new Error("target.depthTexture not supported in Cube render targets");var i=t.__webglFramebuffer,r=e;if(r&&r.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(x.bindFramebuffer(36160,i),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");if(C.get(r.depthTexture).__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),p(r.depthTexture,0),i=C.get(r.depthTexture).__webglTexture,r.depthTexture.format===Ft)x.framebufferTexture2D(36160,36096,3553,i,0);else{if(r.depthTexture.format!==Ot)throw new Error("Unknown depthTexture format");x.framebufferTexture2D(36160,33306,3553,i,0)}}else if(n){t.__webglDepthbuffer=[];for(var a=0;a<6;a++)x.bindFramebuffer(36160,t.__webglFramebuffer[a]),t.__webglDepthbuffer[a]=x.createRenderbuffer(),w(t.__webglDepthbuffer[a],e,!1)}else x.bindFramebuffer(36160,t.__webglFramebuffer),t.__webglDepthbuffer=x.createRenderbuffer(),w(t.__webglDepthbuffer,e,!1);x.bindFramebuffer(36160,null)}function b(e){return M&&e.isWebGLMultisampleRenderTarget?Math.min(O,e.samples):0}var L=!1,F=!1;this.allocateTextureUnit=function(){var e=h;return t<=e&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+t),h+=1,e},this.resetTextureUnits=function(){h=0},this.setTexture2D=p,this.setTexture2DArray=function(e,t){var n=C.get(e);0<e.version&&n.__version!==e.version?A(n,e,t):(E.activeTexture(33984+t),E.bindTexture(35866,n.__webglTexture))},this.setTexture3D=function(e,t){var n=C.get(e);0<e.version&&n.__version!==e.version?A(n,e,t):(E.activeTexture(33984+t),E.bindTexture(32879,n.__webglTexture))},this.setTextureCube=f,this.setupRenderTarget=function(e){var t,n=C.get(e),i=C.get(e.texture),r=(e.addEventListener("dispose",d),i.__webglTexture=x.createTexture(),u.memory.textures++,!0===e.isWebGLCubeRenderTarget),a=!0===e.isWebGLMultisampleRenderTarget,o=_(e)||M;if(!M||e.texture.format!==Dt||e.texture.type!==Ct&&e.texture.type!==Bt||(e.texture.format=It,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),r){n.__webglFramebuffer=[];for(var s=0;s<6;s++)n.__webglFramebuffer[s]=x.createFramebuffer()}else n.__webglFramebuffer=x.createFramebuffer(),a&&(M?(n.__webglMultisampledFramebuffer=x.createFramebuffer(),n.__webglColorRenderbuffer=x.createRenderbuffer(),x.bindRenderbuffer(36161,n.__webglColorRenderbuffer),a=B.convert(e.texture.format),t=B.convert(e.texture.type),a=I(e.texture.internalFormat,a,t),t=b(e),x.renderbufferStorageMultisample(36161,t,a,e.width,e.height),x.bindFramebuffer(36160,n.__webglMultisampledFramebuffer),x.framebufferRenderbuffer(36160,36064,36161,n.__webglColorRenderbuffer),x.bindRenderbuffer(36161,null),e.depthBuffer&&(n.__webglDepthRenderbuffer=x.createRenderbuffer(),w(n.__webglDepthRenderbuffer,e,!0)),x.bindFramebuffer(36160,null)):console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2."));if(r){E.bindTexture(34067,i.__webglTexture),k(34067,e.texture,o);for(var l=0;l<6;l++)y(n.__webglFramebuffer[l],e,36064,34069+l);P(e.texture,o)&&D(34067,e.texture,e.width,e.height),E.bindTexture(34067,null)}else E.bindTexture(3553,i.__webglTexture),k(3553,e.texture,o),y(n.__webglFramebuffer,e,36064,3553),P(e.texture,o)&&D(3553,e.texture,e.width,e.height),E.bindTexture(3553,null);e.depthBuffer&&U(e)},this.updateRenderTargetMipmap=function(e){var t,n,i=e.texture;P(i,_(e)||M)&&(t=e.isWebGLCubeRenderTarget?34067:3553,n=C.get(i).__webglTexture,E.bindTexture(t,n),D(t,i,e.width,e.height),E.bindTexture(t,null))},this.updateMultisampleRenderTarget=function(e){var t,n,i,r;e.isWebGLMultisampleRenderTarget&&(M?(t=C.get(e),x.bindFramebuffer(36008,t.__webglMultisampledFramebuffer),x.bindFramebuffer(36009,t.__webglFramebuffer),n=e.width,i=e.height,r=16384,e.depthBuffer&&(r|=256),e.stencilBuffer&&(r|=1024),x.blitFramebuffer(0,0,n,i,0,0,n,i,r,9728),x.bindFramebuffer(36160,t.__webglMultisampledFramebuffer)):console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2."))},this.safeSetTexture2D=function(e,t){e&&e.isWebGLRenderTarget&&(!1===L&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),L=!0),e=e.texture),p(e,t)},this.safeSetTextureCube=function(e,t){e&&e.isWebGLCubeRenderTarget&&(!1===F&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),F=!0),e=e.texture),f(e,t)}}function Ms(e,n,t){var i=t.isWebGL2;return{convert:function(e){var t;if(e===At)return 5121;if(e===Mt)return 32819;if(e===St)return 32820;if(e===Tt)return 33635;if(e===yt)return 5120;if(e===wt)return 5122;if(e===bt)return 5123;if(e===xt)return 5124;if(e===Et)return 5125;if(e===Ct)return 5126;if(e===Bt)return i?5131:null!==(t=n.get("OES_texture_half_float"))?t.HALF_FLOAT_OES:null;if(e===Pt)return 6406;if(e===Dt)return 6407;if(e===It)return 6408;if(e===kt)return 6409;if(e===Rt)return 6410;if(e===Ft)return 6402;if(e===Ot)return 34041;if(e===Ut)return 6403;if(e===Nt)return 36244;if(e===zt)return 33319;if(e===Gt)return 33320;if(e===Ht)return 36248;if(e===Vt)return 36249;if(e===Qt||e===jt||e===Wt||e===Jt){if(null===(t=n.get("WEBGL_compressed_texture_s3tc")))return null;if(e===Qt)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===jt)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===Wt)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===Jt)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(e===qt||e===Yt||e===Xt||e===Kt){if(null===(t=n.get("WEBGL_compressed_texture_pvrtc")))return null;if(e===qt)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===Yt)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===Xt)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===Kt)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(e===Zt)return null!==(t=n.get("WEBGL_compressed_texture_etc1"))?t.COMPRESSED_RGB_ETC1_WEBGL:null;if((e===$t||e===en)&&null!==(t=n.get("WEBGL_compressed_texture_etc"))){if(e===$t)return t.COMPRESSED_RGB8_ETC2;if(e===en)return t.COMPRESSED_RGBA8_ETC2_EAC}return e===tn||e===nn||e===rn||e===an||e===on||e===sn||e===ln||e===un||e===cn||e===dn||e===hn||e===pn||e===fn||e===mn||e===gn||e===An||e===yn||e===wn||e===bn||e===xn||e===En||e===Cn||e===Bn||e===Mn||e===Sn||e===Tn||e===_n||e===Pn?null!==(t=n.get("WEBGL_compressed_texture_astc"))?e:null:e===vn?null!==(t=n.get("EXT_texture_compression_bptc"))?e:null:e===_t?i?34042:null!==(t=n.get("WEBGL_depth_texture"))?t.UNSIGNED_INT_24_8_WEBGL:null:void 0}}}function Ss(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];ya.call(this),this.cameras=e}function Ts(){Z.call(this),this.type="Group"}function _s(){this._targetRay=null,this._grip=null,this._hand=null}function Ps(p,t){var n=this,g=null,i=1,f=null,r="local-floor",m=null,v=[],u=new Map,A=new ya,y=(A.layers.enable(1),A.viewport=new ei,new ya),w=(y.layers.enable(2),y.viewport=new ei,[A,y]),b=new Ss,x=(b.layers.enable(1),b.layers.enable(2),null),E=null;function a(e){var t=u.get(e.inputSource);t&&t.dispatchEvent({type:e.type,data:e.inputSource})}function o(){u.forEach(function(e,t){e.disconnect(t)}),u.clear(),p.setFramebuffer(null),p.setRenderTarget(p.getRenderTarget()),c.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function s(e){f=e,c.setContext(g),c.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}function l(e){for(var t=g.inputSources,n=0;n<v.length;n++)u.set(t[n],v[n]);for(var i=0;i<e.removed.length;i++){var r=e.removed[i],a=u.get(r);a&&(a.dispatchEvent({type:"disconnected",data:r}),u.delete(r))}for(var o=0;o<e.added.length;o++){var s=e.added[o],l=u.get(s);l&&l.dispatchEvent({type:"connected",data:s})}}this.enabled=!1,this.isPresenting=!1,this.getController=function(e){var t=v[e];return void 0===t&&(t=new _s,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){var t=v[e];return void 0===t&&(t=new _s,v[e]=t),t.getGripSpace()},this.getHand=function(e){var t=v[e];return void 0===t&&(t=new _s,v[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){i=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){r=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return f},this.getSession=function(){return g},this.setSession=function(e){null!==(g=e)&&(g.addEventListener("select",a),g.addEventListener("selectstart",a),g.addEventListener("selectend",a),g.addEventListener("squeeze",a),g.addEventListener("squeezestart",a),g.addEventListener("squeezeend",a),g.addEventListener("end",o),!0!==(e=t.getContextAttributes()).xrCompatible&&t.makeXRCompatible(),e={antialias:e.antialias,alpha:e.alpha,depth:e.depth,stencil:e.stencil,framebufferScaleFactor:i},e=new XRWebGLLayer(g,t,e),g.updateRenderState({baseLayer:e}),g.requestReferenceSpace(r).then(s),g.addEventListener("inputsourceschange",l))};var C=new Oe,B=new Oe;function M(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.getCamera=function(e){b.near=y.near=A.near=e.near,b.far=y.far=A.far=e.far,x===b.near&&E===b.far||(g.updateRenderState({depthNear:b.near,depthFar:b.far}),x=b.near,E=b.far);var t=e.parent,n=b.cameras;M(b,t);for(var i=0;i<n.length;i++)M(n[i],t);e.matrixWorld.copy(b.matrixWorld);for(var r,a,o,s,l,u,c,d,h,p,f=e.children,m=0,v=f.length;m<v;m++)f[m].updateMatrixWorld(!0);return 2===n.length?(e=b,r=A,a=y,C.setFromMatrixPosition(r.matrixWorld),B.setFromMatrixPosition(a.matrixWorld),o=C.distanceTo(B),s=r.projectionMatrix.elements,a=a.projectionMatrix.elements,l=s[14]/(s[10]-1),u=s[14]/(s[10]+1),c=(s[9]+1)/s[5],d=(s[9]-1)/s[5],s=(s[8]-1)/s[0],a=(a[8]+1)/a[0],h=l*s,p=l*a,s=(a=o/(a-s))*-s,r.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(s),e.translateZ(a),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),r=l+a,l=u+a,e.projectionMatrix.makePerspective(h-s,o-s+p,c*u/l*r,d*u/l*r,r,l)):b.projectionMatrix.copy(A.projectionMatrix),b};var S=null;var c=new Sa;c.setAnimationLoop(function(e,t){if(null!==(m=t.getViewerPose(f))){var n=m.views,i=g.renderState.baseLayer,r=(p.setFramebuffer(i.framebuffer),!1);n.length!==b.cameras.length&&(r=!(b.cameras.length=0));for(var a=0;a<n.length;a++){var o=n[a],s=i.getViewport(o),l=w[a];l.matrix.fromArray(o.transform.matrix),l.projectionMatrix.fromArray(o.projectionMatrix),l.viewport.set(s.x,s.y,s.width,s.height),0===a&&b.matrix.copy(l.matrix),!0===r&&b.cameras.push(l)}}for(var u=g.inputSources,c=0;c<v.length;c++){var d=v[c],h=u[c];d.update(h,t,f)}S&&S(e,t)}),this.setAnimationLoop=function(e){S=e},this.dispose=function(){}}function Ds(a){function v(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap);var n,i,r=a.get(t).envMap;r&&(e.envMap.value=r,e.flipEnvMap.value=r.isCubeTexture&&r._needsFlipEnvMap?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio,void 0!==(r=a.get(r).__maxMipLevel))&&(e.maxMipLevel.value=r),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?n=t.map:t.specularMap?n=t.specularMap:t.displacementMap?n=t.displacementMap:t.normalMap?n=t.normalMap:t.bumpMap?n=t.bumpMap:t.roughnessMap?n=t.roughnessMap:t.metalnessMap?n=t.metalnessMap:t.alphaMap?n=t.alphaMap:t.emissiveMap?n=t.emissiveMap:t.clearcoatMap?n=t.clearcoatMap:t.clearcoatNormalMap?n=t.clearcoatNormalMap:t.clearcoatRoughnessMap&&(n=t.clearcoatRoughnessMap),void 0!==n&&(!0===(n=n.isWebGLRenderTarget?n.texture:n).matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix)),t.aoMap?i=t.aoMap:t.lightMap&&(i=t.lightMap),void 0!==i&&(!0===(i=i.isWebGLRenderTarget?i.texture:i).matrixAutoUpdate&&i.updateMatrix(),e.uv2Transform.value.copy(i.matrix))}function g(e,t){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===me)&&(e.bumpScale.value*=-1),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===me)&&e.normalScale.value.negate(),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),a.get(t).envMap&&(e.envMapIntensity.value=t.envMapIntensity)}return{refreshFogUniforms:function(e,t){e.fogColor.value.copy(t.color),t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)},refreshMaterialUniforms:function(e,t,n,i){var r,a,o,s,l,u,c,d,h,p,f,m;t.isMeshBasicMaterial?v(e,t):t.isMeshLambertMaterial?(v(e,t),f=e,(m=t).emissiveMap&&(f.emissiveMap.value=m.emissiveMap)):t.isMeshToonMaterial?(v(e,t),f=e,(m=t).gradientMap&&(f.gradientMap.value=m.gradientMap),m.emissiveMap&&(f.emissiveMap.value=m.emissiveMap),m.bumpMap&&(f.bumpMap.value=m.bumpMap,f.bumpScale.value=m.bumpScale,m.side===me)&&(f.bumpScale.value*=-1),m.normalMap&&(f.normalMap.value=m.normalMap,f.normalScale.value.copy(m.normalScale),m.side===me)&&f.normalScale.value.negate(),m.displacementMap&&(f.displacementMap.value=m.displacementMap,f.displacementScale.value=m.displacementScale,f.displacementBias.value=m.displacementBias)):t.isMeshPhongMaterial?(v(e,t),a=t,(r=e).specular.value.copy(a.specular),r.shininess.value=Math.max(a.shininess,1e-4),a.emissiveMap&&(r.emissiveMap.value=a.emissiveMap),a.bumpMap&&(r.bumpMap.value=a.bumpMap,r.bumpScale.value=a.bumpScale,a.side===me)&&(r.bumpScale.value*=-1),a.normalMap&&(r.normalMap.value=a.normalMap,r.normalScale.value.copy(a.normalScale),a.side===me)&&r.normalScale.value.negate(),a.displacementMap&&(r.displacementMap.value=a.displacementMap,r.displacementScale.value=a.displacementScale,r.displacementBias.value=a.displacementBias)):t.isMeshStandardMaterial?(v(e,t),t.isMeshPhysicalMaterial?(g(r=e,a=t),r.reflectivity.value=a.reflectivity,r.clearcoat.value=a.clearcoat,r.clearcoatRoughness.value=a.clearcoatRoughness,a.sheen&&r.sheen.value.copy(a.sheen),a.clearcoatMap&&(r.clearcoatMap.value=a.clearcoatMap),a.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap.value=a.clearcoatRoughnessMap),a.clearcoatNormalMap&&(r.clearcoatNormalScale.value.copy(a.clearcoatNormalScale),r.clearcoatNormalMap.value=a.clearcoatNormalMap,a.side===me)&&r.clearcoatNormalScale.value.negate(),r.transmission.value=a.transmission,a.transmissionMap&&(r.transmissionMap.value=a.transmissionMap)):g(e,t)):t.isMeshMatcapMaterial?(v(e,t),h=e,(p=t).matcap&&(h.matcap.value=p.matcap),p.bumpMap&&(h.bumpMap.value=p.bumpMap,h.bumpScale.value=p.bumpScale,p.side===me)&&(h.bumpScale.value*=-1),p.normalMap&&(h.normalMap.value=p.normalMap,h.normalScale.value.copy(p.normalScale),p.side===me)&&h.normalScale.value.negate(),p.displacementMap&&(h.displacementMap.value=p.displacementMap,h.displacementScale.value=p.displacementScale,h.displacementBias.value=p.displacementBias)):t.isMeshDepthMaterial?(v(e,t),h=e,(p=t).displacementMap&&(h.displacementMap.value=p.displacementMap,h.displacementScale.value=p.displacementScale,h.displacementBias.value=p.displacementBias)):t.isMeshDistanceMaterial?(v(e,t),o=e,(s=t).displacementMap&&(o.displacementMap.value=s.displacementMap,o.displacementScale.value=s.displacementScale,o.displacementBias.value=s.displacementBias),o.referencePosition.value.copy(s.referencePosition),o.nearDistance.value=s.nearDistance,o.farDistance.value=s.farDistance):t.isMeshNormalMaterial?(v(e,t),o=e,(s=t).bumpMap&&(o.bumpMap.value=s.bumpMap,o.bumpScale.value=s.bumpScale,s.side===me)&&(o.bumpScale.value*=-1),s.normalMap&&(o.normalMap.value=s.normalMap,o.normalScale.value.copy(s.normalScale),s.side===me)&&o.normalScale.value.negate(),s.displacementMap&&(o.displacementMap.value=s.displacementMap,o.displacementScale.value=s.displacementScale,o.displacementBias.value=s.displacementBias)):t.isLineBasicMaterial?(d=t,(c=e).diffuse.value.copy(d.color),c.opacity.value=d.opacity,t.isLineDashedMaterial&&(c=t,(d=e).dashSize.value=c.dashSize,d.totalSize.value=c.dashSize+c.gapSize,d.scale.value=c.scale)):t.isPointsMaterial?(d=t,c=n,n=i,(i=e).diffuse.value.copy(d.color),i.opacity.value=d.opacity,i.size.value=d.size*c,i.scale.value=.5*n,d.map&&(i.map.value=d.map),d.alphaMap&&(i.alphaMap.value=d.alphaMap),d.map?l=d.map:d.alphaMap&&(l=d.alphaMap),void 0!==l&&(!0===l.matrixAutoUpdate&&l.updateMatrix(),i.uvTransform.value.copy(l.matrix))):t.isSpriteMaterial?(n=t,(i=e).diffuse.value.copy(n.color),i.opacity.value=n.opacity,i.rotation.value=n.rotation,n.map&&(i.map.value=n.map),n.alphaMap&&(i.alphaMap.value=n.alphaMap),n.map?u=n.map:n.alphaMap&&(u=n.alphaMap),void 0!==u&&(!0===u.matrixAutoUpdate&&u.updateMatrix(),i.uvTransform.value.copy(u.matrix))):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}}}function Is(e){var r=void 0!==(e=e||{}).canvas?e.canvas:((n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")).style.display="block",n),n=void 0!==e.context?e.context:null,O=void 0!==e.alpha&&e.alpha,U=void 0===e.depth||e.depth,N=void 0===e.stencil||e.stencil,z=void 0!==e.antialias&&e.antialias,G=void 0===e.premultipliedAlpha||e.premultipliedAlpha,H=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,V=void 0!==e.powerPreference?e.powerPreference:"default",Q=void 0!==e.failIfMajorPerformanceCaveat&&e.failIfMajorPerformanceCaveat,g=null,A=null,a=[],p=(this.domElement=r,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.outputEncoding=Fn,this.physicallyCorrectLights=!1,this.toneMapping=nt,this.toneMappingExposure=1,this.maxMorphTargets=8,this.maxMorphNormals=4,this),j=!1,W=null,J=0,q=0,f=null,d=null,m=-1,v=null,y=new ei,o=new ei,Y=null,i=r.width,w=r.height,b=1,X=null,K=null,s=new ei(0,0,i,w),l=new ei(0,0,i,w),Z=!1,$=new Ma,ee=!1,te=!1,x=new Me,E=new Oe,ne={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ie(){return null===f?b:1}var h,C,B,M,S,T,_,c,re,P,D,ae,oe,se,I,u,le,ue,ce,k,R,L=n;function de(e,t){for(var n=0;n<e.length;n++){var i=e[n],i=r.getContext(i,t);if(null!==i)return i}return null}try{var he={alpha:O,depth:U,stencil:N,antialias:z,premultipliedAlpha:G,preserveDrawingBuffer:H,powerPreference:V,failIfMajorPerformanceCaveat:Q};if(r.addEventListener("webglcontextlost",ve,!1),r.addEventListener("webglcontextrestored",ge,!1),null===L){var pe=["webgl2","webgl","experimental-webgl"];if(!0===p.isWebGL1Renderer&&pe.shift(),null===(L=de(pe,he)))throw de(pe)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}void 0===L.getShaderPrecisionFormat&&(L.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function fe(){h=new Ua(L),!1===(C=new La(L,h,e)).isWebGL2&&(h.get("WEBGL_depth_texture"),h.get("OES_texture_float"),h.get("OES_texture_half_float"),h.get("OES_texture_half_float_linear"),h.get("OES_standard_derivatives"),h.get("OES_element_index_uint"),h.get("OES_vertex_array_object"),h.get("ANGLE_instanced_arrays")),h.get("OES_texture_float_linear"),k=new Ms(0,h,C),(B=new Cs(L,h,C)).scissor(o.copy(l).multiplyScalar(b).floor()),B.viewport(y.copy(s).multiplyScalar(b).floor()),M=new Ga,S=new ls,T=new Bs(L,h,B,S,C,k,M),_=new Oa(p),c=new Ta(L,C),R=new ka(L,h,c,C),re=new Na(0,c,M,R),P=new ja(0,re,c,M),le=new Qa(L),I=new Fa(S),D=new ss(p,_,h,C,R,I),ae=new Ds(S),oe=new hs(S),se=new As(h,C),u=new Ia(p,_,B,P,G),ue=new Ra(L,h,M,C),ce=new za(L,h,M,C),M.programs=D.programs,p.capabilities=C,p.extensions=h,p.properties=S,p.renderLists=oe,p.state=B,p.info=M,p._textures=T}fe();var F=new Ps(p,L),me=(this.xr=F,new Es(p,P,C.maxTextureSize));function ve(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),j=!0}function ge(){console.log("THREE.WebGLRenderer: Context Restored."),j=!1,fe()}function Ae(e){var e=e.target;e.removeEventListener("dispose",Ae),ye(e=e),S.remove(e)}function ye(e){e=S.get(e).program;void 0!==e&&D.releaseProgram(e)}this.shadowMap=me,this.getContext=function(){return L},this.getContextAttributes=function(){return L.getContextAttributes()},this.forceContextLoss=function(){var e=h.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){var e=h.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return b},this.setPixelRatio=function(e){void 0!==e&&(b=e,this.setSize(i,w,!1))},this.getSize=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getsize() now requires a Vector2 as an argument"),e=new Re),e.set(i,w)},this.setSize=function(e,t,n){F.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(i=e,w=t,r.width=Math.floor(e*b),r.height=Math.floor(t*b),!1!==n&&(r.style.width=e+"px",r.style.height=t+"px"),this.setViewport(0,0,e,t))},this.getDrawingBufferSize=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument"),e=new Re),e.set(i*b,w*b).floor()},this.setDrawingBufferSize=function(e,t,n){i=e,w=t,b=n,r.width=Math.floor(e*n),r.height=Math.floor(t*n),this.setViewport(0,0,e,t)},this.getCurrentViewport=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument"),e=new ei),e.copy(y)},this.getViewport=function(e){return e.copy(s)},this.setViewport=function(e,t,n,i){e.isVector4?s.set(e.x,e.y,e.z,e.w):s.set(e,t,n,i),B.viewport(y.copy(s).multiplyScalar(b).floor())},this.getScissor=function(e){return e.copy(l)},this.setScissor=function(e,t,n,i){e.isVector4?l.set(e.x,e.y,e.z,e.w):l.set(e,t,n,i),B.scissor(o.copy(l).multiplyScalar(b).floor())},this.getScissorTest=function(){return Z},this.setScissorTest=function(e){B.setScissorTest(Z=e)},this.setOpaqueSort=function(e){X=e},this.setTransparentSort=function(e){K=e},this.getClearColor=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getClearColor() now requires a Color as an argument"),e=new Se),e.copy(u.getClearColor())},this.setClearColor=function(){u.setClearColor.apply(u,arguments)},this.getClearAlpha=function(){return u.getClearAlpha()},this.setClearAlpha=function(){u.setClearAlpha.apply(u,arguments)},this.clear=function(e,t,n){var i=0;void 0!==e&&!e||(i|=16384),void 0!==t&&!t||(i|=256),void 0!==n&&!n||(i|=1024),L.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){r.removeEventListener("webglcontextlost",ve,!1),r.removeEventListener("webglcontextrestored",ge,!1),oe.dispose(),se.dispose(),S.dispose(),_.dispose(),P.dispose(),R.dispose(),F.dispose(),t.stop()},this.renderBufferImmediate=function(e,t){R.initAttributes();var n=S.get(e),t=(e.hasPositions&&!n.position&&(n.position=L.createBuffer()),e.hasNormals&&!n.normal&&(n.normal=L.createBuffer()),e.hasUvs&&!n.uv&&(n.uv=L.createBuffer()),e.hasColors&&!n.color&&(n.color=L.createBuffer()),t.getAttributes());e.hasPositions&&(L.bindBuffer(34962,n.position),L.bufferData(34962,e.positionArray,35048),R.enableAttribute(t.position),L.vertexAttribPointer(t.position,3,5126,!1,0,0)),e.hasNormals&&(L.bindBuffer(34962,n.normal),L.bufferData(34962,e.normalArray,35048),R.enableAttribute(t.normal),L.vertexAttribPointer(t.normal,3,5126,!1,0,0)),e.hasUvs&&(L.bindBuffer(34962,n.uv),L.bufferData(34962,e.uvArray,35048),R.enableAttribute(t.uv),L.vertexAttribPointer(t.uv,2,5126,!1,0,0)),e.hasColors&&(L.bindBuffer(34962,n.color),L.bufferData(34962,e.colorArray,35048),R.enableAttribute(t.color),L.vertexAttribPointer(t.color,3,5126,!1,0,0)),R.disableUnusedAttributes(),L.drawArrays(4,0,e.count),e.count=0},this.renderBufferDirect=function(e,t,n,i,r,a){null===t&&(t=ne);var o=r.isMesh&&r.matrixWorld.determinant()<0,e=Ce(e,t,i,r),t=(B.setMaterial(i,o),n.index),o=n.attributes.position;if(null===t){if(void 0===o||0===o.count)return}else if(0===t.count)return;var s=1,e=(!0===i.wireframe&&(t=re.getWireframeAttribute(n),s=2),(i.morphTargets||i.morphNormals)&&le.update(r,n,i,e),R.setup(r,i,e,n,t),ue),l=(null!==t&&(l=c.get(t),(e=ce).setIndex(l)),(null!==t?t:o).count),t=n.drawRange.start*s,o=n.drawRange.count*s,u=null!==a?a.start*s:0,a=null!==a?a.count*s:1/0,s=Math.max(t,u),l=Math.min(l,t+o,u+a)-1,t=Math.max(0,l-s+1);0!==t&&(r.isMesh?!0===i.wireframe?(B.setLineWidth(i.wireframeLinewidth*ie()),e.setMode(1)):e.setMode(4):r.isLine?(o=i.linewidth,B.setLineWidth((o=void 0===o?1:o)*ie()),r.isLineSegments?e.setMode(1):r.isLineLoop?e.setMode(2):e.setMode(3)):r.isPoints?e.setMode(0):r.isSprite&&e.setMode(4),r.isInstancedMesh?e.renderInstances(s,t,r.count):n.isInstancedBufferGeometry?(u=Math.min(n.instanceCount,n._maxInstanceCount),e.renderInstances(s,t,u)):e.render(s,t))},this.compile=function(r,t){(A=se.get(r)).init(),r.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(A.pushLight(e),e.castShadow)&&A.pushShadow(e)}),A.setupLights();var a=new WeakMap;r.traverse(function(e){var t=e.material;if(t)if(Array.isArray(t))for(var n=0;n<t.length;n++){var i=t[n];!1===a.has(i)&&(Ee(i,r,e),a.set(i))}else!1===a.has(t)&&(Ee(t,r,e),a.set(t))})};var we=null;var t=new Sa;function be(e,t,n){for(var i=!0===t.isScene?t.overrideMaterial:null,r=0,a=e.length;r<a;r++){var o=e[r],s=o.object,l=o.geometry,u=null===i?o.material:i,c=o.group;if(n.isArrayCamera)for(var d=n.cameras,h=0,p=d.length;h<p;h++){var f=d[h];s.layers.test(f.layers)&&(B.viewport(y.copy(f.viewport)),A.setupLightsView(f),xe(s,t,f,l,u,c))}else xe(s,t,n,l,u,c)}}function xe(e,t,n,i,r,a){var o,s;e.onBeforeRender(p,t,n,i,r,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),e.isImmediateRenderObject?(o=Ce(n,t,r,e),B.setMaterial(r),R.reset(),s=o,e.render(function(e){p.renderBufferImmediate(e,s)})):p.renderBufferDirect(n,t,i,r,e,a),e.onAfterRender(p,t,n,i,r,a)}function Ee(e,t,n){!0!==t.isScene&&(t=ne);var i=S.get(e),r=A.state.lights,a=A.state.shadowsArray,o=r.state.version,a=D.getParameters(e,r.state,a,t,n),n=D.getProgramCacheKey(a),s=i.program,l=!0;if(void 0===s)e.addEventListener("dispose",Ae);else if(s.cacheKey!==n)ye(e);else{if(i.lightsStateVersion===o&&void 0!==a.shaderID)return u=e.isMeshStandardMaterial?t.environment:null,void(i.envMap=_.get(e.envMap||u));l=!1}l&&(a.uniforms=D.getUniforms(e),e.onBeforeCompile(a,p),s=D.acquireProgram(a,n),i.program=s,i.uniforms=a.uniforms,i.outputEncoding=a.outputEncoding);var u=i.uniforms,n=((e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(i.numClippingPlanes=I.numPlanes,i.numIntersection=I.numIntersection,u.clippingPlanes=I.uniform),i.environment=e.isMeshStandardMaterial?t.environment:null,i.fog=t.fog,i.envMap=_.get(e.envMap||i.environment),i.needsLights=(l=e).isMeshLambertMaterial||l.isMeshToonMaterial||l.isMeshPhongMaterial||l.isMeshStandardMaterial||l.isShadowMaterial||l.isShaderMaterial&&!0===l.lights,i.lightsStateVersion=o,i.needsLights&&(u.ambientLightColor.value=r.state.ambient,u.lightProbe.value=r.state.probe,u.directionalLights.value=r.state.directional,u.directionalLightShadows.value=r.state.directionalShadow,u.spotLights.value=r.state.spot,u.spotLightShadows.value=r.state.spotShadow,u.rectAreaLights.value=r.state.rectArea,u.ltc_1.value=r.state.rectAreaLTC1,u.ltc_2.value=r.state.rectAreaLTC2,u.pointLights.value=r.state.point,u.pointLightShadows.value=r.state.pointShadow,u.hemisphereLights.value=r.state.hemi,u.directionalShadowMap.value=r.state.directionalShadowMap,u.directionalShadowMatrix.value=r.state.directionalShadowMatrix,u.spotShadowMap.value=r.state.spotShadowMap,u.spotShadowMatrix.value=r.state.spotShadowMatrix,u.pointShadowMap.value=r.state.pointShadowMap,u.pointShadowMatrix.value=r.state.pointShadowMatrix),i.program.getUniforms()),s=Ho.seqWithValue(n.seq,u);i.uniformsList=s}function Ce(e,t,n,i){!0!==t.isScene&&(t=ne),T.resetTextureUnits();var r,a,o=t.fog,s=n.isMeshStandardMaterial?t.environment:null,l=null===f?p.outputEncoding:f.texture.encoding,u=_.get(n.envMap||s),c=S.get(n),d=A.state.lights,h=(!0!==ee||!0!==te&&e===v||(h=e===v&&n.id===m,I.setState(n,e,h)),n.version===c.__version?(n.fog&&c.fog!==o||c.environment!==s||c.needsLights&&c.lightsStateVersion!==d.state.version||void 0!==c.numClippingPlanes&&(c.numClippingPlanes!==I.numPlanes||c.numIntersection!==I.numIntersection)||c.outputEncoding!==l||c.envMap!==u)&&Ee(n,t,i):(Ee(n,t,i),c.__version=n.version),!1),s=!1,d=!1,l=c.program,u=l.getUniforms(),t=c.uniforms;return B.useProgram(l.program)&&(d=s=h=!0),n.id!==m&&(m=n.id,s=!0),(h||v!==e)&&(u.setValue(L,"projectionMatrix",e.projectionMatrix),C.logarithmicDepthBuffer&&u.setValue(L,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),v!==e&&(v=e,d=s=!0),(n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap)&&void 0!==(h=u.map.cameraPosition)&&h.setValue(L,E.setFromMatrixPosition(e.matrixWorld)),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&u.setValue(L,"isOrthographic",!0===e.isOrthographicCamera),n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.isShadowMaterial||n.skinning)&&u.setValue(L,"viewMatrix",e.matrixWorldInverse),n.skinning&&(u.setOptional(L,i,"bindMatrix"),u.setOptional(L,i,"bindMatrixInverse"),h=i.skeleton)&&(e=h.bones,C.floatVertexTextures?(null===h.boneTexture&&(e=Math.sqrt(4*e.length),e=Be.ceilPowerOfTwo(e),e=Math.max(e,4),(a=new Float32Array(e*e*4)).set(h.boneMatrices),r=new Ea(a,e,e,It,Ct),h.boneMatrices=a,h.boneTexture=r,h.boneTextureSize=e),u.setValue(L,"boneTexture",h.boneTexture,T),u.setValue(L,"boneTextureSize",h.boneTextureSize)):u.setOptional(L,h,"boneMatrices")),!s&&c.receiveShadow===i.receiveShadow||(c.receiveShadow=i.receiveShadow,u.setValue(L,"receiveShadow",i.receiveShadow)),s&&(u.setValue(L,"toneMappingExposure",p.toneMappingExposure),c.needsLights&&(a=d,(r=t).ambientLightColor.needsUpdate=a,r.lightProbe.needsUpdate=a,r.directionalLights.needsUpdate=a,r.directionalLightShadows.needsUpdate=a,r.pointLights.needsUpdate=a,r.pointLightShadows.needsUpdate=a,r.spotLights.needsUpdate=a,r.spotLightShadows.needsUpdate=a,r.rectAreaLights.needsUpdate=a,r.hemisphereLights.needsUpdate=a),o&&n.fog&&ae.refreshFogUniforms(t,o),ae.refreshMaterialUniforms(t,n,b,w),Ho.upload(L,c.uniformsList,t,T)),n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(Ho.upload(L,c.uniformsList,t,T),n.uniformsNeedUpdate=!1),n.isSpriteMaterial&&u.setValue(L,"center",i.center),u.setValue(L,"modelViewMatrix",i.modelViewMatrix),u.setValue(L,"normalMatrix",i.normalMatrix),u.setValue(L,"modelMatrix",i.matrixWorld),l}t.setAnimationLoop(function(e){F.isPresenting||we&&we(e)}),"undefined"!=typeof window&&t.setContext(window),this.setAnimationLoop=function(e){we=e,F.setAnimationLoop(e),null===e?t.stop():t.start()},this.render=function(e,t){var n,i,r;void 0!==arguments[2]&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),r=arguments[2]),void 0!==arguments[3]&&(console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),n=arguments[3]),void 0!==t&&!0!==t.isCamera?console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."):!0!==j&&(R.resetDefaultState(),m=-1,!(v=null)===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),!0===F.enabled&&!0===F.isPresenting&&(t=F.getCamera(t)),!0===e.isScene&&e.onBeforeRender(p,e,t,r||f),(A=se.get(e,a.length)).init(),a.push(A),x.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),$.setFromProjectionMatrix(x),te=this.localClippingEnabled,ee=I.init(this.clippingPlanes,te,t),(g=oe.get(e,t)).init(),function e(t,n,i,r){if(!1===t.visible)return;var a=t.layers.test(n.layers);if(a)if(t.isGroup)i=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(n);else if(t.isLight)A.pushLight(t),t.castShadow&&A.pushShadow(t);else if(t.isSprite){var o;t.frustumCulled&&!$.intersectsSprite(t)||(r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x),a=P.update(t),(o=t.material).visible&&g.push(t,a,o,i,E.z,null))}else if(t.isImmediateRenderObject)r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x),g.push(t,null,t.material,i,E.z,null);else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.frame!==M.render.frame&&(t.skeleton.update(),t.skeleton.frame=M.render.frame),!t.frustumCulled||$.intersectsObject(t))){r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x);var s=P.update(t),l=t.material;if(Array.isArray(l))for(var u=s.groups,c=0,d=u.length;c<d;c++){var h=u[c],p=l[h.materialIndex];p&&p.visible&&g.push(t,s,p,i,E.z,h)}else l.visible&&g.push(t,s,l,i,E.z,null)}var f=t.children;for(var m=0,v=f.length;m<v;m++)e(f[m],n,i,r)}(e,t,0,p.sortObjects),g.finish(),!0===p.sortObjects&&g.sort(X,K),!0===ee&&I.beginShadows(),i=A.state.shadowsArray,me.render(i,e,t),A.setupLights(),A.setupLightsView(t),!0===ee&&I.endShadows(),!0===this.info.autoReset&&this.info.reset(),void 0!==r&&this.setRenderTarget(r),u.render(g,e,t,n),i=g.opaque,r=g.transparent,0<i.length&&be(i,e,t),0<r.length&&be(r,e,t),!0===e.isScene&&e.onAfterRender(p,e,t),null!==f&&(T.updateRenderTargetMipmap(f),T.updateMultisampleRenderTarget(f)),B.buffers.depth.setTest(!0),B.buffers.depth.setMask(!0),B.buffers.color.setMask(!0),B.setPolygonOffset(!1),a.pop(),A=0<a.length?a[a.length-1]:null,g=null)},this.setFramebuffer=function(e){W!==e&&null===f&&L.bindFramebuffer(36160,e),W=e},this.getActiveCubeFace=function(){return J},this.getActiveMipmapLevel=function(){return q},this.getRenderList=function(){return g},this.setRenderList=function(e){g=e},this.getRenderTarget=function(){return f},this.setRenderTarget=function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=(J=n,q=i,(f=e)&&void 0===S.get(e).__webglFramebuffer&&T.setupRenderTarget(e),W),a=!1;Y=e?(t=S.get(e).__webglFramebuffer,e.isWebGLCubeRenderTarget?(r=t[n],a=!0):r=e.isWebGLMultisampleRenderTarget?S.get(e).__webglMultisampledFramebuffer:t,y.copy(e.viewport),o.copy(e.scissor),e.scissorTest):(y.copy(s).multiplyScalar(b).floor(),o.copy(l).multiplyScalar(b).floor(),Z),d!==r&&(L.bindFramebuffer(36160,r),d=r),B.viewport(y),B.scissor(o),B.setScissorTest(Y),a&&(t=S.get(e.texture),L.framebufferTexture2D(36160,36064,34069+n,t.__webglTexture,i))},this.readRenderTargetPixels=function(e,t,n,i,r,a,o){if(e&&e.isWebGLRenderTarget){var s=S.get(e).__webglFramebuffer;if(s=e.isWebGLCubeRenderTarget&&void 0!==o?s[o]:s){o=!1;s!==d&&(L.bindFramebuffer(36160,s),o=!0);try{var l=e.texture,u=l.format,c=l.type;u!==It&&k.convert(u)!==L.getParameter(35739)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):c===At||k.convert(c)===L.getParameter(35738)||c===Ct&&(C.isWebGL2||h.get("OES_texture_float")||h.get("WEBGL_color_buffer_float"))||c===Bt&&(C.isWebGL2?h.get("EXT_color_buffer_float"):h.get("EXT_color_buffer_half_float"))?36053===L.checkFramebufferStatus(36160)?0<=t&&t<=e.width-i&&0<=n&&n<=e.height-r&&L.readPixels(t,n,i,r,k.convert(u),k.convert(c),a):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{o&&L.bindFramebuffer(36160,d)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=Math.pow(2,-n),r=Math.floor(t.image.width*i),i=Math.floor(t.image.height*i),a=k.convert(t.format);T.setTexture2D(t,0),L.copyTexImage2D(3553,n,a,e.x,e.y,r,i,0),B.unbindTexture()},this.copyTextureToTexture=function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=t.image.width,a=t.image.height,o=k.convert(n.format),s=k.convert(n.type);T.setTexture2D(n,0),L.pixelStorei(37440,n.flipY),L.pixelStorei(37441,n.premultiplyAlpha),L.pixelStorei(3317,n.unpackAlignment),t.isDataTexture?L.texSubImage2D(3553,i,e.x,e.y,r,a,o,s,t.image.data):t.isCompressedTexture?L.compressedTexSubImage2D(3553,i,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,o,t.mipmaps[0].data):L.texSubImage2D(3553,i,e.x,e.y,o,s,t.image),0===i&&n.generateMipmaps&&L.generateMipmap(3553),B.unbindTexture()},this.initTexture=function(e){T.setTexture2D(e,0),B.unbindTexture()},this.resetState=function(){B.reset(),R.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function ks(e){Is.call(this,e)}Ss.prototype=Object.assign(Object.create(ya.prototype),{constructor:Ss,isArrayCamera:!0}),Ts.prototype=Object.assign(Object.create(Z.prototype),{constructor:Ts,isGroup:!0}),Object.assign(_s.prototype,{constructor:_s,getHandSpace:function(){if(null===this._hand&&(this._hand=new Ts,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints=[],this._hand.inputState={pinching:!1},window.XRHand))for(var e=0;e<=window.XRHand.LITTLE_PHALANX_TIP;e++){var t=new Ts;t.matrixAutoUpdate=!1,t.visible=!1,this._hand.joints.push(t),this._hand.add(t)}return this._hand},getTargetRaySpace:function(){return null===this._targetRay&&(this._targetRay=new Ts,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1),this._targetRay},getGripSpace:function(){return null===this._grip&&(this._grip=new Ts,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1),this._grip},dispatchEvent:function(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this},disconnect:function(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this},update:function(e,t,n){var i=null,r=null,a=null,o=this._targetRay,s=this._grip,l=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState)if(l&&e.hand)for(var u,c,a=!0,d=0;d<=window.XRHand.LITTLE_PHALANX_TIP;d++)e.hand[d]&&(u=t.getJointPose(e.hand[d],n),c=l.joints[d],null!==u&&(c.matrix.fromArray(u.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.jointRadius=u.radius),c.visible=null!==u,c=l.joints[window.XRHand.INDEX_PHALANX_TIP],u=l.joints[window.XRHand.THUMB_PHALANX_TIP],c=c.position.distanceTo(u.position),l.inputState.pinching&&.025<c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&c<=.015&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this})));else null!==o&&null!==(i=t.getPose(e.targetRaySpace,n))&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale)),null!==s&&e.gripSpace&&null!==(r=t.getPose(e.gripSpace,n))&&(s.matrix.fromArray(r.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale));return null!==o&&(o.visible=null!==i),null!==s&&(s.visible=null!==r),null!==l&&(l.visible=null!==a),this}}),Object.assign(Ps.prototype,Qn.prototype),ks.prototype=Object.assign(Object.create(Is.prototype),{constructor:ks,isWebGL1Renderer:!0});var Rs=function(){function n(e,t){ue(this,n),Object.defineProperty(this,"isFogExp2",{value:!0}),this.name="",this.color=new Se(e),this.density=void 0!==t?t:25e-5}return A(n,[{key:"clone",value:function(){return new n(this.color,this.density)}},{key:"toJSON",value:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}])}(),Ls=function(){function i(e,t,n){ue(this,i),Object.defineProperty(this,"isFog",{value:!0}),this.name="",this.color=new Se(e),this.near=void 0!==t?t:1,this.far=void 0!==n?n:1e3}return A(i,[{key:"clone",value:function(){return new i(this.color,this.near,this.far)}},{key:"toJSON",value:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}])}(),Fs=function(){function n(){var e;return ue(this,n),e=le(this,n),Object.defineProperty(e,"isScene",{value:!0}),e.type="Scene",e.background=null,e.environment=null,e.fog=null,e.overrideMaterial=null,e.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:e})),e}return v(n,Z),A(n,[{key:"copy",value:function(e,t){return I(n,"copy",this,3)([e,t]),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}},{key:"toJSON",value:function(e){var t=I(n,"toJSON",this,3)([e]);return null!==this.background&&(t.object.background=this.background.toJSON(e)),null!==this.environment&&(t.object.environment=this.environment.toJSON(e)),null!==this.fog&&(t.object.fog=this.fog.toJSON()),t}}])}();function Os(e,t){this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=Gn,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Be.generateUUID()}Object.defineProperty(Os.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Os.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.stride,n*=t.stride;for(var i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this},set:function(e){return this.array.set(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:0),this},clone:function(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Be.generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);e=new Os(new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),this.stride);return e.setUsage(this.usage),e},onUpload:function(e){return this.onUploadCallback=e,this},toJSON:function(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Be.generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.prototype.slice.call(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}});var Us,Ns=new Oe;function zs(e,t,n,i){this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=!0===i}function Gs(e){Er.call(this),this.type="SpriteMaterial",this.color=new Se(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.setValues(e)}Object.defineProperties(zs.prototype,{count:{get:function(){return this.data.count}},array:{get:function(){return this.data.array}},needsUpdate:{set:function(e){this.data.needsUpdate=e}}}),Object.assign(zs.prototype,{isInterleavedBufferAttribute:!0,applyMatrix4:function(e){for(var t=0,n=this.data.count;t<n;t++)Ns.x=this.getX(t),Ns.y=this.getY(t),Ns.z=this.getZ(t),Ns.applyMatrix4(e),this.setXYZ(t,Ns.x,Ns.y,Ns.z);return this},setX:function(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this},setY:function(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this},setZ:function(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this},setW:function(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this},getX:function(e){return this.data.array[e*this.data.stride+this.offset]},getY:function(e){return this.data.array[e*this.data.stride+this.offset+1]},getZ:function(e){return this.data.array[e*this.data.stride+this.offset+2]},getW:function(e){return this.data.array[e*this.data.stride+this.offset+3]},setXY:function(e,t,n){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this},setXYZ:function(e,t,n,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this},setXYZW:function(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this},clone:function(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new zs(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized);console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.");for(var t=[],n=0;n<this.count;n++)for(var i=n*this.data.stride+this.offset,r=0;r<this.itemSize;r++)t.push(this.data.array[i+r]);return new H(new this.array.constructor(t),this.itemSize,this.normalized)},toJSON:function(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized};console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.");for(var t=[],n=0;n<this.count;n++)for(var i=n*this.data.stride+this.offset,r=0;r<this.itemSize;r++)t.push(this.data.array[i+r]);return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}}),((Gs.prototype=Object.create(Er.prototype)).constructor=Gs).prototype.isSpriteMaterial=!0,Gs.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this};var Hs=new Oe,Vs=new Oe,Qs=new Oe,js=new Re,Ws=new Re,Js=new Me,qs=new Oe,Ys=new Oe,Xs=new Oe,Ks=new Re,Zs=new Re,$s=new Re;function el(e){var t;Z.call(this),this.type="Sprite",void 0===Us&&(Us=new V,t=new Os(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5),Us.setIndex([0,1,2,0,2,3]),Us.setAttribute("position",new zs(t,3,0,!1)),Us.setAttribute("uv",new zs(t,2,3,!1))),this.geometry=Us,this.material=void 0!==e?e:new Gs,this.center=new Re(.5,.5)}function tl(e,t,n,i,r,a){js.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(Ws.x=a*js.x-r*js.y,Ws.y=r*js.x+a*js.y):Ws.copy(js),e.copy(t),e.x+=Ws.x,e.y+=Ws.y,e.applyMatrix4(Js)}el.prototype=Object.assign(Object.create(Z.prototype),{constructor:el,isSprite:!0,raycast:function(e,t){null===e.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Vs.setFromMatrixScale(this.matrixWorld),Js.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Qs.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&Vs.multiplyScalar(-Qs.z);var n,i,r=this.material.rotation,r=(0!==r&&(i=Math.cos(r),n=Math.sin(r)),this.center);tl(qs.set(-.5,-.5,0),Qs,r,Vs,n,i),tl(Ys.set(.5,-.5,0),Qs,r,Vs,n,i),tl(Xs.set(.5,.5,0),Qs,r,Vs,n,i),Ks.set(0,0),Zs.set(1,0),$s.set(1,1),null===e.ray.intersectTriangle(qs,Ys,Xs,!1,Hs)&&(tl(Ys.set(-.5,.5,0),Qs,r,Vs,n,i),Zs.set(0,1),null===e.ray.intersectTriangle(qs,Xs,Ys,!1,Hs))||(r=e.ray.origin.distanceTo(Hs))<e.near||r>e.far||t.push({distance:r,point:Hs.clone(),uv:fr.getUV(Hs,qs,Ys,Xs,Ks,Zs,$s,new Re),face:null,object:this})},copy:function(e){return Z.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}});var nl=new Oe,il=new Oe;function rl(){Z.call(this),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}rl.prototype=Object.assign(Object.create(Z.prototype),{constructor:rl,isLOD:!0,copy:function(e){Z.prototype.copy.call(this,e,!1);for(var t=e.levels,n=0,i=t.length;n<i;n++){var r=t[n];this.addLevel(r.object.clone(),r.distance)}return this.autoUpdate=e.autoUpdate,this},addLevel:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,t=Math.abs(t),n=this.levels,i=0;i<n.length&&!(t<n[i].distance);i++);return n.splice(i,0,{distance:t,object:e}),this.add(e),this},getCurrentLevel:function(){return this._currentLevel},getObjectForDistance:function(e){var t=this.levels;if(0<t.length){for(var n=1,i=t.length;n<i&&!(e<t[n].distance);n++);return t[n-1].object}return null},raycast:function(e,t){var n;0<this.levels.length&&(nl.setFromMatrixPosition(this.matrixWorld),n=e.ray.origin.distanceTo(nl),this.getObjectForDistance(n).raycast(e,t))},update:function(e){var t=this.levels;if(1<t.length){nl.setFromMatrixPosition(e.matrixWorld),il.setFromMatrixPosition(this.matrixWorld);var n,i,r=nl.distanceTo(il)/e.zoom;for(t[0].object.visible=!0,n=1,i=t.length;n<i&&r>=t[n].distance;n++)t[n-1].object.visible=!1,t[n].object.visible=!0;for(this._currentLevel=n-1;n<i;n++)t[n].object.visible=!1}},toJSON:function(e){for(var t=Z.prototype.toJSON.call(this,e),n=(!1===this.autoUpdate&&(t.object.autoUpdate=!1),t.object.levels=[],this.levels),i=0,r=n.length;i<r;i++){var a=n[i];t.object.levels.push({object:a.object.uuid,distance:a.distance})}return t}});var al=new Oe,ol=new ei,sl=new ei,ll=new Oe,ul=new Me;function cl(e,t){e&&e.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),Q.call(this,e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Me,this.bindMatrixInverse=new Me}function dl(){Z.call(this),this.type="Bone"}cl.prototype=Object.assign(Object.create(Q.prototype),{constructor:cl,isSkinnedMesh:!0,copy:function(e){return Q.prototype.copy.call(this,e),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this},bind:function(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){for(var e=new ei,t=this.geometry.attributes.skinWeight,n=0,i=t.count;n<i;n++){e.x=t.getX(n),e.y=t.getY(n),e.z=t.getZ(n),e.w=t.getW(n);var r=1/e.manhattanLength();r!=1/0?e.multiplyScalar(r):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}},updateMatrixWorld:function(e){Q.prototype.updateMatrixWorld.call(this,e),"attached"===this.bindMode?this.bindMatrixInverse.copy(this.matrixWorld).invert():"detached"===this.bindMode?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)},boneTransform:function(e,t){var n=this.skeleton,i=this.geometry;ol.fromBufferAttribute(i.attributes.skinIndex,e),sl.fromBufferAttribute(i.attributes.skinWeight,e),al.fromBufferAttribute(i.attributes.position,e).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(var r=0;r<4;r++){var a,o=sl.getComponent(r);0!==o&&(a=ol.getComponent(r),ul.multiplyMatrices(n.bones[a].matrixWorld,n.boneInverses[a]),t.addScaledVector(ll.copy(al).applyMatrix4(ul),o))}return t.applyMatrix4(this.bindMatrixInverse)}}),dl.prototype=Object.assign(Object.create(Z.prototype),{constructor:dl,isBone:!0});var hl=new Me,pl=new Me;function fl(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[];this.uuid=Be.generateUUID(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}Object.assign(fl.prototype,{init:function(){var e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(var n=0,i=this.bones.length;n<i;n++)this.boneInverses.push(new Me)}},calculateInverses:function(){for(var e=this.boneInverses.length=0,t=this.bones.length;e<t;e++){var n=new Me;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}},pose:function(){for(var e=0,t=this.bones.length;e<t;e++){var n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(var i=0,r=this.bones.length;i<r;i++){var a=this.bones[i];a&&(a.parent&&a.parent.isBone?(a.matrix.copy(a.parent.matrixWorld).invert(),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale))}},update:function(){for(var e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture,r=0,a=e.length;r<a;r++){var o=e[r]?e[r].matrixWorld:pl;hl.multiplyMatrices(o,t[r]),hl.toArray(n,16*r)}null!==i&&(i.needsUpdate=!0)},clone:function(){return new fl(this.bones,this.boneInverses)},getBoneByName:function(e){for(var t=0,n=this.bones.length;t<n;t++){var i=this.bones[t];if(i.name===e)return i}},dispose:function(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)},fromJSON:function(e,t){this.uuid=e.uuid;for(var n=0,i=e.bones.length;n<i;n++){var r=e.bones[n],a=t[r];void 0===a&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),a=new dl),this.bones.push(a),this.boneInverses.push((new Me).fromArray(e.boneInverses[n]))}return this.init(),this},toJSON:function(){for(var e={metadata:{version:4.5,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]},t=(e.uuid=this.uuid,this.bones),n=this.boneInverses,i=0,r=t.length;i<r;i++){var a=t[i],a=(e.bones.push(a.uuid),n[i]);e.boneInverses.push(a.toArray())}return e}});var ml=new Me,vl=new Me,gl=[],Al=new Q;function yl(e,t,n){Q.call(this,e,t),this.instanceMatrix=new H(new Float32Array(16*n),16),this.instanceColor=null,this.count=n,this.frustumCulled=!1}function wl(e){Er.call(this),this.type="LineBasicMaterial",this.color=new Se(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.morphTargets=!1,this.setValues(e)}yl.prototype=Object.assign(Object.create(Q.prototype),{constructor:yl,isInstancedMesh:!0,copy:function(e){return Q.prototype.copy.call(this,e),this.instanceMatrix.copy(e.instanceMatrix),this.count=e.count,this},getColorAt:function(e,t){t.fromArray(this.instanceColor.array,3*e)},getMatrixAt:function(e,t){t.fromArray(this.instanceMatrix.array,16*e)},raycast:function(e,t){var n=this.matrixWorld,i=this.count;if(Al.geometry=this.geometry,Al.material=this.material,void 0!==Al.material)for(var r=0;r<i;r++){this.getMatrixAt(r,ml),vl.multiplyMatrices(n,ml),Al.matrixWorld=vl,Al.raycast(e,gl);for(var a=0,o=gl.length;a<o;a++){var s=gl[a];s.instanceId=r,s.object=this,t.push(s)}gl.length=0}},setColorAt:function(e,t){null===this.instanceColor&&(this.instanceColor=new H(new Float32Array(3*this.count),3)),t.toArray(this.instanceColor.array,3*e)},setMatrixAt:function(e,t){t.toArray(this.instanceMatrix.array,16*e)},updateMorphTargets:function(){},dispose:function(){this.dispatchEvent({type:"dispose"})}}),((wl.prototype=Object.create(Er.prototype)).constructor=wl).prototype.isLineBasicMaterial=!0,wl.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.morphTargets=e.morphTargets,this};var bl=new Oe,xl=new Oe,El=new Me,Cl=new _i,Bl=new bi;function Ml(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new V,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new wl;Z.call(this),this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}Ml.prototype=Object.assign(Object.create(Z.prototype),{constructor:Ml,isLine:!0,copy:function(e){return Z.prototype.copy.call(this,e),this.material=e.material,this.geometry=e.geometry,this},computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[0],i=1,r=t.count;i<r;i++)bl.fromBufferAttribute(t,i-1),xl.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=bl.distanceTo(xl);e.setAttribute("lineDistance",new ee(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry){var a=e.vertices,o=e.lineDistances;o[0]=0;for(var s=1,l=a.length;s<l;s++)o[s]=o[s-1],o[s]+=a[s-1].distanceTo(a[s])}return this},raycast:function(e,t){var n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold;if(null===n.boundingSphere&&n.computeBoundingSphere(),Bl.copy(n.boundingSphere),Bl.applyMatrix4(i),Bl.radius+=r,!1!==e.ray.intersectsSphere(Bl)){El.copy(i).invert(),Cl.copy(e.ray).applyMatrix4(El);var i=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=i*i,o=new Oe,s=new Oe,l=new Oe,u=new Oe,c=this.isLineSegments?2:1;if(n.isBufferGeometry){var r=n.index,d=n.attributes.position;if(null!==r)for(var h=r.array,p=0,f=h.length-1;p<f;p+=c){var m=h[p],v=h[p+1];o.fromBufferAttribute(d,m),s.fromBufferAttribute(d,v),a<Cl.distanceSqToSegment(o,s,u,l)||(u.applyMatrix4(this.matrixWorld),(m=e.ray.origin.distanceTo(u))<e.near)||m>e.far||t.push({distance:m,point:l.clone().applyMatrix4(this.matrixWorld),index:p,face:null,faceIndex:null,object:this})}else for(var g,A=0,y=d.count-1;A<y;A+=c)o.fromBufferAttribute(d,A),s.fromBufferAttribute(d,A+1),a<Cl.distanceSqToSegment(o,s,u,l)||(u.applyMatrix4(this.matrixWorld),(g=e.ray.origin.distanceTo(u))<e.near)||g>e.far||t.push({distance:g,point:l.clone().applyMatrix4(this.matrixWorld),index:A,face:null,faceIndex:null,object:this})}else if(n.isGeometry)for(var w,b=n.vertices,x=b.length,E=0;E<x-1;E+=c)a<Cl.distanceSqToSegment(b[E],b[E+1],u,l)||(u.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(u))<e.near)||w>e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:E,face:null,faceIndex:null,object:this})}},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}});var Sl=new Oe,Tl=new Oe;function _l(e,t){Ml.call(this,e,t),this.type="LineSegments"}function Pl(e,t){Ml.call(this,e,t),this.type="LineLoop"}function Dl(e){Er.call(this),this.type="PointsMaterial",this.color=new Se(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(e)}_l.prototype=Object.assign(Object.create(Ml.prototype),{constructor:_l,isLineSegments:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[],i=0,r=t.count;i<r;i+=2)Sl.fromBufferAttribute(t,i),Tl.fromBufferAttribute(t,i+1),n[i]=0===i?0:n[i-1],n[i+1]=n[i]+Sl.distanceTo(Tl);e.setAttribute("lineDistance",new ee(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry)for(var a=e.vertices,o=e.lineDistances,s=0,l=a.length;s<l;s+=2)Sl.copy(a[s]),Tl.copy(a[s+1]),o[s]=0===s?0:o[s-1],o[s+1]=o[s]+Sl.distanceTo(Tl);return this}}),Pl.prototype=Object.assign(Object.create(Ml.prototype),{constructor:Pl,isLineLoop:!0}),((Dl.prototype=Object.create(Er.prototype)).constructor=Dl).prototype.isPointsMaterial=!0,Dl.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.morphTargets=e.morphTargets,this};var Il=new Me,kl=new _i,Rl=new bi,Ll=new Oe;function Fl(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new V,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Dl;Z.call(this),this.type="Points",this.geometry=e,this.material=t,this.updateMorphTargets()}function Ol(e,t,n,i,r,a,o){var s=kl.distanceSqToPoint(e);s<n&&(n=new Oe,kl.closestPointToPoint(e,n),n.applyMatrix4(i),(e=r.ray.origin.distanceTo(n))<r.near||e>r.far||a.push({distance:e,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,object:o}))}function Ul(t,e,n,i,r,a,o,s,l){Zn.call(this,t,e,n,i,r,a,o,s,l),this.format=void 0!==o?o:Dt,this.minFilter=void 0!==a?a:N,this.magFilter=void 0!==r?r:N,this.generateMipmaps=!1;var u=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback(function e(){u.needsUpdate=!0,t.requestVideoFrameCallback(e)})}function Nl(e,t,n,i,r,a,o,s,l,u,c,d){Zn.call(this,null,a,o,s,l,u,i,r,c,d),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}function zl(e,t,n,i,r,a,o,s,l){Zn.call(this,e,t,n,i,r,a,o,s,l),this.needsUpdate=!0}function Gl(e,t,n,i,r,a,o,s,l,u){if((u=void 0!==u?u:Ft)!==Ft&&u!==Ot)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");Zn.call(this,null,i,r,a,o,s,u,n=void 0===(n=void 0===n&&u===Ft?bt:n)&&u===Ot?_t:n,l),this.image={width:e,height:t},this.magFilter=void 0!==o?o:ht,this.minFilter=void 0!==s?s:ht,this.flipY=!1,this.generateMipmaps=!1}Fl.prototype=Object.assign(Object.create(Z.prototype),{constructor:Fl,isPoints:!0,copy:function(e){return Z.prototype.copy.call(this,e),this.material=e.material,this.geometry=e.geometry,this},raycast:function(e,t){var n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold;if(null===n.boundingSphere&&n.computeBoundingSphere(),Rl.copy(n.boundingSphere),Rl.applyMatrix4(i),Rl.radius+=r,!1!==e.ray.intersectsSphere(Rl)){Il.copy(i).invert(),kl.copy(e.ray).applyMatrix4(Il);var r=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=r*r;if(n.isBufferGeometry){var r=n.index,o=n.attributes.position;if(null!==r)for(var s=r.array,l=0,u=s.length;l<u;l++){var c=s[l];Ll.fromBufferAttribute(o,c),Ol(Ll,c,a,i,e,t,this)}else for(var d=0,h=o.count;d<h;d++)Ll.fromBufferAttribute(o,d),Ol(Ll,d,a,i,e,t,this)}else for(var p=n.vertices,f=0,m=p.length;f<m;f++)Ol(p[f],f,a,i,e,t,this)}},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}),Ul.prototype=Object.assign(Object.create(Zn.prototype),{constructor:Ul,clone:function(){return new this.constructor(this.image).copy(this)},isVideoTexture:!0,update:function(){var e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),((Nl.prototype=Object.create(Zn.prototype)).constructor=Nl).prototype.isCompressedTexture=!0,((zl.prototype=Object.create(Zn.prototype)).constructor=zl).prototype.isCanvasTexture=!0,((Gl.prototype=Object.create(Zn.prototype)).constructor=Gl).prototype.isDepthTexture=!0;var Hl=0,Vl=new Me,Ql=new Z,jl=new Oe;function Wl(){Object.defineProperty(this,"id",{value:Hl+=2}),this.uuid=Be.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}Wl.prototype=Object.assign(Object.create(Qn.prototype),{constructor:Wl,isGeometry:!0,applyMatrix4:function(e){for(var t=(new Yn).getNormalMatrix(e),n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(var r=0,a=this.faces.length;r<a;r++){var o=this.faces[r];o.normal.applyMatrix3(t).normalize();for(var s=0,l=o.vertexNormals.length;s<l;s++)o.vertexNormals[s].applyMatrix3(t).normalize()}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(e){return Vl.makeRotationX(e),this.applyMatrix4(Vl),this},rotateY:function(e){return Vl.makeRotationY(e),this.applyMatrix4(Vl),this},rotateZ:function(e){return Vl.makeRotationZ(e),this.applyMatrix4(Vl),this},translate:function(e,t,n){return Vl.makeTranslation(e,t,n),this.applyMatrix4(Vl),this},scale:function(e,t,n){return Vl.makeScale(e,t,n),this.applyMatrix4(Vl),this},lookAt:function(e){return Ql.lookAt(e),Ql.updateMatrix(),this.applyMatrix4(Ql.matrix),this},fromBufferGeometry:function(e){var o=this,t=null!==e.index?e.index:void 0,n=e.attributes;if(void 0===n.position)console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.");else{var i=n.position,s=n.normal,l=n.color,u=n.uv,c=n.uv2;void 0!==c&&(this.faceVertexUvs[1]=[]);for(var r=0;r<i.count;r++)o.vertices.push((new Oe).fromBufferAttribute(i,r)),void 0!==l&&o.colors.push((new Se).fromBufferAttribute(l,r));var a=e.groups;if(0<a.length)for(var d=0;d<a.length;d++)for(var h=a[d],p=h.start,f=p,m=p+h.count;f<m;f+=3)void 0!==t?A(t.getX(f),t.getX(f+1),t.getX(f+2),h.materialIndex):A(f,f+1,f+2,h.materialIndex);else if(void 0!==t)for(var v=0;v<t.count;v+=3)A(t.getX(v),t.getX(v+1),t.getX(v+2));else for(var g=0;g<i.count;g+=3)A(g,g+1,g+2);this.computeFaceNormals(),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone())}return this;function A(e,t,n,i){var r=void 0===l?[]:[o.colors[e].clone(),o.colors[t].clone(),o.colors[n].clone()],a=void 0===s?[]:[(new Oe).fromBufferAttribute(s,e),(new Oe).fromBufferAttribute(s,t),(new Oe).fromBufferAttribute(s,n)],a=new br(e,t,n,a,r,i);o.faces.push(a),void 0!==u&&o.faceVertexUvs[0].push([(new Re).fromBufferAttribute(u,e),(new Re).fromBufferAttribute(u,t),(new Re).fromBufferAttribute(u,n)]),void 0!==c&&o.faceVertexUvs[1].push([(new Re).fromBufferAttribute(c,e),(new Re).fromBufferAttribute(c,t),(new Re).fromBufferAttribute(c,n)])}},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(jl).negate(),this.translate(jl.x,jl.y,jl.z),this},normalize:function(){this.computeBoundingSphere();var e=this.boundingSphere.center,t=this.boundingSphere.radius,t=0===t?1:1/t,n=new Me;return n.set(t,0,0,-t*e.x,0,t,0,-t*e.y,0,0,t,-t*e.z,0,0,0,1),this.applyMatrix4(n),this},computeFaceNormals:function(){for(var e=new Oe,t=new Oe,n=0,i=this.faces.length;n<i;n++){var r=this.faces[n],a=this.vertices[r.a],o=this.vertices[r.b],s=this.vertices[r.c];e.subVectors(s,o),t.subVectors(a,o),e.cross(t),e.normalize(),r.normal.copy(e)}},computeVertexNormals:function(){for(var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],t=new Array(this.vertices.length),n=0,i=this.vertices.length;n<i;n++)t[n]=new Oe;if(e)for(var r=new Oe,a=new Oe,o=0,s=this.faces.length;o<s;o++){var l=this.faces[o],u=this.vertices[l.a],c=this.vertices[l.b],d=this.vertices[l.c];r.subVectors(d,c),a.subVectors(u,c),r.cross(a),t[l.a].add(r),t[l.b].add(r),t[l.c].add(r)}else{this.computeFaceNormals();for(var h=0,p=this.faces.length;h<p;h++){var f=this.faces[h];t[f.a].add(f.normal),t[f.b].add(f.normal),t[f.c].add(f.normal)}}for(var m=0,v=this.vertices.length;m<v;m++)t[m].normalize();for(var g=0,A=this.faces.length;g<A;g++){var y=this.faces[g],w=y.vertexNormals;3===w.length?(w[0].copy(t[y.a]),w[1].copy(t[y.b]),w[2].copy(t[y.c])):(w[0]=t[y.a].clone(),w[1]=t[y.b].clone(),w[2]=t[y.c].clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var e=0,t=this.faces.length;e<t;e++){var n=this.faces[e],i=n.vertexNormals;3===i.length?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var e=0,t=this.faces.length;e<t;e++){var n=this.faces[e];n.__originalFaceNormal?n.__originalFaceNormal.copy(n.normal):n.__originalFaceNormal=n.normal.clone(),n.__originalVertexNormals||(n.__originalVertexNormals=[]);for(var i=0,r=n.vertexNormals.length;i<r;i++)n.__originalVertexNormals[i]?n.__originalVertexNormals[i].copy(n.vertexNormals[i]):n.__originalVertexNormals[i]=n.vertexNormals[i].clone()}var a=new Wl;a.faces=this.faces;for(var o=0,s=this.morphTargets.length;o<s;o++){if(!this.morphNormals[o]){this.morphNormals[o]={},this.morphNormals[o].faceNormals=[],this.morphNormals[o].vertexNormals=[];for(var l=this.morphNormals[o].faceNormals,u=this.morphNormals[o].vertexNormals,c=0,d=this.faces.length;c<d;c++){var h=new Oe,p={a:new Oe,b:new Oe,c:new Oe};l.push(h),u.push(p)}}var f=this.morphNormals[o];a.vertices=this.morphTargets[o].vertices,a.computeFaceNormals(),a.computeVertexNormals();for(var m=0,v=this.faces.length;m<v;m++){var g=this.faces[m],A=f.faceNormals[m],y=f.vertexNormals[m];A.copy(g.normal),y.a.copy(g.vertexNormals[0]),y.b.copy(g.vertexNormals[1]),y.c.copy(g.vertexNormals[2])}}for(var w=0,b=this.faces.length;w<b;w++){var x=this.faces[w];x.normal=x.__originalFaceNormal,x.vertexNormals=x.__originalVertexNormals}},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new K),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new bi),this.boundingSphere.setFromPoints(this.vertices)},merge:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;if(e&&e.isGeometry){var i,r=this.vertices.length,a=this.vertices,o=e.vertices,s=this.faces,l=e.faces,u=this.colors,c=e.colors;void 0!==t&&(i=(new Yn).getNormalMatrix(t));for(var d=0,h=o.length;d<h;d++){var p=o[d].clone();void 0!==t&&p.applyMatrix4(t),a.push(p)}for(var f=0,m=c.length;f<m;f++)u.push(c[f].clone());for(var v=0,g=l.length;v<g;v++){var A=l[v],y=void 0,w=void 0,b=A.vertexNormals,x=A.vertexColors,E=new br(A.a+r,A.b+r,A.c+r);E.normal.copy(A.normal),void 0!==i&&E.normal.applyMatrix3(i).normalize();for(var C=0,B=b.length;C<B;C++)y=b[C].clone(),void 0!==i&&y.applyMatrix3(i).normalize(),E.vertexNormals.push(y);E.color.copy(A.color);for(var M=0,S=x.length;M<S;M++)w=x[M],E.vertexColors.push(w.clone());E.materialIndex=A.materialIndex+n,s.push(E)}for(var T=0,_=e.faceVertexUvs.length;T<_;T++){var P=e.faceVertexUvs[T];void 0===this.faceVertexUvs[T]&&(this.faceVertexUvs[T]=[]);for(var D=0,L=P.length;D<L;D++){for(var I=P[D],k=[],R=0,F=I.length;R<F;R++)k.push(I[R].clone());this.faceVertexUvs[T].push(k)}}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e)},mergeMesh:function(e){e&&e.isMesh?(e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e)},mergeVertices:function(){for(var e={},t=[],n=[],i=Math.pow(10,0<arguments.length&&void 0!==arguments[0]?arguments[0]:4),r=0,a=this.vertices.length;r<a;r++){var o=this.vertices[r],o=Math.round(o.x*i)+"_"+Math.round(o.y*i)+"_"+Math.round(o.z*i);void 0===e[o]?(e[o]=r,t.push(this.vertices[r]),n[r]=t.length-1):n[r]=n[e[o]]}for(var s=[],l=0,u=this.faces.length;l<u;l++)for(var c=this.faces[l],d=(c.a=n[c.a],c.b=n[c.b],c.c=n[c.c],[c.a,c.b,c.c]),h=0;h<3;h++)if(d[h]===d[(h+1)%3]){s.push(l);break}for(var p=s.length-1;0<=p;p--){var f=s[p];this.faces.splice(f,1);for(var m=0,v=this.faceVertexUvs.length;m<v;m++)this.faceVertexUvs[m].splice(f,1)}var g=this.vertices.length-t.length;return this.vertices=t,g},setFromPoints:function(e){this.vertices=[];for(var t=0,n=e.length;t<n;t++){var i=e[t];this.vertices.push(new Oe(i.x,i.y,i.z||0))}return this},sortFacesByMaterialIndex:function(){for(var e=this.faces,t=e.length,n=0;n<t;n++)e[n]._id=n;e.sort(function(e,t){return e.materialIndex-t.materialIndex});var i,r,a=this.faceVertexUvs[0],o=this.faceVertexUvs[1];a&&a.length===t&&(i=[]),o&&o.length===t&&(r=[]);for(var s=0;s<t;s++){var l=e[s]._id;i&&i.push(a[l]),r&&r.push(o[l])}i&&(this.faceVertexUvs[0]=i),r&&(this.faceVertexUvs[1]=r)},toJSON:function(){var e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),void 0!==this.parameters){var t,n=this.parameters;for(t in n)void 0!==n[t]&&(e[t]=n[t])}else{for(var i=[],r=0;r<this.vertices.length;r++){var a=this.vertices[r];i.push(a.x,a.y,a.z)}for(var o=[],s=[],l={},u=[],c={},d=[],h={},p=0;p<this.faces.length;p++){var f,m=this.faces[p],v=void 0!==this.faceVertexUvs[0][p],g=0<m.normal.length(),A=0<m.vertexNormals.length,y=1!==m.color.r||1!==m.color.g||1!==m.color.b,w=0<m.vertexColors.length;f=b(2,3,v),f=b(f,4,g),f=b(f,5,A),f=b(f,6,y),f=b(f,7,w),o.push(f),o.push(m.a,m.b,m.c),o.push(m.materialIndex),v&&(f=this.faceVertexUvs[0][p],o.push(C(f[0]),C(f[1]),C(f[2]))),g&&o.push(x(m.normal)),A&&(v=m.vertexNormals,o.push(x(v[0]),x(v[1]),x(v[2]))),y&&o.push(E(m.color)),w&&(f=m.vertexColors,o.push(E(f[0]),E(f[1]),E(f[2])))}e.data={},e.data.vertices=i,e.data.normals=s,0<u.length&&(e.data.colors=u),0<d.length&&(e.data.uvs=[d]),e.data.faces=o}return e;function b(e,t,n){return n?e|1<<t:e&~(1<<t)}function x(e){var t=e.x.toString()+e.y.toString()+e.z.toString();return void 0===l[t]&&(l[t]=s.length/3,s.push(e.x,e.y,e.z)),l[t]}function E(e){var t=e.r.toString()+e.g.toString()+e.b.toString();return void 0===c[t]&&(c[t]=u.length,u.push(e.getHex())),c[t]}function C(e){var t=e.x.toString()+e.y.toString();return void 0===h[t]&&(h[t]=d.length/2,d.push(e.x,e.y)),h[t]}},clone:function(){return(new Wl).copy(this)},copy:function(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;for(var t=e.vertices,n=0,i=t.length;n<i;n++)this.vertices.push(t[n].clone());for(var r=e.colors,a=0,o=r.length;a<o;a++)this.colors.push(r[a].clone());for(var s=e.faces,l=0,u=s.length;l<u;l++)this.faces.push(s[l].clone());for(var c=0,d=e.faceVertexUvs.length;c<d;c++){var h=e.faceVertexUvs[c];void 0===this.faceVertexUvs[c]&&(this.faceVertexUvs[c]=[]);for(var p=0,F=h.length;p<F;p++){for(var f=h[p],m=[],v=0,O=f.length;v<O;v++){var U=f[v];m.push(U.clone())}this.faceVertexUvs[c].push(m)}}for(var g=e.morphTargets,A=0,N=g.length;A<N;A++){var y={};if(y.name=g[A].name,void 0!==g[A].vertices){y.vertices=[];for(var w=0,z=g[A].vertices.length;w<z;w++)y.vertices.push(g[A].vertices[w].clone())}if(void 0!==g[A].normals){y.normals=[];for(var b=0,G=g[A].normals.length;b<G;b++)y.normals.push(g[A].normals[b].clone())}this.morphTargets.push(y)}for(var x=e.morphNormals,E=0,H=x.length;E<H;E++){var C={};if(void 0!==x[E].vertexNormals){C.vertexNormals=[];for(var B=0,V=x[E].vertexNormals.length;B<V;B++){var M=x[E].vertexNormals[B],S={};S.a=M.a.clone(),S.b=M.b.clone(),S.c=M.c.clone(),C.vertexNormals.push(S)}}if(void 0!==x[E].faceNormals){C.faceNormals=[];for(var T=0,Q=x[E].faceNormals.length;T<Q;T++)C.faceNormals.push(x[E].faceNormals[T].clone())}this.morphNormals.push(C)}for(var _=e.skinWeights,P=0,j=_.length;P<j;P++)this.skinWeights.push(_[P].clone());for(var D=e.skinIndices,I=0,W=D.length;I<W;I++)this.skinIndices.push(D[I].clone());for(var k=e.lineDistances,R=0,J=k.length;R<J;R++)this.lineDistances.push(k[R]);var L=e.boundingBox,L=(null!==L&&(this.boundingBox=L.clone()),e.boundingSphere);return null!==L&&(this.boundingSphere=L.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});var Jl=function(){function s(e,t,n,i,r,a){var o;return ue(this,s),(o=le(this,s)).type="BoxGeometry",o.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a},o.fromBufferGeometry(new da(e,t,n,i,r,a)),o.mergeVertices(),o}return v(s,Wl),A(s)}(),ql=function(){function m(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:8,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2*Math.PI,a=(ue(this,m),(e=le(this,m)).type="CircleBufferGeometry",e.parameters={radius:t,segments:n,thetaStart:i,thetaLength:r},n=Math.max(3,n),[]),o=[],s=[],l=[],u=new Oe,c=new Re;o.push(0,0,0),s.push(0,0,1),l.push(.5,.5);for(var d=0,h=3;d<=n;d++,h+=3){var p=i+d/n*r;u.x=t*Math.cos(p),u.y=t*Math.sin(p),o.push(u.x,u.y,u.z),s.push(0,0,1),c.x=(o[h]/t+1)/2,c.y=(o[h+1]/t+1)/2,l.push(c.x,c.y)}for(var f=1;f<=n;f++)a.push(f,f+1,0);return e.setIndex(a),e.setAttribute("position",new ee(o,3)),e.setAttribute("normal",new ee(s,3)),e.setAttribute("uv",new ee(l,2)),e}return v(m,V),A(m)}(),Yl=function(){function a(e,t,n,i){var r;return ue(this,a),(r=le(this,a)).type="CircleGeometry",r.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},r.fromBufferGeometry(new ql(e,t,n,i)),r.mergeVertices(),r}return v(a,Wl),A(a)}(),Xl=function(){function O(){for(var e,m=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,v=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,g=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,n=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,i=5<arguments.length&&void 0!==arguments[5]&&arguments[5],A=6<arguments.length&&void 0!==arguments[6]?arguments[6]:0,y=7<arguments.length&&void 0!==arguments[7]?arguments[7]:2*Math.PI,w=(ue(this,O),(e=le(this,O)).type="CylinderBufferGeometry",e.parameters={radiusTop:m,radiusBottom:v,height:t,radialSegments:g,heightSegments:n,openEnded:i,thetaStart:A,thetaLength:y},e),g=Math.floor(g),n=Math.floor(n),b=[],x=[],E=[],C=[],B=0,r=[],M=t/2,S=0,a=new Oe,o=new Oe,s=0,l=(v-m)/t,u=0;u<=n;u++){for(var c=[],d=u/n,h=d*(v-m)+m,p=0;p<=g;p++){var f=p/g,T=f*y+A,_=Math.sin(T),T=Math.cos(T);o.x=h*_,o.y=-d*t+M,o.z=h*T,x.push(o.x,o.y,o.z),a.set(_,l,T).normalize(),E.push(a.x,a.y,a.z),C.push(f,1-d),c.push(B++)}r.push(c)}for(var P=0;P<g;P++)for(var D=0;D<n;D++){var L=r[D][P],I=r[D+1][P],F=r[D+1][P+1],k=r[D][P+1];b.push(L,I,k),b.push(I,F,k),s+=6}function R(e){for(var t=B,n=new Re,i=new Oe,r=0,a=!0===e?m:v,o=!0===e?1:-1,s=1;s<=g;s++)x.push(0,M*o,0),E.push(0,o,0),C.push(.5,.5),B++;for(var l=B,u=0;u<=g;u++){var c=u/g*y+A,d=Math.cos(c),c=Math.sin(c);i.x=a*c,i.y=M*o,i.z=a*d,x.push(i.x,i.y,i.z),E.push(0,o,0),n.x=.5*d+.5,n.y=.5*c*o+.5,C.push(n.x,n.y),B++}for(var h=0;h<g;h++){var p=t+h,f=l+h;!0===e?b.push(f,f+1,p):b.push(f+1,f,p),r+=3}w.addGroup(S,r,!0===e?1:2),S+=r}return w.addGroup(S,s,0),S+=s,!1===i&&(0<m&&R(!0),0<v)&&R(!1),e.setIndex(b),e.setAttribute("position",new ee(x,3)),e.setAttribute("normal",new ee(E,3)),e.setAttribute("uv",new ee(C,2)),e}return v(O,V),A(O)}(),Kl=function(){function u(e,t,n,i,r,a,o,s){var l;return ue(this,u),(l=le(this,u)).type="CylinderGeometry",l.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s},l.fromBufferGeometry(new Xl(e,t,n,i,r,a,o,s)),l.mergeVertices(),l}return v(u,Wl),A(u)}(),Zl=function(){function l(e,t,n,i,r,a,o){var s;return ue(this,l),(s=le(this,l,[0,e,t,n,i,r,a,o])).type="ConeGeometry",s.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:o},s}return v(l,Kl),A(l)}(),$l=function(){function l(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]&&arguments[4],o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,s=6<arguments.length&&void 0!==arguments[6]?arguments[6]:2*Math.PI;return ue(this,l),(e=le(this,l,[0,t,n,i,r,a,o,s])).type="ConeBufferGeometry",e.parameters={radius:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s},e}return v(l,Xl),A(l)}(),eu=function(){function $(n,e){for(var t,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=(ue(this,$),(t=le(this,$)).type="PolyhedronBufferGeometry",t.parameters={vertices:n,indices:e,radius:i,detail:r},[]),o=[],L=r,F=new Oe,O=new Oe,U=new Oe,s=0;s<e.length;s+=3){k(e[s+0],F),k(e[s+1],O),k(e[s+2],U),g=v=m=f=p=H=h=d=c=u=G=l=z=N=void 0;for(var N=F,z=O,l=U,G=L,u=G+1,c=[],d=0;d<=u;d++){c[d]=[];for(var h=N.clone().lerp(l,d/u),H=z.clone().lerp(l,d/u),p=u-d,f=0;f<=p;f++)c[d][f]=0===f&&d===u?h:h.clone().lerp(H,f/p)}for(var m=0;m<u;m++)for(var v=0;v<2*(u-m)-1;v++){var g=Math.floor(v/2);v%2==0?(I(c[m][g+1]),I(c[m+1][g]),I(c[m][g])):(I(c[m][g+1]),I(c[m+1][g+1]),I(c[m+1][g]))}}for(var V=i,A=new Oe,y=0;y<a.length;y+=3)A.x=a[y+0],A.y=a[y+1],A.z=a[y+2],A.normalize().multiplyScalar(V),a[y+0]=A.x,a[y+1]=A.y,a[y+2]=A.z;for(var w=new Oe,b=0;b<a.length;b+=3){w.x=a[b+0],w.y=a[b+1],w.z=a[b+2];var Q=Z(w)/2/Math.PI+.5,j=function(e){return Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))}(w)/Math.PI+.5;o.push(Q,1-j)}for(var x=new Oe,E=new Oe,C=new Oe,W=new Oe,J=new Re,q=new Re,Y=new Re,B=0,M=0;B<a.length;B+=9,M+=6){x.set(a[B+0],a[B+1],a[B+2]),E.set(a[B+3],a[B+4],a[B+5]),C.set(a[B+6],a[B+7],a[B+8]),J.set(o[M+0],o[M+1]),q.set(o[M+2],o[M+3]),Y.set(o[M+4],o[M+5]),W.copy(x).add(E).add(C).divideScalar(3);var S=Z(W);R(J,M+0,x,S),R(q,M+2,E,S),R(Y,M+4,C,S)}for(var T=0;T<o.length;T+=6){var _=o[T+0],P=o[T+2],D=o[T+4],X=Math.max(_,P,D),K=Math.min(_,P,D);.9<X&&K<.1&&(_<.2&&(o[T+0]+=1),P<.2&&(o[T+2]+=1),D<.2)&&(o[T+4]+=1)}function I(e){a.push(e.x,e.y,e.z)}function k(e,t){e*=3;t.x=n[0+e],t.y=n[1+e],t.z=n[2+e]}function R(e,t,n,i){i<0&&1===e.x&&(o[t]=e.x-1),0===n.x&&0===n.z&&(o[t]=i/2/Math.PI+.5)}function Z(e){return Math.atan2(e.z,-e.x)}return t.setAttribute("position",new ee(a,3)),t.setAttribute("normal",new ee(a.slice(),3)),t.setAttribute("uv",new ee(o,2)),0===r?t.computeVertexNormals():t.normalizeNormals(),t}return v($,V),A($)}(),tu=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(ue(this,r),(1+Math.sqrt(5))/2),i=1/n,n=le(this,r,[[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t]);return n.type="DodecahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return v(r,eu),A(r)}(),nu=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="DodecahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new tu(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i)}(),iu=new Oe,ru=new Oe,au=new Oe,ou=new fr,su=function(){function S(e,t){ue(this,S),(n=le(this,S)).type="EdgesGeometry",n.parameters={thresholdAngle:t},t=void 0!==t?t:1,e.isGeometry&&(e=(new V).fromGeometry(e));for(var n,i,r,a,o=Math.pow(10,4),s=Math.cos(Be.DEG2RAD*t),l=e.getIndex(),u=e.getAttribute("position"),c=(l||u).count,d=[0,0,0],h=["a","b","c"],p=new Array(3),f={},m=[],v=0;v<c;v+=3){l?(d[0]=l.getX(v),d[1]=l.getX(v+1),d[2]=l.getX(v+2)):(d[0]=v,d[1]=v+1,d[2]=v+2);var g=ou.a,A=ou.b,y=ou.c;if(g.fromBufferAttribute(u,d[0]),A.fromBufferAttribute(u,d[1]),y.fromBufferAttribute(u,d[2]),ou.getNormal(au),p[0]="".concat(Math.round(g.x*o),",").concat(Math.round(g.y*o),",").concat(Math.round(g.z*o)),p[1]="".concat(Math.round(A.x*o),",").concat(Math.round(A.y*o),",").concat(Math.round(A.z*o)),p[2]="".concat(Math.round(y.x*o),",").concat(Math.round(y.y*o),",").concat(Math.round(y.z*o)),p[0]!==p[1]&&p[1]!==p[2]&&p[2]!==p[0])for(var w=0;w<3;w++){var b=(w+1)%3,x=p[w],E=p[b],C=ou[h[w]],B=ou[h[b]],M="".concat(x,"_").concat(E),E="".concat(E,"_").concat(x);E in f&&f[E]?(au.dot(f[E].normal)<=s&&(m.push(C.x,C.y,C.z),m.push(B.x,B.y,B.z)),f[E]=null):M in f||(f[M]={index0:d[w],index1:d[b],normal:au.clone()})}}for(i in f)f[i]&&(r=(a=f[i]).index0,a=a.index1,iu.fromBufferAttribute(u,r),ru.fromBufferAttribute(u,a),m.push(iu.x,iu.y,iu.z),m.push(ru.x,ru.y,ru.z));return n.setAttribute("position",new ee(m,3)),n}return v(S,V),A(S)}(),lu=function(e,t,n){n=n||2;var i,r,a,o,s,l=t&&t.length,u=l?t[0]*n:e.length,c=uu(e,0,u,n,!0),d=[];if(c&&c.next!==c.prev){if(l&&(c=function(e,t,n,i){var r,a,o,s,l=[];for(r=0,a=t.length;r<a;r++)s=t[r]*i,o=r<a-1?t[r+1]*i:e.length,(s=uu(e,s,o,i,!1))===s.next&&(s.steiner=!0),l.push(function(e){var t=e,n=e;for(;(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next,t!==e;);return n}(s));for(l.sort(hu),r=0;r<l.length;r++)!function(e,t){(t=function(e,t){var n,i=t,r=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=r&&o<s){if((o=s)===r){if(a===i.y)return i;if(a===i.next.y)return i.next}n=i.x<i.next.x?i:i.next}}}while(i=i.next,i!==t);if(!n)return null;if(r!==o){var l,u=n,c=n.x,d=n.y,h=1/0;for(i=n;r>=i.x&&i.x>=c&&r!==i.x&&fu(a<d?r:o,a,c,d,a<d?o:r,a,i.x,i.y)&&(l=Math.abs(a-i.y)/(r-i.x),wu(i,e))&&(l<h||l===h&&(i.x>n.x||i.x===n.x&&function(e,t){return mu(e.prev,e,t.prev)<0&&mu(t.next,e,e.next)<0}(n,i)))&&(n=i,h=l),(i=i.next)!==u;);}return n}(e,t))&&(e=bu(t,e),cu(t,t.next),cu(e,e.next))}(l[r],n),n=cu(n,n.next);return n}(e,t,c,n)),e.length>80*n){for(var h=i=e[0],p=r=e[1],f=n;f<u;f+=n)(a=e[f])<h&&(h=a),(o=e[f+1])<p&&(p=o),i<a&&(i=a),r<o&&(r=o);s=0!==(s=Math.max(i-h,r-p))?1/s:0}du(c,d,n,h,p,s)}return d};function uu(e,t,n,i,r){var a,o;if(r===0<function(e,t,n,i){for(var r=0,a=t,o=n-i;a<n;a+=i)r+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return r}(e,t,n,i))for(a=t;a<n;a+=i)o=xu(a,e[a],e[a+1],o);else for(a=n-i;t<=a;a-=i)o=xu(a,e[a],e[a+1],o);return o&&vu(o,o.next)&&(Eu(o),o=o.next),o}function cu(e,t){if(!e)return e;t=t||e;var n,i=e;do{if(n=!1,i.steiner||!vu(i,i.next)&&0!==mu(i.prev,i,i.next))i=i.next;else{if(Eu(i),(i=t=i.prev)===i.next)break;n=!0}}while(n||i!==t);return t}function du(e,t,n,i,r,a,o){if(e){if(!o&&a){for(var s=e,l=i,u=r,c=a,d=s;null===d.z&&(d.z=pu(d.x,d.y,l,u,c)),d.prevZ=d.prev,d.nextZ=d.next,(d=d.next)!==s;);d.prevZ.nextZ=null,d.prevZ=null;var h,p,f,m,v,g,A,y,w=d,b=1;do{for(p=w,v=w=null,g=0;p;){for(g++,f=p,h=A=0;h<b&&(A++,f=f.nextZ);h++);for(y=b;0<A||0<y&&f;)0!==A&&(0===y||!f||p.z<=f.z)?(p=(m=p).nextZ,A--):(f=(m=f).nextZ,y--),v?v.nextZ=m:w=m,m.prevZ=v,v=m;p=f}}while(v.nextZ=null,b*=2,1<g)}for(var x,E,C=e;e.prev!==e.next;)if(x=e.prev,E=e.next,a?function(e,t,n,i){var r=e.prev,a=e,o=e.next;if(0<=mu(r,a,o))return;var s=(r.x<a.x?r.x<o.x?r:o:a.x<o.x?a:o).x,l=(r.y<a.y?r.y<o.y?r:o:a.y<o.y?a:o).y,u=(r.x>a.x?r.x>o.x?r:o:a.x>o.x?a:o).x,c=(r.y>a.y?r.y>o.y?r:o:a.y>o.y?a:o).y,d=pu(s,l,t,n,i),h=pu(u,c,t,n,i),p=e.prevZ,f=e.nextZ;for(;p&&p.z>=d&&f&&f.z<=h;){if(p!==e.prev&&p!==e.next&&fu(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&0<=mu(p.prev,p,p.next))return;if(p=p.prevZ,f!==e.prev&&f!==e.next&&fu(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&0<=mu(f.prev,f,f.next))return;f=f.nextZ}for(;p&&p.z>=d;){if(p!==e.prev&&p!==e.next&&fu(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&0<=mu(p.prev,p,p.next))return;p=p.prevZ}for(;f&&f.z<=h;){if(f!==e.prev&&f!==e.next&&fu(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&0<=mu(f.prev,f,f.next))return;f=f.nextZ}return 1}(e,i,r,a):function(e){var t=e.prev,n=e,i=e.next;if(0<=mu(t,n,i))return;var r=e.next.next;for(;r!==e.prev;){if(fu(t.x,t.y,n.x,n.y,i.x,i.y,r.x,r.y)&&0<=mu(r.prev,r,r.next))return;r=r.next}return 1}(e))t.push(x.i/n),t.push(e.i/n),t.push(E.i/n),Eu(e),e=E.next,C=E.next;else if((e=E)===C){o?1===o?du(e=function(e,t,n){var i=e;do{var r=i.prev,a=i.next.next}while(!vu(r,a)&&gu(r,i,i.next,a)&&wu(r,a)&&wu(a,r)&&(t.push(r.i/n),t.push(i.i/n),t.push(a.i/n),Eu(i),Eu(i.next),i=e=a),i=i.next,i!==e);return cu(i)}(cu(e),t,n),t,n,i,r,a,2):2===o&&function(e,t,n,i,r,a){var o=e;do{for(var s,l=o.next.next;l!==o.prev;){if(o.i!==l.i&&function(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&gu(n,n.next,e,t))return 1}while(n=n.next,n!==e);return}(e,t)&&(wu(e,t)&&wu(t,e)&&function(e,t){var n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;for(;n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next,n!==e;);return i}(e,t)&&(mu(e.prev,e,t.prev)||mu(e,t.prev,t))||vu(e,t)&&0<mu(e.prev,e,e.next)&&0<mu(t.prev,t,t.next))}(o,l))return s=bu(o,l),o=cu(o,o.next),s=cu(s,s.next),du(o,t,n,i,r,a),du(s,t,n,i,r,a);l=l.next}}while(o=o.next,o!==e)}(e,t,n,i,r,a):du(cu(e),t,n,i,r,a,1);break}}}function hu(e,t){return e.x-t.x}function pu(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function fu(e,t,n,i,r,a,o,s){return 0<=(r-o)*(t-s)-(e-o)*(a-s)&&0<=(e-o)*(i-s)-(n-o)*(t-s)&&0<=(n-o)*(a-s)-(r-o)*(i-s)}function mu(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function vu(e,t){return e.x===t.x&&e.y===t.y}function gu(e,t,n,i){var r=yu(mu(e,t,n)),a=yu(mu(e,t,i)),o=yu(mu(n,i,e)),s=yu(mu(n,i,t));return r!==a&&o!==s||0===r&&Au(e,n,t)||0===a&&Au(e,i,t)||0===o&&Au(n,e,i)||!(0!==s||!Au(n,t,i))}function Au(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function yu(e){return 0<e?1:e<0?-1:0}function wu(e,t){return mu(e.prev,e,e.next)<0?0<=mu(e,t,e.next)&&0<=mu(e,e.prev,t):mu(e,t,e.prev)<0||mu(e,e.next,t)<0}function bu(e,t){var n=new Cu(e.i,e.x,e.y),i=new Cu(t.i,t.x,t.y),r=e.next,a=t.prev;return(e.next=t).prev=e,(n.next=r).prev=n,(i.next=n).prev=i,(a.next=i).prev=a,i}function xu(e,t,n,i){e=new Cu(e,t,n);return i?(e.next=i.next,(e.prev=i).next.prev=e,i.next=e):(e.prev=e).next=e,e}function Eu(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Cu(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var Bu={area:function(e){for(var t=e.length,n=0,i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return.5*n},isClockWise:function(e){return Bu.area(e)<0},triangulateShape:function(e,t){var n=[],i=[],r=[],a=(Mu(e),Su(n,e),e.length);t.forEach(Mu);for(var o=0;o<t.length;o++)i.push(a),a+=t[o].length,Su(n,t[o]);for(var s=lu(n,i),l=0;l<s.length;l+=3)r.push(s.slice(l,l+3));return r}};function Mu(e){var t=e.length;2<t&&e[t-1].equals(e[0])&&e.pop()}function Su(e,t){for(var n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}var Tu=function(){function r(e,Pe){ue(this,r),(t=le(this,r)).type="ExtrudeBufferGeometry",t.parameters={shapes:e,options:Pe},e=Array.isArray(e)?e:[e];for(var t,De=t,Ie=[],ke=[],n=0,i=e.length;n<i;n++)!function(F){var i=[],O=void 0!==Pe.curveSegments?Pe.curveSegments:12,f=void 0!==Pe.steps?Pe.steps:1,e=void 0!==Pe.depth?Pe.depth:100,c=void 0===Pe.bevelEnabled||Pe.bevelEnabled,t=void 0!==Pe.bevelThickness?Pe.bevelThickness:6,n=void 0!==Pe.bevelSize?Pe.bevelSize:t-2,r=void 0!==Pe.bevelOffset?Pe.bevelOffset:0,m=void 0!==Pe.bevelSegments?Pe.bevelSegments:3,a=Pe.extrudePath,U=void 0!==Pe.UVGenerator?Pe.UVGenerator:_u;void 0!==Pe.amount&&(console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."),e=Pe.amount);var o,s,l,u,d,h=!1;a&&(o=a.getSpacedPoints(f),c=!(h=!0),s=a.computeFrenetFrames(f,!1),l=new Oe,u=new Oe,d=new Oe);c||(r=n=t=m=0);var a=F.extractPoints(O),p=a.shape,v=a.holes;if(!Bu.isClockWise(p)){p=p.reverse();for(var g=0,N=v.length;g<N;g++){var z=v[g];Bu.isClockWise(z)&&(v[g]=z.reverse())}}for(var A=Bu.triangulateShape(p,v),y=p,G=0,H=v.length;G<H;G++){var V=v[G];p=p.concat(V)}function w(e,t,n){return t||console.error("THREE.ExtrudeGeometry: vec does not exist"),t.clone().multiplyScalar(n).add(e)}var b=p.length,x=A.length;function Q(e,t,n){var i=e.x-t.x,r=e.y-t.y,a=n.x-e.x,o=n.y-e.y,s=i*i+r*r;if(Math.abs(i*o-r*a)>Number.EPSILON){var l=Math.sqrt(s),u=Math.sqrt(a*a+o*o),c=t.x-r/l,t=t.y+i/l,l=((n.x-o/u-c)*o-(n.y+a/u-t)*a)/(i*o-r*a),n=(u=c+i*l-e.x)*u+(c=t+r*l-e.y)*c;if(n<=2)return new Re(u,c);l=Math.sqrt(n/2)}else{t=!1;i>Number.EPSILON?a>Number.EPSILON&&(t=!0):i<-Number.EPSILON?a<-Number.EPSILON&&(t=!0):Math.sign(r)===Math.sign(o)&&(t=!0),l=t?(u=-r,c=i,Math.sqrt(s)):(u=i,c=r,Math.sqrt(s/2))}return new Re(u/l,c/l)}for(var E=[],C=0,B=y.length,M=B-1,S=C+1;C<B;C++,M++,S++)M===B&&(M=0),S===B&&(S=0),E[C]=Q(y[C],y[M],y[S]);for(var T,j=[],W=E.concat(),J=0,q=v.length;J<q;J++){var Y=v[J];T=[];for(var _=0,X=Y.length,K=X-1,Z=_+1;_<X;_++,K++,Z++)K===X&&(K=0),Z===X&&(Z=0),T[_]=Q(Y[_],Y[K],Y[Z]);j.push(T),W=W.concat(T)}for(var $=0;$<m;$++){for(var ee=$/m,te=t*Math.cos(ee*Math.PI/2),ne=n*Math.sin(ee*Math.PI/2)+r,ie=0,re=y.length;ie<re;ie++){var ae=w(y[ie],E[ie],ne);k(ae.x,ae.y,-te)}for(var oe=0,se=v.length;oe<se;oe++){var le=v[oe];T=j[oe];for(var ue=0,ce=le.length;ue<ce;ue++){var de=w(le[ue],T[ue],ne);k(de.x,de.y,-te)}}}for(var he=n+r,P=0;P<b;P++){var pe=c?w(p[P],W[P],he):p[P];h?(u.copy(s.normals[0]).multiplyScalar(pe.x),l.copy(s.binormals[0]).multiplyScalar(pe.y),d.copy(o[0]).add(u).add(l),k(d.x,d.y,d.z)):k(pe.x,pe.y,0)}for(var D=1;D<=f;D++)for(var I=0;I<b;I++){var fe=c?w(p[I],W[I],he):p[I];h?(u.copy(s.normals[D]).multiplyScalar(fe.x),l.copy(s.binormals[D]).multiplyScalar(fe.y),d.copy(o[D]).add(u).add(l),k(d.x,d.y,d.z)):k(fe.x,fe.y,e/f*D)}for(var me=m-1;0<=me;me--){for(var ve=me/m,ge=t*Math.cos(ve*Math.PI/2),Ae=n*Math.sin(ve*Math.PI/2)+r,ye=0,we=y.length;ye<we;ye++){var be=w(y[ye],E[ye],Ae);k(be.x,be.y,e+ge)}for(var xe=0,Ee=v.length;xe<Ee;xe++){var Ce=v[xe];T=j[xe];for(var Be=0,Me=Ce.length;Be<Me;Be++){var Se=w(Ce[Be],T[Be],Ae);h?k(Se.x,Se.y+o[f-1].y,o[f-1].x+ge):k(Se.x,Se.y,e+ge)}}}Pe.openEnded||!function(){var e=Ie.length/3;if(c){for(var t=0*b,n=0;n<x;n++){var i=A[n];_e(i[2]+t,i[1]+t,i[0]+t)}t=b*(f+2*m);for(var r=0;r<x;r++){var a=A[r];_e(a[0]+t,a[1]+t,a[2]+t)}}else{for(var o=0;o<x;o++){var s=A[o];_e(s[2],s[1],s[0])}for(var l=0;l<x;l++){var u=A[l];_e(u[0]+b*f,u[1]+b*f,u[2]+b*f)}}De.addGroup(e,Ie.length/3-e,0)}();function Te(e,t){for(var n=e.length,i=F.dontClose;0<=--n&&(!i||0!=n);){var r=n,a=n-1;a<0&&(a=e.length-1);for(var o=0,s=f+2*m;o<s;o++){var l=b*o,u=b*(o+1),c=(p=h=d=c=void 0,t+r+l),d=t+a+l,h=t+a+u,p=t+r+u;R(c),R(d),R(p),R(d),R(h),R(p),c=Ie.length/3,L((d=U.generateSideWallUV(De,Ie,c-6,c-3,c-2,c-1))[0]),L(d[1]),L(d[3]),L(d[1]),L(d[2]),L(d[3])}}}function k(e,t,n){i.push(e),i.push(t),i.push(n)}function _e(e,t,n){R(e),R(t),R(n);e=Ie.length/3,t=U.generateTopUV(De,Ie,e-3,e-2,e-1);L(t[0]),L(t[1]),L(t[2])}function R(e){Ie.push(i[3*e+0]),Ie.push(i[3*e+1]),Ie.push(i[3*e+2])}function L(e){ke.push(e.x),ke.push(e.y)}!function(){var e=Ie.length/3,t=0;Te(y,t),t+=y.length;for(var n=0,i=v.length;n<i;n++){var r=v[n];Te(r,t),t+=r.length}De.addGroup(e,Ie.length/3-e,1)}()}(e[n]);return t.setAttribute("position",new ee(Ie,3)),t.setAttribute("uv",new ee(ke,2)),t.computeVertexNormals(),t}return v(r,V),A(r,[{key:"toJSON",value:function(){var e=V.prototype.toJSON.call(this),t=this.parameters.shapes,n=this.parameters.options,i=t,t=n,r=e;if(r.shapes=[],Array.isArray(i))for(var a=0,o=i.length;a<o;a++){var s=i[a];r.shapes.push(s.uuid)}else r.shapes.push(i.uuid);return void 0!==t.extrudePath&&(r.options.extrudePath=t.extrudePath.toJSON()),r}}])}(),_u={generateTopUV:function(e,t,n,i,r){var a=t[3*n],n=t[3*n+1],o=t[3*i],i=t[3*i+1],s=t[3*r],t=t[3*r+1];return[new Re(a,n),new Re(o,i),new Re(s,t)]},generateSideWallUV:function(e,t,n,i,r,a){var o=t[3*n],s=t[3*n+1],n=t[3*n+2],l=t[3*i],u=t[3*i+1],i=t[3*i+2],c=t[3*r],d=t[3*r+1],r=t[3*r+2],h=t[3*a],p=t[3*a+1],t=t[3*a+2];return Math.abs(s-u)<.01?[new Re(o,1-n),new Re(l,1-i),new Re(c,1-r),new Re(h,1-t)]:[new Re(s,1-n),new Re(u,1-i),new Re(d,1-r),new Re(p,1-t)]}};var Pu=function(){function l(e,t){var n;return ue(this,l),(n=le(this,l)).type="ExtrudeGeometry",n.parameters={shapes:e,options:t},n.fromBufferGeometry(new Tu(e,t)),n.mergeVertices(),n}return v(l,Wl),A(l,[{key:"toJSON",value:function(){var e=I(l,"toJSON",this,3)([]),t=this.parameters.shapes,n=this.parameters.options,i=t,t=n,r=e;if(r.shapes=[],Array.isArray(i))for(var a=0,o=i.length;a<o;a++){var s=i[a];r.shapes.push(s.uuid)}else r.shapes.push(i.uuid);return void 0!==t.extrudePath&&(r.options.extrudePath=t.extrudePath.toJSON()),r}}])}();var Du=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(ue(this,i),(1+Math.sqrt(5))/2),n=le(this,i,[[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t]);return n.type="IcosahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return v(i,eu),A(i)}(),Iu=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="IcosahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Du(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i)}(),ku=function(){function _(e){for(var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:12,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2*Math.PI,a=(ue(this,_),(t=le(this,_)).type="LatheBufferGeometry",t.parameters={points:e,segments:n,phiStart:i,phiLength:r},n=Math.floor(n),r=Be.clamp(r,0,2*Math.PI),[]),o=[],s=[],l=1/n,u=new Oe,c=new Re,d=0;d<=n;d++)for(var h=i+d*l*r,p=Math.sin(h),f=Math.cos(h),m=0;m<=e.length-1;m++)u.x=e[m].x*p,u.y=e[m].y,u.z=e[m].x*f,o.push(u.x,u.y,u.z),c.x=d/n,c.y=m/(e.length-1),s.push(c.x,c.y);for(var v=0;v<n;v++)for(var g=0;g<e.length-1;g++){var A=g+v*e.length,y=A+e.length,w=A+e.length+1,b=A+1;a.push(A,y,b),a.push(y,w,b)}if(t.setIndex(a),t.setAttribute("position",new ee(o,3)),t.setAttribute("uv",new ee(s,2)),t.computeVertexNormals(),r===2*Math.PI)for(var x=t.attributes.normal.array,E=new Oe,C=new Oe,B=new Oe,M=n*e.length*3,S=0,T=0;S<e.length;S++,T+=3)E.x=x[T+0],E.y=x[T+1],E.z=x[T+2],C.x=x[M+T+0],C.y=x[M+T+1],C.z=x[M+T+2],B.addVectors(E,C).normalize(),x[T+0]=x[M+T+0]=B.x,x[T+1]=x[M+T+1]=B.y,x[T+2]=x[M+T+2]=B.z;return t}return v(_,V),A(_)}(),Ru=function(){function a(e,t,n,i){var r;return ue(this,a),(r=le(this,a)).type="LatheGeometry",r.parameters={points:e,segments:t,phiStart:n,phiLength:i},r.fromBufferGeometry(new ku(e,t,n,i)),r.mergeVertices(),r}return v(a,Wl),A(a)}(),Lu=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(ue(this,i),le(this,i,[[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t]));return n.type="OctahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return v(i,eu),A(i)}(),Fu=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="OctahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Lu(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i)}();function Ou(e,t,n){V.call(this),this.type="ParametricBufferGeometry",this.parameters={func:e,slices:t,stacks:n};for(var i=[],r=[],a=[],o=[],s=new Oe,l=new Oe,u=new Oe,c=new Oe,d=new Oe,h=(e.length<3&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter."),t+1),p=0;p<=n;p++)for(var f=p/n,m=0;m<=t;m++){var v=m/t;e(v,f,l),r.push(l.x,l.y,l.z),0<=v-1e-5?(e(v-1e-5,f,u),c.subVectors(l,u)):(e(1e-5+v,f,u),c.subVectors(u,l)),0<=f-1e-5?(e(v,f-1e-5,u),d.subVectors(l,u)):(e(v,1e-5+f,u),d.subVectors(u,l)),s.crossVectors(c,d).normalize(),a.push(s.x,s.y,s.z),o.push(v,f)}for(var g=0;g<n;g++)for(var A=0;A<t;A++){var y=g*h+A+1,w=(g+1)*h+A+1,b=(g+1)*h+A;i.push(g*h+A,y,b),i.push(y,w,b)}this.setIndex(i),this.setAttribute("position",new ee(r,3)),this.setAttribute("normal",new ee(a,3)),this.setAttribute("uv",new ee(o,2))}function Uu(e,t,n){Wl.call(this),this.type="ParametricGeometry",this.parameters={func:e,slices:t,stacks:n},this.fromBufferGeometry(new Ou(e,t,n)),this.mergeVertices()}(Ou.prototype=Object.create(V.prototype)).constructor=Ou,(Uu.prototype=Object.create(Wl.prototype)).constructor=Uu;var Nu=function(){function a(e,t,n,i){var r;return ue(this,a),(r=le(this,a)).type="PlaneGeometry",r.parameters={width:e,height:t,widthSegments:n,heightSegments:i},r.fromBufferGeometry(new _a(e,t,n,i)),r.mergeVertices(),r}return v(a,Wl),A(a)}(),zu=function(){function a(e,t,n,i){var r;return ue(this,a),(r=le(this,a)).type="PolyhedronGeometry",r.parameters={vertices:e,indices:t,radius:n,detail:i},r.fromBufferGeometry(new eu(e,t,n,i)),r.mergeVertices(),r}return v(a,Wl),A(a)}(),Gu=function(){function B(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:.5,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:2*Math.PI,s=(ue(this,B),(e=le(this,B)).type="RingBufferGeometry",e.parameters={innerRadius:t,outerRadius:n,thetaSegments:i,phiSegments:r,thetaStart:a,thetaLength:o},i=Math.max(3,i),[]),l=[],u=[],c=[],d=t,h=(n-t)/(r=Math.max(1,r)),p=new Oe,f=new Re,m=0;m<=r;m++){for(var v=0;v<=i;v++){var g=a+v/i*o;p.x=d*Math.cos(g),p.y=d*Math.sin(g),l.push(p.x,p.y,p.z),u.push(0,0,1),f.x=(p.x/n+1)/2,f.y=(p.y/n+1)/2,c.push(f.x,f.y)}d+=h}for(var A=0;A<r;A++)for(var y=A*(i+1),w=0;w<i;w++){var b=w+y,x=b+i+1,E=b+i+2,C=b+1;s.push(b,x,C),s.push(x,E,C)}return e.setIndex(s),e.setAttribute("position",new ee(l,3)),e.setAttribute("normal",new ee(u,3)),e.setAttribute("uv",new ee(c,2)),e}return v(B,V),A(B)}(),t=function(){function s(e,t,n,i,r,a){var o;return ue(this,s),(o=le(this,s)).type="RingGeometry",o.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:a},o.fromBufferGeometry(new Gu(e,t,n,i,r,a)),o.mergeVertices(),o}return v(s,Wl),A(s)}(),Hu=function(){function a(e){var t,y=1<arguments.length&&void 0!==arguments[1]?arguments[1]:12,w=(ue(this,a),(t=le(this,a)).type="ShapeBufferGeometry",t.parameters={shapes:e,curveSegments:y},[]),b=[],x=[],E=[],n=0,C=0;if(!1===Array.isArray(e))r(e);else for(var i=0;i<e.length;i++)r(e[i]),t.addGroup(n,C,i),n+=C,C=0;function r(e){var t=b.length/3,e=e.extractPoints(y),n=e.shape,i=e.holes;!1===Bu.isClockWise(n)&&(n=n.reverse());for(var r=0,a=i.length;r<a;r++){var o=i[r];!0===Bu.isClockWise(o)&&(i[r]=o.reverse())}for(var s=Bu.triangulateShape(n,i),l=0,u=i.length;l<u;l++)var c=i[l],n=n.concat(c);for(var d=0,h=n.length;d<h;d++){var p=n[d];b.push(p.x,p.y,0),x.push(0,0,1),E.push(p.x,p.y)}for(var f=0,m=s.length;f<m;f++){var v=s[f],g=v[0]+t,A=v[1]+t,v=v[2]+t;w.push(g,A,v),C+=3}}return t.setIndex(w),t.setAttribute("position",new ee(b,3)),t.setAttribute("normal",new ee(x,3)),t.setAttribute("uv",new ee(E,2)),t}return v(a,V),A(a,[{key:"toJSON",value:function(){var e=V.prototype.toJSON.call(this),t=this.parameters.shapes,n=e;if(n.shapes=[],Array.isArray(t))for(var i=0,r=t.length;i<r;i++){var a=t[i];n.shapes.push(a.uuid)}else n.shapes.push(t.uuid);return n}}])}();var Vu=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="ShapeGeometry","object"===O(t)&&(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),t=t.curveSegments),n.parameters={shapes:e,curveSegments:t},n.fromBufferGeometry(new Hu(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i,[{key:"toJSON",value:function(){var e=Wl.prototype.toJSON.call(this),t=this.parameters.shapes,n=e;if(n.shapes=[],Array.isArray(t))for(var i=0,r=t.length;i<r;i++){var a=t[i];n.shapes.push(a.uuid)}else n.shapes.push(t.uuid);return n}}])}();var Qu=function(){function _(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:8,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:6,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2*Math.PI,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,s=6<arguments.length&&void 0!==arguments[6]?arguments[6]:Math.PI,l=(ue(this,_),(e=le(this,_)).type="SphereBufferGeometry",e.parameters={radius:t,widthSegments:n,heightSegments:i,phiStart:r,phiLength:a,thetaStart:o,thetaLength:s},n=Math.max(3,Math.floor(n)),i=Math.max(2,Math.floor(i)),Math.min(o+s,Math.PI)),u=0,c=[],d=new Oe,h=new Oe,p=[],f=[],m=[],v=[],g=0;g<=i;g++){var A=[],y=g/i,w=0;0==g&&0==o?w=.5/n:g==i&&l==Math.PI&&(w=-.5/n);for(var b=0;b<=n;b++){var x=b/n;d.x=-t*Math.cos(r+x*a)*Math.sin(o+y*s),d.y=t*Math.cos(o+y*s),d.z=t*Math.sin(r+x*a)*Math.sin(o+y*s),f.push(d.x,d.y,d.z),h.copy(d).normalize(),m.push(h.x,h.y,h.z),v.push(x+w,1-y),A.push(u++)}c.push(A)}for(var E=0;E<i;E++)for(var C=0;C<n;C++){var B=c[E][C+1],M=c[E][C],S=c[E+1][C],T=c[E+1][C+1];(0!==E||0<o)&&p.push(B,M,T),(E!==i-1||l<Math.PI)&&p.push(M,S,T)}return e.setIndex(p),e.setAttribute("position",new ee(f,3)),e.setAttribute("normal",new ee(m,3)),e.setAttribute("uv",new ee(v,2)),e}return v(_,V),A(_)}(),ju=function(){function l(e,t,n,i,r,a,o){var s;return ue(this,l),(s=le(this,l)).type="SphereGeometry",s.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:o},s.fromBufferGeometry(new Qu(e,t,n,i,r,a,o)),s.mergeVertices(),s}return v(l,Wl),A(l)}(),Wu=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(ue(this,i),le(this,i,[[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t]));return n.type="TetrahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return v(i,eu),A(i)}(),Ju=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="TetrahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Wu(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i)}(),qu=function(){function r(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=(ue(this,r),n.font);return i&&i.isFont?(i=i.generateShapes(e,n.size),n.depth=void 0!==n.height?n.height:50,void 0===n.bevelThickness&&(n.bevelThickness=10),void 0===n.bevelSize&&(n.bevelSize=8),void 0===n.bevelEnabled&&(n.bevelEnabled=!1),(t=le(this,r,[i,n])).type="TextBufferGeometry",t):(console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),S(t,new V))}return v(r,Tu),A(r)}(),Yu=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).type="TextGeometry",n.parameters={text:e,parameters:t},n.fromBufferGeometry(new qu(e,t)),n.mergeVertices(),n}return v(i,Wl),A(i)}(),Xu=function(){function x(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.4,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:6,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2*Math.PI,o=(ue(this,x),(e=le(this,x)).type="TorusBufferGeometry",e.parameters={radius:t,tube:n,radialSegments:i,tubularSegments:r,arc:a},i=Math.floor(i),r=Math.floor(r),[]),s=[],l=[],u=[],c=new Oe,d=new Oe,h=new Oe,p=0;p<=i;p++)for(var f=0;f<=r;f++){var m=f/r*a,v=p/i*Math.PI*2;d.x=(t+n*Math.cos(v))*Math.cos(m),d.y=(t+n*Math.cos(v))*Math.sin(m),d.z=n*Math.sin(v),s.push(d.x,d.y,d.z),c.x=t*Math.cos(m),c.y=t*Math.sin(m),h.subVectors(d,c).normalize(),l.push(h.x,h.y,h.z),u.push(f/r),u.push(p/i)}for(var g=1;g<=i;g++)for(var A=1;A<=r;A++){var y=(r+1)*(g-1)+A-1,w=(r+1)*(g-1)+A,b=(r+1)*g+A;o.push((r+1)*g+A-1,y,b),o.push(y,w,b)}return e.setIndex(o),e.setAttribute("position",new ee(s,3)),e.setAttribute("normal",new ee(l,3)),e.setAttribute("uv",new ee(u,2)),e}return v(x,V),A(x)}(),Ku=function(){function o(e,t,n,i,r){var a;return ue(this,o),(a=le(this,o)).type="TorusGeometry",a.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:i,arc:r},a.fromBufferGeometry(new Xu(e,t,n,i,r)),a.mergeVertices(),a}return v(o,Wl),A(o)}(),Zu=function(){function _(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.4,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:64,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:3,s=(ue(this,_),(e=le(this,_)).type="TorusKnotBufferGeometry",e.parameters={radius:t,tube:n,tubularSegments:i,radialSegments:r,p:a,q:o},i=Math.floor(i),r=Math.floor(r),[]),l=[],u=[],c=[],d=new Oe,h=new Oe,p=new Oe,f=new Oe,m=new Oe,v=new Oe,g=new Oe,A=0;A<=i;++A){var y=A/i*a*Math.PI*2;T(y,a,o,t,p),T(.01+y,a,o,t,f),v.subVectors(f,p),g.addVectors(f,p),m.crossVectors(v,g),g.crossVectors(m,v),m.normalize(),g.normalize();for(var w=0;w<=r;++w){var b=w/r*Math.PI*2,x=-n*Math.cos(b),b=n*Math.sin(b);d.x=p.x+(x*g.x+b*m.x),d.y=p.y+(x*g.y+b*m.y),d.z=p.z+(x*g.z+b*m.z),l.push(d.x,d.y,d.z),h.subVectors(d,p).normalize(),u.push(h.x,h.y,h.z),c.push(A/i),c.push(w/r)}}for(var E=1;E<=i;E++)for(var C=1;C<=r;C++){var B=(r+1)*E+(C-1),M=(r+1)*E+C,S=(r+1)*(E-1)+C;s.push((r+1)*(E-1)+(C-1),B,S),s.push(B,M,S)}function T(e,t,n,i,r){var a=Math.cos(e),o=Math.sin(e),n=n/t*e,t=Math.cos(n);r.x=i*(2+t)*.5*a,r.y=i*(2+t)*o*.5,r.z=i*Math.sin(n)*.5}return e.setIndex(s),e.setAttribute("position",new ee(l,3)),e.setAttribute("normal",new ee(u,3)),e.setAttribute("uv",new ee(c,2)),e}return v(_,V),A(_)}(),$u=function(){function l(e,t,n,i,r,a,o){var s;return ue(this,l),(s=le(this,l)).type="TorusKnotGeometry",s.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:r,q:a},void 0!==o&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead."),s.fromBufferGeometry(new Zu(e,t,n,i,r,a)),s.mergeVertices(),s}return v(l,Wl),A(l)}(),ec=function(){function B(o){for(var e,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:64,l=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,u=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,t=4<arguments.length&&void 0!==arguments[4]&&arguments[4],c=(ue(this,B),(e=le(this,B)).type="TubeBufferGeometry",e.parameters={path:o,tubularSegments:s,radius:l,radialSegments:u,closed:t},o.computeFrenetFrames(s,t)),d=(e.tangents=c.tangents,e.normals=c.normals,e.binormals=c.binormals,new Oe),h=new Oe,n=new Re,p=new Oe,f=[],m=[],i=[],r=[],a=0;a<s;a++)C(a);C(!1===t?s:0);for(var v=0;v<=s;v++)for(var g=0;g<=u;g++)n.x=v/s,n.y=g/u,i.push(n.x,n.y);for(var A=1;A<=s;A++)for(var y=1;y<=u;y++){var w=(u+1)*(A-1)+(y-1),b=(u+1)*A+(y-1),x=(u+1)*A+y,E=(u+1)*(A-1)+y;r.push(w,b,E),r.push(b,x,E)}function C(e){p=o.getPointAt(e/s,p);for(var t=c.normals[e],n=c.binormals[e],i=0;i<=u;i++){var r=i/u*Math.PI*2,a=Math.sin(r),r=-Math.cos(r);h.x=r*t.x+a*n.x,h.y=r*t.y+a*n.y,h.z=r*t.z+a*n.z,h.normalize(),m.push(h.x,h.y,h.z),d.x=p.x+l*h.x,d.y=p.y+l*h.y,d.z=p.z+l*h.z,f.push(d.x,d.y,d.z)}}return e.setIndex(r),e.setAttribute("position",new ee(f,3)),e.setAttribute("normal",new ee(m,3)),e.setAttribute("uv",new ee(i,2)),e}return v(B,V),A(B,[{key:"toJSON",value:function(){var e=V.prototype.toJSON.call(this);return e.path=this.parameters.path.toJSON(),e}}])}(),tc=function(){function s(e,t,n,i,r,a){ue(this,s),(o=le(this,s)).type="TubeGeometry",o.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},void 0!==a&&console.warn("THREE.TubeGeometry: taper has been removed.");var o,a=new ec(e,t,n,i,r);return o.tangents=a.tangents,o.normals=a.normals,o.binormals=a.binormals,o.fromBufferGeometry(a),o.mergeVertices(),o}return v(s,Wl),A(s)}(),nc=function(){function F(e){ue(this,F),(t=le(this,F)).type="WireframeGeometry";var t,n=[],i=[0,0],r={},a=["a","b","c"];if(e&&e.isGeometry){for(var o,s=e.faces,l=0,u=s.length;l<u;l++)for(var c=s[l],d=0;d<3;d++){var h=c[a[d]],p=c[a[(d+1)%3]],h=(i[0]=Math.min(h,p),i[1]=Math.max(h,p),i[0]+","+i[1]);void 0===r[h]&&(r[h]={index1:i[0],index2:i[1]})}for(o in r){var f=r[o],m=e.vertices[f.index1];n.push(m.x,m.y,m.z),m=e.vertices[f.index2],n.push(m.x,m.y,m.z)}}else if(e&&e.isBufferGeometry){var v=new Oe;if(null!==e.index){for(var g,A=e.attributes.position,y=e.index,w=e.groups,b=0,x=(w=0===w.length?[{start:0,count:y.count,materialIndex:0}]:w).length;b<x;++b)for(var E=w[b],C=E.start,B=C,M=C+E.count;B<M;B+=3)for(var S=0;S<3;S++){var T=y.getX(B+S),_=y.getX(B+(S+1)%3),T=(i[0]=Math.min(T,_),i[1]=Math.max(T,_),i[0]+","+i[1]);void 0===r[T]&&(r[T]={index1:i[0],index2:i[1]})}for(g in r){var P=r[g];v.fromBufferAttribute(A,P.index1),n.push(v.x,v.y,v.z),v.fromBufferAttribute(A,P.index2),n.push(v.x,v.y,v.z)}}else for(var D=e.attributes.position,I=0,k=D.count/3;I<k;I++)for(var R=0;R<3;R++){v.fromBufferAttribute(D,3*I+R),n.push(v.x,v.y,v.z);var L=3*I+(R+1)%3;v.fromBufferAttribute(D,L),n.push(v.x,v.y,v.z)}}return t.setAttribute("position",new ee(n,3)),t}return v(F,V),A(F)}(),ic=Object.freeze({__proto__:null,BoxGeometry:Jl,BoxBufferGeometry:da,CircleGeometry:Yl,CircleBufferGeometry:ql,ConeGeometry:Zl,ConeBufferGeometry:$l,CylinderGeometry:Kl,CylinderBufferGeometry:Xl,DodecahedronGeometry:nu,DodecahedronBufferGeometry:tu,EdgesGeometry:su,ExtrudeGeometry:Pu,ExtrudeBufferGeometry:Tu,IcosahedronGeometry:Iu,IcosahedronBufferGeometry:Du,LatheGeometry:Ru,LatheBufferGeometry:ku,OctahedronGeometry:Fu,OctahedronBufferGeometry:Lu,ParametricGeometry:Uu,ParametricBufferGeometry:Ou,PlaneGeometry:Nu,PlaneBufferGeometry:_a,PolyhedronGeometry:zu,PolyhedronBufferGeometry:eu,RingGeometry:t,RingBufferGeometry:Gu,ShapeGeometry:Vu,ShapeBufferGeometry:Hu,SphereGeometry:ju,SphereBufferGeometry:Qu,TetrahedronGeometry:Ju,TetrahedronBufferGeometry:Wu,TextGeometry:Yu,TextBufferGeometry:qu,TorusGeometry:Ku,TorusBufferGeometry:Xu,TorusKnotGeometry:$u,TorusKnotBufferGeometry:Zu,TubeGeometry:tc,TubeBufferGeometry:ec,WireframeGeometry:nc});function rc(e){Er.call(this),this.type="ShadowMaterial",this.color=new Se(0),this.transparent=!0,this.setValues(e)}function ac(e){ga.call(this,e),this.type="RawShaderMaterial"}function oc(e){Er.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new Se(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Nn,this.normalScale=new Re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.vertexTangents=!1,this.setValues(e)}function sc(e){oc.call(this),this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoat=0,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Re(1,1),this.clearcoatNormalMap=null,this.reflectivity=.5,Object.defineProperty(this,"ior",{get:function(){return(1+.4*this.reflectivity)/(1-.4*this.reflectivity)},set:function(e){this.reflectivity=Be.clamp(2.5*(e-1)/(e+1),0,1)}}),this.sheen=null,this.transmission=0,this.transmissionMap=null,this.setValues(e)}function lc(e){Er.call(this),this.type="MeshPhongMaterial",this.color=new Se(16777215),this.specular=new Se(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Nn,this.normalScale=new Re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=tt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function uc(e){Er.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Se(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Nn,this.normalScale=new Re(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.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function cc(e){Er.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Nn,this.normalScale=new Re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function dc(e){Er.call(this),this.type="MeshLambertMaterial",this.color=new Se(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Se(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=tt,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function hc(e){Er.call(this),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Se(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Nn,this.normalScale=new Re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function pc(e){wl.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}((rc.prototype=Object.create(Er.prototype)).constructor=rc).prototype.isShadowMaterial=!0,rc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this},((ac.prototype=Object.create(ga.prototype)).constructor=ac).prototype.isRawShaderMaterial=!0,((oc.prototype=Object.create(Er.prototype)).constructor=oc).prototype.isMeshStandardMaterial=!0,oc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.vertexTangents=e.vertexTangents,this},((sc.prototype=Object.create(oc.prototype)).constructor=sc).prototype.isMeshPhysicalMaterial=!0,sc.prototype.copy=function(e){return oc.prototype.copy.call(this,e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.reflectivity=e.reflectivity,e.sheen?this.sheen=(this.sheen||new Se).copy(e.sheen):this.sheen=null,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this},((lc.prototype=Object.create(Er.prototype)).constructor=lc).prototype.isMeshPhongMaterial=!0,lc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((uc.prototype=Object.create(Er.prototype)).constructor=uc).prototype.isMeshToonMaterial=!0,uc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((cc.prototype=Object.create(Er.prototype)).constructor=cc).prototype.isMeshNormalMaterial=!0,cc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((dc.prototype=Object.create(Er.prototype)).constructor=dc).prototype.isMeshLambertMaterial=!0,dc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((hc.prototype=Object.create(Er.prototype)).constructor=hc).prototype.isMeshMatcapMaterial=!0,hc.prototype.copy=function(e){return Er.prototype.copy.call(this,e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((pc.prototype=Object.create(wl.prototype)).constructor=pc).prototype.isLineDashedMaterial=!0,pc.prototype.copy=function(e){return wl.prototype.copy.call(this,e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this};var fc=Object.freeze({__proto__:null,ShadowMaterial:rc,SpriteMaterial:Gs,RawShaderMaterial:ac,ShaderMaterial:ga,PointsMaterial:Dl,MeshPhysicalMaterial:sc,MeshStandardMaterial:oc,MeshPhongMaterial:lc,MeshToonMaterial:uc,MeshNormalMaterial:cc,MeshLambertMaterial:dc,MeshDepthMaterial:ys,MeshDistanceMaterial:ws,MeshBasicMaterial:R,MeshMatcapMaterial:hc,LineDashedMaterial:pc,LineBasicMaterial:wl,Material:Er}),mc={arraySlice:function(e,t,n){return mc.isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)},convertArray:function(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(n){for(var e=n.length,t=new Array(e),i=0;i!==e;++i)t[i]=i;return t.sort(function(e,t){return n[e]-n[t]}),t},sortedArray:function(e,t,n){for(var i=e.length,r=new e.constructor(i),a=0,o=0;o!==i;++a)for(var s=n[a]*t,l=0;l!==t;++l)r[o++]=e[s+l];return r},flattenJSON:function(e,t,n,i){for(var r=1,a=e[0];void 0!==a&&void 0===a[i];)a=e[r++];if(void 0!==a){var o=a[i];if(void 0!==o)if(Array.isArray(o))for(;void 0!==(o=a[i])&&(t.push(a.time),n.push.apply(n,o)),void 0!==(a=e[r++]););else if(void 0!==o.toArray)for(;void 0!==(o=a[i])&&(t.push(a.time),o.toArray(n,n.length)),void 0!==(a=e[r++]););else for(;void 0!==(o=a[i])&&(t.push(a.time),n.push(o)),void 0!==(a=e[r++]););}},subclip:function(e,t,n,i){for(var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:30,a=e.clone(),o=(a.name=t,[]),s=0;s<a.tracks.length;++s){for(var l=a.tracks[s],u=l.getValueSize(),c=[],d=[],h=0;h<l.times.length;++h){var p=l.times[h]*r;if(!(p<n||i<=p)){c.push(l.times[h]);for(var f=0;f<u;++f)d.push(l.values[h*u+f])}}0!==c.length&&(l.times=mc.convertArray(c,l.times.constructor),l.values=mc.convertArray(d,l.values.constructor),o.push(l))}a.tracks=o;for(var m=1/0,v=0;v<a.tracks.length;++v)m>a.tracks[v].times[0]&&(m=a.tracks[v].times[0]);for(var g=0;g<a.tracks.length;++g)a.tracks[g].shift(-1*m);return a.resetDuration(),a},makeClipAdditive:function(m){for(var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,v=2<arguments.length&&void 0!==arguments[2]?arguments[2]:m,t=3<arguments.length&&void 0!==arguments[3]?arguments[3]:30,n=v.tracks.length,g=e/(t=t<=0?30:t),A=0;A<n;++A)(function(){var t=v.tracks[A],n=t.ValueTypeName;if("bool"===n||"string"===n)return;var e=m.tracks.find(function(e){return e.name===t.name&&e.ValueTypeName===n});if(void 0===e)return;for(var i,r,a=0,o=t.getValueSize(),s=(t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(a=o/3),0),l=e.getValueSize(),u=(e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(s=l/3),t.times.length-1),c=(i=g<=t.times[0]?(r=a,mc.arraySlice(t.values,r,o-a)):g>=t.times[u]?mc.arraySlice(t.values,r=u*o+a,r+o-a):(r=o-(u=a),(o=t.createInterpolant()).evaluate(g),mc.arraySlice(o.resultBuffer,u,r)),"quaternion"===n&&(new ii).fromArray(i).normalize().conjugate().toArray(i),e.times.length),d=0;d<c;++d){var h=d*l+s;if("quaternion"===n)ii.multiplyQuaternionsFlat(e.values,h,i,0,e.values,h);else for(var p=l-2*s,f=0;f<p;++f)e.values[h+f]-=i[f]}})();return m.blendMode=2501,m}};function vc(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n}function gc(e,t,n,i){vc.call(this,e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0}function Ac(e,t,n,i){vc.call(this,e,t,n,i)}function yc(e,t,n,i){vc.call(this,e,t,n,i)}function wc(e,t,n,i){if(void 0===e)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=mc.convertArray(t,this.TimeBufferType),this.values=mc.convertArray(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}function bc(e,t,n){wc.call(this,e,t,n)}function xc(e,t,n,i){wc.call(this,e,t,n,i)}function Ec(e,t,n,i){wc.call(this,e,t,n,i)}function Cc(e,t,n,i){vc.call(this,e,t,n,i)}function Bc(e,t,n,i){wc.call(this,e,t,n,i)}function Mc(e,t,n,i){wc.call(this,e,t,n,i)}function Sc(e,t,n,i){wc.call(this,e,t,n,i)}function Tc(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:-1,n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2500;this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Be.generateUUID(),this.duration<0&&this.resetDuration()}function _c(e){if(void 0===e.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");var t,n,i=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Ec;case"vector":case"vector2":case"vector3":case"vector4":return Sc;case"color":return xc;case"quaternion":return Bc;case"bool":case"boolean":return bc;case"string":return Mc}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);return void 0===e.times&&(mc.flattenJSON(e.keys,t=[],n=[],"value"),e.times=t,e.values=n),void 0!==i.parse?i.parse(e):new i(e.name,e.times,e.values,e.interpolation)}Object.assign(vc.prototype,{evaluate:function(e){var t,n=this.parameterPositions,i=this._cachedIndex,r=n[i],a=n[i-1];e:{t:{n:{i:if(!(e<r)){for(var o=i+2;;){if(void 0===r){if(e<a)break i;return i=n.length,this._cachedIndex=i,this.afterEnd_(i-1,e,a)}if(i===o)break;if(a=r,e<(r=n[++i]))break t}t=n.length;break n}if(a<=e)break e;var s=n[1];e<s&&(i=2,a=s);for(var l=i-2;;){if(void 0===a)return this._cachedIndex=0,this.beforeStart_(0,e,r);if(i===l)break;if(r=a,(a=n[--i-1])<=e)break t}t=i,i=0}for(;i<t;){var u=i+t>>>1;e<n[u]?t=u:i=1+u}if(r=n[i],void 0===(a=n[i-1]))return this._cachedIndex=0,this.beforeStart_(0,e,r);if(void 0===r)return i=n.length,this._cachedIndex=i,this.afterEnd_(i-1,a,e)}this._cachedIndex=i,this.intervalChanged_(i,a,r)}return this.interpolate_(i,a,e,r)},settings:null,DefaultSettings_:{},getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(e){for(var t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i,a=0;a!==i;++a)t[a]=n[r+a];return t},interpolate_:function(){throw new Error("call to abstract method")},intervalChanged_:function(){}}),Object.assign(vc.prototype,{beforeStart_:vc.prototype.copySampleValue_,afterEnd_:vc.prototype.copySampleValue_}),gc.prototype=Object.assign(Object.create(vc.prototype),{constructor:gc,DefaultSettings_:{endingStart:kn,endingEnd:kn},intervalChanged_:function(e,t,n){var i=this.parameterPositions,r=e-2,a=e+1,o=i[r],s=i[a];if(void 0===o)switch(this.getSettings_().endingStart){case Rn:r=e,o=2*t-n;break;case Ln:o=t+i[r=i.length-2]-i[r+1];break;default:r=e,o=n}if(void 0===s)switch(this.getSettings_().endingEnd){case Rn:a=e,s=2*n-t;break;case Ln:s=n+i[a=1]-i[0];break;default:a=e-1,s=t}var l=.5*(n-t),u=this.valueSize;this._weightPrev=l/(t-o),this._weightNext=l/(s-n),this._offsetPrev=r*u,this._offsetNext=a*u},interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,u=this._offsetPrev,c=this._offsetNext,e=this._weightPrev,d=this._weightNext,n=(n-t)/(i-t),i=n*n,t=i*n,h=-e*t+2*e*i-e*n,p=(1+e)*t+(-1.5-2*e)*i+(-.5+e)*n+1,f=(-1-d)*t+(1.5+d)*i+.5*n,m=d*t-d*i,v=0;v!==o;++v)r[v]=h*a[u+v]+p*a[l+v]+f*a[s+v]+m*a[c+v];return r}}),Ac.prototype=Object.assign(Object.create(vc.prototype),{constructor:Ac,interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,u=(n-t)/(i-t),c=1-u,d=0;d!==o;++d)r[d]=a[l+d]*c+a[s+d]*u;return r}}),yc.prototype=Object.assign(Object.create(vc.prototype),{constructor:yc,interpolate_:function(e){return this.copySampleValue_(e-1)}}),Object.assign(wc,{toJSON:function(e){var t,n=e.constructor;return void 0!==n.toJSON?t=n.toJSON(e):(t={name:e.name,times:mc.convertArray(e.times,Array),values:mc.convertArray(e.values,Array)},(n=e.getInterpolation())!==e.DefaultInterpolation&&(t.interpolation=n)),t.type=e.ValueTypeName,t}}),Object.assign(wc.prototype,{constructor:wc,TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:In,InterpolantFactoryMethodDiscrete:function(e){return new yc(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodLinear:function(e){return new Ac(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:function(e){return new gc(this.times,this.values,this.getValueSize(),e)},setInterpolation:function(e){var t;switch(e){case Dn:t=this.InterpolantFactoryMethodDiscrete;break;case In:t=this.InterpolantFactoryMethodLinear;break;case 2302:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){var n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(e===this.DefaultInterpolation)throw new Error(n);this.setInterpolation(this.DefaultInterpolation)}console.warn("THREE.KeyframeTrack:",n)}else this.createInterpolant=t;return this},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return Dn;case this.InterpolantFactoryMethodLinear:return In;case this.InterpolantFactoryMethodSmooth:return 2302}},getValueSize:function(){return this.values.length/this.times.length},shift:function(e){if(0!==e)for(var t=this.times,n=0,i=t.length;n!==i;++n)t[n]+=e;return this},scale:function(e){if(1!==e)for(var t=this.times,n=0,i=t.length;n!==i;++n)t[n]*=e;return this},trim:function(e,t){for(var n,i=this.times,r=i.length,a=0,o=r-1;a!==r&&i[a]<e;)++a;for(;-1!==o&&i[o]>t;)--o;return++o,0===a&&o===r||(o<=a&&(a=(o=Math.max(o,1))-1),n=this.getValueSize(),this.times=mc.arraySlice(i,a,o),this.values=mc.arraySlice(this.values,a*n,o*n)),this},validate:function(){for(var e=!0,t=this.getValueSize(),n=(t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1),this.times),i=this.values,r=n.length,a=(0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1),null),o=0;o!==r;o++){var s=n[o];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,s),e=!1;break}if(null!==a&&s<a){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,s,a),e=!1;break}a=s}if(void 0!==i&&mc.isTypedArray(i))for(var l=0,u=i.length;l!==u;++l){var c=i[l];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,l,c),e=!1;break}}return e},optimize:function(){for(var e=mc.arraySlice(this.times),t=mc.arraySlice(this.values),n=this.getValueSize(),i=2302===this.getInterpolation(),r=e.length-1,a=1,o=1;o<r;++o){var s=!1,l=e[o];if(l!==e[o+1]&&(1!==o||l!==l[0]))if(i)s=!0;else for(var u=o*n,c=u-n,d=u+n,h=0;h!==n;++h){var p=t[u+h];if(p!==t[c+h]||p!==t[d+h]){s=!0;break}}if(s){if(o!==a){e[a]=e[o];for(var f=o*n,m=a*n,v=0;v!==n;++v)t[m+v]=t[f+v]}++a}}if(0<r){e[a]=e[r];for(var g=r*n,A=a*n,y=0;y!==n;++y)t[A+y]=t[g+y];++a}return a!==e.length?(this.times=mc.arraySlice(e,0,a),this.values=mc.arraySlice(t,0,a*n)):(this.times=e,this.values=t),this},clone:function(){var e=mc.arraySlice(this.times,0),t=mc.arraySlice(this.values,0),e=new this.constructor(this.name,e,t);return e.createInterpolant=this.createInterpolant,e}}),bc.prototype=Object.assign(Object.create(wc.prototype),{constructor:bc,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:Dn,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),xc.prototype=Object.assign(Object.create(wc.prototype),{constructor:xc,ValueTypeName:"color"}),Ec.prototype=Object.assign(Object.create(wc.prototype),{constructor:Ec,ValueTypeName:"number"}),Cc.prototype=Object.assign(Object.create(vc.prototype),{constructor:Cc,interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(i-t),l=e*o,u=l+o;l!==u;l+=4)ii.slerpFlat(r,0,a,l-o,a,l,s);return r}}),Bc.prototype=Object.assign(Object.create(wc.prototype),{constructor:Bc,ValueTypeName:"quaternion",DefaultInterpolation:In,InterpolantFactoryMethodLinear:function(e){return new Cc(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:void 0}),Mc.prototype=Object.assign(Object.create(wc.prototype),{constructor:Mc,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:Dn,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Sc.prototype=Object.assign(Object.create(wc.prototype),{constructor:Sc,ValueTypeName:"vector"}),Object.assign(Tc,{parse:function(e){for(var t=[],n=e.tracks,i=1/(e.fps||1),r=0,a=n.length;r!==a;++r)t.push(_c(n[r]).scale(i));var o=new Tc(e.name,e.duration,t,e.blendMode);return o.uuid=e.uuid,o},toJSON:function(e){for(var t=[],n=e.tracks,e={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode},i=0,r=n.length;i!==r;++i)t.push(wc.toJSON(n[i]));return e},CreateFromMorphTargetSequence:function(e,t,n,i){for(var r=t.length,a=[],o=0;o<r;o++){var s=[],l=((u=[]).push((o+r-1)%r,o,(o+1)%r),s.push(0,1,0),mc.getKeyframeOrder(u)),u=mc.sortedArray(u,1,l),s=mc.sortedArray(s,1,l);i||0!==u[0]||(u.push(r),s.push(s[0])),a.push(new Ec(".morphTargetInfluences["+t[o].name+"]",u,s).scale(1/n))}return new Tc(e,-1,a)},findByName:function(e,t){var n=e;Array.isArray(e)||(n=e.geometry&&e.geometry.animations||e.animations);for(var i=0;i<n.length;i++)if(n[i].name===t)return n[i];return null},CreateClipsFromMorphTargetSequences:function(e,t,n){for(var i={},r=/^([\w-]*?)([\d]+)$/,a=0,o=e.length;a<o;a++){var s,l=e[a],u=l.name.match(r);u&&1<u.length&&((s=i[u=u[1]])||(i[u]=s=[]),s.push(l))}var c,d=[];for(c in i)d.push(Tc.CreateFromMorphTargetSequence(c,i[c],t,n));return d},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(e,t,n,i,r){var a;0!==n.length&&(mc.flattenJSON(n,n=[],a=[],i),0!==n.length)&&r.push(new e(t,n,a))},i=[],r=e.name||"default",a=e.fps||30,o=e.blendMode,s=e.length||-1,l=e.hierarchy||[],u=0;u<l.length;u++){var c=l[u].keys;if(c&&0!==c.length)if(c[0].morphTargets){for(var d,h={},p=void 0,p=0;p<c.length;p++)if(c[p].morphTargets)for(var f=0;f<c[p].morphTargets.length;f++)h[c[p].morphTargets[f]]=-1;for(d in h){for(var m=[],v=[],g=0;g!==c[p].morphTargets.length;++g){var A=c[p];m.push(A.time),v.push(A.morphTarget===d?1:0)}i.push(new Ec(".morphTargetInfluence["+d+"]",m,v))}s=h.length*(a||1)}else{var y=".bones["+t[u].name+"]";n(Sc,y+".position",c,"pos",i),n(Bc,y+".quaternion",c,"rot",i),n(Sc,y+".scale",c,"scl",i)}}return 0===i.length?null:new Tc(r,s,i,o)}}),Object.assign(Tc.prototype,{resetDuration:function(){for(var e=0,t=0,n=this.tracks.length;t!==n;++t)var i=this.tracks[t],e=Math.max(e,i.times[i.times.length-1]);return this.duration=e,this},trim:function(){for(var e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this},validate:function(){for(var e=!0,t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e},optimize:function(){for(var e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this},clone:function(){for(var e=[],t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new Tc(this.name,this.duration,e,this.blendMode)},toJSON:function(){return Tc.toJSON(this)}});var Pc={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};function Dc(e,t,n){var i=this,r=!1,a=0,o=0,s=void 0,l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){o++,!1===r&&void 0!==i.onStart&&i.onStart(e,a,o),r=!0},this.itemEnd=function(e){a++,void 0!==i.onProgress&&i.onProgress(e,a,o),a===o&&(r=!1,void 0!==i.onLoad)&&i.onLoad()},this.itemError=function(e){void 0!==i.onError&&i.onError(e)},this.resolveURL=function(e){return s?s(e):e},this.setURLModifier=function(e){return s=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){e=l.indexOf(e);return-1!==e&&l.splice(e,2),this},this.getHandler=function(e){for(var t=0,n=l.length;t<n;t+=2){var i=l[t],r=l[t+1];if(i.global&&(i.lastIndex=0),i.test(e))return r}return null}}var Ic=new Dc;function kc(e){this.manager=void 0!==e?e:Ic,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}Object.assign(kc.prototype,{load:function(){},loadAsync:function(n,i){var r=this;return new Promise(function(e,t){r.load(n,e,i,t)})},parse:function(){},setCrossOrigin:function(e){return this.crossOrigin=e,this},setWithCredentials:function(e){return this.withCredentials=e,this},setPath:function(e){return this.path=e,this},setResourcePath:function(e){return this.resourcePath=e,this},setRequestHeader:function(e){return this.requestHeader=e,this}});var Rc={};function Lc(e){kc.call(this,e)}function Fc(e){kc.call(this,e)}function Oc(e){kc.call(this,e)}function Uc(e){kc.call(this,e)}function Nc(e){kc.call(this,e)}function zc(e){kc.call(this,e)}function Gc(e){kc.call(this,e)}function Hc(){this.type="Curve",this.arcLengthDivisions=200}function Vc(e,t,n,i,r,a,o,s){Hc.call(this),this.type="EllipseCurve",this.aX=e||0,this.aY=t||0,this.xRadius=n||1,this.yRadius=i||1,this.aStartAngle=r||0,this.aEndAngle=a||2*Math.PI,this.aClockwise=o||!1,this.aRotation=s||0}function Qc(e,t,n,i,r,a){Vc.call(this,e,t,n,n,i,r,a),this.type="ArcCurve"}function jc(){var r=0,a=0,o=0,s=0;function l(e,t,n,i){o=-3*(r=e)+3*t-2*(a=n)-i,s=2*e-2*t+n+i}return{initCatmullRom:function(e,t,n,i,r){l(t,n,r*(n-e),r*(i-t))},initNonuniformCatmullRom:function(e,t,n,i,r,a,o){e=(t-e)/r-(n-e)/(r+a)+(n-t)/a,r=(n-t)/a-(i-t)/(a+o)+(i-n)/o;l(t,n,e*=a,r*=a)},calc:function(e){var t=e*e;return r+a*e+o*t+s*(t*e)}}}Lc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Lc,load:function(u,e,t,n){void 0===u&&(u=""),void 0!==this.path&&(u=this.path+u),u=this.manager.resolveURL(u);var c=this,i=Pc.get(u);if(void 0!==i)return c.manager.itemStart(u),setTimeout(function(){e&&e(i),c.manager.itemEnd(u)},0),i;if(void 0===Rc[u]){var r,a=u.match(/^data:(.*?)(;base64)?,(.*)$/);if(a){var o=a[1],s=!!a[2],l=a[3],l=decodeURIComponent(l);s&&(l=atob(l));try{var d=(this.responseType||"").toLowerCase();switch(d){case"arraybuffer":case"blob":for(var h=new Uint8Array(l.length),p=0;p<l.length;p++)h[p]=l.charCodeAt(p);f="blob"===d?new Blob([h.buffer],{type:o}):h.buffer;break;case"document":var f=(new DOMParser).parseFromString(l,o);break;case"json":f=JSON.parse(l);break;default:f=l}setTimeout(function(){e&&e(f),c.manager.itemEnd(u)},0)}catch(e){setTimeout(function(){n&&n(e),c.manager.itemError(u),c.manager.itemEnd(u)},0)}}else{for(var m in Rc[u]=[],Rc[u].push({onLoad:e,onProgress:t,onError:n}),(r=new XMLHttpRequest).open("GET",u,!0),r.addEventListener("load",function(e){var t=this.response,n=Rc[u];if(delete Rc[u],200===this.status||0===this.status){0===this.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),Pc.add(u,t);for(var i=0,r=n.length;i<r;i++){var a=n[i];a.onLoad&&a.onLoad(t)}}else{for(var o=0,s=n.length;o<s;o++){var l=n[o];l.onError&&l.onError(e)}c.manager.itemError(u)}c.manager.itemEnd(u)},!1),r.addEventListener("progress",function(e){for(var t=Rc[u],n=0,i=t.length;n<i;n++){var r=t[n];r.onProgress&&r.onProgress(e)}},!1),r.addEventListener("error",function(e){var t=Rc[u];delete Rc[u];for(var n=0,i=t.length;n<i;n++){var r=t[n];r.onError&&r.onError(e)}c.manager.itemError(u),c.manager.itemEnd(u)},!1),r.addEventListener("abort",function(e){var t=Rc[u];delete Rc[u];for(var n=0,i=t.length;n<i;n++){var r=t[n];r.onError&&r.onError(e)}c.manager.itemError(u),c.manager.itemEnd(u)},!1),void 0!==this.responseType&&(r.responseType=this.responseType),void 0!==this.withCredentials&&(r.withCredentials=this.withCredentials),r.overrideMimeType&&r.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain"),this.requestHeader)r.setRequestHeader(m,this.requestHeader[m]);r.send(null)}return c.manager.itemStart(u),r}Rc[u].push({onLoad:e,onProgress:t,onError:n})},setResponseType:function(e){return this.responseType=e,this},setMimeType:function(e){return this.mimeType=e,this}}),Fc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Fc,load:function(t,n,e,i){var r=this,a=new Lc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){for(var t=[],n=0;n<e.length;n++){var i=Tc.parse(e[n]);t.push(i)}return t}}),Oc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Oc,load:function(e,a,n,i){var o=this,s=[],l=new Nl,r=new Lc(this.manager),u=(r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(o.withCredentials),0);if(Array.isArray(e))for(var t=0,c=e.length;t<c;++t)!function(t){r.load(e[t],function(e){e=o.parse(e,!0);s[t]={width:e.width,height:e.height,format:e.format,mipmaps:e.mipmaps},6===(u+=1)&&(1===e.mipmapCount&&(l.minFilter=N),l.image=s,l.format=e.format,l.needsUpdate=!0,a)&&a(l)},n,i)}(t);else r.load(e,function(e){var t=o.parse(e,!0);if(t.isCubemap){for(var n=t.mipmaps.length/t.mipmapCount,i=0;i<n;i++){s[i]={mipmaps:[]};for(var r=0;r<t.mipmapCount;r++)s[i].mipmaps.push(t.mipmaps[i*t.mipmapCount+r]),s[i].format=t.format,s[i].width=t.width,s[i].height=t.height}l.image=s}else l.image.width=t.width,l.image.height=t.height,l.mipmaps=t.mipmaps;1===t.mipmapCount&&(l.minFilter=N),l.format=t.format,l.needsUpdate=!0,a&&a(l)},n,i);return l}}),Uc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Uc,load:function(t,e,n,i){void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);var r,a=this,o=Pc.get(t);return void 0!==o?(a.manager.itemStart(t),setTimeout(function(){e&&e(o),a.manager.itemEnd(t)},0),o):((r=document.createElementNS("http://www.w3.org/1999/xhtml","img")).addEventListener("load",s,!1),r.addEventListener("error",l,!1),"data:"!==t.substr(0,5)&&void 0!==this.crossOrigin&&(r.crossOrigin=this.crossOrigin),a.manager.itemStart(t),r.src=t,r);function s(){r.removeEventListener("load",s,!1),r.removeEventListener("error",l,!1),Pc.add(t,this),e&&e(this),a.manager.itemEnd(t)}function l(e){r.removeEventListener("load",s,!1),r.removeEventListener("error",l,!1),i&&i(e),a.manager.itemError(t),a.manager.itemEnd(t)}}}),Nc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Nc,load:function(e,n,t,i){var r=new ba,a=new Uc(this.manager),o=(a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),0);for(var s=0;s<e.length;++s)!function(t){a.load(e[t],function(e){r.images[t]=e,6===++o&&(r.needsUpdate=!0,n)&&n(r)},void 0,i)}(s);return r}}),zc.prototype=Object.assign(Object.create(kc.prototype),{constructor:zc,load:function(e,t,n,i){var r=this,a=new Ea,o=new Lc(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,function(e){e=r.parse(e);e&&(void 0!==e.image?a.image=e.image:void 0!==e.data&&(a.image.width=e.width,a.image.height=e.height,a.image.data=e.data),a.wrapS=void 0!==e.wrapS?e.wrapS:ct,a.wrapT=void 0!==e.wrapT?e.wrapT:ct,a.magFilter=void 0!==e.magFilter?e.magFilter:N,a.minFilter=void 0!==e.minFilter?e.minFilter:N,a.anisotropy=void 0!==e.anisotropy?e.anisotropy:1,void 0!==e.format&&(a.format=e.format),void 0!==e.type&&(a.type=e.type),void 0!==e.mipmaps&&(a.mipmaps=e.mipmaps,a.minFilter=vt),1===e.mipmapCount&&(a.minFilter=N),a.needsUpdate=!0,t)&&t(a,e)},n,i),a}}),Gc.prototype=Object.assign(Object.create(kc.prototype),{constructor:Gc,load:function(t,n,e,i){var r=new Zn,a=new Uc(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(t,function(e){r.image=e;e=0<t.search(/\.jpe?g($|\?)/i)||0===t.search(/^data\:image\/jpeg/);r.format=e?Dt:It,r.needsUpdate=!0,void 0!==n&&n(r)},e,i),r}}),Object.assign(Hc.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){e=this.getUtoTmapping(e);return this.getPoint(e,t)},getPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:5,t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return t},getSpacedPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:5,t=[],n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,n=[],i=this.getPoint(0),r=0;n.push(0);for(var a=1;a<=e;a++)r+=(t=this.getPoint(a/e)).distanceTo(i),n.push(r),i=t;return this.cacheArcLengths=n},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){for(var n,i=this.getLengths(),r=0,a=i.length,o=t||e*i[a-1],s=0,l=a-1;s<=l;)if((n=i[r=Math.floor(s+(l-s)/2)]-o)<0)s=r+1;else{if(!(0<n)){l=r;break}l=r-1}return i[r=l]===o?r/(a-1):(r+(o-(t=i[r]))/(i[r+1]-t))/(a-1)},getTangent:function(e,t){var n=e-1e-4,e=e+1e-4,n=(1<e&&(e=1),this.getPoint(n=n<0?0:n)),e=this.getPoint(e),t=t||new(n.isVector2?Re:Oe);return t.copy(e).sub(n).normalize(),t},getTangentAt:function(e,t){e=this.getUtoTmapping(e);return this.getTangent(e,t)},computeFrenetFrames:function(e,t){for(var n=new Oe,i=[],r=[],a=[],o=new Oe,s=new Me,l=0;l<=e;l++)i[l]=this.getTangentAt(l/e,new Oe),i[l].normalize();r[0]=new Oe,a[0]=new Oe;var u=Number.MAX_VALUE,c=Math.abs(i[0].x),d=Math.abs(i[0].y),h=Math.abs(i[0].z);c<=u&&(u=c,n.set(1,0,0)),d<=u&&(u=d,n.set(0,1,0)),h<=u&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(var p,f=1;f<=e;f++)r[f]=r[f-1].clone(),a[f]=a[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON&&(o.normalize(),p=Math.acos(Be.clamp(i[f-1].dot(i[f]),-1,1)),r[f].applyMatrix4(s.makeRotationAxis(o,p))),a[f].crossVectors(i[f],r[f]);if(!0===t){var m=Math.acos(Be.clamp(r[0].dot(r[e]),-1,1));m/=e,0<i[0].dot(o.crossVectors(r[0],r[e]))&&(m=-m);for(var v=1;v<=e;v++)r[v].applyMatrix4(s.makeRotationAxis(i[v],m*v)),a[v].crossVectors(i[v],r[v])}return{tangents:i,normals:r,binormals:a}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),((Vc.prototype=Object.create(Hc.prototype)).constructor=Vc).prototype.isEllipseCurve=!0,Vc.prototype.getPoint=function(e,t){for(var t=t||new Re,n=2*Math.PI,i=this.aEndAngle-this.aStartAngle,r=Math.abs(i)<Number.EPSILON;i<0;)i+=n;for(;n<i;)i-=n;i<Number.EPSILON&&(i=r?0:n),!0!==this.aClockwise||r||(i===n?i=-n:i-=n);var a,o,s,l,r=this.aStartAngle+e*i,e=this.aX+this.xRadius*Math.cos(r),r=this.aY+this.yRadius*Math.sin(r);return 0!==this.aRotation&&(a=Math.cos(this.aRotation),o=Math.sin(this.aRotation),e=(s=e-this.aX)*a-(l=r-this.aY)*o+this.aX,r=s*o+l*a+this.aY),t.set(e,r)},Vc.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this},Vc.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e},Vc.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this},((Qc.prototype=Object.create(Vc.prototype)).constructor=Qc).prototype.isArcCurve=!0;var Wc=new Oe,Jc=new jc,qc=new jc,Yc=new jc;function Xc(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"centripetal",i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.5;Hc.call(this),this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}function Kc(e,t,n,i,r){var t=.5*(i-t),r=.5*(r-n),a=e*e;return(2*n-2*i+t+r)*(e*a)+(-3*n+3*i-2*t-r)*a+t*e+n}function Zc(e,t,n,i){return(r=1-(r=e))*r*t+2*(1-e)*e*n+e*e*i;var r}function $c(e,t,n,i,r){return(a=1-(a=e))*a*a*t+3*(a=1-e)*a*e*n+3*(1-e)*e*e*i+e*e*e*r;var a}function ed(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Re,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Re;Hc.call(this),this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}function td(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Oe,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Oe,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Oe;Hc.call(this),this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}function nd(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re;Hc.call(this),this.type="LineCurve",this.v1=e,this.v2=t}function id(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Oe,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe;Hc.call(this),this.type="LineCurve3",this.v1=e,this.v2=t}function rd(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Re;Hc.call(this),this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}function ad(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Oe,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Oe;Hc.call(this),this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}function od(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];Hc.call(this),this.type="SplineCurve",this.points=e}((Xc.prototype=Object.create(Hc.prototype)).constructor=Xc).prototype.isCatmullRomCurve3=!0,Xc.prototype.getPoint=function(e){var t,n,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,r=this.points,a=r.length,e=(a-(this.closed?0:1))*e,o=Math.floor(e),e=e-o,s=(this.closed?o+=0<o?0:(Math.floor(Math.abs(o)/a)+1)*a:0===e&&o===a-1&&(o=a-2,e=1),t=this.closed||0<o?r[(o-1)%a]:(Wc.subVectors(r[0],r[1]).add(r[0]),Wc),r[o%a]),l=r[(o+1)%a],o=this.closed||o+2<a?r[(o+2)%a]:(Wc.subVectors(r[a-1],r[a-2]).add(r[a-1]),Wc);return"centripetal"===this.curveType||"chordal"===this.curveType?(r="chordal"===this.curveType?.5:.25,a=Math.pow(t.distanceToSquared(s),r),(n=Math.pow(s.distanceToSquared(l),r))<1e-4&&(n=1),a<1e-4&&(a=n),(r=Math.pow(l.distanceToSquared(o),r))<1e-4&&(r=n),Jc.initNonuniformCatmullRom(t.x,s.x,l.x,o.x,a,n,r),qc.initNonuniformCatmullRom(t.y,s.y,l.y,o.y,a,n,r),Yc.initNonuniformCatmullRom(t.z,s.z,l.z,o.z,a,n,r)):"catmullrom"===this.curveType&&(Jc.initCatmullRom(t.x,s.x,l.x,o.x,this.tension),qc.initCatmullRom(t.y,s.y,l.y,o.y,this.tension),Yc.initCatmullRom(t.z,s.z,l.z,o.z,this.tension)),i.set(Jc.calc(e),qc.calc(e),Yc.calc(e)),i},Xc.prototype.copy=function(e){Hc.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this},Xc.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);e.points=[];for(var t=0,n=this.points.length;t<n;t++){var i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e},Xc.prototype.fromJSON=function(e){Hc.prototype.fromJSON.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push((new Oe).fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this},((ed.prototype=Object.create(Hc.prototype)).constructor=ed).prototype.isCubicBezierCurve=!0,ed.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set($c(e,n.x,i.x,r.x,a.x),$c(e,n.y,i.y,r.y,a.y)),t},ed.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this},ed.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e},ed.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this},((td.prototype=Object.create(Hc.prototype)).constructor=td).prototype.isCubicBezierCurve3=!0,td.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set($c(e,n.x,i.x,r.x,a.x),$c(e,n.y,i.y,r.y,a.y),$c(e,n.z,i.z,r.z,a.z)),t},td.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this},td.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e},td.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this},((nd.prototype=Object.create(Hc.prototype)).constructor=nd).prototype.isLineCurve=!0,nd.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re;return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t},nd.prototype.getPointAt=function(e,t){return this.getPoint(e,t)},nd.prototype.getTangent=function(e,t){t=t||new Re;return t.copy(this.v2).sub(this.v1).normalize(),t},nd.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v1.copy(e.v1),this.v2.copy(e.v2),this},nd.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},nd.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((id.prototype=Object.create(Hc.prototype)).constructor=id).prototype.isLineCurve3=!0,id.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe;return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t},id.prototype.getPointAt=function(e,t){return this.getPoint(e,t)},id.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v1.copy(e.v1),this.v2.copy(e.v2),this},id.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},id.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((rd.prototype=Object.create(Hc.prototype)).constructor=rd).prototype.isQuadraticBezierCurve=!0,rd.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=this.v0,i=this.v1,r=this.v2;return t.set(Zc(e,n.x,i.x,r.x),Zc(e,n.y,i.y,r.y)),t},rd.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this},rd.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},rd.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((ad.prototype=Object.create(Hc.prototype)).constructor=ad).prototype.isQuadraticBezierCurve3=!0,ad.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,n=this.v0,i=this.v1,r=this.v2;return t.set(Zc(e,n.x,i.x,r.x),Zc(e,n.y,i.y,r.y),Zc(e,n.z,i.z,r.z)),t},ad.prototype.copy=function(e){return Hc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this},ad.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},ad.prototype.fromJSON=function(e){return Hc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((od.prototype=Object.create(Hc.prototype)).constructor=od).prototype.isSplineCurve=!0,od.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=this.points,e=(n.length-1)*e,i=Math.floor(e),e=e-i,r=n[0===i?i:i-1],a=n[i],o=n[i>n.length-2?n.length-1:i+1],n=n[i>n.length-3?n.length-1:i+2];return t.set(Kc(e,r.x,a.x,o.x,n.x),Kc(e,r.y,a.y,o.y,n.y)),t},od.prototype.copy=function(e){Hc.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push(i.clone())}return this},od.prototype.toJSON=function(){var e=Hc.prototype.toJSON.call(this);e.points=[];for(var t=0,n=this.points.length;t<n;t++){var i=this.points[t];e.points.push(i.toArray())}return e},od.prototype.fromJSON=function(e){Hc.prototype.fromJSON.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push((new Re).fromArray(i))}return this};var sd=Object.freeze({__proto__:null,ArcCurve:Qc,CatmullRomCurve3:Xc,CubicBezierCurve:ed,CubicBezierCurve3:td,EllipseCurve:Vc,LineCurve:nd,LineCurve3:id,QuadraticBezierCurve:rd,QuadraticBezierCurve3:ad,SplineCurve:od});function ld(){Hc.call(this),this.type="CurvePath",this.curves=[],this.autoClose=!1}function ud(e){ld.call(this),this.type="Path",this.currentPoint=new Re,e&&this.setFromPoints(e)}function cd(e){ud.call(this,e),this.uuid=Be.generateUUID(),this.type="Shape",this.holes=[]}function dd(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;Z.call(this),this.type="Light",this.color=new Se(e),this.intensity=t}function hd(e,t,n){dd.call(this,e,n),this.type="HemisphereLight",this.position.copy(Z.DefaultUp),this.updateMatrix(),this.groundColor=new Se(t)}function pd(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.mapSize=new Re(512,512),this.map=null,this.mapPass=null,this.matrix=new Me,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Ma,this._frameExtents=new Re(1,1),this._viewportCount=1,this._viewports=[new ei(0,0,1,1)]}function fd(){pd.call(this,new ya(50,1,.5,500)),this.focus=1}function md(e,t,n,i,r,a){dd.call(this,e,t),this.type="SpotLight",this.position.copy(Z.DefaultUp),this.updateMatrix(),this.target=new Z,Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(e){this.intensity=e/Math.PI}}),this.distance=void 0!==n?n:0,this.angle=void 0!==i?i:Math.PI/3,this.penumbra=void 0!==r?r:0,this.decay=void 0!==a?a:1,this.shadow=new fd}function vd(){pd.call(this,new ya(90,1,.5,500)),this._frameExtents=new Re(4,2),this._viewportCount=6,this._viewports=[new ei(2,1,1,1),new ei(0,1,1,1),new ei(3,1,1,1),new ei(1,1,1,1),new ei(3,0,1,1),new ei(1,0,1,1)],this._cubeDirections=[new Oe(1,0,0),new Oe(-1,0,0),new Oe(0,0,1),new Oe(0,0,-1),new Oe(0,1,0),new Oe(0,-1,0)],this._cubeUps=[new Oe(0,1,0),new Oe(0,1,0),new Oe(0,1,0),new Oe(0,1,0),new Oe(0,0,1),new Oe(0,0,-1)]}function gd(e,t,n,i){dd.call(this,e,t),this.type="PointLight",Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(e){this.intensity=e/(4*Math.PI)}}),this.distance=void 0!==n?n:0,this.decay=void 0!==i?i:1,this.shadow=new vd}function Ad(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:-1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:-1,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.1,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:2e3;Aa.call(this),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}function yd(){pd.call(this,new Ad(-5,5,5,-5,.5,500))}function wd(e,t){dd.call(this,e,t),this.type="DirectionalLight",this.position.copy(Z.DefaultUp),this.updateMatrix(),this.target=new Z,this.shadow=new yd}function bd(e,t){dd.call(this,e,t),this.type="AmbientLight"}function xd(e,t,n,i){dd.call(this,e,t),this.type="RectAreaLight",this.width=void 0!==n?n:10,this.height=void 0!==i?i:10}ld.prototype=Object.assign(Object.create(Hc.prototype),{constructor:ld,add:function(e){this.curves.push(e)},closePath:function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new nd(t,e))},getPoint:function(e){for(var t,n,i,r=e*this.getLength(),a=this.getCurveLengths(),o=0;o<a.length;){if(a[o]>=r)return t=a[o]-r,i=(n=this.curves[o]).getLength(),n.getPointAt(0===i?0:1-t/i);o++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,n=0,i=this.curves.length;n<i;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e},getSpacedPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:40,t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t},getPoints:function(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:12,n=[],i=0,r=this.curves;i<r.length;i++)for(var a=r[i],o=a&&a.isEllipseCurve?2*t:a&&(a.isLineCurve||a.isLineCurve3)?1:a&&a.isSplineCurve?t*a.points.length:t,s=a.getPoints(o),l=0;l<s.length;l++){var u=s[l];e&&e.equals(u)||(n.push(u),e=u)}return this.autoClose&&1<n.length&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},copy:function(e){Hc.prototype.copy.call(this,e),this.curves=[];for(var t=0,n=e.curves.length;t<n;t++){var i=e.curves[t];this.curves.push(i.clone())}return this.autoClose=e.autoClose,this},toJSON:function(){var e=Hc.prototype.toJSON.call(this);e.autoClose=this.autoClose,e.curves=[];for(var t=0,n=this.curves.length;t<n;t++){var i=this.curves[t];e.curves.push(i.toJSON())}return e},fromJSON:function(e){Hc.prototype.fromJSON.call(this,e),this.autoClose=e.autoClose,this.curves=[];for(var t=0,n=e.curves.length;t<n;t++){var i=e.curves[t];this.curves.push((new sd[i.type]).fromJSON(i))}return this}}),ud.prototype=Object.assign(Object.create(ld.prototype),{constructor:ud,setFromPoints:function(e){this.moveTo(e[0].x,e[0].y);for(var t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this},moveTo:function(e,t){return this.currentPoint.set(e,t),this},lineTo:function(e,t){var n=new nd(this.currentPoint.clone(),new Re(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this},quadraticCurveTo:function(e,t,n,i){e=new rd(this.currentPoint.clone(),new Re(e,t),new Re(n,i));return this.curves.push(e),this.currentPoint.set(n,i),this},bezierCurveTo:function(e,t,n,i,r,a){e=new ed(this.currentPoint.clone(),new Re(e,t),new Re(n,i),new Re(r,a));return this.curves.push(e),this.currentPoint.set(r,a),this},splineThru:function(e){var t=new od([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this},arc:function(e,t,n,i,r,a){var o=this.currentPoint.x,s=this.currentPoint.y;return this.absarc(e+o,t+s,n,i,r,a),this},absarc:function(e,t,n,i,r,a){return this.absellipse(e,t,n,n,i,r,a),this},ellipse:function(e,t,n,i,r,a,o,s){var l=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(e+l,t+u,n,i,r,a,o,s),this},absellipse:function(e,t,n,i,r,a,o,s){e=new Vc(e,t,n,i,r,a,o,s),0<this.curves.length&&((t=e.getPoint(0)).equals(this.currentPoint)||this.lineTo(t.x,t.y)),this.curves.push(e),n=e.getPoint(1);return this.currentPoint.copy(n),this},copy:function(e){return ld.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=ld.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return ld.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),cd.prototype=Object.assign(Object.create(ud.prototype),{constructor:cd,getPointsHoles:function(e){for(var t=[],n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t},extractPoints:function(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}},copy:function(e){ud.prototype.copy.call(this,e),this.holes=[];for(var t=0,n=e.holes.length;t<n;t++){var i=e.holes[t];this.holes.push(i.clone())}return this},toJSON:function(){var e=ud.prototype.toJSON.call(this);e.uuid=this.uuid,e.holes=[];for(var t=0,n=this.holes.length;t<n;t++){var i=this.holes[t];e.holes.push(i.toJSON())}return e},fromJSON:function(e){ud.prototype.fromJSON.call(this,e),this.uuid=e.uuid,this.holes=[];for(var t=0,n=e.holes.length;t<n;t++){var i=e.holes[t];this.holes.push((new ud).fromJSON(i))}return this}}),dd.prototype=Object.assign(Object.create(Z.prototype),{constructor:dd,isLight:!0,copy:function(e){return Z.prototype.copy.call(this,e),this.color.copy(e.color),this.intensity=e.intensity,this},toJSON:function(e){e=Z.prototype.toJSON.call(this,e);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,void 0!==this.groundColor&&(e.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(e.object.distance=this.distance),void 0!==this.angle&&(e.object.angle=this.angle),void 0!==this.decay&&(e.object.decay=this.decay),void 0!==this.penumbra&&(e.object.penumbra=this.penumbra),void 0!==this.shadow&&(e.object.shadow=this.shadow.toJSON()),e}}),hd.prototype=Object.assign(Object.create(dd.prototype),{constructor:hd,isHemisphereLight:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.groundColor.copy(e.groundColor),this}}),Object.assign(pd.prototype,{_projScreenMatrix:new Me,_lightPositionWorld:new Oe,_lookTarget:new Oe,getViewportCount:function(){return this._viewportCount},getFrustum:function(){return this._frustum},updateMatrices:function(e){var t=this.camera,n=this.matrix,i=this._projScreenMatrix,r=this._lookTarget,a=this._lightPositionWorld;a.setFromMatrixPosition(e.matrixWorld),t.position.copy(a),r.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(r),t.updateMatrixWorld(),i.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(i),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(t.projectionMatrix),n.multiply(t.matrixWorldInverse)},getViewport:function(e){return this._viewports[e]},getFrameExtents:function(){return this._frameExtents},copy:function(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}),fd.prototype=Object.assign(Object.create(pd.prototype),{constructor:fd,isSpotLightShadow:!0,updateMatrices:function(e){var t=this.camera,n=2*Be.RAD2DEG*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;n===t.fov&&i===t.aspect&&r===t.far||(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),pd.prototype.updateMatrices.call(this,e)}}),md.prototype=Object.assign(Object.create(dd.prototype),{constructor:md,isSpotLight:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}),vd.prototype=Object.assign(Object.create(pd.prototype),{constructor:vd,isPointLightShadow:!0,updateMatrices:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.camera,i=this.matrix,r=this._lightPositionWorld,a=this._lookTarget,o=this._projScreenMatrix;r.setFromMatrixPosition(e.matrixWorld),n.position.copy(r),a.copy(n.position),a.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(a),n.updateMatrixWorld(),i.makeTranslation(-r.x,-r.y,-r.z),o.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(o)}}),gd.prototype=Object.assign(Object.create(dd.prototype),{constructor:gd,isPointLight:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}),Ad.prototype=Object.assign(Object.create(Aa.prototype),{constructor:Ad,isOrthographicCamera:!0,copy:function(e,t){return Aa.prototype.copy.call(this,e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this},setViewOffset:function(e,t,n,i,r,a){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=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e,t=(this.right-this.left)/(2*this.zoom),n=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2,a=i-t,i=i+t,t=r+n,r=r-n;null!==this.view&&this.view.enabled&&(n=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom,i=(a+=n*this.view.offsetX)+n*this.view.width,r=(t-=e*this.view.offsetY)-e*this.view.height),this.projectionMatrix.makeOrthographic(a,i,t,r,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()},toJSON:function(e){e=Z.prototype.toJSON.call(this,e);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}}),yd.prototype=Object.assign(Object.create(pd.prototype),{constructor:yd,isDirectionalLightShadow:!0,updateMatrices:function(e){pd.prototype.updateMatrices.call(this,e)}}),wd.prototype=Object.assign(Object.create(dd.prototype),{constructor:wd,isDirectionalLight:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}),bd.prototype=Object.assign(Object.create(dd.prototype),{constructor:bd,isAmbientLight:!0}),xd.prototype=Object.assign(Object.create(dd.prototype),{constructor:xd,isRectAreaLight:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.width=e.width,this.height=e.height,this},toJSON:function(e){e=dd.prototype.toJSON.call(this,e);return e.object.width=this.width,e.object.height=this.height,e}});var Ed=function(){return A(function e(){ue(this,e),Object.defineProperty(this,"isSphericalHarmonics3",{value:!0}),this.coefficients=[];for(var t=0;t<9;t++)this.coefficients.push(new Oe)},[{key:"set",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].copy(e[t]);return this}},{key:"zero",value:function(){for(var e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}},{key:"getAt",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=this.coefficients;return t.copy(r[0]).multiplyScalar(.282095),t.addScaledVector(r[1],.488603*i),t.addScaledVector(r[2],.488603*e),t.addScaledVector(r[3],.488603*n),t.addScaledVector(r[4],n*i*1.092548),t.addScaledVector(r[5],i*e*1.092548),t.addScaledVector(r[6],.315392*(3*e*e-1)),t.addScaledVector(r[7],n*e*1.092548),t.addScaledVector(r[8],.546274*(n*n-i*i)),t}},{key:"getIrradianceAt",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=this.coefficients;return t.copy(r[0]).multiplyScalar(.886227),t.addScaledVector(r[1],1.023328*i),t.addScaledVector(r[2],1.023328*e),t.addScaledVector(r[3],1.023328*n),t.addScaledVector(r[4],.858086*n*i),t.addScaledVector(r[5],.858086*i*e),t.addScaledVector(r[6],.743125*e*e-.247708),t.addScaledVector(r[7],.858086*n*e),t.addScaledVector(r[8],.429043*(n*n-i*i)),t}},{key:"add",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].add(e.coefficients[t]);return this}},{key:"addScaledSH",value:function(e,t){for(var n=0;n<9;n++)this.coefficients[n].addScaledVector(e.coefficients[n],t);return this}},{key:"scale",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].multiplyScalar(e);return this}},{key:"lerp",value:function(e,t){for(var n=0;n<9;n++)this.coefficients[n].lerp(e.coefficients[n],t);return this}},{key:"equals",value:function(e){for(var t=0;t<9;t++)if(!this.coefficients[t].equals(e.coefficients[t]))return!1;return!0}},{key:"copy",value:function(e){return this.set(e.coefficients)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.coefficients,i=0;i<9;i++)n[i].fromArray(e,t+3*i);return this}},{key:"toArray",value:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.coefficients,i=0;i<9;i++)n[i].toArray(e,t+3*i);return e}}],[{key:"getBasisAt",value:function(e,t){var n=e.x,i=e.y,e=e.z;t[0]=.282095,t[1]=.488603*i,t[2]=.488603*e,t[3]=.488603*n,t[4]=1.092548*n*i,t[5]=1.092548*i*e,t[6]=.315392*(3*e*e-1),t[7]=1.092548*n*e,t[8]=.546274*(n*n-i*i)}}])}();function Cd(e,t){dd.call(this,void 0,t),this.type="LightProbe",this.sh=void 0!==e?e:new Ed}function Bd(e){kc.call(this,e),this.textures={}}Cd.prototype=Object.assign(Object.create(dd.prototype),{constructor:Cd,isLightProbe:!0,copy:function(e){return dd.prototype.copy.call(this,e),this.sh.copy(e.sh),this},fromJSON:function(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),this},toJSON:function(e){e=dd.prototype.toJSON.call(this,e);return e.object.sh=this.sh.toArray(),e}}),Bd.prototype=Object.assign(Object.create(kc.prototype),{constructor:Bd,load:function(t,n,e,i){var r=this,a=new Lc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){var t=this.textures;function n(e){return void 0===t[e]&&console.warn("THREE.MaterialLoader: Undefined texture",e),t[e]}var i,r=new fc[e.type];if(void 0!==e.uuid&&(r.uuid=e.uuid),void 0!==e.name&&(r.name=e.name),void 0!==e.color&&void 0!==r.color&&r.color.setHex(e.color),void 0!==e.roughness&&(r.roughness=e.roughness),void 0!==e.metalness&&(r.metalness=e.metalness),void 0!==e.sheen&&(r.sheen=(new Se).setHex(e.sheen)),void 0!==e.emissive&&void 0!==r.emissive&&r.emissive.setHex(e.emissive),void 0!==e.specular&&void 0!==r.specular&&r.specular.setHex(e.specular),void 0!==e.shininess&&(r.shininess=e.shininess),void 0!==e.clearcoat&&(r.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(r.clearcoatRoughness=e.clearcoatRoughness),void 0!==e.fog&&(r.fog=e.fog),void 0!==e.flatShading&&(r.flatShading=e.flatShading),void 0!==e.blending&&(r.blending=e.blending),void 0!==e.combine&&(r.combine=e.combine),void 0!==e.side&&(r.side=e.side),void 0!==e.opacity&&(r.opacity=e.opacity),void 0!==e.transparent&&(r.transparent=e.transparent),void 0!==e.alphaTest&&(r.alphaTest=e.alphaTest),void 0!==e.depthTest&&(r.depthTest=e.depthTest),void 0!==e.depthWrite&&(r.depthWrite=e.depthWrite),void 0!==e.colorWrite&&(r.colorWrite=e.colorWrite),void 0!==e.stencilWrite&&(r.stencilWrite=e.stencilWrite),void 0!==e.stencilWriteMask&&(r.stencilWriteMask=e.stencilWriteMask),void 0!==e.stencilFunc&&(r.stencilFunc=e.stencilFunc),void 0!==e.stencilRef&&(r.stencilRef=e.stencilRef),void 0!==e.stencilFuncMask&&(r.stencilFuncMask=e.stencilFuncMask),void 0!==e.stencilFail&&(r.stencilFail=e.stencilFail),void 0!==e.stencilZFail&&(r.stencilZFail=e.stencilZFail),void 0!==e.stencilZPass&&(r.stencilZPass=e.stencilZPass),void 0!==e.wireframe&&(r.wireframe=e.wireframe),void 0!==e.wireframeLinewidth&&(r.wireframeLinewidth=e.wireframeLinewidth),void 0!==e.wireframeLinecap&&(r.wireframeLinecap=e.wireframeLinecap),void 0!==e.wireframeLinejoin&&(r.wireframeLinejoin=e.wireframeLinejoin),void 0!==e.rotation&&(r.rotation=e.rotation),1!==e.linewidth&&(r.linewidth=e.linewidth),void 0!==e.dashSize&&(r.dashSize=e.dashSize),void 0!==e.gapSize&&(r.gapSize=e.gapSize),void 0!==e.scale&&(r.scale=e.scale),void 0!==e.polygonOffset&&(r.polygonOffset=e.polygonOffset),void 0!==e.polygonOffsetFactor&&(r.polygonOffsetFactor=e.polygonOffsetFactor),void 0!==e.polygonOffsetUnits&&(r.polygonOffsetUnits=e.polygonOffsetUnits),void 0!==e.skinning&&(r.skinning=e.skinning),void 0!==e.morphTargets&&(r.morphTargets=e.morphTargets),void 0!==e.morphNormals&&(r.morphNormals=e.morphNormals),void 0!==e.dithering&&(r.dithering=e.dithering),void 0!==e.vertexTangents&&(r.vertexTangents=e.vertexTangents),void 0!==e.visible&&(r.visible=e.visible),void 0!==e.toneMapped&&(r.toneMapped=e.toneMapped),void 0!==e.userData&&(r.userData=e.userData),void 0!==e.vertexColors&&("number"==typeof e.vertexColors?r.vertexColors=0<e.vertexColors:r.vertexColors=e.vertexColors),void 0!==e.uniforms)for(var a in e.uniforms){var o=e.uniforms[a];switch(r.uniforms[a]={},o.type){case"t":r.uniforms[a].value=n(o.value);break;case"c":r.uniforms[a].value=(new Se).setHex(o.value);break;case"v2":r.uniforms[a].value=(new Re).fromArray(o.value);break;case"v3":r.uniforms[a].value=(new Oe).fromArray(o.value);break;case"v4":r.uniforms[a].value=(new ei).fromArray(o.value);break;case"m3":r.uniforms[a].value=(new Yn).fromArray(o.value);break;case"m4":r.uniforms[a].value=(new Me).fromArray(o.value);break;default:r.uniforms[a].value=o.value}}if(void 0!==e.defines&&(r.defines=e.defines),void 0!==e.vertexShader&&(r.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(r.fragmentShader=e.fragmentShader),void 0!==e.extensions)for(var s in e.extensions)r.extensions[s]=e.extensions[s];return void 0!==e.shading&&(r.flatShading=1===e.shading),void 0!==e.size&&(r.size=e.size),void 0!==e.sizeAttenuation&&(r.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(r.map=n(e.map)),void 0!==e.matcap&&(r.matcap=n(e.matcap)),void 0!==e.alphaMap&&(r.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(r.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(r.bumpScale=e.bumpScale),void 0!==e.normalMap&&(r.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(r.normalMapType=e.normalMapType),void 0!==e.normalScale&&(i=e.normalScale,!1===Array.isArray(i)&&(i=[i,i]),r.normalScale=(new Re).fromArray(i)),void 0!==e.displacementMap&&(r.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(r.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(r.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(r.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(r.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(r.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(r.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(r.specularMap=n(e.specularMap)),void 0!==e.envMap&&(r.envMap=n(e.envMap)),void 0!==e.envMapIntensity&&(r.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(r.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(r.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(r.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(r.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(r.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(r.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(r.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(r.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(r.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(r.clearcoatNormalScale=(new Re).fromArray(e.clearcoatNormalScale)),void 0!==e.transmission&&(r.transmission=e.transmission),void 0!==e.transmissionMap&&(r.transmissionMap=n(e.transmissionMap)),r},setTextures:function(e){return this.textures=e,this}});var Md={decodeText:function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var t="",n=0,i=e.length;n<i;n++)t+=String.fromCharCode(e[n]);try{return decodeURIComponent(escape(t))}catch(e){return t}},extractUrlBase:function(e){var t=e.lastIndexOf("/");return-1===t?"./":e.substr(0,t+1)}};function Sd(){V.call(this),this.type="InstancedBufferGeometry",this.instanceCount=1/0}function Td(e,t,n,i){"number"==typeof n&&(i=n,n=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),H.call(this,e,t,n),this.meshPerAttribute=i||1}function _d(e){kc.call(this,e)}Sd.prototype=Object.assign(Object.create(V.prototype),{constructor:Sd,isInstancedBufferGeometry:!0,copy:function(e){return V.prototype.copy.call(this,e),this.instanceCount=e.instanceCount,this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var e=V.prototype.toJSON.call(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}),Td.prototype=Object.assign(Object.create(H.prototype),{constructor:Td,isInstancedBufferAttribute:!0,copy:function(e){return H.prototype.copy.call(this,e),this.meshPerAttribute=e.meshPerAttribute,this},toJSON:function(){var e=H.prototype.toJSON.call(this);return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}),_d.prototype=Object.assign(Object.create(kc.prototype),{constructor:_d,load:function(t,n,e,i){var r=this,a=new Lc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){var r={},a={};function t(e,t){var n,i;return void 0!==r[t]?r[t]:(n=e.interleavedBuffers[t],e=e,i=n.buffer,i=void 0!==a[i]?a[i]:(e=e.arrayBuffers[i],e=new Uint32Array(e).buffer,a[i]=e),(e=new Os(Ur(n.type,i),n.stride)).uuid=n.uuid,r[t]=e)}var n,i=new(e.isInstancedBufferGeometry?Sd:V),o=e.data.index,s=(void 0!==o&&(o=Ur(o.type,o.array),i.setIndex(new H(o,1))),e.data.attributes);for(n in s){var l,u=s[n],c=void 0;c=u.isInterleavedBufferAttribute?new zs(t(e.data,u.data),u.itemSize,u.offset,u.normalized):(l=Ur(u.type,u.array),new(u.isInstancedBufferAttribute?Td:H)(l,u.itemSize,u.normalized)),void 0!==u.name&&(c.name=u.name),i.setAttribute(n,c)}var d=e.data.morphAttributes;if(d)for(var h in d){for(var p=d[h],f=[],m=0,v=p.length;m<v;m++){var g=p[m],A=void 0;A=g.isInterleavedBufferAttribute?new zs(t(e.data,g.data),g.itemSize,g.offset,g.normalized):new H(Ur(g.type,g.array),g.itemSize,g.normalized),void 0!==g.name&&(A.name=g.name),f.push(A)}i.morphAttributes[h]=f}e.data.morphTargetsRelative&&(i.morphTargetsRelative=!0);var y=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==y)for(var w=0,b=y.length;w!==b;++w){var x=y[w];i.addGroup(x.start,x.count,x.materialIndex)}var E,o=e.data.boundingSphere;return void 0!==o&&(E=new Oe,void 0!==o.center&&E.fromArray(o.center),i.boundingSphere=new bi(E,o.radius)),e.name&&(i.name=e.name),e.userData&&(i.userData=e.userData),i}});var Pd,Dd=function(){function t(e){return ue(this,t),le(this,t,[e])}return v(t,kc),A(t,[{key:"load",value:function(n,i,e,r){var a=this,t=""===this.path?Md.extractUrlBase(n):this.path,t=(this.resourcePath=this.resourcePath||t,new Lc(this.manager));t.setPath(this.path),t.setRequestHeader(this.requestHeader),t.setWithCredentials(this.withCredentials),t.load(n,function(e){var t=null;try{t=JSON.parse(e)}catch(e){return void 0!==r&&r(e),void console.error("THREE:ObjectLoader: Can't parse "+n+".",e.message)}e=t.metadata;void 0===e||void 0===e.type||"geometry"===e.type.toLowerCase()?console.error("THREE.ObjectLoader: Can't load "+n):a.parse(t,i)},e,r)}},{key:"parse",value:function(e,t){var n=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),i=this.parseGeometries(e.geometries,i),r=this.parseImages(e.images,function(){void 0!==t&&t(o)}),a=this.parseTextures(e.textures,r),a=this.parseMaterials(e.materials,a),o=this.parseObject(e.object,i,a,n),i=this.parseSkeletons(e.skeletons,o);if(this.bindSkeletons(o,i),void 0!==t){var s,l=!1;for(s in r)if(r[s]instanceof HTMLImageElement){l=!0;break}!1===l&&t(o)}return o}},{key:"parseShapes",value:function(e){var t={};if(void 0!==e)for(var n=0,i=e.length;n<i;n++){var r=(new cd).fromJSON(e[n]);t[r.uuid]=r}return t}},{key:"parseSkeletons",value:function(e,t){var n={},i={};if(t.traverse(function(e){e.isBone&&(i[e.uuid]=e)}),void 0!==e)for(var r=0,a=e.length;r<a;r++){var o=(new fl).fromJSON(e[r],i);n[o.uuid]=o}return n}},{key:"parseGeometries",value:function(e,t){var n={};if(void 0!==e)for(var i=new _d,r=0,a=e.length;r<a;r++){var o=void 0,s=e[r];switch(s.type){case"PlaneGeometry":case"PlaneBufferGeometry":o=new ic[s.type](s.width,s.height,s.widthSegments,s.heightSegments);break;case"BoxGeometry":case"BoxBufferGeometry":case"CubeGeometry":o=new ic[s.type](s.width,s.height,s.depth,s.widthSegments,s.heightSegments,s.depthSegments);break;case"CircleGeometry":case"CircleBufferGeometry":o=new ic[s.type](s.radius,s.segments,s.thetaStart,s.thetaLength);break;case"CylinderGeometry":case"CylinderBufferGeometry":o=new ic[s.type](s.radiusTop,s.radiusBottom,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"ConeGeometry":case"ConeBufferGeometry":o=new ic[s.type](s.radius,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"SphereGeometry":case"SphereBufferGeometry":o=new ic[s.type](s.radius,s.widthSegments,s.heightSegments,s.phiStart,s.phiLength,s.thetaStart,s.thetaLength);break;case"DodecahedronGeometry":case"DodecahedronBufferGeometry":case"IcosahedronGeometry":case"IcosahedronBufferGeometry":case"OctahedronGeometry":case"OctahedronBufferGeometry":case"TetrahedronGeometry":case"TetrahedronBufferGeometry":o=new ic[s.type](s.radius,s.detail);break;case"RingGeometry":case"RingBufferGeometry":o=new ic[s.type](s.innerRadius,s.outerRadius,s.thetaSegments,s.phiSegments,s.thetaStart,s.thetaLength);break;case"TorusGeometry":case"TorusBufferGeometry":o=new ic[s.type](s.radius,s.tube,s.radialSegments,s.tubularSegments,s.arc);break;case"TorusKnotGeometry":case"TorusKnotBufferGeometry":o=new ic[s.type](s.radius,s.tube,s.tubularSegments,s.radialSegments,s.p,s.q);break;case"TubeGeometry":case"TubeBufferGeometry":o=new ic[s.type]((new sd[s.path.type]).fromJSON(s.path),s.tubularSegments,s.radius,s.radialSegments,s.closed);break;case"LatheGeometry":case"LatheBufferGeometry":o=new ic[s.type](s.points,s.segments,s.phiStart,s.phiLength);break;case"PolyhedronGeometry":case"PolyhedronBufferGeometry":o=new ic[s.type](s.vertices,s.indices,s.radius,s.details);break;case"ShapeGeometry":case"ShapeBufferGeometry":for(var l=[],u=0,c=s.shapes.length;u<c;u++){var d=t[s.shapes[u]];l.push(d)}o=new ic[s.type](l,s.curveSegments);break;case"ExtrudeGeometry":case"ExtrudeBufferGeometry":l=[];for(var h=0,p=s.shapes.length;h<p;h++){var f=t[s.shapes[h]];l.push(f)}var m=s.options.extrudePath;void 0!==m&&(s.options.extrudePath=(new sd[m.type]).fromJSON(m)),o=new ic[s.type](l,s.options);break;case"BufferGeometry":case"InstancedBufferGeometry":o=i.parse(s);break;case"Geometry":console.error('THREE.ObjectLoader: Loading "Geometry" is not supported anymore.');break;default:console.warn('THREE.ObjectLoader: Unsupported geometry type "'+s.type+'"');continue}o.uuid=s.uuid,void 0!==s.name&&(o.name=s.name),!0===o.isBufferGeometry&&void 0!==s.userData&&(o.userData=s.userData),n[s.uuid]=o}return n}},{key:"parseMaterials",value:function(e,t){var n={},i={};if(void 0!==e){var r=new Bd;r.setTextures(t);for(var a=0,o=e.length;a<o;a++){var s=e[a];if("MultiMaterial"===s.type){for(var l=[],u=0;u<s.materials.length;u++){var c=s.materials[u];void 0===n[c.uuid]&&(n[c.uuid]=r.parse(c)),l.push(n[c.uuid])}i[s.uuid]=l}else void 0===n[s.uuid]&&(n[s.uuid]=r.parse(s)),i[s.uuid]=n[s.uuid]}}return i}},{key:"parseAnimations",value:function(e){var t={};if(void 0!==e)for(var n=0;n<e.length;n++){var i=e[n],i=Tc.parse(i);t[i.uuid]=i}return t}},{key:"parseImages",value:function(e,t){var i=this,n={};function r(e){var t,n;return"string"==typeof e?(t=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(t=e)?t:i.resourcePath+t,n=t,i.manager.itemStart(n),a.load(n,function(){i.manager.itemEnd(n)},void 0,function(){i.manager.itemError(n),i.manager.itemEnd(n)})):e.data?{data:Ur(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&0<e.length){var a,t=new Dc(t);(a=new Uc(t)).setCrossOrigin(this.crossOrigin);for(var o=0,s=e.length;o<s;o++){var l=e[o],u=l.url;if(Array.isArray(u)){n[l.uuid]=[];for(var c=0,d=u.length;c<d;c++){var h=r(u[c]);null!==h&&(h instanceof HTMLImageElement?n[l.uuid].push(h):n[l.uuid].push(new Ea(h.data,h.width,h.height)))}}else{var p=r(l.url);null!==p&&(n[l.uuid]=p)}}}return n}},{key:"parseTextures",value:function(e,t){function n(e,t){return"number"==typeof e?e:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",e),t[e])}var i={};if(void 0!==e)for(var r=0,a=e.length;r<a;r++){var o=e[r],s=(void 0===o.image&&console.warn('THREE.ObjectLoader: No "image" specified for',o.uuid),void 0===t[o.image]&&console.warn("THREE.ObjectLoader: Undefined image",o.image),void 0),l=t[o.image];Array.isArray(l)?(s=new ba(l),6===l.length&&(s.needsUpdate=!0)):(s=l&&l.data?new Ea(l.data,l.width,l.height):new Zn(l),l&&(s.needsUpdate=!0)),s.uuid=o.uuid,void 0!==o.name&&(s.name=o.name),void 0!==o.mapping&&(s.mapping=n(o.mapping,Id)),void 0!==o.offset&&s.offset.fromArray(o.offset),void 0!==o.repeat&&s.repeat.fromArray(o.repeat),void 0!==o.center&&s.center.fromArray(o.center),void 0!==o.rotation&&(s.rotation=o.rotation),void 0!==o.wrap&&(s.wrapS=n(o.wrap[0],kd),s.wrapT=n(o.wrap[1],kd)),void 0!==o.format&&(s.format=o.format),void 0!==o.type&&(s.type=o.type),void 0!==o.encoding&&(s.encoding=o.encoding),void 0!==o.minFilter&&(s.minFilter=n(o.minFilter,Rd)),void 0!==o.magFilter&&(s.magFilter=n(o.magFilter,Rd)),void 0!==o.anisotropy&&(s.anisotropy=o.anisotropy),void 0!==o.flipY&&(s.flipY=o.flipY),void 0!==o.premultiplyAlpha&&(s.premultiplyAlpha=o.premultiplyAlpha),void 0!==o.unpackAlignment&&(s.unpackAlignment=o.unpackAlignment),i[o.uuid]=s}return i}},{key:"parseObject",value:function(e,t,a,n){function i(e){return void 0===t[e]&&console.warn("THREE.ObjectLoader: Undefined geometry",e),t[e]}function r(e){if(void 0!==e){if(Array.isArray(e)){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];void 0===a[r]&&console.warn("THREE.ObjectLoader: Undefined material",r),t.push(a[r])}return t}return void 0===a[e]&&console.warn("THREE.ObjectLoader: Undefined material",e),a[e]}}switch(e.type){case"Scene":o=new Fs,void 0!==e.background&&Number.isInteger(e.background)&&(o.background=new Se(e.background)),void 0!==e.fog&&("Fog"===e.fog.type?o.fog=new Ls(e.fog.color,e.fog.near,e.fog.far):"FogExp2"===e.fog.type&&(o.fog=new Rs(e.fog.color,e.fog.density)));break;case"PerspectiveCamera":o=new ya(e.fov,e.aspect,e.near,e.far),void 0!==e.focus&&(o.focus=e.focus),void 0!==e.zoom&&(o.zoom=e.zoom),void 0!==e.filmGauge&&(o.filmGauge=e.filmGauge),void 0!==e.filmOffset&&(o.filmOffset=e.filmOffset),void 0!==e.view&&(o.view=Object.assign({},e.view));break;case"OrthographicCamera":o=new Ad(e.left,e.right,e.top,e.bottom,e.near,e.far),void 0!==e.zoom&&(o.zoom=e.zoom),void 0!==e.view&&(o.view=Object.assign({},e.view));break;case"AmbientLight":o=new bd(e.color,e.intensity);break;case"DirectionalLight":o=new wd(e.color,e.intensity);break;case"PointLight":o=new gd(e.color,e.intensity,e.distance,e.decay);break;case"RectAreaLight":o=new xd(e.color,e.intensity,e.width,e.height);break;case"SpotLight":o=new md(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay);break;case"HemisphereLight":o=new hd(e.color,e.groundColor,e.intensity);break;case"LightProbe":o=(new Cd).fromJSON(e);break;case"SkinnedMesh":o=new cl(s=i(e.geometry),l=r(e.material)),void 0!==e.bindMode&&(o.bindMode=e.bindMode),void 0!==e.bindMatrix&&o.bindMatrix.fromArray(e.bindMatrix),void 0!==e.skeleton&&(o.skeleton=e.skeleton);break;case"Mesh":o=new Q(s=i(e.geometry),l=r(e.material));break;case"InstancedMesh":var o,s=i(e.geometry),l=r(e.material),u=e.count,c=e.instanceMatrix;(o=new yl(s,l,u)).instanceMatrix=new H(new Float32Array(c.array),16);break;case"LOD":o=new rl;break;case"Line":o=new Ml(i(e.geometry),r(e.material));break;case"LineLoop":o=new Pl(i(e.geometry),r(e.material));break;case"LineSegments":o=new _l(i(e.geometry),r(e.material));break;case"PointCloud":case"Points":o=new Fl(i(e.geometry),r(e.material));break;case"Sprite":o=new el(r(e.material));break;case"Group":o=new Ts;break;case"Bone":o=new dl;break;default:o=new Z}if(o.uuid=e.uuid,void 0!==e.name&&(o.name=e.name),void 0!==e.matrix?(o.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(void 0!==e.position&&o.position.fromArray(e.position),void 0!==e.rotation&&o.rotation.fromArray(e.rotation),void 0!==e.quaternion&&o.quaternion.fromArray(e.quaternion),void 0!==e.scale&&o.scale.fromArray(e.scale)),void 0!==e.castShadow&&(o.castShadow=e.castShadow),void 0!==e.receiveShadow&&(o.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(o.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(o.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(o.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&o.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera)&&(o.shadow.camera=this.parseObject(e.shadow.camera)),void 0!==e.visible&&(o.visible=e.visible),void 0!==e.frustumCulled&&(o.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(o.renderOrder=e.renderOrder),void 0!==e.userData&&(o.userData=e.userData),void 0!==e.layers&&(o.layers.mask=e.layers),void 0!==e.children)for(var d=e.children,h=0;h<d.length;h++)o.add(this.parseObject(d[h],t,a,n));if(void 0!==e.animations)for(var p=e.animations,f=0;f<p.length;f++){var m=p[f];o.animations.push(n[m])}if("LOD"===e.type){void 0!==e.autoUpdate&&(o.autoUpdate=e.autoUpdate);for(var v=e.levels,g=0;g<v.length;g++){var A=v[g],y=o.getObjectByProperty("uuid",A.object);void 0!==y&&o.addLevel(y,A.distance)}}return o}},{key:"bindSkeletons",value:function(e,n){0!==Object.keys(n).length&&e.traverse(function(e){var t;!0===e.isSkinnedMesh&&void 0!==e.skeleton&&(void 0===(t=n[e.skeleton])?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",e.skeleton):e.bind(t,e.bindMatrix))})}},{key:"setTexturePath",value:function(e){return console.warn("THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath()."),this.setResourcePath(e)}}])}(),Id={UVMapping:300,CubeReflectionMapping:it,CubeRefractionMapping:rt,EquirectangularReflectionMapping:at,EquirectangularRefractionMapping:ot,CubeUVReflectionMapping:st,CubeUVRefractionMapping:lt},kd={RepeatWrapping:ut,ClampToEdgeWrapping:ct,MirroredRepeatWrapping:dt},Rd={NearestFilter:ht,NearestMipmapNearestFilter:pt,NearestMipmapLinearFilter:ft,LinearFilter:N,LinearMipmapNearestFilter:mt,LinearMipmapLinearFilter:vt};function Ld(e){"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),kc.call(this,e),this.options={premultiplyAlpha:"none"}}function Fd(){this.type="ShapePath",this.color=new Se,this.subPaths=[],this.currentPath=null}function Od(e){this.type="Font",this.data=e}function Ud(e){kc.call(this,e)}Ld.prototype=Object.assign(Object.create(kc.prototype),{constructor:Ld,isImageBitmapLoader:!0,setOptions:function(e){return this.options=e,this},load:function(t,n,e,i){void 0===t&&(t=""),void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);var r=this,a=Pc.get(t);if(void 0!==a)return r.manager.itemStart(t),setTimeout(function(){n&&n(a),r.manager.itemEnd(t)},0),a;var o={};o.credentials="anonymous"===this.crossOrigin?"same-origin":"include",fetch(t,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,r.options)}).then(function(e){Pc.add(t,e),n&&n(e),r.manager.itemEnd(t)}).catch(function(e){i&&i(e,t),r.manager.itemError(t),r.manager.itemEnd(t)}),r.manager.itemStart(t)}}),Object.assign(Fd.prototype,{moveTo:function(e,t){return this.currentPath=new ud,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this},lineTo:function(e,t){return this.currentPath.lineTo(e,t),this},quadraticCurveTo:function(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this},bezierCurveTo:function(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this},splineThru:function(e){return this.currentPath.splineThru(e),this},toShapes:function(e,t){function n(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n],a=new cd;a.curves=r.curves,t.push(a)}return t}var i,r,a,o=Bu.isClockWise,s=this.subPaths;if(0===s.length)return[];if(!0===t)return n(s);var l=[];if(1===s.length)r=s[0],(a=new cd).curves=r.curves,l.push(a);else{var u,c=!o(s[0].getPoints()),c=e?!c:c,d=[],h=[],p=[],f=0;h[f]=void 0,p[f]=[];for(var m=0,v=s.length;m<v;m++)i=o(u=(r=s[m]).getPoints()),(e?!i:i)?(!c&&h[f]&&f++,h[f]={s:new cd,p:u},h[f].s.curves=r.curves,c&&f++,p[f]=[]):p[f].push({h:r,p:u[0]});if(!h[0])return n(s);if(1<h.length){for(var g=!1,A=[],y=0,w=h.length;y<w;y++)d[y]=[];for(var b=0,x=h.length;b<x;b++)for(var E=p[b],C=0;C<E.length;C++){for(var B=E[C],M=!0,S=0;S<h.length;S++)!function(e,t){for(var n=t.length,i=!1,r=n-1,a=0;a<n;r=a++){var o=t[r],s=t[a],l=s.x-o.x,u=s.y-o.y;if(Math.abs(u)>Number.EPSILON){if(u<0&&(o=t[a],l=-l,s=t[r],u=-u),!(e.y<o.y||e.y>s.y))if(e.y===o.y){if(e.x===o.x)return 1}else{u=u*(e.x-o.x)-l*(e.y-o.y);if(0==u)return 1;u<0||(i=!i)}}else if(e.y===o.y&&(s.x<=e.x&&e.x<=o.x||o.x<=e.x&&e.x<=s.x))return 1}return i}(B.p,h[S].p)||(b!==S&&A.push({froms:b,tos:S,hole:C}),M?(M=!1,d[S].push(B)):g=!0);M&&d[b].push(B)}0<A.length&&(g||(p=d))}for(var T=0,_=h.length;T<_;T++){a=h[T].s,l.push(a);for(var P,D=0,I=(P=p[T]).length;D<I;D++)a.holes.push(P[D].h)}}return l}}),Object.assign(Od.prototype,{isFont:!0,generateShapes:function(e){for(var t=[],n=function(e,t,n){for(var i=Array.from?Array.from(e):String(e).split(""),r=t/n.resolution,a=(n.boundingBox.yMax-n.boundingBox.yMin+n.underlineThickness)*r,o=[],s=0,l=0,u=0;u<i.length;u++){var c=i[u];"\n"===c?(s=0,l-=a):(c=function(e,t,n,i,r){var a=r.glyphs[e]||r.glyphs["?"];if(a){var o,s,l,u,c,d,h,p,f=new Fd;if(a.o)for(var m=a._cachedOutline||(a._cachedOutline=a.o.split(" ")),v=0,g=m.length;v<g;)switch(m[v++]){case"m":o=m[v++]*t+n,s=m[v++]*t+i,f.moveTo(o,s);break;case"l":o=m[v++]*t+n,s=m[v++]*t+i,f.lineTo(o,s);break;case"q":l=m[v++]*t+n,u=m[v++]*t+i,c=m[v++]*t+n,d=m[v++]*t+i,f.quadraticCurveTo(c,d,l,u);break;case"b":l=m[v++]*t+n,u=m[v++]*t+i,c=m[v++]*t+n,d=m[v++]*t+i,h=m[v++]*t+n,p=m[v++]*t+i,f.bezierCurveTo(c,d,h,p,l,u)}return{offsetX:a.ha*t,path:f}}console.error('THREE.Font: character "'+e+'" does not exists in font family '+r.familyName+".")}(c,r,s,l,n),s+=c.offsetX,o.push(c.path))}return o}(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:100,this.data),i=0,r=n.length;i<r;i++)Array.prototype.push.apply(t,n[i].toShapes());return t}}),Ud.prototype=Object.assign(Object.create(kc.prototype),{constructor:Ud,load:function(e,i,t,n){var r=this,a=new Lc(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(t){var n;try{n=JSON.parse(t)}catch(e){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),n=JSON.parse(t.substring(65,t.length-2))}t=r.parse(n);i&&i(t)},t,n)},parse:function(e){return new Od(e)}});var Nd={getContext:function(){return Pd=void 0===Pd?new(window.AudioContext||window.webkitAudioContext):Pd},setContext:function(e){Pd=e}};function zd(e){kc.call(this,e)}function Gd(e,t,n){Cd.call(this,void 0,n);var n=(new Se).set(e),e=(new Se).set(t),t=new Oe(n.r,n.g,n.b),n=new Oe(e.r,e.g,e.b),e=Math.sqrt(Math.PI),i=e*Math.sqrt(.75);this.sh.coefficients[0].copy(t).add(n).multiplyScalar(e),this.sh.coefficients[1].copy(t).sub(n).multiplyScalar(i)}function Hd(e,t){Cd.call(this,void 0,t);t=(new Se).set(e);this.sh.coefficients[0].set(t.r,t.g,t.b).multiplyScalar(2*Math.sqrt(Math.PI))}zd.prototype=Object.assign(Object.create(kc.prototype),{constructor:zd,load:function(n,i,e,r){var a=this,t=new Lc(a.manager);t.setResponseType("arraybuffer"),t.setPath(a.path),t.setRequestHeader(a.requestHeader),t.setWithCredentials(a.withCredentials),t.load(n,function(e){try{var t=e.slice(0);Nd.getContext().decodeAudioData(t,function(e){i(e)})}catch(e){r?r(e):console.error(e),a.manager.itemError(n)}},e,r)}}),Gd.prototype=Object.assign(Object.create(Cd.prototype),{constructor:Gd,isHemisphereLightProbe:!0,copy:function(e){return Cd.prototype.copy.call(this,e),this},toJSON:function(e){return Cd.prototype.toJSON.call(this,e)}}),Hd.prototype=Object.assign(Object.create(Cd.prototype),{constructor:Hd,isAmbientLightProbe:!0,copy:function(e){return Cd.prototype.copy.call(this,e),this},toJSON:function(e){return Cd.prototype.toJSON.call(this,e)}});var Vd=new Me,Qd=new Me;function jd(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new ya,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new ya,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}}Object.assign(jd.prototype,{update:function(e){var t,n,i,r,a,o=this._cache;o.focus===e.focus&&o.fov===e.fov&&o.aspect===e.aspect*this.aspect&&o.near===e.near&&o.far===e.far&&o.zoom===e.zoom&&o.eyeSep===this.eyeSep||(o.focus=e.focus,o.fov=e.fov,o.aspect=e.aspect*this.aspect,o.near=e.near,o.far=e.far,o.zoom=e.zoom,o.eyeSep=this.eyeSep,t=e.projectionMatrix.clone(),n=(r=o.eyeSep/2)*o.near/o.focus,i=o.near*Math.tan(Be.DEG2RAD*o.fov*.5)/o.zoom,Qd.elements[12]=-r,Vd.elements[12]=r,r=-i*o.aspect+n,a=i*o.aspect+n,t.elements[0]=2*o.near/(a-r),t.elements[8]=(a+r)/(a-r),this.cameraL.projectionMatrix.copy(t),r=-i*o.aspect-n,a=i*o.aspect-n,t.elements[0]=2*o.near/(a-r),t.elements[8]=(a+r)/(a-r),this.cameraR.projectionMatrix.copy(t)),this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Qd),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Vd)}});var Wd=function(){return A(function e(t){ue(this,e),this.autoStart=void 0===t||t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},[{key:"start",value:function(){this.startTime=Jd(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}},{key:"stop",value:function(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}},{key:"getElapsedTime",value:function(){return this.getDelta(),this.elapsedTime}},{key:"getDelta",value:function(){var e,t=0;return this.autoStart&&!this.running?(this.start(),0):(this.running&&(t=((e=Jd())-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t),t)}}])}();function Jd(){return("undefined"==typeof performance?Date:performance).now()}var qd=new Oe,Yd=new ii,Xd=new Oe,Kd=new Oe,Zd=function(){function i(){var e;return ue(this,i),(e=le(this,i)).type="AudioListener",e.context=Nd.getContext(),e.gain=e.context.createGain(),e.gain.connect(e.context.destination),e.filter=null,e.timeDelta=0,e._clock=new Wd,e}return v(i,Z),A(i,[{key:"getInput",value:function(){return this.gain}},{key:"removeFilter",value:function(){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}},{key:"getFilter",value:function(){return this.filter}},{key:"setFilter",value:function(e){return(null!==this.filter?(this.gain.disconnect(this.filter),this.filter):this.gain).disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}},{key:"getMasterVolume",value:function(){return this.gain.gain.value}},{key:"setMasterVolume",value:function(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}},{key:"updateMatrixWorld",value:function(e){I(i,"updateMatrixWorld",this,3)([e]);var t,e=this.context.listener,n=this.up;this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(qd,Yd,Xd),Kd.set(0,0,-1).applyQuaternion(Yd),e.positionX?(t=this.context.currentTime+this.timeDelta,e.positionX.linearRampToValueAtTime(qd.x,t),e.positionY.linearRampToValueAtTime(qd.y,t),e.positionZ.linearRampToValueAtTime(qd.z,t),e.forwardX.linearRampToValueAtTime(Kd.x,t),e.forwardY.linearRampToValueAtTime(Kd.y,t),e.forwardZ.linearRampToValueAtTime(Kd.z,t),e.upX.linearRampToValueAtTime(n.x,t),e.upY.linearRampToValueAtTime(n.y,t),e.upZ.linearRampToValueAtTime(n.z,t)):(e.setPosition(qd.x,qd.y,qd.z),e.setOrientation(Kd.x,Kd.y,Kd.z,n.x,n.y,n.z))}}])}(),$d=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).type="Audio",t.listener=e,t.context=e.context,t.gain=t.context.createGain(),t.gain.connect(e.getInput()),t.autoplay=!1,t.buffer=null,t.detune=0,t.loop=!1,t.loopStart=0,t.loopEnd=0,t.offset=0,t.duration=void 0,t.playbackRate=1,t.isPlaying=!1,t.hasPlaybackControl=!0,t.source=null,t.sourceType="empty",t._startedAt=0,t._progress=0,t._connected=!1,t.filters=[],t}return v(n,Z),A(n,[{key:"getOutput",value:function(){return this.gain}},{key:"setNodeSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}},{key:"setMediaElementSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}},{key:"setMediaStreamSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}},{key:"setBuffer",value:function(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}},{key:"play",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else{if(!1!==this.hasPlaybackControl)return this._startedAt=this.context.currentTime+e,(e=this.context.createBufferSource()).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();console.warn("THREE.Audio: this Audio has no playback control.")}}},{key:"pause",value:function(){if(!1!==this.hasPlaybackControl)return!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;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"stop",value:function(){if(!1!==this.hasPlaybackControl)return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"connect",value:function(){if(0<this.filters.length){this.source.connect(this.filters[0]);for(var e=1,t=this.filters.length;e<t;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}},{key:"disconnect",value:function(){if(0<this.filters.length){this.source.disconnect(this.filters[0]);for(var e=1,t=this.filters.length;e<t;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}},{key:"getFilters",value:function(){return this.filters}},{key:"setFilters",value:function(e){return e=e||[],!0===this._connected?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}},{key:"setDetune",value:function(e){if(this.detune=e,void 0!==this.source.detune)return!0===this.isPlaying&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}},{key:"getDetune",value:function(){return this.detune}},{key:"getFilter",value:function(){return this.getFilters()[0]}},{key:"setFilter",value:function(e){return this.setFilters(e?[e]:[])}},{key:"setPlaybackRate",value:function(e){if(!1!==this.hasPlaybackControl)return this.playbackRate=e,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"getPlaybackRate",value:function(){return this.playbackRate}},{key:"onEnded",value:function(){this.isPlaying=!1}},{key:"getLoop",value:function(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}},{key:"setLoop",value:function(e){if(!1!==this.hasPlaybackControl)return this.loop=e,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"setLoopStart",value:function(e){return this.loopStart=e,this}},{key:"setLoopEnd",value:function(e){return this.loopEnd=e,this}},{key:"getVolume",value:function(){return this.gain.gain.value}},{key:"setVolume",value:function(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}}])}(),eh=new Oe,th=new ii,nh=new Oe,ih=new Oe,rh=function(){function n(e){return ue(this,n),(e=le(this,n,[e])).panner=e.context.createPanner(),e.panner.panningModel="HRTF",e.panner.connect(e.gain),e}return v(n,$d),A(n,[{key:"getOutput",value:function(){return this.panner}},{key:"getRefDistance",value:function(){return this.panner.refDistance}},{key:"setRefDistance",value:function(e){return this.panner.refDistance=e,this}},{key:"getRolloffFactor",value:function(){return this.panner.rolloffFactor}},{key:"setRolloffFactor",value:function(e){return this.panner.rolloffFactor=e,this}},{key:"getDistanceModel",value:function(){return this.panner.distanceModel}},{key:"setDistanceModel",value:function(e){return this.panner.distanceModel=e,this}},{key:"getMaxDistance",value:function(){return this.panner.maxDistance}},{key:"setMaxDistance",value:function(e){return this.panner.maxDistance=e,this}},{key:"setDirectionalCone",value:function(e,t,n){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}},{key:"updateMatrixWorld",value:function(e){var t;I(n,"updateMatrixWorld",this,3)([e]),!0===this.hasPlaybackControl&&!1===this.isPlaying||(this.matrixWorld.decompose(eh,th,nh),ih.set(0,0,1).applyQuaternion(th),(e=this.panner).positionX?(t=this.context.currentTime+this.listener.timeDelta,e.positionX.linearRampToValueAtTime(eh.x,t),e.positionY.linearRampToValueAtTime(eh.y,t),e.positionZ.linearRampToValueAtTime(eh.z,t),e.orientationX.linearRampToValueAtTime(ih.x,t),e.orientationY.linearRampToValueAtTime(ih.y,t),e.orientationZ.linearRampToValueAtTime(ih.z,t)):(e.setPosition(eh.x,eh.y,eh.z),e.setOrientation(ih.x,ih.y,ih.z)))}}])}(),ah=function(){return A(function e(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2048;ue(this,e),this.analyser=t.context.createAnalyser(),this.analyser.fftSize=n,this.data=new Uint8Array(this.analyser.frequencyBinCount),t.getOutput().connect(this.analyser)},[{key:"getFrequencyData",value:function(){return this.analyser.getByteFrequencyData(this.data),this.data}},{key:"getAverageFrequency",value:function(){for(var e=0,t=this.getFrequencyData(),n=0;n<t.length;n++)e+=t[n];return e/t.length}}])}();function oh(e,t,n){var i,r,a;switch(this.binding=e,this.valueSize=n,t){case"quaternion":i=this._slerp,r=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case"string":case"bool":i=this._select,r=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}Object.assign(oh.prototype,{accumulate:function(e,t){var n=this.buffer,i=this.valueSize,r=e*i+i,e=this.cumulativeWeight;if(0===e){for(var a=0;a!==i;++a)n[r+a]=n[a];e=t}else this._mixBufferRegion(n,r,0,t/(e+=t),i);this.cumulativeWeight=e},accumulateAdditive:function(e){var t=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,i,0,e,n),this.cumulativeWeightAdditive+=e},apply:function(e){var t,n=this.valueSize,i=this.buffer,r=e*n+n,e=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,e<1&&(t=n*this._origIndex,this._mixBufferRegion(i,r,t,1-e,n)),0<a&&this._mixBufferRegionAdditive(i,r,this._addIndex*n,1,n);for(var s=n,l=n+n;s!==l;++s)if(i[s]!==i[s+n]){o.setValue(i,r);break}},saveOriginalState:function(){var e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(var r=n,a=i;r!==a;++r)t[r]=t[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0},restoreOriginalState:function(){var e=3*this.valueSize;this.binding.setValue(this.buffer,e)},_setAdditiveIdentityNumeric:function(){for(var e=this._addIndex*this.valueSize,t=e+this.valueSize,n=e;n<t;n++)this.buffer[n]=0},_setAdditiveIdentityQuaternion:function(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1},_setAdditiveIdentityOther:function(){for(var e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize,n=0;n<this.valueSize;n++)this.buffer[t+n]=this.buffer[e+n]},_select:function(e,t,n,i,r){if(.5<=i)for(var a=0;a!==r;++a)e[t+a]=e[n+a]},_slerp:function(e,t,n,i){ii.slerpFlat(e,t,e,t,e,n,i)},_slerpAdditive:function(e,t,n,i,r){r=this._workIndex*r;ii.multiplyQuaternionsFlat(e,r,e,t,e,n),ii.slerpFlat(e,t,e,t,e,r,i)},_lerp:function(e,t,n,i,r){for(var a=1-i,o=0;o!==r;++o){var s=t+o;e[s]=e[s]*a+e[n+o]*i}},_lerpAdditive:function(e,t,n,i,r){for(var a=0;a!==r;++a){var o=t+a;e[o]=e[o]+e[n+a]*i}}});var sh="\\[\\]\\.:\\/",lh=new RegExp("["+sh+"]","g"),uh="[^"+sh+"]",sh="[^"+sh.replace("\\.","")+"]",ch=/((?:WC+[\/:])*)/.source.replace("WC",uh),sh=/(WCOD+)?/.source.replace("WCOD",sh),dh=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",uh),uh=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",uh),hh=new RegExp("^"+ch+sh+dh+uh+"$"),ph=["material","materials","bones"];function fh(e,t,n){n=n||mh.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,n)}function mh(e,t,n){this.path=t,this.parsedPath=n||mh.parseTrackName(t),this.node=mh.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function vh(){this.uuid=Be.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var e={};this._indicesByUUID=e;for(var t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var i=this;this.stats={objects:{get total(){return i._objects.length},get inUse(){return this.total-i.nCachedObjects_}},get bindingsPerObject(){return i._bindings.length}}}Object.assign(fh.prototype,{getValue:function(e,t){this.bind();var n=this._targetGroup.nCachedObjects_,n=this._bindings[n];void 0!==n&&n.getValue(e,t)},setValue:function(e,t){for(var n=this._bindings,i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)},bind:function(){for(var e=this._bindings,t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()},unbind:function(){for(var e=this._bindings,t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}),Object.assign(mh,{Composite:fh,create:function(e,t,n){return new(e&&e.isAnimationObjectGroup?mh.Composite:mh)(e,t,n)},sanitizeNodeName:function(e){return e.replace(/\s/g,"_").replace(lh,"")},parseTrackName:function(e){var t=hh.exec(e);if(!t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);var n,t={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=t.nodeName&&t.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i&&(n=t.nodeName.substring(i+1),-1!==ph.indexOf(n))&&(t.nodeName=t.nodeName.substring(0,i),t.objectName=n),null===t.propertyName||0===t.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return t},findNode:function(e,i){if(!i||""===i||"."===i||-1===i||i===e.name||i===e.uuid)return e;if(e.skeleton){var t=e.skeleton.getBoneByName(i);if(void 0!==t)return t}if(e.children){var r=function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.name===i||n.uuid===i)return n;n=r(n.children);if(n)return n}return null},t=r(e.children);if(t)return t}return null}}),Object.assign(mh.prototype,{_getValue_unavailable:function(){},_setValue_unavailable:function(){},BindingType:{Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Versioning:{None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},GetterByBindingType:[function(e,t){e[t]=this.node[this.propertyName]},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)e[t++]=n[i]},function(e,t){e[t]=this.resolvedProperty[this.propertyIndex]},function(e,t){this.resolvedProperty.toArray(e,t)}],SetterByBindingTypeAndVersioning:[[function(e,t){this.targetObject[this.propertyName]=e[t]},function(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0},function(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++]},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){this.resolvedProperty[this.propertyIndex]=e[t]},function(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0},function(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){this.resolvedProperty.fromArray(e,t)},function(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0},function(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}]],getValue:function(e,t){this.bind(),this.getValue(e,t)},setValue:function(e,t){this.bind(),this.setValue(e,t)},bind:function(){var e=this.node,t=this.parsedPath,n=t.objectName,i=t.propertyName,r=t.propertyIndex;if(e||(e=mh.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,e){if(n){var a=t.objectIndex;switch(n){case"materials":if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);e=e.material.materials;break;case"bones":if(!e.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);for(var e=e.skeleton.bones,o=0;o<e.length;o++)if(e[o].name===a){a=o;break}break;default:if(void 0===e[n])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);e=e[n]}if(void 0!==a){if(void 0===e[a])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);e=e[a]}}var s=e[i];if(void 0===s)t=t.nodeName,console.error("THREE.PropertyBinding: Trying to update property for track: "+t+"."+i+" but it wasn't found.",e);else{var t=this.Versioning.None,l=(void 0!==(this.targetObject=e).needsUpdate?t=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(t=this.Versioning.MatrixWorldNeedsUpdate),this.BindingType.Direct);if(void 0!==r){if("morphTargetInfluences"===i){if(!e.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!e.geometry.isBufferGeometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.",this);if(!e.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}l=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else void 0!==s.fromArray&&void 0!==s.toArray?(l=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(l=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][t]}}else console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.")},unbind:function(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}),Object.assign(mh.prototype,{_getValue_unbound:mh.prototype.getValue,_setValue_unbound:mh.prototype.setValue}),Object.assign(vh.prototype,{isAnimationObjectGroup:!0,add:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,a=r.length,o=void 0,s=e.length,l=this.nCachedObjects_,u=0,c=arguments.length;u!==c;++u){var d=arguments[u],h=d.uuid,p=t[h];if(void 0===p){p=s++,t[h]=p,e.push(d);for(var f=0,m=a;f!==m;++f)r[f].push(new mh(d,n[f],i[f]))}else if(p<l){var o=e[p],v=--l,g=e[v];e[t[g.uuid]=p]=g,e[t[h]=v]=d;for(var A=0,y=a;A!==y;++A){var w=r[A],b=w[v],x=w[p];w[p]=b,void 0===x&&(x=new mh(d,n[A],i[A])),w[v]=x}}else e[p]!==o&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=l},remove:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=0,o=arguments.length;a!==o;++a){var s=arguments[a],l=s.uuid,u=t[l];if(void 0!==u&&r<=u){var c=r++,d=e[c];e[t[d.uuid]=u]=d,e[t[l]=c]=s;for(var h=0,p=i;h!==p;++h){var f=n[h],m=f[c],v=f[u];f[u]=m,f[c]=v}}}this.nCachedObjects_=r},uncache:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=e.length,o=0,s=arguments.length;o!==s;++o){var l=arguments[o].uuid,u=t[l];if(void 0!==u)if(delete t[l],u<r){var c=--r,l=e[c],d=--a,h=e[d];e[t[l.uuid]=u]=l,e[t[h.uuid]=c]=h,e.pop();for(var p=0,f=i;p!==f;++p){var m=n[p],v=m[c],g=m[d];m[u]=v,m[c]=g,m.pop()}}else{var A=--a,l=e[A];0<A&&(t[l.uuid]=u),e[u]=l,e.pop();for(var y=0,w=i;y!==w;++y){var b=n[y];b[u]=b[A],b.pop()}}}this.nCachedObjects_=r},subscribe_:function(e,t){var n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(void 0!==i)return r[i];var a=this._paths,o=this._parsedPaths,s=this._objects,l=s.length,u=this.nCachedObjects_,c=new Array(l),i=r.length;n[e]=i,a.push(e),o.push(t),r.push(c);for(var d=u,h=s.length;d!==h;++d){var p=s[d];c[d]=new mh(p,e,t)}return c},unsubscribe_:function(e){var t,n,i,r,a,o=this._bindingsIndicesByPath,s=o[e];void 0!==s&&(t=this._paths,n=this._parsedPaths,a=(i=this._bindings)[r=i.length-1],i[o[e[r]]=s]=a,i.pop(),n[s]=n[r],n.pop(),t[s]=t[r],t.pop())}});var gh=function(){return A(function e(t,n){for(var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:n.blendMode,a=(ue(this,e),this._mixer=t,this._clip=n,this._localRoot=i,this.blendMode=r,n.tracks),o=a.length,s=new Array(o),l={endingStart:kn,endingEnd:kn},u=0;u!==o;++u){var c=a[u].createInterpolant(null);(s[u]=c).settings=l}this._interpolantSettings=l,this._interpolants=s,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0},[{key:"play",value:function(){return this._mixer._activateAction(this),this}},{key:"stop",value:function(){return this._mixer._deactivateAction(this),this.reset()}},{key:"reset",value:function(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}},{key:"isRunning",value:function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}},{key:"isScheduled",value:function(){return this._mixer._isActiveAction(this)}},{key:"startAt",value:function(e){return this._startTime=e,this}},{key:"setLoop",value:function(e,t){return this.loop=e,this.repetitions=t,this}},{key:"setEffectiveWeight",value:function(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}},{key:"getEffectiveWeight",value:function(){return this._effectiveWeight}},{key:"fadeIn",value:function(e){return this._scheduleFading(e,0,1)}},{key:"fadeOut",value:function(e){return this._scheduleFading(e,1,0)}},{key:"crossFadeFrom",value:function(e,t,n){var i,r;return e.fadeOut(t),this.fadeIn(t),n&&(r=(n=this._clip.duration)/(i=e._clip.duration),e.warp(1,i/n,t),this.warp(r,1,t)),this}},{key:"crossFadeTo",value:function(e,t,n){return e.crossFadeFrom(this,t,n)}},{key:"stopFading",value:function(){var e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}},{key:"setEffectiveTimeScale",value:function(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}},{key:"getEffectiveTimeScale",value:function(){return this._effectiveTimeScale}},{key:"setDuration",value:function(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}},{key:"syncWith",value:function(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}},{key:"halt",value:function(e){return this.warp(this._effectiveTimeScale,0,e)}},{key:"warp",value:function(e,t,n){var i=this._mixer,r=i.time,a=this.timeScale,o=this._timeScaleInterpolant,i=(null===o&&(o=i._lendControlInterpolant(),this._timeScaleInterpolant=o),o.parameterPositions),o=o.sampleValues;return i[0]=r,i[1]=r+n,o[0]=e/a,o[1]=t/a,this}},{key:"stopWarping",value:function(){var e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}},{key:"getMixer",value:function(){return this._mixer}},{key:"getClip",value:function(){return this._clip}},{key:"getRoot",value:function(){return this._localRoot||this._mixer._root}},{key:"_update",value:function(e,t,n,i){if(this.enabled){var r=this._startTime;if(null!==r){r=(e-r)*n;if(r<0||0===n)return;this._startTime=null,t=n*r}t*=this._updateTimeScale(e);var a=this._updateTime(t),o=this._updateWeight(e);if(0<o){var s=this._interpolants,l=this._propertyBindings;if(2501===this.blendMode)for(var u=0,c=s.length;u!==c;++u)s[u].evaluate(a),l[u].accumulateAdditive(o);else for(var d=0,h=s.length;d!==h;++d)s[d].evaluate(a),l[d].accumulate(i,o)}}else this._updateWeight(e)}},{key:"_updateWeight",value:function(e){var t,n,i=0;return this.enabled&&(i=this.weight,null!==(t=this._weightInterpolant))&&(i*=n=t.evaluate(e)[0],e>t.parameterPositions[1])&&(this.stopFading(),0===n)&&(this.enabled=!1),this._effectiveWeight=i}},{key:"_updateTimeScale",value:function(e){var t,n=0;return this.paused||(n=this.timeScale,null!==(t=this._timeScaleInterpolant)&&(n*=t.evaluate(e)[0],e>t.parameterPositions[1])&&(this.stopWarping(),0===n?this.paused=!0:this.timeScale=n)),this._effectiveTimeScale=n}},{key:"_updateTime",value:function(e){var t,n=this._clip.duration,i=this.loop,r=this.time+e,a=this._loopCount,o=2202===i;if(0===e)return-1!==a&&o&&1==(1&a)?n-r:r;if(2200===i){-1===a&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n<=r)r=n;else{if(!(r<0)){this.time=r;break e}r=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else if(-1===a&&(0<=e?this._setEndings(!(a=0),0===this.repetitions,o):this._setEndings(0===this.repetitions,!0,o)),n<=r||r<0?(r-=n*(i=Math.floor(r/n)),a+=Math.abs(i),(t=this.repetitions-a)<=0?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r=0<e?n:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:0<e?1:-1})):(1==t?this._setEndings(t=e<0,!t,o):this._setEndings(!1,!1,o),this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i}))):this.time=r,o&&1==(1&a))return n-r;return r}},{key:"_setEndings",value:function(e,t,n){var i=this._interpolantSettings;n?(i.endingStart=Rn,i.endingEnd=Rn):(i.endingStart=e?this.zeroSlopeAtStart?Rn:kn:Ln,i.endingEnd=t?this.zeroSlopeAtEnd?Rn:kn:Ln)}},{key:"_scheduleFading",value:function(e,t,n){var i=this._mixer,r=i.time,a=this._weightInterpolant,i=(null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a),a.parameterPositions),a=a.sampleValues;return i[0]=r,a[0]=t,i[1]=r+e,a[1]=n,this}}])}();function Ah(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}Ah.prototype=Object.assign(Object.create(Qn.prototype),{constructor:Ah,_bindAction:function(e,t){var n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,e=this._bindingsByRootAndName,l=e[s];void 0===l&&(e[s]=l={});for(var u=0;u!==r;++u){var c=i[u],d=c.name,h=l[d];if(void 0===h){if(void 0!==(h=a[u])){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,s,d));continue}var p=t&&t._propertyBindings[u].binding.parsedPath;++(h=new oh(mh.create(n,d,p),c.ValueTypeName,c.getValueSize())).referenceCount,this._addInactiveBinding(h,s,d)}a[u]=h,o[u].resultBuffer=h.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){null===e._cacheIndex&&(t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n],this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t));for(var t,n,i,r=e._propertyBindings,a=0,o=r.length;a!==o;++a){var s=r[a];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,n=0,i=t.length;n!==i;++n){var r=t[n];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){e=e._cacheIndex;return null!==e&&e<this._nActiveActions},_addInactiveAction:function(e,t,n){var i=this._actions,r=this._actionsByClip,a=r[t];void 0===a?(a={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=a):(r=a.knownActions,e._byClipCacheIndex=r.length,r.push(e)),e._cacheIndex=i.length,i.push(e),a.actionByRoot[n]=e},_removeInactiveAction:function(e){var t=this._actions,n=t[t.length-1],i=e._cacheIndex,i=(t[n._cacheIndex=i]=n,t.pop(),e._cacheIndex=null,e._clip.uuid),n=this._actionsByClip,t=n[i],r=t.knownActions,a=r[r.length-1],o=e._byClipCacheIndex;r[a._byClipCacheIndex=o]=a,r.pop(),e._byClipCacheIndex=null,delete t.actionByRoot[(e._localRoot||this._root).uuid],0===r.length&&delete n[i],this._removeInactiveBindingsForAction(e)},_removeInactiveBindingsForAction:function(e){for(var t=e._propertyBindings,n=0,i=t.length;n!==i;++n){var r=t[n];0==--r.referenceCount&&this._removeInactiveBinding(r)}},_lendAction:function(e){var t=this._actions,n=e._cacheIndex,i=this._nActiveActions++,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_takeBackAction:function(e){var t=this._actions,n=e._cacheIndex,i=--this._nActiveActions,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_addInactiveBinding:function(e,t,n){var i=this._bindingsByRootAndName,r=this._bindings,a=i[t];void 0===a&&(i[t]=a={}),(a[n]=e)._cacheIndex=r.length,r.push(e)},_removeInactiveBinding:function(e){var t=this._bindings,n=e.binding,i=n.rootNode.uuid,n=n.path,r=this._bindingsByRootAndName,a=r[i],o=t[t.length-1],e=e._cacheIndex;t[o._cacheIndex=e]=o,t.pop(),delete a[n],0===Object.keys(a).length&&delete r[i]},_lendBinding:function(e){var t=this._bindings,n=e._cacheIndex,i=this._nActiveBindings++,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_takeBackBinding:function(e){var t=this._bindings,n=e._cacheIndex,i=--this._nActiveBindings,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_lendControlInterpolant:function(){var e=this._controlInterpolants,t=this._nActiveControlInterpolants++,n=e[t];return void 0===n&&(e[(n=new Ac(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer)).__cacheIndex=t]=n),n},_takeBackControlInterpolant:function(e){var t=this._controlInterpolants,n=e.__cacheIndex,i=--this._nActiveControlInterpolants,r=t[i];t[e.__cacheIndex=i]=e,t[r.__cacheIndex=n]=r},_controlInterpolantsResultBuffer:new Float32Array(1),clipAction:function(e,t,n){var i=t||this._root,r=i.uuid,i="string"==typeof e?Tc.findByName(i,e):e,e=null!==i?i.uuid:e,a=this._actionsByClip[e],o=null;if(void 0===n&&(n=null!==i?i.blendMode:2500),void 0!==a){var s=a.actionByRoot[r];if(void 0!==s&&s.blendMode===n)return s;o=a.knownActions[0],null===i&&(i=o._clip)}return null===i?null:(s=new gh(this,i,t,n),this._bindAction(s,o),this._addInactiveAction(s,e,r),s)},existingAction:function(e,t){var t=t||this._root,n=t.uuid,t="string"==typeof e?Tc.findByName(t,e):e,t=t?t.uuid:e,e=this._actionsByClip[t];return void 0!==e&&e.actionByRoot[n]||null},stopAllAction:function(){for(var e=this._actions,t=this._nActiveActions-1;0<=t;--t)e[t].stop();return this},update:function(e){e*=this.timeScale;for(var t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1,o=0;o!==n;++o)t[o]._update(i,e,r,a);for(var s=this._bindings,l=this._nActiveBindings,u=0;u!==l;++u)s[u].apply(a);return this},setTime:function(e){for(var t=this.time=0;t<this._actions.length;t++)this._actions[t].time=0;return this.update(e)},getRoot:function(){return this._root},uncacheClip:function(e){var t=this._actions,e=e.uuid,n=this._actionsByClip,i=n[e];if(void 0!==i){for(var r=i.knownActions,a=0,o=r.length;a!==o;++a){var s=r[a],l=(this._deactivateAction(s),s._cacheIndex),u=t[t.length-1];s._cacheIndex=null,s._byClipCacheIndex=null,t[u._cacheIndex=l]=u,t.pop(),this._removeInactiveBindingsForAction(s)}delete n[e]}},uncacheRoot:function(e){var t,n=e.uuid,i=this._actionsByClip;for(t in i){var r=i[t].actionByRoot[n];void 0!==r&&(this._deactivateAction(r),this._removeInactiveAction(r))}var a=this._bindingsByRootAndName[n];if(void 0!==a)for(var o in a){o=a[o];o.restoreOriginalState(),this._removeInactiveBinding(o)}},uncacheAction:function(e,t){e=this.existingAction(e,t);null!==e&&(this._deactivateAction(e),this._removeInactiveAction(e))}});ch=function(){function t(e){ue(this,t),"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}return A(t,[{key:"clone",value:function(){return new t(void 0===this.value.clone?this.value:this.value.clone())}}])}();function yh(e,t,n){Os.call(this,e,t),this.meshPerAttribute=n||1}function wh(e,t,n,i,r){this.buffer=e,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}function bh(e,t,n,i){this.ray=new _i(e,t),this.near=n||0,this.far=i||1/0,this.camera=null,this.layers=new zi,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}},Object.defineProperties(this.params,{PointCloud:{get:function(){return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),this.Points}}})}function xh(e,t){return e.distance-t.distance}function Eh(e,t,n,i){if(e.layers.test(t.layers)&&e.raycast(t,n),!0===i)for(var r=e.children,a=0,o=r.length;a<o;a++)Eh(r[a],t,n,!0)}yh.prototype=Object.assign(Object.create(Os.prototype),{constructor:yh,isInstancedInterleavedBuffer:!0,copy:function(e){return Os.prototype.copy.call(this,e),this.meshPerAttribute=e.meshPerAttribute,this},clone:function(e){e=Os.prototype.clone.call(this,e);return e.meshPerAttribute=this.meshPerAttribute,e},toJSON:function(e){e=Os.prototype.toJSON.call(this,e);return e.isInstancedInterleavedBuffer=!0,e.meshPerAttribute=this.meshPerAttribute,e}}),Object.defineProperty(wh.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(wh.prototype,{isGLBufferAttribute:!0,setBuffer:function(e){return this.buffer=e,this},setType:function(e,t){return this.type=e,this.elementSize=t,this},setItemSize:function(e){return this.itemSize=e,this},setCount:function(e){return this.count=e,this}}),Object.assign(bh.prototype,{set:function(e,t){this.ray.set(e,t)},setFromCamera:function(e,t){t&&t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t&&t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)},intersectObject:function(e,t,n){n=n||[];return Eh(e,this,n,t),n.sort(xh),n},intersectObjects:function(e,t,n){var i=n||[];if(!1===Array.isArray(e))console.warn("THREE.Raycaster.intersectObjects: objects is not an Array.");else{for(var r=0,a=e.length;r<a;r++)Eh(e[r],this,i,t);i.sort(xh)}return i}});var sh=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;return ue(this,e),this.radius=t,this.phi=n,this.theta=i,this},[{key:"set",value:function(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}},{key:"makeSafe",value:function(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}},{key:"setFromVector3",value:function(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}},{key:"setFromCartesianCoords",value:function(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(Be.clamp(t/this.radius,-1,1))),this}}])}(),dh=function(){return A(function e(t,n,i){return ue(this,e),this.radius=void 0!==t?t:1,this.theta=void 0!==n?n:0,this.y=void 0!==i?i:0,this},[{key:"set",value:function(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}},{key:"setFromVector3",value:function(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}},{key:"setFromCartesianCoords",value:function(e,t,n){return this.radius=Math.sqrt(e*e+n*n),this.theta=Math.atan2(e,n),this.y=t,this}}])}(),Ch=new Re,Bh=function(){return A(function e(t,n){ue(this,e),Object.defineProperty(this,"isBox2",{value:!0}),this.min=void 0!==t?t:new Re(1/0,1/0),this.max=void 0!==n?n:new Re(-1/0,-1/0)},[{key:"set",value:function(e,t){return this.min.copy(e),this.max.copy(t),this}},{key:"setFromPoints",value:function(e){this.makeEmpty();for(var t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}},{key:"setFromCenterAndSize",value:function(e,t){t=Ch.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(t),this.max.copy(e).add(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.min.copy(e.min),this.max.copy(e.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Box2: .getCenter() target is now required"),e=new Re),this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(e){return void 0===e&&(console.warn("THREE.Box2: .getSize() target is now required"),e=new Re),this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(e){return this.min.min(e),this.max.max(e),this}},{key:"expandByVector",value:function(e){return this.min.sub(e),this.max.add(e),this}},{key:"expandByScalar",value:function(e){return this.min.addScalar(-e),this.max.addScalar(e),this}},{key:"containsPoint",value:function(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}},{key:"containsBox",value:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}},{key:"getParameter",value:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new Re),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}},{key:"intersectsBox",value:function(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}},{key:"clampPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new Re),t.copy(e).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(e){return Ch.copy(e).clamp(this.min,this.max).sub(e).length()}},{key:"intersect",value:function(e){return this.min.max(e.min),this.max.min(e.max),this}},{key:"union",value:function(e){return this.min.min(e.min),this.max.max(e.max),this}},{key:"translate",value:function(e){return this.min.add(e),this.max.add(e),this}},{key:"equals",value:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}])}(),Mh=new Oe,Sh=new Oe,Th=function(){return A(function e(t,n){ue(this,e),this.start=void 0!==t?t:new Oe,this.end=void 0!==n?n:new Oe},[{key:"set",value:function(e,t){return this.start.copy(e),this.end.copy(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.start.copy(e.start),this.end.copy(e.end),this}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new Oe),e.addVectors(this.start,this.end).multiplyScalar(.5)}},{key:"delta",value:function(e){return void 0===e&&(console.warn("THREE.Line3: .delta() target is now required"),e=new Oe),e.subVectors(this.end,this.start)}},{key:"distanceSq",value:function(){return this.start.distanceToSquared(this.end)}},{key:"distance",value:function(){return this.start.distanceTo(this.end)}},{key:"at",value:function(e,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new Oe),this.delta(t).multiplyScalar(e).add(this.start)}},{key:"closestPointToPointParameter",value:function(e,t){Mh.subVectors(e,this.start),Sh.subVectors(this.end,this.start);e=Sh.dot(Sh),e=Sh.dot(Mh)/e;return e=t?Be.clamp(e,0,1):e}},{key:"closestPointToPoint",value:function(e,t,n){e=this.closestPointToPointParameter(e,t);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new Oe),this.delta(n).multiplyScalar(e).add(this.start)}},{key:"applyMatrix4",value:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}},{key:"equals",value:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}])}();function _h(e){Z.call(this),this.material=e,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}((_h.prototype=Object.create(Z.prototype)).constructor=_h).prototype.isImmediateRenderObject=!0;var Ph=new Oe,uh=function(){function l(e,t){ue(this,l),(n=le(this,l)).light=e,n.light.updateMatrixWorld(),n.matrix=e.matrixWorld,n.matrixAutoUpdate=!1,n.color=t;for(var n,e=new V,i=[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],r=0,a=1;r<32;r++,a++){var o=r/32*Math.PI*2,s=a/32*Math.PI*2;i.push(Math.cos(o),Math.sin(o),1,Math.cos(s),Math.sin(s),1)}e.setAttribute("position",new ee(i,3));t=new wl({fog:!1,toneMapped:!1});return n.cone=new _l(e,t),n.add(n.cone),n.update(),n}return v(l,Z),A(l,[{key:"dispose",value:function(){this.cone.geometry.dispose(),this.cone.material.dispose()}},{key:"update",value:function(){this.light.updateMatrixWorld();var e=this.light.distance||1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Ph.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Ph),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}])}(),Dh=new Oe,Ih=new Me,kh=new Me,Rh=function(){function u(e){ue(this,u);for(var t=function e(t){var n=[];t&&t.isBone&&n.push(t);for(var i=0;i<t.children.length;i++)n.push.apply(n,e(t.children[i]));return n}(e),n=new V,i=[],r=[],a=new Se(0,0,1),o=new Se(0,1,0),s=0;s<t.length;s++){var l=t[s];l.parent&&l.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(a.r,a.g,a.b),r.push(o.r,o.g,o.b))}return n.setAttribute("position",new ee(i,3)),n.setAttribute("color",new ee(r,3)),(n=le(this,u,[n,new wl({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0})])).type="SkeletonHelper",n.isSkeletonHelper=!0,n.root=e,n.bones=t,n.matrix=e.matrixWorld,n.matrixAutoUpdate=!1,n}return v(u,_l),A(u,[{key:"updateMatrixWorld",value:function(e){var t=this.bones,n=this.geometry,i=n.getAttribute("position");kh.copy(this.root.matrixWorld).invert();for(var r=0,a=0;r<t.length;r++){var o=t[r];o.parent&&o.parent.isBone&&(Ih.multiplyMatrices(kh,o.matrixWorld),Dh.setFromMatrixPosition(Ih),i.setXYZ(a,Dh.x,Dh.y,Dh.z),Ih.multiplyMatrices(kh,o.parent.matrixWorld),Dh.setFromMatrixPosition(Ih),i.setXYZ(a+1,Dh.x,Dh.y,Dh.z),a+=2)}n.getAttribute("position").needsUpdate=!0,I(u,"updateMatrixWorld",this,3)([e])}}])}();var Lh=function(){function i(e,t,n){return ue(this,i),(t=le(this,i,[new Qu(t,4,2),new R({wireframe:!0,fog:!1,toneMapped:!1})])).light=e,t.light.updateMatrixWorld(),t.color=n,t.type="PointLightHelper",t.matrix=t.light.matrixWorld,t.matrixAutoUpdate=!1,t.update(),t}return v(i,Q),A(i,[{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose()}},{key:"update",value:function(){void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}])}(),Fh=new Oe,Oh=new Se,Uh=new Se,Nh=function(){function r(e,t,n){ue(this,r),(i=le(this,r)).light=e,i.light.updateMatrixWorld(),i.matrix=e.matrixWorld,i.matrixAutoUpdate=!1,i.color=n;var i,e=new Lu(t),n=(e.rotateY(.5*Math.PI),i.material=new R({wireframe:!0,fog:!1,toneMapped:!1}),void 0===i.color&&(i.material.vertexColors=!0),e.getAttribute("position")),t=new Float32Array(3*n.count);return e.setAttribute("color",new H(t,3)),i.add(new Q(e,i.material)),i.update(),i}return v(r,Z),A(r,[{key:"dispose",value:function(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}},{key:"update",value:function(){var e=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var t=e.geometry.getAttribute("color");Oh.copy(this.light.color),Uh.copy(this.light.groundColor);for(var n=0,i=t.count;n<i;n++){var r=n<i/2?Oh:Uh;t.setXYZ(n,r.r,r.g,r.b)}t.needsUpdate=!0}e.lookAt(Fh.setFromMatrixPosition(this.light.matrixWorld).negate())}}])}(),zh=function(){function f(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:10,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:10,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:4473924,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8947848,r=(ue(this,f),n=new Se(n),i=new Se(i),t/2),a=e/t,o=e/2,s=[],l=[],u=0,c=0,d=-o;u<=t;u++,d+=a){s.push(-o,0,d,o,0,d),s.push(d,0,-o,d,0,o);var h=u===r?n:i;h.toArray(l,c),c+=3,h.toArray(l,c),c+=3,h.toArray(l,c),c+=3,h.toArray(l,c),c+=3}var e=new V,p=(e.setAttribute("position",new ee(s,3)),e.setAttribute("color",new ee(l,3)),new wl({vertexColors:!0,toneMapped:!1}));return(e=le(this,f,[e,p])).type="GridHelper",e}return v(f,_l),A(f)}(),Gh=function(){function w(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:10,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:64,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:4473924,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:8947848,o=(ue(this,w),r=new Se(r),a=new Se(a),[]),s=[],l=0;l<=t;l++){var u=l/t*(2*Math.PI),c=Math.sin(u)*e,u=Math.cos(u)*e,c=(o.push(0,0,0),o.push(c,0,u),1&l?r:a);s.push(c.r,c.g,c.b),s.push(c.r,c.g,c.b)}for(var d=0;d<=n;d++)for(var h=1&d?r:a,p=e-e/n*d,f=0;f<i;f++){var m=f/i*(2*Math.PI),v=Math.sin(m)*p,g=Math.cos(m)*p;o.push(v,0,g),s.push(h.r,h.g,h.b),m=(f+1)/i*(2*Math.PI),v=Math.sin(m)*p,g=Math.cos(m)*p,o.push(v,0,g),s.push(h.r,h.g,h.b)}var A=new V,y=(A.setAttribute("position",new ee(o,3)),A.setAttribute("color",new ee(s,3)),new wl({vertexColors:!0,toneMapped:!1}));return(A=le(this,w,[A,y])).type="PolarGridHelper",A}return v(w,_l),A(w)}(),Hh=new Oe,Vh=new Oe,Qh=new Oe,jh=function(){function r(e,t,n){ue(this,r),(i=le(this,r)).light=e,i.light.updateMatrixWorld(),i.matrix=e.matrixWorld,i.matrixAutoUpdate=!1,i.color=n,void 0===t&&(t=1);var i,e=new V,n=(e.setAttribute("position",new ee([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3)),new wl({fog:!1,toneMapped:!1}));return i.lightPlane=new Ml(e,n),i.add(i.lightPlane),(e=new V).setAttribute("position",new ee([0,0,0,0,0,1],3)),i.targetLine=new Ml(e,n),i.add(i.targetLine),i.update(),i}return v(r,Z),A(r,[{key:"dispose",value:function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}},{key:"update",value:function(){Hh.setFromMatrixPosition(this.light.matrixWorld),Vh.setFromMatrixPosition(this.light.target.matrixWorld),Qh.subVectors(Vh,Hh),this.lightPlane.lookAt(Vh),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Vh),this.targetLine.scale.z=Qh.length()}}])}(),Wh=new Oe,Jh=new Aa,qh=function(){function p(e){ue(this,p);var t=new V,n=new wl({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={},o=new Se(16755200),s=new Se(16711680),l=new Se(43775),u=new Se(16777215),c=new Se(3355443);function d(e,t,n){h(e,n),h(t,n)}function h(e,t){i.push(0,0,0),r.push(t.r,t.g,t.b),void 0===a[e]&&(a[e]=[]),a[e].push(i.length/3-1)}return d("n1","n2",o),d("n2","n4",o),d("n4","n3",o),d("n3","n1",o),d("f1","f2",o),d("f2","f4",o),d("f4","f3",o),d("f3","f1",o),d("n1","f1",o),d("n2","f2",o),d("n3","f3",o),d("n4","f4",o),d("p","n1",s),d("p","n2",s),d("p","n3",s),d("p","n4",s),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l),d("c","t",u),d("p","c",c),d("cn1","cn2",c),d("cn3","cn4",c),d("cf1","cf2",c),d("cf3","cf4",c),t.setAttribute("position",new ee(i,3)),t.setAttribute("color",new ee(r,3)),(o=le(this,p,[t,n])).type="CameraHelper",o.camera=e,o.camera.updateProjectionMatrix&&o.camera.updateProjectionMatrix(),o.matrix=e.matrixWorld,o.matrixAutoUpdate=!1,o.pointMap=a,o.update(),o}return v(p,_l),A(p,[{key:"update",value:function(){var e=this.geometry,t=this.pointMap;Jh.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Yh("c",t,e,Jh,0,0,-1),Yh("t",t,e,Jh,0,0,1),Yh("n1",t,e,Jh,-1,-1,-1),Yh("n2",t,e,Jh,1,-1,-1),Yh("n3",t,e,Jh,-1,1,-1),Yh("n4",t,e,Jh,1,1,-1),Yh("f1",t,e,Jh,-1,-1,1),Yh("f2",t,e,Jh,1,-1,1),Yh("f3",t,e,Jh,-1,1,1),Yh("f4",t,e,Jh,1,1,1),Yh("u1",t,e,Jh,.7,1.1,-1),Yh("u2",t,e,Jh,-.7,1.1,-1),Yh("u3",t,e,Jh,0,2,-1),Yh("cf1",t,e,Jh,-1,0,1),Yh("cf2",t,e,Jh,1,0,1),Yh("cf3",t,e,Jh,0,-1,1),Yh("cf4",t,e,Jh,0,1,1),Yh("cn1",t,e,Jh,-1,0,-1),Yh("cn2",t,e,Jh,1,0,-1),Yh("cn3",t,e,Jh,0,-1,-1),Yh("cn4",t,e,Jh,0,1,-1),e.getAttribute("position").needsUpdate=!0}}])}();function Yh(e,t,n,i,r,a,o){Wh.set(r,a,o).unproject(i);var s=t[e];if(void 0!==s)for(var l=n.getAttribute("position"),u=0,c=s.length;u<c;u++)l.setXYZ(s[u],Wh.x,Wh.y,Wh.z)}var Xh,Kh,Zh=new K,$h=function(){function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16776960,n=(ue(this,a),new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7])),i=new Float32Array(24),r=new V;return r.setIndex(new H(n,1)),r.setAttribute("position",new H(i,3)),(n=le(this,a,[r,new wl({color:t,toneMapped:!1})])).object=e,n.type="BoxHelper",n.matrixAutoUpdate=!1,n.update(),n}return v(a,_l),A(a,[{key:"update",value:function(e){var t,n,i;void 0!==e&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),void 0!==this.object&&Zh.setFromObject(this.object),Zh.isEmpty()||(e=Zh.min,t=Zh.max,(i=(n=this.geometry.attributes.position).array)[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=e.x,i[4]=t.y,i[5]=t.z,i[6]=e.x,i[7]=e.y,i[8]=t.z,i[9]=t.x,i[10]=e.y,i[11]=t.z,i[12]=t.x,i[13]=t.y,i[14]=e.z,i[15]=e.x,i[16]=t.y,i[17]=e.z,i[18]=e.x,i[19]=e.y,i[20]=e.z,i[21]=t.x,i[22]=e.y,i[23]=e.z,n.needsUpdate=!0,this.geometry.computeBoundingSphere())}},{key:"setFromObject",value:function(e){return this.object=e,this.update(),this}},{key:"copy",value:function(e){return _l.prototype.copy.call(this,e),this.object=e.object,this}}])}(),ep=function(){function r(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16776960,n=(ue(this,r),new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7])),i=new V;return i.setIndex(new H(n,1)),i.setAttribute("position",new ee([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),(n=le(this,r,[i,new wl({color:t,toneMapped:!1})])).box=e,n.type="Box3Helper",n.geometry.computeBoundingSphere(),n}return v(r,_l),A(r,[{key:"updateMatrixWorld",value:function(e){var t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),I(r,"updateMatrixWorld",this,3)([e]))}}])}(),tp=function(){function r(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:16776960,i=(ue(this,r),new V),e=(i.setAttribute("position",new ee([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,0,1,0,0,0],3)),i.computeBoundingSphere(),(i=le(this,r,[i,new wl({color:n,toneMapped:!1})])).type="PlaneHelper",i.plane=e,i.size=t,new V);return e.setAttribute("position",new ee([1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1],3)),e.computeBoundingSphere(),i.add(new Q(e,new R({color:n,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1}))),i}return v(r,Ml),A(r,[{key:"updateMatrixWorld",value:function(e){var t=-this.plane.constant;Math.abs(t)<1e-8&&(t=1e-8),this.scale.set(.5*this.size,.5*this.size,t),this.children[0].material.side=t<0?me:fe,this.lookAt(this.plane.normal),I(r,"updateMatrixWorld",this,3)([e])}}])}(),np=new Oe,ip=function(){function s(e,t,n,i,r,a){var o;return ue(this,s),(o=le(this,s)).type="ArrowHelper",void 0===e&&(e=new Oe(0,0,1)),void 0===t&&(t=new Oe(0,0,0)),void 0===n&&(n=1),void 0===i&&(i=16776960),void 0===r&&(r=.2*n),void 0===a&&(a=.2*r),void 0===Xh&&((Xh=new V).setAttribute("position",new ee([0,0,0,0,1,0],3)),(Kh=new Xl(0,.5,1,5,1)).translate(0,-.5,0)),o.position.copy(t),o.line=new Ml(Xh,new wl({color:i,toneMapped:!1})),o.line.matrixAutoUpdate=!1,o.add(o.line),o.cone=new Q(Kh,new R({color:i,toneMapped:!1})),o.cone.matrixAutoUpdate=!1,o.add(o.cone),o.setDirection(e),o.setLength(n,r,a),o}return v(s,Z),A(s,[{key:"setDirection",value:function(e){.99999<e.y?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(np.set(e.z,0,-e.x).normalize(),e=Math.acos(e.y),this.quaternion.setFromAxisAngle(np,e))}},{key:"setLength",value:function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}},{key:"setColor",value:function(e){this.line.material.color.set(e),this.cone.material.color.set(e)}},{key:"copy",value:function(e){return I(s,"copy",this,3)([e,!1]),this.line.copy(e.line),this.cone.copy(e.cone),this}}])}(),rp=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,e=(ue(this,n),[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e]),t=new V,e=(t.setAttribute("position",new ee(e,3)),t.setAttribute("color",new ee([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),new wl({vertexColors:!0,toneMapped:!1})),t=le(this,n,[t,e]);return t.type="AxesHelper",t}return v(n,_l),A(n)}(),ap=new Float32Array(1),op=new Int32Array(ap.buffer),sp={toHalfFloat:function(e){ap[0]=e;var e=op[0],t=e>>16&32768,n=e>>12&2047,i=e>>23&255;if(!(i<103)){if(142<i)return t=t|31744|((255==i?0:1)&&8388607&e);if(i<113)return t|=((n|=2048)>>114-i)+(n>>113-i&1);t=(t|(i-112<<10|n>>1))+(1&n)}return t}},lp=Math.pow(2,8),up=[.125,.215,.35,.446,.526,.582],cp=5+up.length,dp=Y(Y(Y(Y(Y(Y(Y({},Fn,0),On,1),3002,2),3004,3),3005,4),3006,5),3007,6),hp=new Ad,pp=bp(),fp=pp._lodPlanes,mp=pp._sizeLods,vp=pp._sigmas,gp=new Se,Ap=null,pp=(1+Math.sqrt(5))/2,yp=1/pp,wp=[new Oe(1,1,1),new Oe(-1,1,1),new Oe(1,1,-1),new Oe(-1,1,-1),new Oe(0,pp,yp),new Oe(0,pp,-yp),new Oe(yp,0,pp),new Oe(-yp,0,pp),new Oe(pp,yp,0),new Oe(-pp,yp,0)],pp=function(){return A(function e(t){var n,i;ue(this,e),this._renderer=t,this._pingPongRenderTarget=null,this._blurMaterial=(t=20,n=new Float32Array(t),i=new Oe(0,1,0),new ac({name:"SphericalGaussianBlur",defines:{n:t},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i},inputEncoding:{value:dp[Fn]},outputEncoding:{value:dp[Fn]}},vertexShader:Mp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t".concat(Sp(),"\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)},[{key:"fromScene",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:100,r=(Ap=this._renderer.getRenderTarget(),this._allocateTargets());return this._sceneToCubeUV(e,n,i,r),0<t&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}},{key:"fromEquirectangular",value:function(e){return this._fromTexture(e)}},{key:"fromCubemap",value:function(e){return this._fromTexture(e)}},{key:"compileCubemapShader",value:function(){null===this._cubemapShader&&(this._cubemapShader=Bp(),this._compileMaterial(this._cubemapShader))}},{key:"compileEquirectangularShader",value:function(){null===this._equirectShader&&(this._equirectShader=Cp(),this._compileMaterial(this._equirectShader))}},{key:"dispose",value:function(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(var e=0;e<fp.length;e++)fp[e].dispose()}},{key:"_cleanup",value:function(e){this._pingPongRenderTarget.dispose(),this._renderer.setRenderTarget(Ap),e.scissorTest=!1,Ep(e,0,0,e.width,e.height)}},{key:"_fromTexture",value:function(e){Ap=this._renderer.getRenderTarget();var t=this._allocateTargets(e);return this._textureToCubeUV(e,t),this._applyPMREM(t),this._cleanup(t),t}},{key:"_allocateTargets",value:function(e){var t={magFilter:ht,minFilter:ht,generateMipmaps:!1,type:At,format:Lt,encoding:void 0===(t=e)||t.type!==At||t.encoding!==Fn&&t.encoding!==On&&3007!==t.encoding?3002:e.encoding,depthBuffer:!1},n=xp(t);return n.depthBuffer=!e,this._pingPongRenderTarget=xp(t),n}},{key:"_compileMaterial",value:function(e){e=new Q(fp[0],e);this._renderer.compile(e,hp)}},{key:"_sceneToCubeUV",value:function(e,t,n,i){var r,a=new ya(90,1,t,n),o=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],l=this._renderer,t=l.outputEncoding,n=l.toneMapping,u=(l.getClearColor(gp),l.getClearAlpha()),c=(l.toneMapping=nt,l.outputEncoding=Fn,e.background);c&&c.isColor&&(c.convertSRGBToLinear(),r=Math.max(c.r,c.g,c.b),r=Math.min(Math.max(Math.ceil(Math.log2(r)),-128),127),c=c.multiplyScalar(Math.pow(2,-r)),l.setClearColor(c,(r+128)/255),e.background=null);for(var d=0;d<6;d++){var h=d%3;0==h?(a.up.set(0,o[d],0),a.lookAt(s[d],0,0)):1==h?(a.up.set(0,0,o[d]),a.lookAt(0,s[d],0)):(a.up.set(0,o[d],0),a.lookAt(0,0,s[d])),Ep(i,h*lp,2<d?lp:0,lp,lp),l.setRenderTarget(i),l.render(e,a)}l.toneMapping=n,l.outputEncoding=t,l.setClearColor(gp,u)}},{key:"_textureToCubeUV",value:function(e,t){var n=this._renderer,i=(e.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=Bp()):null==this._equirectShader&&(this._equirectShader=Cp()),e.isCubeTexture?this._cubemapShader:this._equirectShader),r=new Q(fp[0],i),i=i.uniforms;(i.envMap.value=e).isCubeTexture||i.texelSize.value.set(1/e.image.width,1/e.image.height),i.inputEncoding.value=dp[e.encoding],i.outputEncoding.value=dp[t.texture.encoding],Ep(t,0,0,3*lp,2*lp),n.setRenderTarget(t),n.render(r,hp)}},{key:"_applyPMREM",value:function(e){var t=this._renderer,n=t.autoClear;t.autoClear=!1;for(var i=1;i<cp;i++){var r=Math.sqrt(vp[i]*vp[i]-vp[i-1]*vp[i-1]);this._blur(e,i-1,i,r,wp[(i-1)%wp.length])}t.autoClear=n}},{key:"_blur",value:function(e,t,n,i,r){var a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}},{key:"_halfBlur",value:function(e,t,n,i,r,a,o){for(var s=this._renderer,l=this._blurMaterial,u=("latitudinal"!==a&&"longitudinal"!==a&&console.error("blur direction must be either latitudinal or longitudinal!"),new Q(fp[i],l)),l=l.uniforms,c=mp[n]-1,c=isFinite(r)?Math.PI/(2*c):2*Math.PI/39,d=r/c,h=isFinite(r)?1+Math.floor(3*d):20,p=(20<h&&console.warn("sigmaRadians, ".concat(r,", is too large and will clip, as it requested ").concat(h," samples when the maximum is set to ").concat(20)),[]),f=0,m=0;m<20;++m){var v=m/d,v=Math.exp(-v*v/2);p.push(v),0==m?f+=v:m<h&&(f+=2*v)}for(var g=0;g<p.length;g++)p[g]=p[g]/f;l.envMap.value=e.texture,l.samples.value=h,l.weights.value=p,l.latitudinal.value="latitudinal"===a,o&&(l.poleAxis.value=o),l.dTheta.value=c,l.mipInt.value=8-n,l.inputEncoding.value=dp[e.texture.encoding],l.outputEncoding.value=dp[e.texture.encoding];r=mp[i];Ep(t,3*Math.max(0,lp-2*r),(0===i?0:2*lp)+2*r*(4<i?i-8+4:0),3*r,2*r),s.setRenderTarget(t),s.render(u,hp)}}])}();function bp(){for(var e=[],t=[],n=[],i=8,r=0;r<cp;r++){for(var a=Math.pow(2,i),o=(t.push(a),1/a),o=(4<r?o=up[r-8+4-1]:0==r&&(o=0),n.push(o),1/(a-1)),a=-o/2,o=1+o/2,s=[a,a,o,a,o,o,a,a,o,o,a,o],l=new Float32Array(108),u=new Float32Array(72),c=new Float32Array(36),d=0;d<6;d++){var h=d%3*2/3-1,p=2<d?0:-1;l.set([h,p,0,h+2/3,p,0,h+2/3,1+p,0,h,p,0,h+2/3,1+p,0,h,1+p,0],18*d),u.set(s,12*d),c.set([d,d,d,d,d,d],6*d)}a=new V;a.setAttribute("position",new H(l,3)),a.setAttribute("uv",new H(u,2)),a.setAttribute("faceIndex",new H(c,1)),e.push(a),4<i&&i--}return{_lodPlanes:e,_sizeLods:t,_sigmas:n}}function xp(e){e=new ti(3*lp,3*lp,e);return e.texture.mapping=st,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function Ep(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function Cp(){return new ac({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:new Re(1,1)},inputEncoding:{value:dp[Fn]},outputEncoding:{value:dp[Fn]}},vertexShader:Mp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t".concat(Sp(),"\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})}function Bp(){return new ac({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:dp[Fn]},outputEncoding:{value:dp[Fn]}},vertexShader:Mp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t".concat(Sp(),"\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})}function Mp(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Sp(){return"\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include <encodings_pars_fragment>\n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t"}var Tp=2;function _p(e,t){return console.warn("THREE.PointCloud has been renamed to THREE.Points."),new Fl(e,t)}function Pp(e){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Xc.call(this,e),this.type="catmullrom",this.closed=!0}function Dp(e){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Xc.call(this,e),this.type="catmullrom"}function Ip(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),Xc.call(this,e),this.type="catmullrom"}Hc.create=function(e,t){return console.log("THREE.Curve.create() has been deprecated"),e.prototype=Object.create(Hc.prototype),(e.prototype.constructor=e).prototype.getPoint=t,e},Object.assign(ld.prototype,{createPointsGeometry:function(e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");e=this.getPoints(e);return this.createGeometry(e)},createSpacedPointsGeometry:function(e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");e=this.getSpacedPoints(e);return this.createGeometry(e)},createGeometry:function(e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var t=new Wl,n=0,i=e.length;n<i;n++){var r=e[n];t.vertices.push(new Oe(r.x,r.y,r.z||0))}return t}}),Object.assign(ud.prototype,{fromPoints:function(e){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(e)}}),Pp.prototype=Object.create(Xc.prototype),Dp.prototype=Object.create(Xc.prototype),Ip.prototype=Object.create(Xc.prototype),Object.assign(Ip.prototype,{initFromArray:function(){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},reparametrizeByArcLength:function(){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}}),zh.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")},Rh.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")},Object.assign(kc.prototype,{extractUrlBase:function(e){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),Md.extractUrlBase(e)}}),kc.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}},Object.assign(Bh.prototype,{center:function(e){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(e)},empty:function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(e){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},size:function(e){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(e)}}),Object.assign(K.prototype,{center:function(e){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(e)},empty:function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(e){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},isIntersectionSphere:function(e){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(e)},size:function(e){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(e)}}),Object.assign(bi.prototype,{empty:function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()}}),Ma.prototype.setFromMatrix=function(e){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(e)},Th.prototype.center=function(e){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(e)},Object.assign(Be,{random16:function(){return console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."),Math.random()},nearestPowerOfTwo:function(e){return console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo()."),Be.floorPowerOfTwo(e)},nextPowerOfTwo:function(e){return console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo()."),Be.ceilPowerOfTwo(e)}}),Object.assign(Yn.prototype,{flattenToArrayOffset:function(e,t){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(e,t)},multiplyVector3:function(e){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBufferAttribute:function(e){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},applyToVector3Array:function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")},getInverse:function(e){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert()}}),Object.assign(Me.prototype,{extractPosition:function(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},flattenToArrayOffset:function(e,t){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(e,t)},getPosition:function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),(new Oe).setFromMatrixColumn(this,3)},setRotationFromQuaternion:function(e){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(e){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector4:function(e){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},rotateAxis:function(e){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),e.transformDirection(this)},crossVector:function(e){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBufferAttribute:function(e){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},applyToVector3Array:function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(e,t,n,i,r,a){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(e,t,i,n,r,a)},getInverse:function(e){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert()}}),ir.prototype.isIntersectionLine=function(e){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(e)},Object.assign(ii.prototype,{multiplyVector3:function(e){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},inverse:function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()}}),Object.assign(_i.prototype,{isIntersectionBox:function(e){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},isIntersectionPlane:function(e){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(e)},isIntersectionSphere:function(e){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(e)}}),Object.assign(fr.prototype,{area:function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()},barycoordFromPoint:function(e,t){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(e,t)},midpoint:function(e){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(e)},normal:function(e){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(e)},plane:function(e){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(e)}}),Object.assign(fr,{barycoordFromPoint:function(e,t,n,i,r){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),fr.getBarycoord(e,t,n,i,r)},normal:function(e,t,n,i){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),fr.getNormal(e,t,n,i)}}),Object.assign(cd.prototype,{extractAllPoints:function(e){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(e)},extrude:function(e){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new Pu(this,e)},makeGeometry:function(e){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new Vu(this,e)}}),Object.assign(Re.prototype,{fromAttribute:function(e,t,n){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},distanceToManhattan:function(e){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(e)},lengthManhattan:function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Oe.prototype,{setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},applyProjection:function(e){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(e)},fromAttribute:function(e,t,n){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},distanceToManhattan:function(e){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(e)},lengthManhattan:function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(ei.prototype,{fromAttribute:function(e,t,n){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},lengthManhattan:function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Wl.prototype,{computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.assign(Z.prototype,{getChildByName:function(e){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(e)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},translate:function(e,t){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(t,e)},getWorldRotation:function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")},applyMatrix:function(e){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.defineProperties(Z.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(e){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=e}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}),Object.assign(Q.prototype,{setDrawMode:function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}),Object.defineProperties(Q.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),0},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}}),Object.defineProperties(rl.prototype,{objects:{get:function(){return console.warn("THREE.LOD: .objects has been renamed to .levels."),this.levels}}}),Object.defineProperty(fl.prototype,"useVertexTexture",{get:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")},set:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")}}),cl.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")},Object.defineProperty(Hc.prototype,"__arcLengthDivisions",{get:function(){return console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions},set:function(e){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions=e}}),ya.prototype.setLens=function(e,t){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),void 0!==t&&(this.filmGauge=t),this.setFocalLength(e)},Object.defineProperties(dd.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(e){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=e}},shadowCameraLeft:{set:function(e){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=e}},shadowCameraRight:{set:function(e){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=e}},shadowCameraTop:{set:function(e){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=e}},shadowCameraBottom:{set:function(e){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=e}},shadowCameraNear:{set:function(e){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=e}},shadowCameraFar:{set:function(e){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=e}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(e){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=e}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(e){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=e}},shadowMapHeight:{set:function(e){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=e}}}),Object.defineProperties(H.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===Hn},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(Hn)}}}),Object.assign(H.prototype,{setDynamic:function(e){return this.setUsage(!0===e?Hn:Gn),this},copyIndicesArray:function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},setArray:function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(V.prototype,{addIndex:function(e){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(e)},addAttribute:function(e,t){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),t&&t.isBufferAttribute||t&&t.isInterleavedBufferAttribute?"index"===e?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(t),this):this.setAttribute(e,t):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(e,new H(t,arguments[2])))},addDrawCall:function(e,t,n){void 0!==n&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(e,t)},clearDrawCalls:function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()},computeTangents:function(){console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")},computeOffsets:function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")},removeAttribute:function(e){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(e)},applyMatrix:function(e){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.defineProperties(V.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}}),Object.defineProperties(Sd.prototype,{maxInstancedCount:{get:function(){return console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount},set:function(e){console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount=e}}}),Object.defineProperties(bh.prototype,{linePrecision:{get:function(){return console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold},set:function(e){console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold=e}}}),Object.defineProperties(Os.prototype,{dynamic:{get:function(){return console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.usage===Hn},set:function(e){console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.setUsage(e)}}}),Object.assign(Os.prototype,{setDynamic:function(e){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(!0===e?Hn:Gn),this},setArray:function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(Tu.prototype,{getArrays:function(){console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")},addShapeList:function(){console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")},addShape:function(){console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")}}),Object.assign(Fs.prototype,{dispose:function(){console.error("THREE.Scene: .dispose() has been removed.")}}),Object.defineProperties(ch.prototype,{dynamic:{set:function(){console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")}},onUpdate:{value:function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this}}}),Object.defineProperties(Er.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new Se}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(e){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===e}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(e){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=e}}}),Object.defineProperties(lc.prototype,{metal:{get:function(){return console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead."),!1},set:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")}}}),Object.defineProperties(sc.prototype,{transparency:{get:function(){return console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission},set:function(e){console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission=e}}}),Object.defineProperties(ga.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(e){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=e}}}),Object.assign(Is.prototype,{clearTarget:function(e,t,n,i){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(e),this.clear(t,n,i)},animate:function(e){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(e)},getCurrentRenderTarget:function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()},getMaxAnisotropy:function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()},getPrecision:function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision},resetGLState:function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()},supportsFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")},supportsHalfFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")},supportsStandardDerivatives:function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")},supportsCompressedTextureS3TC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")},supportsCompressedTexturePVRTC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")},supportsBlendMinMax:function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")},supportsVertexTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures},supportsInstancedArrays:function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")},enableScissorTest:function(e){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(e)},initMaterial:function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},addPrePlugin:function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},addPostPlugin:function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},updateShadowMap:function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},setFaceCulling:function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")},allocTextureUnit:function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")},setTexture:function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")},setTexture2D:function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")},setTextureCube:function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")},getActiveMipMapLevel:function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()}}),Object.defineProperties(Is.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(e){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=e}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(e){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=e}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(e){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=!0===e?On:Fn}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}}}),Object.defineProperties(Es.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}}),Object.defineProperties(ti.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(e){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=e}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(e){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=e}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(e){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=e}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(e){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=e}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(e){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=e}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(e){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=e}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(e){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=e}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(e){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=e}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(e){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=e}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(e){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=e}}}),Object.defineProperties($d.prototype,{load:{value:function(e){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");var t=this;return(new zd).load(e,function(e){t.setBuffer(e)}),this}},startTime:{set:function(){console.warn("THREE.Audio: .startTime is now .play( delay ).")}}}),ah.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()},wa.prototype.updateCubeMap=function(e,t){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(e,t)},wa.prototype.clear=function(e,t,n,i){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(e,t,n,i)};yp={merge:function(e,t,n){var i;console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."),t.isMesh&&(t.matrixAutoUpdate&&t.updateMatrix(),i=t.matrix,t=t.geometry),e.merge(t,i,n)},center:function(e){return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),e.center()}};Xn.crossOrigin=void 0,Xn.loadTexture=function(e,t,n,i){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");var r=new Gc,r=(r.setCrossOrigin(this.crossOrigin),r.load(e,n,void 0,i));return t&&(r.mapping=t),r},Xn.loadTextureCube=function(e,t,n,i){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");var r=new Nc,r=(r.setCrossOrigin(this.crossOrigin),r.load(e,n,void 0,i));return t&&(r.mapping=t),r},Xn.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},Xn.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};var kp={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")}};"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"124"}}));var Rp=Object.freeze({__proto__:null,ACESFilmicToneMapping:4,AddEquation:Ee,AddOperation:2,AdditiveAnimationBlendMode:2501,AdditiveBlending:ye,AlphaFormat:Pt,AlwaysDepth:qe,AlwaysStencilFunc:519,AmbientLight:bd,AmbientLightProbe:Hd,AnimationClip:Tc,AnimationLoader:Fc,AnimationMixer:Ah,AnimationObjectGroup:vh,AnimationUtils:mc,ArcCurve:Qc,ArrayCamera:Ss,ArrowHelper:ip,Audio:$d,AudioAnalyser:ah,AudioContext:Nd,AudioListener:Zd,AudioLoader:zd,AxesHelper:rp,AxisHelper:function(e){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new rp(e)},BackSide:me,BasicDepthPacking:3200,BasicShadowMap:0,BinaryTextureLoader:function(e){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new zc(e)},Bone:dl,BooleanKeyframeTrack:bc,BoundingBoxHelper:function(e,t){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new $h(e,t)},Box2:Bh,Box3:K,Box3Helper:ep,BoxBufferGeometry:da,BoxGeometry:Jl,BoxHelper:$h,BufferAttribute:H,BufferGeometry:V,BufferGeometryLoader:_d,ByteType:yt,Cache:Pc,Camera:Aa,CameraHelper:qh,CanvasRenderer:function(){console.error("THREE.CanvasRenderer has been removed")},CanvasTexture:zl,CatmullRomCurve3:Xc,CineonToneMapping:3,CircleBufferGeometry:ql,CircleGeometry:Yl,ClampToEdgeWrapping:ct,Clock:Wd,ClosedSplineCurve3:Pp,Color:Se,ColorKeyframeTrack:xc,CompressedTexture:Nl,CompressedTextureLoader:Oc,ConeBufferGeometry:$l,ConeGeometry:Zl,CubeCamera:wa,CubeGeometry:Jl,CubeReflectionMapping:it,CubeRefractionMapping:rt,CubeTexture:ba,CubeTextureLoader:Nc,CubeUVReflectionMapping:st,CubeUVRefractionMapping:lt,CubicBezierCurve:ed,CubicBezierCurve3:td,CubicInterpolant:gc,CullFaceBack:ce,CullFaceFront:de,CullFaceFrontBack:3,CullFaceNone:se,Curve:Hc,CurvePath:ld,CustomBlending:xe,CustomToneMapping:5,CylinderBufferGeometry:Xl,CylinderGeometry:Kl,Cylindrical:dh,DataTexture:Ea,DataTexture2DArray:Wa,DataTexture3D:Ja,DataTextureLoader:zc,DataUtils:sp,DecrementStencilOp:7683,DecrementWrapStencilOp:34056,DefaultLoadingManager:Ic,DepthFormat:Ft,DepthStencilFormat:Ot,DepthTexture:Gl,DirectionalLight:wd,DirectionalLightHelper:jh,DiscreteInterpolant:yc,DodecahedronBufferGeometry:tu,DodecahedronGeometry:nu,DoubleSide:ve,DstAlphaFactor:He,DstColorFactor:Qe,DynamicBufferAttribute:function(e,t){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),new H(e,t).setUsage(Hn)},DynamicCopyUsage:35050,DynamicDrawUsage:Hn,DynamicReadUsage:35049,EdgesGeometry:su,EdgesHelper:function(e,t){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new _l(new su(e.geometry),new wl({color:void 0!==t?t:16777215}))},EllipseCurve:Vc,EqualDepth:Ke,EqualStencilFunc:514,EquirectangularReflectionMapping:at,EquirectangularRefractionMapping:ot,Euler:Oi,EventDispatcher:Qn,ExtrudeBufferGeometry:Tu,ExtrudeGeometry:Pu,Face3:br,Face4:function(e,t,n,i,r,a,o){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new br(e,t,n,r,a,o)},FaceColors:1,FileLoader:Lc,FlatShading:1,Float16BufferAttribute:kr,Float32Attribute:function(e,t){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new ee(e,t)},Float32BufferAttribute:ee,Float64Attribute:function(e,t){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new Rr(e,t)},Float64BufferAttribute:Rr,FloatType:Ct,Fog:Ls,FogExp2:Rs,Font:Od,FontLoader:Ud,FrontSide:fe,Frustum:Ma,GLBufferAttribute:wh,GLSL1:"100",GLSL3:Vn,GammaEncoding:3007,Geometry:Wl,GeometryUtils:yp,GreaterDepth:$e,GreaterEqualDepth:Ze,GreaterEqualStencilFunc:518,GreaterStencilFunc:516,GridHelper:zh,Group:Ts,HalfFloatType:Bt,HemisphereLight:hd,HemisphereLightHelper:Nh,HemisphereLightProbe:Gd,IcosahedronBufferGeometry:Du,IcosahedronGeometry:Iu,ImageBitmapLoader:Ld,ImageLoader:Uc,ImageUtils:Xn,ImmediateRenderObject:_h,IncrementStencilOp:7682,IncrementWrapStencilOp:34055,InstancedBufferAttribute:Td,InstancedBufferGeometry:Sd,InstancedInterleavedBuffer:yh,InstancedMesh:yl,Int16Attribute:function(e,t){return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),new _r(e,t)},Int16BufferAttribute:_r,Int32Attribute:function(e,t){return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),new Dr(e,t)},Int32BufferAttribute:Dr,Int8Attribute:function(e,t){return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),new Mr(e,t)},Int8BufferAttribute:Mr,IntType:xt,InterleavedBuffer:Os,InterleavedBufferAttribute:zs,Interpolant:vc,InterpolateDiscrete:Dn,InterpolateLinear:In,InterpolateSmooth:2302,InvertStencilOp:5386,JSONLoader:function(){console.error("THREE.JSONLoader has been removed.")},KeepStencilOp:7680,KeyframeTrack:wc,LOD:rl,LatheBufferGeometry:ku,LatheGeometry:Ru,Layers:zi,LensFlare:function(){console.error("THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js")},LessDepth:Ye,LessEqualDepth:Xe,LessEqualStencilFunc:515,LessStencilFunc:513,Light:dd,LightProbe:Cd,Line:Ml,Line3:Th,LineBasicMaterial:wl,LineCurve:nd,LineCurve3:id,LineDashedMaterial:pc,LineLoop:Pl,LinePieces:1,LineSegments:_l,LineStrip:0,LinearEncoding:Fn,LinearFilter:N,LinearInterpolant:Ac,LinearMipMapLinearFilter:gt,LinearMipMapNearestFilter:1007,LinearMipmapLinearFilter:vt,LinearMipmapNearestFilter:mt,LinearToneMapping:1,Loader:kc,LoaderUtils:Md,LoadingManager:Dc,LogLuvEncoding:3003,LoopOnce:2200,LoopPingPong:2202,LoopRepeat:2201,LuminanceAlphaFormat:Rt,LuminanceFormat:kt,MOUSE:oe,Material:Er,MaterialLoader:Bd,Math:Be,MathUtils:Be,Matrix3:Yn,Matrix4:Me,MaxEquation:Pe,Mesh:Q,MeshBasicMaterial:R,MeshDepthMaterial:ys,MeshDistanceMaterial:ws,MeshFaceMaterial:function(e){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),e},MeshLambertMaterial:dc,MeshMatcapMaterial:hc,MeshNormalMaterial:cc,MeshPhongMaterial:lc,MeshPhysicalMaterial:sc,MeshStandardMaterial:oc,MeshToonMaterial:uc,MinEquation:_e,MirroredRepeatWrapping:dt,MixOperation:1,MultiMaterial:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];return console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),e.isMultiMaterial=!0,(e.materials=e).clone=function(){return e.slice()},e},MultiplyBlending:be,MultiplyOperation:tt,NearestFilter:ht,NearestMipMapLinearFilter:1005,NearestMipMapNearestFilter:1004,NearestMipmapLinearFilter:ft,NearestMipmapNearestFilter:pt,NeverDepth:Je,NeverStencilFunc:512,NoBlending:ge,NoColors:0,NoToneMapping:nt,NormalAnimationBlendMode:2500,NormalBlending:Ae,NotEqualDepth:et,NotEqualStencilFunc:517,NumberKeyframeTrack:Ec,Object3D:Z,ObjectLoader:Dd,ObjectSpaceNormalMap:zn,OctahedronBufferGeometry:Lu,OctahedronGeometry:Fu,OneFactor:Ie,OneMinusDstAlphaFactor:Ve,OneMinusDstColorFactor:je,OneMinusSrcAlphaFactor:Ge,OneMinusSrcColorFactor:Ne,OrthographicCamera:Ad,PCFShadowMap:he,PCFSoftShadowMap:2,PMREMGenerator:pp,ParametricBufferGeometry:Ou,ParametricGeometry:Uu,Particle:function(e){return console.warn("THREE.Particle has been renamed to THREE.Sprite."),new el(e)},ParticleBasicMaterial:function(e){return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),new Dl(e)},ParticleSystem:function(e,t){return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),new Fl(e,t)},ParticleSystemMaterial:function(e){return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),new Dl(e)},Path:ud,PerspectiveCamera:ya,Plane:ir,PlaneBufferGeometry:_a,PlaneGeometry:Nu,PlaneHelper:tp,PointCloud:_p,PointCloudMaterial:function(e){return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),new Dl(e)},PointLight:gd,PointLightHelper:Lh,Points:Fl,PointsMaterial:Dl,PolarGridHelper:Gh,PolyhedronBufferGeometry:eu,PolyhedronGeometry:zu,PositionalAudio:rh,PropertyBinding:mh,PropertyMixer:oh,QuadraticBezierCurve:rd,QuadraticBezierCurve3:ad,Quaternion:ii,QuaternionKeyframeTrack:Bc,QuaternionLinearInterpolant:Cc,REVISION:"124",RGBADepthPacking:Un,RGBAFormat:It,RGBAIntegerFormat:Vt,RGBA_ASTC_10x10_Format:pn,RGBA_ASTC_10x5_Format:cn,RGBA_ASTC_10x6_Format:dn,RGBA_ASTC_10x8_Format:hn,RGBA_ASTC_12x10_Format:fn,RGBA_ASTC_12x12_Format:mn,RGBA_ASTC_4x4_Format:tn,RGBA_ASTC_5x4_Format:nn,RGBA_ASTC_5x5_Format:rn,RGBA_ASTC_6x5_Format:an,RGBA_ASTC_6x6_Format:on,RGBA_ASTC_8x5_Format:sn,RGBA_ASTC_8x6_Format:ln,RGBA_ASTC_8x8_Format:un,RGBA_BPTC_Format:vn,RGBA_ETC2_EAC_Format:en,RGBA_PVRTC_2BPPV1_Format:Kt,RGBA_PVRTC_4BPPV1_Format:Xt,RGBA_S3TC_DXT1_Format:jt,RGBA_S3TC_DXT3_Format:Wt,RGBA_S3TC_DXT5_Format:Jt,RGBDEncoding:3006,RGBEEncoding:3002,RGBEFormat:Lt,RGBFormat:Dt,RGBIntegerFormat:Ht,RGBM16Encoding:3005,RGBM7Encoding:3004,RGB_ETC1_Format:Zt,RGB_ETC2_Format:$t,RGB_PVRTC_2BPPV1_Format:Yt,RGB_PVRTC_4BPPV1_Format:qt,RGB_S3TC_DXT1_Format:Qt,RGFormat:zt,RGIntegerFormat:Gt,RawShaderMaterial:ac,Ray:_i,Raycaster:bh,RectAreaLight:xd,RedFormat:Ut,RedIntegerFormat:Nt,ReinhardToneMapping:2,RepeatWrapping:ut,ReplaceStencilOp:7681,ReverseSubtractEquation:Te,RingBufferGeometry:Gu,RingGeometry:t,SRGB8_ALPHA8_ASTC_10x10_Format:Tn,SRGB8_ALPHA8_ASTC_10x5_Format:Bn,SRGB8_ALPHA8_ASTC_10x6_Format:Mn,SRGB8_ALPHA8_ASTC_10x8_Format:Sn,SRGB8_ALPHA8_ASTC_12x10_Format:_n,SRGB8_ALPHA8_ASTC_12x12_Format:Pn,SRGB8_ALPHA8_ASTC_4x4_Format:gn,SRGB8_ALPHA8_ASTC_5x4_Format:An,SRGB8_ALPHA8_ASTC_5x5_Format:yn,SRGB8_ALPHA8_ASTC_6x5_Format:wn,SRGB8_ALPHA8_ASTC_6x6_Format:bn,SRGB8_ALPHA8_ASTC_8x5_Format:xn,SRGB8_ALPHA8_ASTC_8x6_Format:En,SRGB8_ALPHA8_ASTC_8x8_Format:Cn,Scene:Fs,SceneUtils:kp,ShaderChunk:Pa,ShaderLib:Da,ShaderMaterial:ga,ShadowMaterial:rc,Shape:cd,ShapeBufferGeometry:Hu,ShapeGeometry:Vu,ShapePath:Fd,ShapeUtils:Bu,ShortType:wt,Skeleton:fl,SkeletonHelper:Rh,SkinnedMesh:cl,SmoothShading:2,Sphere:bi,SphereBufferGeometry:Qu,SphereGeometry:ju,Spherical:sh,SphericalHarmonics3:Ed,Spline:Ip,SplineCurve:od,SplineCurve3:Dp,SpotLight:md,SpotLightHelper:uh,Sprite:el,SpriteMaterial:Gs,SrcAlphaFactor:ze,SrcAlphaSaturateFactor:We,SrcColorFactor:ke,StaticCopyUsage:35046,StaticDrawUsage:Gn,StaticReadUsage:35045,StereoCamera:jd,StreamCopyUsage:35042,StreamDrawUsage:35040,StreamReadUsage:35041,StringKeyframeTrack:Mc,SubtractEquation:Ce,SubtractiveBlending:we,TOUCH:{ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},TangentSpaceNormalMap:Nn,TetrahedronBufferGeometry:Wu,TetrahedronGeometry:Ju,TextBufferGeometry:qu,TextGeometry:Yu,Texture:Zn,TextureLoader:Gc,TorusBufferGeometry:Xu,TorusGeometry:Ku,TorusKnotBufferGeometry:Zu,TorusKnotGeometry:$u,Triangle:fr,TriangleFanDrawMode:2,TriangleStripDrawMode:1,TrianglesDrawMode:0,TubeBufferGeometry:ec,TubeGeometry:tc,UVMapping:300,Uint16Attribute:function(e,t){return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),new Pr(e,t)},Uint16BufferAttribute:Pr,Uint32Attribute:function(e,t){return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),new Ir(e,t)},Uint32BufferAttribute:Ir,Uint8Attribute:function(e,t){return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),new Sr(e,t)},Uint8BufferAttribute:Sr,Uint8ClampedAttribute:function(e,t){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),new Tr(e,t)},Uint8ClampedBufferAttribute:Tr,Uniform:ch,UniformsLib:D,UniformsUtils:fa,UnsignedByteType:At,UnsignedInt248Type:_t,UnsignedIntType:Et,UnsignedShort4444Type:Mt,UnsignedShort5551Type:St,UnsignedShort565Type:Tt,UnsignedShortType:bt,VSMShadowMap:pe,Vector2:Re,Vector3:Oe,Vector4:ei,VectorKeyframeTrack:Sc,Vertex:function(e,t,n){return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),new Oe(e,t,n)},VertexColors:Tp,VideoTexture:Ul,WebGL1Renderer:ks,WebGLCubeRenderTarget:xa,WebGLMultisampleRenderTarget:ni,WebGLRenderTarget:ti,WebGLRenderTargetCube:function(e,t,n){return console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),new xa(e,n)},WebGLRenderer:Is,WebGLUtils:Ms,WireframeGeometry:nc,WireframeHelper:function(e,t){return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),new _l(new nc(e.geometry),new wl({color:void 0!==t?t:16777215}))},WrapAroundEnding:Ln,XHRLoader:function(e){return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),new Lc(e)},ZeroCurvatureEnding:kn,ZeroFactor:De,ZeroSlopeEnding:Rn,ZeroStencilOp:0,sRGBEncoding:On}),Lp=[],Fp=[],Op=[],Up=.1,Np=function(t,e){var n;return"string"==typeof t||"number"==typeof t?n=Lp.find(function(e){return e.ids.includes(t)}):(n=Lp.find(function(e){return te.closeTo(e.x,t.x,Up)&&te.closeTo(e.y,t.y,Up)}))?n.addPoint(t.id):n=new zp(t.x,t.y,{record:!0,id:t.id},e),n||console.log("no point!"),n},zp=function(){function i(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return ue(this,i),e=le(this,i,[e,t]),n.record&&(e.id=n.id,null==e.id&&(e.id="add_"+Lp.length),e.ids=[e.id],Lp.push(e)),e.type=n.type||"",e.lines=[],e}return v(i,Re),A(i,[{key:"addPoint",value:function(e){this.ids.push(e)}},{key:"searchLineByFactor",value:function(i,r,t){var a,o=this,e=this.lines.filter(function(e){return e.searchTime<2});if(0!=e.length)return 1==e.length||1==(e=e.filter(function(e){return e!=t})).length?e[0]:(e.forEach(function(e){var t=e.getVector(),n=(e.points[1]==o&&t.negate(),te.getVec2Angle(i,t));new Oe(i.x,i.y,0).cross(new Oe(t.x,t.y,0)).z<0&&(n*=-1),(!a||"min"==r&&n<a.factor||"max"==r&&n>a.factor)&&(a={line:e,factor:n})}),a.line)}}])}(),Gp=0,Hp=function(){function a(t){var n=this;if(ue(this,a),t.points[0]!=t.points[1]){if(this.points=t.points,this.type=t.type||"line","line"==this.type){var e=Fp.find(function(e){return e.points.includes(t.points[0])&&e.points.includes(t.points[1])});if(e)return null!=t.id&&e.ids.push(t.id),e;this.id=null==t.id?"line"+Gp++:t.id,this.ids=[this.id],t.dontWriteToPoint||this.points.forEach(function(e){e.lines.push(n)}),t.isChild||Fp.push(this),this.searchTime=0}this.children=[],this.parents=[],this.match=[]}}return A(a,[{key:"getAngleInfo",value:function(){t=this.points,(e={}).angle=t[1].clone().sub(t[0]).angle(),te.closeTo(e.angle,2*Math.PI)?e.angle-=2*Math.PI:(e.angle>Math.PI||te.closeTo(e.angle,Math.PI))&&(e.angle-=Math.PI,e.reverse=!0);var e,t=e;this.angle=t.angle,this.reverse=t.reverse}},{key:"getIntersectWithLine",value:function(e,t){var n=this,i=e.points.find(function(e){return n.points.includes(e)});return i?{point:i,type:"joint"}:(i=te.isLineIntersect(e.points,this.points,!1,t))?{point:i,type:"intersect"}:void 0}},{key:"writeToPoint",value:function(){var t=this;this.points.forEach(function(e){e.lines.includes(t)||e.lines.push(t)})}},{key:"checkIfParent",value:function(t){return this==t||this.parents.find(function(e){return e.checkIfParent(t)})}},{key:"splitByPoint",value:function(e){var t,n=this,i=new a({points:[e,this.points[0]],dontWriteToPoint:!0,hasntsure:!0}),e=new a({points:[e,this.points[1]],dontWriteToPoint:!0,hasntsure:!0});if(i.points&&e.points){if(!(this.checkIfParent(i)||this.checkIfParent(e)||i.checkIfParent(this)||e.checkIfParent(this)))return(t=function(e){n.children.push(e),e.parents.push(n),Fp.includes(e)||Fp.push(e),e.writeToPoint()})(i),t(e),-1<(t=this.points[0].lines.indexOf(this))&&this.points[0].lines.splice(t,1),-1<(t=this.points[1].lines.indexOf(this))&&this.points[1].lines.splice(t,1),[i,e];console.warn("splitByPoint 发现parent和children一样")}else console.warn("splitByPoint 线有点相同")}},{key:"splitByPoints",value:function(n){var i=this,r=((n=n.map(function(e){return{dis:e.distanceTo(i.points[0]),point:e}})).sort(function(e,t){return e.dis-t.dis}),[]),e=(n.forEach(function(e,t){e=new a({points:[e.point,0==t?i.points[0]:n[t-1].point],group:i.group,dontWriteToPoint:!0,hasntsure:!0});r.push(e)}),new a({points:[n[n.length-1].point,this.points[1]],group:this.group,dontWriteToPoint:!0,hasntsure:!0}));r.push(e),r.find(function(e){return!e.points||i.checkIfParent(e)||e.checkIfParent(i)})?console.error("splitByPoints return"):(r.forEach(function(e){i.children.push(e),e.parents.push(i),Fp.includes(e)||Fp.push(e),e.writeToPoint(),e.writeToPoint()}),-1<(e=this.points[0].lines.indexOf(this))&&this.points[0].lines.splice(e,1),-1<(e=this.points[1].lines.indexOf(this))&&this.points[1].lines.splice(e,1))}},{key:"getAllSlices",value:function(){function t(e){0==e.children.length?n.push(e):e.children.forEach(t)}var n=[];return t(this),n}},{key:"getVector",value:function(){return this.points[1].clone().sub(this.points[0])}},{key:"getLength",value:function(){return this.points[0].distanceTo(this.points[1])}},{key:"getCenter",value:function(){return this.points[1].clone().add(this.points[0]).multiplyScalar(.5)}}])}(),Vp=function(t,n){var e=t.filter(function(e){return!n.includes(e)}),i=n.filter(function(e){return!t.includes(e)});return e.concat(i)};function Qp(t,n){return Fp.find(function(e){return e.points.includes(t)&&e.points.includes(n)})}function jp(e,t){if(e instanceof Jp&&(e=e.points),t instanceof Jp&&(t=t.points),e.length!=t.length)return!1;if(e.lines&&t.lines){if(0==Vp(e.lines,t.lines).length)return!0}else if(qp(e,t))return!0}var Wp=0,Jp=A(function e(t){ue(this,e),this.id=Wp++,this.type=t.type||"normal",this.points=t.points,this.lines=t.lines,Op.push(this),this.child=[],this.parent=[],this.smallNeibours=[];t=te.getArea(this.points);this.area=Math.abs(t),this.isClockwise=t<0}),qp=function(e,t){for(var n,i,r=[],a=0,o=e.length;a<o;a++)-1<t.indexOf(e[a])&&r.push(e[a]);for(var s=0,l=t.length;s<l;s++){var u=r.indexOf(t[s]);if(-1==u)return!1;if(0==s)i=u;else if(1==s){if((n=u-i)==l-1?n=-1:n==1-l&&(n=1),-1!=n&&1!=n)return!1}else if(u!=(i+n*s+l)%l)return!1}return{sameAxis:0<n}},Yp=function(e,t,n){if(0==t.children.length){if(te.ifPointAtLineBound(e,t.points,n))return t}else for(var i=0;i<t.children.length;i++){var r=Yp(e,t.children[i],n);if(r)return r}};function Xp(){var e,v=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(Lp=[],Fp=[],Op=[],Gp=Wp=0,v.points=v.points||[],v.lines=v.lines||[],(e=v).points.forEach(function(e){af.expandByPoint(new Re(e.x,e.y))}),Up=null!=e.precision?e.precision:(f=af.getSize(new Re),Be.clamp(Math.max(f.x,f.y)/70,.2,2)),e.points.forEach(function(e){return Np(e)}),e.lines.forEach(function(e){new Hp({points:[Np(e.p1),Np(e.p2)],id:e.id})}),!v.dontSliceLines)for(var t=Fp.length,u=function(e,t){if(e!=t){null==e.angle&&e.getAngleInfo(),null==t.angle&&t.getAngleInfo();var n,i=e.getIntersectWithLine(t,Up);if(i)"intersect"==i.type?(n=Np(i.point,"whenGetSliceLines"),r=Yp(n,e),a=Yp(n,t),r=(r=r||Yp(n,e,Up))||Yp(n,e,2*Up),a=(a=a||Yp(n,t,Up))||Yp(n,t,2*Up),r&&a?r.points.find(function(e){return e==n})&&a.points.find(function(e){return e==n})||(r.points.find(function(e){return e==n})?a:a.points.find(function(e){return e==n})?r:(r.splitByPoint(n),a)).splitByPoint(n):(console.warn("atWhichChildLine仍旧找不到 :"+e.id+","+t.id+", pointId: "+n.id),r||console.warn("找不到line1"),a||console.warn("找不到line2"))):(n=i.point,te.closeTo(e.angle,t.angle)&&(o=e.getAllSlices(),s=t.getAllSlices(),1<o.length||1<s.length?o.forEach(function(t){s.forEach(function(e){u(t,e)})}):(r=e.points.find(function(e){return e!=n}),a=t.points.find(function(e){return e!=n}),te.ifPointAtLineBound(r,t.points)?t.splitByPoint(r):te.ifPointAtLineBound(a,e.points)&&e.splitByPoint(a))));else if(te.closeTo(e.angle,t.angle)){var i=e.getVector(),r=e.points[0].clone().sub(t.points[0]),a=te.getVec2Cos(i,r);if(te.closeTo(a,-1,1e-4)||te.closeTo(a,1,1e-4)){var o=e.getAllSlices(),s=t.getAllSlices();if(1<o.length||1<s.length)o.forEach(function(t){s.forEach(function(e){u(t,e)})});else{i=e.points[0],r=e.reverse==t.reverse?t.points[0]:t.points[1],a=e.points[1],o=e.reverse==t.reverse?t.points[1]:t.points[0],r=r.clone().sub(a),o=o.clone().sub(i);if(r.length()<o.length()){var l=i.clone().sub(a);if(1.57<=te.getVec2Angle(r,l))return}else{r=a.clone().sub(i);if(1.57<=te.getVec2Angle(o,r))return}l=function(e,t){var n=te.ifPointAtLineBound(e.points[0],t.points),i=te.ifPointAtLineBound(e.points[1],t.points);return n&&i?(t.splitByPoints(e.points),!0):n||i?(i=n?e.points[0]:e.points[1],n=n?e.points[1]:e.points[0],n=t.points[0].distanceTo(n)<t.points[1].distanceTo(n)?t.points[0]:t.points[1],e.splitByPoint(n),t.splitByPoint(i),!0):void 0};l(e,t)||l(t,e)}}}}},n=0;n<t;n++)for(var i=Fp[n],r=n+1;r<t;r++){var a=Fp[r];u(i,a)}for(var g=function(t,e,n,i){if(l=n.includes("big")?e?(l=e.points[e.points.length-1],r=t.clone().sub(l),t.searchLineByFactor(r,"min",Qp(t,l))):(r=n.includes("Left")?new Re(1,0):new Re(-1,0),t.searchLineByFactor(r,"min")):e?(l=e.points[e.points.length-1],r=t.clone().sub(l),t.searchLineByFactor(r,"max",Qp(t,l))):(r=new Re(1,0),t.searchLineByFactor(r,"min"))){l.searchTime++,i.includes(l)||i.push(l);var r=l.points.find(function(e){return t!=e}),a=e?e.points.concat([t]):[t],e=e?e.lines.concat([l]):[l];if(r!=a[0])return g(r,{lines:e,points:a},n,i);var o=a,s=e,l=n;if(!v.onlyGetOutRing||"small"!=l){if("small"!=l&&!v.onlyGetOutRing)return o;for(var u=[];o.length;){for(var c=[],d=!1,h=0;h<o.length;h++){if(c.includes(o[h])){var p=c.indexOf(o[h]),f=o.slice(p,h),m=s.slice(p,h);o.splice(p,h-p),s.splice(p,h-p),2<f.length&&(Op.find(function(e){return jp(f,e)})||u.push(new Jp({points:f,lines:m}))),d=!0;break}c.push(o[h]),d=!1}if(!d){2<o.length&&(Op.find(function(e){return jp(o,e)})||u.push(new Jp({points:o,lines:s})));break}}"small"!=l&&u.forEach(function(e){return e.isOutRing=!0})}}};;){var o=[],s=null;if(Lp.forEach(function(e){e.lines.find(function(e){return e.searchTime<2})&&(!s||e.x<s.x)&&(s=e)}),!s)break;g(s,null,"bigLeft",o);for(o=o.filter(function(e){return e.searchTime<2});0<o.length&&!function(){var t=[];if(o.forEach(function(e){return e.points.forEach(function(e){t.includes(e)||t.push(e)})}),s=null,t.forEach(function(e){e.lines.find(function(e){return e.searchTime<2})&&(!s||e.x<s.x)&&(s=e)}),!s)return 1;g(s,null,"small",o),o=o.filter(function(e){return e.searchTime<2})}(););}for(var l=Op.length,c=0;c<l;c++)for(var d=Op[c],h=c+1;h<l;h++){var p=Op[h];(function(e,t){return e.filter(function(e){return t.includes(e)})})(d.lines,p.lines).length&&(d.smallNeibours.push(p),p.smallNeibours.push(d))}Op.forEach(function(e){for(var t=0;t<l;t++){var n=Op[t];if(e!=n&&!e.smallNeibours.includes(n)){for(var i=void 0,r=0;r<e.points.length&&(i=te.isPointInArea(n.points,null,e.points[r]))&&i.atLine;r++);if(i){if(i.atLine){var a=te.getCenterOfGravityPoint(e.points);if(!te.isPointInArea(n.points,null,a))continue}n.child.push(e),e.parent.push(n)}}}});var f=Op.filter(function(e){return!e.isClockwise});return 0<f.length&&f.forEach(function(n){var e,i;0<n.smallNeibours.length&&Vp(n.lines,(e=n.smallNeibours.concat(n.child).map(function(e){return e.lines}),i=[],e.forEach(function(e){e.forEach(function(e){var t=i.indexOf(e);-1<t?i.splice(t,1):i.push(e)})}),i)).every(function(t){return n.child.find(function(e){return e.lines.includes(t)})})&&(console.log("%c删除非最小环 ring"+n.id,"color:#00f"),console.log(n),Op.splice(Op.indexOf(n),1),n.child.forEach(function(e){var t=e.parent.indexOf(n);-1<t&&e.parent.splice(t,1)}),n.parent.forEach(function(e){var t=e.child.indexOf(n);-1<t&&e.child.splice(t,1)}),n.smallNeibours.forEach(function(e){var t=e.smallNeibours.indexOf(n);-1<t&&e.smallNeibours.splice(t,1)}))}),Op.forEach(function(t){t.parent.length&&(t.closetParent=t.parent.find(function(e){return e.parent.length==t.parent.length-1}),t.closetParent.closetChilds||(t.closetParent.closetChilds=[]),t.closetParent.closetChilds.push(t))}),Op.map(function(e){return{id:e.id,points:e.points.map(function(e){return{id:e.ids[0],x:e.x,y:e.y}}),area:e.area,closetParent:e.closetParent&&e.closetParent.id,closetChilds:e.closetChilds&&e.closetChilds.map(function(e){return e.id})}})}var Kp,Zp,$p,ef,tf,nf,rf,af=new Bh,of={getEaseOut:function(r){var e=(r=Math.round(r))<2?(r=Math.PI/2,of.easeOutSine):function(e,t,n,i){return 2<r&&console.log(r),-n/Math.pow(-i,r)*Math.pow(e-i,r)+n};return{k:r,easeFun:e}},linearTween:function(e,t,n,i){return n*e/i+t},easeInQuad:function(e,t,n,i){return n*(e/=i)*e+t},easeOutQuad:function(e,t,n,i){return-n*(e/=i)*(e-2)+t},easeInOutQuad:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t},easeInCubic:function(e,t,n,i){return n*(e/=i)*e*e+t},easeOutCubic:function(e,t,n,i){return e/=i,n*(--e*e*e+1)+t},easeInOutCubic:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t},easeInQuart:function(e,t,n,i){return n*(e/=i)*e*e*e+t},easeOutQuart:function(e,t,n,i){return e/=i,-n*(--e*e*e*e-1)+t},easeInOutQuart:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t},easeInQuint:function(e,t,n,i){return n*(e/=i)*e*e*e*e+t},easeOutQuint:function(e,t,n,i){return e/=i,n*(--e*e*e*e*e+1)+t},easeInOutQuint:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t},easeInSine:function(e,t,n,i){return-n*Math.cos(e/i*(Math.PI/2))+n+t},easeOutSine:function(e,t,n,i){return n*Math.sin(e/i*(Math.PI/2))+t},easeInOutSine:function(e,t,n,i){return-n/2*(Math.cos(Math.PI*e/i)-1)+t},easeInExpo:function(e,t,n,i){return n*Math.pow(2,10*(e/i-1))+t},easeOutExpo:function(e,t,n,i){return n*(1-Math.pow(2,-10*e/i))+t},easeInOutExpo:function(e,t,n,i){return(e/=i/2)<1?n/2*Math.pow(2,10*(e-1))+t:(e--,n/2*(2-Math.pow(2,-10*e))+t)},easeInCirc:function(e,t,n,i){return e/=i,-n*(Math.sqrt(1-e*e)-1)+t},easeOutCirc:function(e,t,n,i){return e/=i,e--,n*Math.sqrt(1-e*e)+t},easeInOutCirc:function(e,t,n,i){return(e/=i/2)<1?-n/2*(Math.sqrt(1-e*e)-1)+t:(e-=2,n/2*(Math.sqrt(1-e*e)+1)+t)},easeInElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:1==(e/=i)?t+n:(a=a||.3*i,r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),-(o*Math.pow(2,10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a))+t)},easeOutElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:1==(e/=i)?t+n:(a=a||.3*i,r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),o*Math.pow(2,-10*e)*Math.sin((e*i-r)*(2*Math.PI)/a)+n+t)},easeInOutElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:2==(e/=i/2)?t+n:(a=a||i*(.3*1.5),r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),e<1?o*Math.pow(2,10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a)*-.5+t:o*Math.pow(2,-10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a)*.5+n+t)},easeInBack:function(e,t,n,i,r){return n*(e/=i)*e*(((r=void 0===r?1.70158:r)+1)*e-r)+t},easeOutBack:function(e,t,n,i,r){return n*((e=e/i-1)*e*(((r=void 0===r?1.70158:r)+1)*e+r)+1)+t},easeInOutBack:function(e,t,n,i,r){return void 0===r&&(r=1.70158),(e/=i/2)<1?n/2*(e*e*((1+(r*=1.525))*e-r))+t:n/2*((e-=2)*e*((1+(r*=1.525))*e+r)+2)+t},easeOutBounce:function(e,t,n,i){return(e/=i)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t},easeInBounce:function(e,t,n,i){return n-of.easeOutBounce(i-e,0,n,i)+t},easeInOutBounce:function(e,t,n,i){return e<i/2?.5*of.easeInBounce(2*e,0,n,i)+t:.5*of.easeOutBounce(x,2*e-i,0,n,i)+.5*n+t}},sf=function(n,i,r){var a=n.clone();return i=i.clone(),function(e,t){n.set(a.x*(1-e)+i.x*e,a.y*(1-e)+i.y*e,a.z*(1-e)+i.z*e),r&&r(n,e,t)}},lf=function(t,n,i){var r=t.clone();return function(e){t.copy(r).slerp(n,e),i&&i(t,e)}},uf=function(t,n,i,r){var a=t[n];return function(e){t[n]=a*(1-e)+i*e,r&&r(t[n])}},cf=function(a,o){var s=a.clone();return function(e){for(var t=a.elements,n=s.elements,i=o.elements,r=0;r<16;r++)t[r]=n[r]*(1-e)+i[r]*e}},df={globalDone:null,funcs:[],counter:0,uniqueID:0,start:function(e,t,n,i,r,a,o,s){var l=!(8<arguments.length&&void 0!==arguments[8])||arguments[8];return this.funcs.push({func:e,current:-(i=i||0)*Math.abs(t),duration:(1-Math.max(i,0))*Math.abs(t),done:n,easing:r||of.linearTween,cycling:t<0,running:!0,debug:i<0,name:a||"T"+this.counter,id:void 0===o?this.counter:o,paused:!1,cancelFun:s,updateCount:0,ignoreFirstFrame:l}),e(0,16),this.counter+=1,e},trigger:function(e){var t=void 0===e.delayRatio?0:e.delayRatio,n=e.func||function(){},i=void 0===e.duration?0:e.duration,r=(void 0!==e.cycling&&e.cycling&&(i=-Math.abs(i)),e.done||null),a=e.easing||of.linearTween,o=e.name||"R"+this.counter,e=void 0===e.id?this.counter:e.id;return this.start(n,i,r,t,a,o,e)},setTimeout:function(e,t,n){n=void 0===n?this.counter:n;return this.trigger({done:e,duration:void 0===t?0:t,name:"O"+this.counter,id:n})},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(n){this.funcs.forEach(function(e){var t;0==e.updateCount++&&e.ignoreFirstFrame||e.paused||(e.current+=1e3*n,e.current<0)||(e.current>=e.duration&&!e.cycling?(t=e.easing(1,0,1,1),e.func(t,1e3*n),e.done&&e.done(),e.running=!1):(t=e.easing(e.current%e.duration/e.duration,0,1,1),e.func(t,1e3*n)&&(e.done&&e.done(),e.running=!1)))});var e=this.funcs.length,t=(this.funcs=this.funcs.filter(function(e){return e.running}),this.funcs.length);0<e&&0===t&&this.globalDone&&(e=this.globalDone,this.globalDone=null,e())},adjustSpeed:function(e,t){for(var n=this.getById(e),i=0;i<n.length;i++){var r=n[i];r.duration/=t,r.current/=t}},getById:function(t){return this.funcs.filter(function(e){return t===e.id})},get:function(e){for(var t=0;t<this.funcs.length;t+=1)if(this.funcs[t].func===e)return this.funcs[t];return null},isRunning:function(e){e=this.get(e);return null!==e&&e.running},countActive:function(){for(var e=0,t=0;t<this.funcs.length;t+=1)e+=this.funcs[t].running;return e},listActive:function(){for(var e=[],t=0;t<this.funcs.length;t+=1)this.funcs[t].running&&e.push(this.funcs[t].name);return e},done:function(e){this.globalDone=e},cancelById:function(e,n){var i=void 0===e?0:e,r=[];this.funcs=this.funcs.filter(function(e){var t=e.id==i;return t&&n&&e.cancelFun&&r.push(e.cancelFun),!t}),r.forEach(function(e){e()})},cancel:function(t){this.funcs=this.funcs.filter(function(e){return e.func!==t})},getUniqueId:function(){return--this.uniqueID,this.uniqueID}},j={sortByScore:function(e,t,i){t=t?j.filterAll(e,t):e;return 0===t.length?[]:t.map(function(t){var e=i.map(function(e){return e(t)}),n=e.map(function(e){return null!=e.score?e.score:e}),e=e.map(function(e){return e.log});return{item:t,scores:n,logs:e,score:n.reduce(function(e,t){return e+t},0)}}).sort(function(e,t){return t.score-e.score})},filterAll:function(e,n){return e.filter(function(t){return n.every(function(e){return e(t)})})},find:function(e,t,n,i){var r;return i?(i=this.sortByScore(e,t,n))[0]&&i[0].item:0===(r=t?j.filterAll(e,t):e).length?null:(n&&n.forEach(function(e){r=j.stableSort(r,e)}),r[0])},stableSort:function(e,i){return e.map(function(e,t){return{value:e,index:t}}).sort(function(e,t){var n=i(e.value,t.value);return 0!==n?n:e.index-t.index}).map(function(e){return e.value})},average:function(e,t){if(0===e.length)return null;for(var n=0,i=0,r=0;r<e.length;r++)n+=t?e[r][t]:e[r],i++;return n/i},getMixedSet:function(e,t){return e.filter(function(e){return t.includes(e)})},getUnionSet:function(t,e){return t.concat(e.filter(function(e){return!t.includes(e)}))},getDifferenceSet:function(t,n){var e=t.filter(function(e){return!n.includes(e)}),i=n.filter(function(e){return!t.includes(e)});return e.concat(i)},getDifferenceSetMuti:function(e){var n=[];return e.forEach(function(e){e.forEach(function(e){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)})}),n},CloneJson:function(e){e=JSON.stringify(e);return JSON.parse(e)},CloneObject:function(t,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[],a=(a=3<arguments.length?arguments[3]:void 0)||function(){};if(!t||"number"==typeof t||"string"==typeof t||t.isObject3D||t instanceof Function||r.some(function(e){return t instanceof e})||a(t))return t;if(t instanceof Array)return t.map(function(e){return i.CloneObject(e,n,r,a)});if(t.clone instanceof Function)return t.clone();var e,o={};for(e in t)t[e]instanceof Object&&!n?o[e]=this.CloneObject(t[e],n,r,a):o[e]=t[e];return o},CloneClassObject:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.ignoreList,n=void 0===n?[]:n,t=t.simpleCopyList,t=void 0===t?[]:t,i=new e.constructor;return this.CopyClassObject(i,e,{ignoreList:n,simpleCopyList:t}),i},CopyClassObject:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},r=i.ignoreList,a=void 0===r?[]:r,r=i.simpleCopyList,o=void 0===r?[]:r;for(n in t){if(n in t.__proto__)break;a.includes(n)||(o.includes(n)?e[n]=t[n]:e[n]=this.CloneObject(t[n],!1,o))}},ifSame:function(n,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[];if(n==e)return!0;if(!n||!e)return!1;if(n.constructor!=e.constructor)return!1;if(i.some(function(e){return n instanceof e}))return n==e;if(n instanceof Array){if(n.length!=e.length)return!1;for(var r,t,a=e.slice(0),o=0;o<n.length;o++)if(t=function(t){if(null==(r=a.find(function(e){return j.ifSame(n[t],e,i)}))&&!a.includes(r)&&!n.includes(r))return{v:!1};var e=a.indexOf(r);a.splice(e,1)}(o))return t.v;return!0}if(n.equals instanceof Function)return n.equals(e);if("number"==typeof n||"string"==typeof n)return!(!isNaN(n)||!isNaN(e))||n==e;if("object"==O(n)){var s,l=Object.keys(n),u=Object.keys(e);if(!j.ifSame(l,u,i))return!1;for(s in n)if(!j.ifSame(n[s],e[s],i))return!1;return!0}console.log("isSame出现例外")},downloadFile:function(e,t,n){var i=document.createElementNS("http://www.w3.org/1999/xhtml","a"),e=(i.href=e,i.download=t,document.createEvent("MouseEvents"));e.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(e),n&&n()},replaceAll:function(e,t,n){t=new RegExp(t,"g");return e.replace(t,n)},dealURL:function(e){e=this.replaceAll(e,"\\+","%2B");return this.replaceAll(e,"/.//","/")},getNameFromURL:function(e){var t;return e?(t=function(e){return e.split("/").pop()},e instanceof Array?e.map(t):t(e)):""},intervalTool:{list:[],isWaiting:function(n,e,t){var i,r=this,a=this.list.find(function(e){return e.name==n});a?(a.func=e,a.delayTime=t,a.requestUpdate=!0):(i=e(),a={name:n,func:e,delayTime:t},this.list.push(a),setTimeout(function(){var e=r.list.indexOf(a),e=(r.list.splice(e,1),a),t=e.func,e=e.delayTime;(a.requestUpdate||i)&&r.isWaiting(n,t,e)},t))}},pushToGroupAuto:function(t,n,i,r){var a,o;i=i||function(){},(a=r?n.filter(function(e){return r(e,t)}):n.filter(function(e){return e.find(function(e){return t[0]==e||i(e,t[0])||t[1]==e||t[1]&&i(e,t[1])})})).length?(t.forEach(function(e){a[0].includes(e)||a[0].push(e)}),1<a.length&&(o=[],a.forEach(function(e){o=j.getUnionSet(o,e),n.splice(n.indexOf(e),1)}),n.push(o))):n.push(t)},getBestCount:(Kp={},function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:6,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1.2,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:10,o=5<arguments.length?arguments[5]:void 0,s=6<arguments.length?arguments[6]:void 0,l=performance.getEntriesByName("loop-start");return l.length?(l=performance.now()-l[l.length-1].startTime,t=Math.round(te.linearClamp(l,[r,a],[i,n])),s&&(Kp[e]||(Kp[e]=[]),0==t&&Kp[e].length>s-1&&!Kp[e].some(function(e){return 0<e})&&(t=1),Kp[e].push(t),Kp[e].length>s)&&Kp[e].splice(0,1),o&&e&&t&&console.log(e,t," ,dur:",l.toFixed(3))):t=i,t}),batchHandling:{lists:[],getSlice:function(e,n,t){var i=t.stopWhenAllUsed,r=t.min,a=t.max,o=t.durBound1,s=t.durBound2,l=t.useEquals,t=t.maxUseCount;if(0==n.length||!(t=null==t?j.getBestCount(e,void 0===r?5:r,void 0===a?100:a,o,s):t))return{list:[]};this.lists[e]||(this.lists[e]={list:[]});var u=this.lists[e].list.filter(function(t){return n.some(function(e){return l?t.item.equals(e):t.item==e})}),r=(this.lists[e].list=u,n.forEach(function(t){u.some(function(e){return l?e.item.equals(t):e.item==t})||u.push({item:t,count:0})}),u.filter(function(e){return 0==e.count})),c=[];return r.slice(0,t).forEach(function(e){c.push(e.item),e.count++}),r.length>t||(i||(a=Math.min(n.length,t),u.slice(0,a-c.length).forEach(function(e){c.push(e.item),e.count++})),u.forEach(function(e){return e.count--})),{list:c}}},getRootWindow:function(){var e=window;try{for(;e.parent!=e&&e.parent.Potree;)e=e.parent;if(window!=e)return e}catch(e){console.log("getRootWindow 跨域")}},watch:function(e,t,n){var i=n;Object.defineProperty(e,t,{get:function(){return i},set:function(e){console.warn("watch:",t,e),i=e}})},imgAddLabel:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},i=e instanceof Image?document.createElement("canvas"):e,r=i.getContext("2d"),a=n.bgMargin&&n.bgMargin.left||0,o=n.bgMargin&&n.bgMargin.right||0,s=n.bgMargin&&n.bgMargin.top||0,l=n.bgMargin&&n.bgMargin.bottom||0,o=(e instanceof Image&&(o=e.width+a+o,l=e.height+s+l,i.width=o,i.height=l,n.bgColor&&(r.fillStyle="rgba("+n.bgColor.r+","+n.bgColor.g+","+n.bgColor.b+","+n.bgColor.a+")",r.fillRect(0,0,o,l)),r.drawImage(e,a,s,e.width,e.height)),n.widthRatioToImg?e.width*n.widthRatioToImg:t.width),l=o*t.height/t.width,a=(null==n.leftRatioToImg&&null!=n.rightRatioToImg&&(n.leftRatioToImg=1-n.rightRatioToImg-(n.widthRatioToImg||t.width/e.width)),null==n.topRatioToImg&&null!=n.bottomRatioToImg&&(n.topRatioToImg=1-n.bottomRatioToImg-l/e.height),e.width*n.leftRatioToImg+a),e=e.height*n.topRatioToImg+s;return r.globalAlpha=null!=n.opacity?n.opacity:1,r.drawImage(t,a,e,o,l),n.outputCanvas?i:(s=i.toDataURL("image/png",n.compressRatio),r.clearRect(0,0,i.width,i.height),s)},changeShaderToWebgl2:function(e,t,n){var i,r,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:[];return Potree.settings.isWebgl2&&(i="ShaderMaterial"!=n&&(e.includes("gl_FragDepthEXT")||t.includes("gl_FragDepthEXT")),r=i&&"RawShaderMaterial"!=n,e=(n=function(e,t){var n=e;return i&&(n=(n=(n=r?"#version 300 es \n"+n:n).replaceAll("varying ","vs"==t?"out ":"in ")).replaceAll("attribute ","in "),n=(n=(n=(n="fs"==t?(n=n.replaceAll("gl_FragColor","fragColor")).replace("void main","out vec4 fragColor;\n void main"):n).replaceAll("gl_FragDepthEXT","gl_FragDepth")).replaceAll("texture2D","texture")).replaceAll("textureCube","texture")),n=(n=n.replace("#extension GL_EXT_frag_depth : enable","")).replaceAll("defined(GL_EXT_frag_depth) &&",""),a.forEach(function(e){var t=e.oldStr,e=e.newStr;n=n.replaceAll(t,e)}),n})(e,"vs"),t=n(t,"fs")),{vs:e,fs:t}}},hf=(Potree.Common=j,function(){function t(){ue(this,t),this.position=new Oe(0,0,0),this.yaw=Math.PI/4,this._pitch=-Math.PI/4,this.radius=1,this.maxPitch=Math.PI/2,this.minPitch=-Math.PI/2}return A(t,[{key:"clone",value:function(){var e=new t;return e.yaw=this.yaw,e._pitch=this.pitch,e.radius=this.radius,e.maxPitch=this.maxPitch,e.minPitch=this.minPitch,e}},{key:"pitch",get:function(){return this._pitch},set:function(e){this._pitch=Math.max(Math.min(e,this.maxPitch),this.minPitch)}},{key:"direction",get:function(){var e=new Oe(0,1,0);return e.applyAxisAngle(new Oe(1,0,0),this.pitch),e.applyAxisAngle(new Oe(0,0,1),this.yaw),e},set:function(e){var t;0===(e=e.clone().normalize()).x&&0===e.y?this.pitch=Math.PI/2*Math.sign(e.z):(t=Math.atan2(e.y,e.x)-Math.PI/2,e=Math.atan2(e.z,Math.sqrt(e.x*e.x+e.y*e.y)),this.yaw=t,this.pitch=e)}},{key:"lookAt",value:function(e){1===arguments.length?t=(new Oe).subVectors(e,this.position):3===arguments.length&&(t=(new Oe).subVectors(ie(Oe,Array.prototype.slice.call(arguments)),this.position));var e=t.length(),t=t.normalize();this.radius=e,this.direction=t}},{key:"getPivot",value:function(){return(new Oe).addVectors(this.position,this.direction.multiplyScalar(this.radius))}},{key:"getSide",value:function(){var e=new Oe(1,0,0);return e.applyAxisAngle(new Oe(0,0,1),this.yaw),e}},{key:"pan",value:function(e,t){var n=new Oe(0,1,0),i=(n.applyAxisAngle(new Oe(1,0,0),this.pitch),n.applyAxisAngle(new Oe(0,0,1),this.yaw),this.getSide()),n=i.clone().cross(n),i=i.multiplyScalar(e).add(n.multiplyScalar(t));this.position=this.position.add(i)}},{key:"translate",value:function(e,t,n){var i=new Oe(0,1,0),r=(i.applyAxisAngle(new Oe(1,0,0),this.pitch),i.applyAxisAngle(new Oe(0,0,1),this.yaw),new Oe(1,0,0)),a=(r.applyAxisAngle(new Oe(0,0,1),this.yaw),r.clone().cross(i)),r=r.multiplyScalar(e).add(i.multiplyScalar(t)).add(a.multiplyScalar(n));this.position=this.position.add(r)}},{key:"translateWorld",value:function(e,t,n){this.position.x+=e,this.position.y+=t,this.position.z+=n}},{key:"setView",value:function(e,t){var n,i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,o=null,s=(e instanceof Array?o=ie(Oe,Fe(e)):null!=e.x&&(o=e.clone()),null),l=(t instanceof Array?s=ie(Oe,Fe(t)):null!=t.x&&(s=t.clone()),this.position.clone()),u=this.getPivot(),e=TWEEN.Easing.Quartic.Out;0===r?(this.position.copy(o),this.lookAt(s)):(n={x:0},(t=new TWEEN.Tween(n).to({x:1},r)).easing(e),t.onUpdate(function(){var e=n.x,t=new Oe((1-e)*l.x+e*o.x,(1-e)*l.y+e*o.y,(1-e)*l.z+e*o.z),e=new Oe((1-e)*u.x+e*s.x,(1-e)*u.y+e*s.y,(1-e)*u.z+e*s.z);i.position.copy(t),i.lookAt(e)}),t.start(),t.onComplete(function(){a&&a()}))}}])}()),pf=0,ff=function(){function i(){var e;return ue(this,i),(e=le(this,i)).yaw=0,e._pitch=0,e.sid=pf++,e.LookTransition="LookTransition"+e.sid,e.FlyTransition="FlyTransition"+e.sid,e}return v(i,hf),A(i,[{key:"applyToCamera",value:function(e){e.position.copy(this.position),e.rotation.copy(this.rotation),e.updateMatrix(),e.updateMatrixWorld()}},{key:"rotation",get:function(){var e=new Oi;return e.order="ZXY",e.x=Math.PI/2+this.pitch,e.z=this.yaw,e},set:function(e){0!=e.y?this.direction=new Oe(0,0,-1).applyEuler(e):(this.pitch=e.x-Math.PI/2,this.yaw=e.z)}},{key:"quaternion",get:function(){return(new ii).setFromEuler(this.rotation)},set:function(e){this.rotation=(new Oi).setFromQuaternion(e)}},{key:"copy",value:function(e){j.CopyClassObject(this,e,{ignoreList:["_listeners"]})}},{key:"clone",value:function(){return j.CloneClassObject(this,{ignoreList:["_listeners"]})}},{key:"setCubeView",value:function(e){switch(e){case"front":this.yaw=0,this.pitch=0;break;case"back":this.yaw=Math.PI,this.pitch=0;break;case"left":this.yaw=-Math.PI/2,this.pitch=0;break;case"right":this.yaw=Math.PI/2,this.pitch=0;break;case"top":this.yaw=0,this.pitch=-Math.PI/2;break;case"bottom":this.yaw=-Math.PI,this.pitch=Math.PI/2}}},{key:"pan",value:function(e,t){this.translate(e,0,t)}},{key:"translate",value:function(e,t,n,i){var r=new Oe(0,1,0),i=(r.applyAxisAngle(new Oe(1,0,0),i?0:this.pitch),r.applyAxisAngle(new Oe(0,0,1),this.yaw),new Oe(1,0,0)),a=(i.applyAxisAngle(new Oe(0,0,1),this.yaw),i.clone().cross(r)),i=i.multiplyScalar(e).add(r.multiplyScalar(t)).add(a.multiplyScalar(n));this.position=this.position.add(i),te.closeTo(e,0,.01)&&te.closeTo(t,0,.01)&&te.closeTo(n,0,.01)||"showPanos"==Potree.settings.displayMode||this.cancelFlying("pos"),this.restrictPos()}},{key:"translateWorld",value:function(e,t,n){I(i,"translateWorld",this,3)([e,t,n]),te.closeTo(e,0,.01)&&te.closeTo(t,0,.01)&&te.closeTo(n,0,.01)||"showPanos"==Potree.settings.displayMode||this.cancelFlying("pos"),this.restrictPos()}},{key:"restrictPos",value:function(e){this.limitBound&&(e||this.position).clamp(this.limitBound.min,this.limitBound.max)}},{key:"isFlying",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"all",t=0<df.getById(this.FlyTransition).length,n=0<df.getById(this.LookTransition).length;return"pos"==e?t:"rotate"!=e&&t||n}},{key:"cancelFlying",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"all",t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];"pos"==e?df.cancelById(this.FlyTransition,t):("rotate"!=e&&df.cancelById(this.FlyTransition,t),df.cancelById(this.LookTransition,t))}},{key:"setView",value:function(){function e(){i||f(),n=!1}function t(){v?h.lookAt(v):a?h.rotation=(new Oi).setFromQuaternion(a):null!=o&&(h.yaw=o,h.pitch=l),n||f(),i=!1}var n,i,r,a,o,s,l,u,c,d,h=this,p=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},f=(this.cancelFlying(),function(){function e(){h.position.copy(m),p.callback&&p.callback(),h.dispatchEvent("flyingDone")}p.duration?setTimeout(e,1):e()}),m=(new Oe).copy(p.position),v=(this.position.clone(),p.target&&(new Oe).copy(p.target));this.restrictPos(m),null==p.endYaw&&(p.target?a=te.getQuaFromPosAim(m,v):p.quaternion&&(a=p.quaternion.clone()),a)&&te.closeTo(Math.abs(this.direction.z),1,1e-4)&&((c=this.clone()).quaternion=a,p.endYaw=c.yaw,p.endPitch=c.pitch),null!=p.endYaw&&(u=this.pitch,l=p.endPitch,s=this.yaw,o=p.endYaw,Math.abs(s-o)>Math.PI)&&(o<s?s-=2*Math.PI:o-=2*Math.PI),a&&(r=this.quaternion),p.duration?(p.onUpdate&&p.onUpdate(0),(d=!this.position.equals(m))&&(n=!0,df.start(sf(this.position,m,function(e,t,n){p.onUpdate&&p.onUpdate(t,n)}),p.duration,e,0,p.Easing?of[p.Easing]:of.easeInOutSine,null,this.FlyTransition,function(){v&&h.cancelFlying("rotate"),n=!1,p.cancelFun&&p.cancelFun()},p.ignoreFirstFrame)),!a&&null==o||(i=!0,df.start(function(e,t){var n;null!=o?(h.yaw=s*(1-e)+o*e,h.pitch=u*(1-e)+l*e):(n=(new ii).copy(r),lf(n,a)(e),h.quaternion=n),d||p.onUpdate&&p.onUpdate(e,t)},p.duration,t,0,p.Easing?of[p.Easing]:of.easeInOutSine,null,this.LookTransition,function(){i=!1,p.cancelFun&&p.cancelFun()},p.ignoreFirstFrame))):(this.position.copy(m),this.restrictPos(),i=n=!0,p.onUpdate&&p.onUpdate(1),e(),t())}},{key:"moveOrthoCamera",value:function(i,e,t,n){var r,a=this,o=e.camera||i.camera,s=o.zoom,l=e.endPosition,u=e.boundSize,c=e.endZoom,d=e.margin||{x:0,y:0},h=e.onUpdate;e.bound&&(l=l||e.bound.getCenter(new Oe),r=(new Me).makeRotationFromEuler(this.rotation).invert(),u=e.bound.clone().applyMatrix4(r).getSize(new Oe)),u&&0==u.x&&0==u.y&&u.set(1,1),this.setView(Object.assign(e,{position:l,duration:t,onUpdate:function(e,t){var n;(u||c)&&(u&&(n=u.x/u.y,c=o.aspect>n?(n=u.y,(i.resolution.y-d.y)/n):(n=u.x,(i.resolution.x-d.x)/n)),a.zoom=o.zoom=c*e+s*(1-e),o.updateProjectionMatrix(),h)&&h(e,t)},Easing:n}))}},{key:"zoomOrthoCamera",value:function(n,i,e,t,r){var a=this,o=n.zoom,s=new Oe(e.x,e.y,.5);df.start(function(e){var t=s.clone().unproject(n),e=(a.zoom=n.zoom=i*e+o*(1-e),n.updateProjectionMatrix(),s.clone().unproject(n)),e=(new Oe).subVectors(e,t);n.position.sub(e),a.position.copy(n.position),r&&r()},t,null,0,of.easeInOutSine,null,"zoomInView")}},{key:"tranCamera",value:function(e,n,t,i){var r=this,a=(e.camera=n.midCamera,n.midCamera.projectionMatrix.copy(n.startCamera.projectionMatrix),n.onUpdate),o=(n.onUpdate=function(e,t){cf(n.midCamera.projectionMatrix,n.endCamera.projectionMatrix)(e),a&&a(e,t)},n.callback);n.callback=function(){e.camera=n.endCamera,viewer.scene.measurements.forEach(function(e){Potree.Utils.updateVisible(e,"tranCamera",!0)}),r.applyToCamera(e.camera),viewer.dispatchEvent({type:"camera_changed",viewport:viewer.mainViewport,changeInfo:{}}),o&&o()},n.camera=n.endCamera,"OrthographicCamera"==n.camera.type?this.moveOrthoCamera(e,n,t,i):this.setView(Object.assign(n,{duration:t}))}}])}(),te={getBaseLog:function(e,t){return Math.log(t)/Math.log(e)},convertVector:{ZupToYup:function(e){return new Oe(e.x,e.z,-e.y)},YupToZup:function(e){return new Oe(e.x,-e.z,e.y)}},convertQuaternion:{ZupToYup:function(e){var t=new Oi(-Math.PI/2,0,0),t=(new ii).setFromEuler(t);return e.clone().premultiply(t)},YupToZup:function(e){var t=new Oi(Math.PI/2,0,0),t=(new ii).setFromEuler(t);return e.clone().premultiply(t)}},convertVisionQuaternion:function(e){return new ii(e.x,e.z,-e.y,e.w).multiply((new ii).setFromAxisAngle(new Oe(0,1,0),Be.degToRad(90)))},invertVisionQuaternion:function(e){e=e.clone().multiply((new ii).setFromAxisAngle(new Oe(0,1,0),Be.degToRad(-90)));return new ii(e.x,-e.z,e.y,e.w)},getVec2Angle:function(e,t){return Math.acos(Be.clamp(this.getVec2Cos(e,t),-1,1))},getVec2Cos:function(e,t){return e.dot(t)/e.length()/t.length()},getAngle:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"z",i=(e.isVector3||(e=new Oe(e.x,e.y,0),t=new Oe(t.x,t.y,0)),e.angleTo(t)),e=e.clone().cross(t);return"string"==typeof n?e[n]<0&&(i*=-1):e.dot(n)<0&&(i*=-1),i},closeTo:function(t,n){function i(e,t){return Math.abs(e-t)<r}var e,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1e-6;return"number"==typeof t?i(t,n):(e=function(e){return null==t[e]||i(t[e],n[e])})("x")&&e("y")&&e("z")&&e("w")},toPrecision:function(e,t){function n(e,t){return t=Math.pow(10,t),Math.round(e*t)/t}if(e instanceof Array){for(var i=0;i<e.length;i++)e[i]=n(e[i],t);return e}if(e instanceof Object){for(var i in e)e[i]=n(e[i],t);return e}return"number"==typeof e?n(e,t):e},isEmptyQuaternion:function(e){return 0===Math.abs(e.x)&&0===Math.abs(e.y)&&0===Math.abs(e.z)&&0===Math.abs(e.w)},projectPositionToCanvas:function(e,t,n){(n=n||new Oe).copy(e);var e=.5*$("#player").width(),i=.5*$("#player").height();return n.project(t),n.x=n.x*e+e,n.y=-n.y*i+i,n},handelPadResize:!1,getOffset:function(e,t,n){var i="left"==e?t.offsetLeft:t.offsetTop;for(n=n||$("body")[0];(t=t.offsetParent)&&t!=n;)i+="left"==e?t.offsetLeft:t.offsetTop;return i},constrainedTurn:function(e){e%=2*Math.PI;return e>Math.PI?e-2*Math.PI:e<-Math.PI?e+2*Math.PI:e},getFOVDotThreshold:function(e){return Math.cos(Be.degToRad(e/2))},transform2DForwardVectorByCubeFace:function(e,t,n,i){switch(e){case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_X:n.set(1,t.y,t.x);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:n.set(-1,t.y,-t.x);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:n.set(-t.x,1,-t.y);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:n.set(-t.x,-1,t.y);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:n.set(-t.x,t.y,1);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:n.set(t.x,t.y,-1)}i&&n.normalize()},getFootPoint:function(e,t,n,i){var r,a;return t.equals(n)?t.clone():(e=e.clone().sub(t),r=(a=t.clone().sub(n)).length(),e=e.dot(a)/r,a=t.clone().add(a.multiplyScalar(e/r)),i&&0<a.clone().sub(t).dot(a.clone().sub(n))?(a.distanceTo(t)<a.distanceTo(n)?t:n).clone():a)},getCenterOfGravityPoint:function(e){for(var t=0,n=0,i=0,r=1;r<=e.length;r++){var a=e[r%e.length].x,o=e[r%e.length].y,s=e[r-1].x,l=e[r-1].y,u=(a*l-o*s)/2;t+=u,n+=u*(a+s)/3,i+=u*(o+l)/3}return{x:n/=t,y:i/=t}},getBound:function(e){for(var t=new Bh,n=0,i=e.length;n<i;n++)t.expandByPoint(e[n]);return t},isPointInArea:function(e,t,n,i){var r=this,a=this.getBound(e);if(n.x<a.min.x||n.x>a.max.x||n.y<a.min.y||n.y>a.max.y)return!1;for(var o=!1,s=n.x,l=n.y,u=0,c=e.length-1;u<e.length;c=u++){var d=e[u].x,h=e[u].y,p=e[c].x,f=e[c].y;if((d-s)*(f-l)==(d-s)*(h-l)&&s>=Math.min(d,p)&&s<=Math.max(d,p)&&l>=Math.min(h,f)&&l<=Math.max(h,f))return{atLine:!0};l<h!=l<f&&s<(p-d)*(l-h)/(f-h)+d&&(o=!o)}return o&&t?!t.some(function(e){return r.isPointInArea(e,null,n,i)}):o},getArea:function(e){for(var t=e.length,n=0,i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return-.5*n},getVolume:function(e){},isInBetween:function(e,t,n,i){return e<=t&&t<=n||n<=t&&t<=e||this.closeTo(e,t,i)||this.closeTo(t,n,i)},ifPointAtLineBound:function(e,t,n){return te.isInBetween(t[0].x,e.x,t[1].x,n)&&te.isInBetween(t[0].y,e.y,t[1].y,n)},isLineIntersect:function(e,t,n,i){var r=e[1].y-e[0].y,a=e[0].x-e[1].x,o=r*e[0].x+a*e[0].y,s=t[1].y-t[0].y,l=t[0].x-t[1].x,u=s*t[0].x+l*t[0].y,c=r*l-s*a;return 0!=c&&(l=(l*o-a*u)/c,a=(r*u-s*o)/c,n||te.ifPointAtLineBound({x:l,y:a},e,i)&&te.ifPointAtLineBound({x:l,y:a},t,i)?{x:l,y:a}:void 0)},getNormal2d:function(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=n.vec?(r=n.vec.x,n.vec.y):(r=n.p1.x-n.p2.x,n.p1.y-n.p2.y);if(0!=n)t=-r*(e=1)/n;else{if(0==r)return console.log("两个点一样"),null;e=-n*(t=1)/r}var i=new Oe(e,0,t),r=new Oe(r,0,n);return 0<i.cross(r).y&&(e*=-1,t*=-1),new Re(e,t).normalize()},getQuaBetween2Vector:function(e,t,n){var i=e.angleTo(t),e=e.clone().cross(t).normalize();return 0==e.length()?(new ii).setFromAxisAngle(n,i):(new ii).setFromAxisAngle(e,i)},getQuaByAim:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe,n=new Oe(0,1,0);return(new ii).setFromUnitVectors(n,e.clone().sub(t).normalize())},getAimByQua:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Oe;return new Oe(0,0,-1).applyQuaternion(e).add(t)},getScaleForConstantSize:($p=new Oe,ef=new Oe,tf=new Oe,nf=new Oe,rf=new Oe,function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return Zp=t.width2d||(e="OrthographicCamera"==t.camera.type?200/t.camera.zoom:t.position.distanceTo(t.camera.position),t.maxSize-(t.maxSize-t.minSize)*Be.smoothstep(e,t.nearBound,t.farBound)),$p.copy(t.position).project(t.camera),ef.set(t.resolution.x/2,t.resolution.y/2,1).multiply($p),tf.set(Zp/2,0,0).add(ef),nf.set(2/t.resolution.x,2/t.resolution.y,1).multiply(tf),rf.copy(nf).unproject(t.camera),rf.distanceTo(t.position)}),getCrossPointAtRect:function(e,t,n,i,r,a){var o=(t.x-e.x)/(t.y-e.y),t=t.x>=e.x?n+r:r,n=t;return((r=1/o*(n-e.x)+e.y)<a||a+i<r)&&(n=o*((r=r<a?a:a+i)-e.y)+e.x),new Re(n,r)},getDirFromUV:function(e){var t=Math.cos(e.y*Math.PI),e=2*Math.PI*e.x-Math.PI,n=(Math.PI,-Math.PI/2<=e&&e<Math.PI/2?1:-1),e=Math.tan(e),i=Math.sqrt((1-t*t)/(1+e*e)),e=e*i;return i*n<0&&(i*=-1,e*=-1),this.convertVector.YupToZup(new Oe(e*=-1,t,i))},getUVfromDir:function(e){(e=this.convertVector.ZupToYup(e)).x*=-1;var t=Math.atan2(e.x,e.z)/(2*Math.PI)+.5,e=Math.acos(e.y)/Math.PI;return new Re(t,e)},getDirByLonLat:function(e,t){var n=new Oe,t=Be.degToRad(90-t),e=Be.degToRad(e);return n.x=Math.sin(t)*Math.cos(e),n.y=Math.cos(t),n.z=Math.sin(t)*Math.sin(e),n},projectPointAtPlane:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return(e=new ir).setFromCoplanarPoints.apply(e,Fe(t.facePoints)).projectPoint(t.point,new Oe)},getPolygonsMixedRings:function(e,t){var n=[],r=[],a=0;return e.forEach(function(e){return n.push.apply(n,Fe(e.map(function(e){return(new Re).copy(e)})))}),e.forEach(function(e,t){for(var n=e.length,i=0;i<n;)r.push({p1:i+a,p2:(i+1)%n+a}),i++;a+=n}),n.forEach(function(e,t){e.id=t}),Xp({points:n,lines:r,onlyGetOutRing:t}).filter(function(e){return null==e.closetParent})},getQuaFromPosAim:function(e,t){var n=new ff;return n.direction=(new Oe).subVectors(t,e),n.quaternion},getBoundByPoints:function(e,t){var n=new K,e=(e.forEach(function(e){n.expandByPoint(e)}),n.getCenter(new Oe));return t&&(t=(new K).setFromCenterAndSize(e,t),n.union(t)),{bounding:n,size:n.getSize(new Oe),center:e}},linearClamp:function(e,t,n){var i=t.length;if(e<=t[0])return n[0];if(e>=t[i-1])return n[i-1];for(var r=0;++r<i;)if(e<t[r]){var a=t[r-1],o=t[r],s=n[r-1];e=s+(n[r]-s)*(e-a)/(o-a);break}return e}};function mf(e,t){e=(e=window.navigator.userAgent.match(e))?e[1].split(t):[];return{major:parseInt(e[0])||0,minor:parseInt(e[1])||0,patch:parseInt(e[2])||0}}Potree.math=te;var vf={isFullscreen:function(){return document.fullscreenElement||document.mozFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},supportsFullscreen:function(){return document.fullscreenEnabled||document.mozFullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled},isPointerLocked:function(){return document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement},requestFullscreen:function(e,t){e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):e.msRequestFullscreen&&e.msRequestFullscreen(),t&&$(document).on("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",vf.requestPointerLock)},requestPointerLock:function(){var e;if(document.fullscreenElement)e=document.fullscreenElement();else if(document.mozFullscreenElement)e=document.mozFullscreenElement();else if(document.mozFullScreenElement)e=document.mozFullScreenElement();else{if(!document.webkitFullscreenElement)return;e=document.webkitFullscreenElement()}e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock||e.webkitRequestPointerLock,e.requestPointerLock(),$(document).off("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",this)},exitPointerLock:function(){document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock,document.exitPointerLock()},exitFullscreen:function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},details:function(){var e=navigator.userAgent.match("(Firefox|Chrome|Safari)/([\\d]+)");return e?{name:e[1],version:parseInt(e[2]),platform:navigator.platform}:{}},is:function(e){return this.details()&&this.details().name===e},inIframe:function(){return window.parent!==window},aspectRatio:function(e){e=(e=e||$("#player")).width()/e.height();return isFinite(e)?e:0},userAgent:function(){return window.navigator.userAgent},isMobile:function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},isLandscape:function(){return this.isMobile&&1<this.aspectRatio()},isSmallScreen:function(){return screen.width/window.devicePixelRatio<240},detectIE:function(){return-1!==window.navigator.userAgent.indexOf("MSIE ")||!!navigator.userAgent.match(/Trident.*rv\:11\./)},detectSafari:function(){return-1!==window.navigator.userAgent.indexOf("Safari")&&!this.detectOpera()&&!this.detectChrome()},detectFirefox:function(){return-1!==window.navigator.userAgent.indexOf("Firefox")},detectChrome:function(){return-1!==window.navigator.userAgent.indexOf("Chrome")&&!this.detectOpera()},detectOpera:function(){return-1!==window.navigator.userAgent.indexOf("OPR")},detectIOS:function(){return this.detectIPhone()||this.detectIPad()||this.detectIPod()},detectIPad:function(){var e=window.navigator.userAgent;return/iPad/.test(e)},detectIPod:function(){var e=window.navigator.userAgent;return/iPod/.test(e)},detectIPhone:function(){var e=window.navigator.userAgent;return/iPhone/.test(e)},detectAndroid:function(){return-1!==window.navigator.userAgent.indexOf("Android")},detectAndroidMobile:function(){var e=window.navigator.userAgent;return this.detectAndroid()&&-1!==e.indexOf("Mobile")},detectSamsungNative:function(){var e=window.navigator.userAgent;return-1!==e.indexOf("SM-G900H")||-1!==e.indexOf("GT-I9500")||-1!==e.indexOf("SM-N900")},detectSamsungS6:function(){return-1!==window.navigator.userAgent.indexOf("SM-G92")},detectHUAWEI5X:function(){return-1!==window.navigator.userAgent.indexOf("KIW-TL00H")},detectWebVR:function(){return!(!window.navigator.getVRDisplays||!window.VRDisplay)},getVRDisplay:function(){var t=$.Deferred();return this.detectWebVR()?(navigator.getVRDisplays().then(function(e){1<=e.length&&t.resolve(e[0]),t.reject(null)}),t):t.reject(null)},iosVersion:function(){if(this.detectIOS())return mf(/((?:\d+\_?){1,3}) like Mac OS/,"_");throw new DeviceMismatchException("Did not detect an iDevice")},androidVersion:function(){if(this.detectAndroid())return mf(/Android ((?:\d+\.?){1,3})/,".");throw new DeviceMismatchException("Did not detect an Android based device")},valueFromCookie:function(e,t){var e=new RegExp(e+"=([0-9a-f]+)(; ?|$)").exec(document.cookie);return e?(e=e[1],"boolean"==typeof t?"true"===e||"1"===e:"number"==typeof t?parseFloat(e):e):t},valueFromHash:function(e,t){var e=new RegExp("[#&?]"+e+"=([^#&?]*)").exec(window.location.href);return e?(e=e[1],"boolean"==typeof t?"true"===e||"1"===e:"number"==typeof t?parseFloat(e):window.decodeURIComponent(e)):t},getProjectNum:function(){var e;return window.__ProjectNum&&"__ProjectNum__"!=window.__ProjectNum?window.__ProjectNum:-1!=(e=-1!=(e=window.location.href.substring(window.location.href.indexOf("=")+1)).indexOf("&")?e.substring(0,e.indexOf("&")):e).indexOf("#")?e.substring(0,e.indexOf("#")):e},urlHasValue:function(e,t){var n=window.location.search.substr(1).split("&");if(t){for(var i=0;i<n.length;i++){var r=n[i].split("=");if(2===r.length&&r[0]===e)return r[1]}return""}for(var a=0;a<n.length;a++)if(n[a].split("=")[0]==e)return!0;return!1},urlQueryValue:function(e){return this.urlHasValue(e,!0)||""},urlIsHasHash:function(e){return window.location.hash.substr(1).replace("/?","").split("&").includes(e)},islongPhone:function(){var e=screen.height/screen.width;return this.isMobile()&&(1.99<e||e<.502512)},detectWeixin:function(){return"micromessenger"==window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i)},detectWeixinMiniProgram:function(){return window.navigator.userAgent.match("miniProgram")},detectEdge:function(){return-1<window.navigator.userAgent.indexOf("Edge")},detectApp:function(){return this.urlHasValue("app")},isTabHidden:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return document.hidden;for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return document[e[t]+"Hidden"];return!1}};function gf(e,t){return e.distance-t.distance}function Af(e,t,n,i,r){if((!r||e.visible)&&(e.layers.test(t.layers)&&e.raycast(t,n),!0===i))for(var a=e.children,o=0,s=a.length;o<s;o++)Af(a[o],t,n,!0,r)}Is.prototype.paramThreeToGL=function(e){var t,n=this.extensions,i=this.getContext();if(e===ut)return i.REPEAT;if(e===ct)return i.CLAMP_TO_EDGE;if(e===dt)return i.MIRRORED_REPEAT;if(e===ht)return i.NEAREST;if(1004===e)return i.NEAREST_MIPMAP_NEAREST;if(1005===e)return i.NEAREST_MIPMAP_LINEAR;if(e===N)return i.LINEAR;if(1007===e)return i.LINEAR_MIPMAP_NEAREST;if(e===gt)return i.LINEAR_MIPMAP_LINEAR;if(e===At)return i.UNSIGNED_BYTE;if(e===Mt)return i.UNSIGNED_SHORT_4_4_4_4;if(e===St)return i.UNSIGNED_SHORT_5_5_5_1;if(e===Tt)return i.UNSIGNED_SHORT_5_6_5;if(e===yt)return i.BYTE;if(e===wt)return i.SHORT;if(e===bt)return i.UNSIGNED_SHORT;if(e===xt)return i.INT;if(e===Et)return i.UNSIGNED_INT;if(e===Ct)return i.FLOAT;if(null!==(t=n.get("OES_texture_half_float"))&&e===Bt)return t.HALF_FLOAT_OES;if(e===Pt)return i.ALPHA;if(e===Dt)return i.RGB;if(e===It)return i.RGBA;if(e===kt)return i.LUMINANCE;if(e===Rt)return i.LUMINANCE_ALPHA;if(e===Ee)return i.FUNC_ADD;if(e===Ce)return i.FUNC_SUBTRACT;if(e===Te)return i.FUNC_REVERSE_SUBTRACT;if(e===De)return i.ZERO;if(e===Ie)return i.ONE;if(e===ke)return i.SRC_COLOR;if(e===Ne)return i.ONE_MINUS_SRC_COLOR;if(e===ze)return i.SRC_ALPHA;if(e===Ge)return i.ONE_MINUS_SRC_ALPHA;if(e===He)return i.DST_ALPHA;if(e===Ve)return i.ONE_MINUS_DST_ALPHA;if(e===Qe)return i.DST_COLOR;if(e===je)return i.ONE_MINUS_DST_COLOR;if(e===We)return i.SRC_ALPHA_SATURATE;if(null!==(t=n.get("WEBGL_compressed_texture_s3tc"))){if(e===Qt)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===jt)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===Wt)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===Jt)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(null!==(t=n.get("WEBGL_compressed_texture_pvrtc"))){if(e===qt)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===Yt)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===Xt)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===Kt)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(null!==(t=n.get("WEBGL_compressed_texture_etc1"))&&e===Zt)return t.COMPRESSED_RGB_ETC1_WEBGL;if(null!==(t=n.get("EXT_blend_minmax"))){if(e===_e)return t.MIN_EXT;if(e===Pe)return t.MAX_EXT}return 0},Qn.prototype.addEventListener=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},i=n.importance,i=void 0===i?0:i,n=n.once,r=(void 0===this._listeners&&(this._listeners={}),this._listeners);void 0===r[e]&&(r[e]=[]),r[e].some(function(e){return e.listener==t})||(r[e].push({listener:t,importance:i,once:n}),r[e]=r[e].sort(function(e,t){return t.importance-e.importance}))},Qn.prototype.hasEventListener=function(e,t){var n;return void 0!==this._listeners&&void 0!==(n=this._listeners)[e]&&n[e].some(function(e){return e.listener==t})},Qn.prototype.removeEventListener=function(e,t){var n;void 0!==this._listeners&&void 0!==(e=this._listeners[e])&&(n=e.find(function(e){return e.listener==t}))&&e.splice(e.indexOf(n),1)},Qn.prototype.removeEventListeners=function(e){this._listeners&&void 0!==this._listeners[e]&&delete this._listeners[e]},Qn.prototype.removeAllListeners=function(){this._listeners={}},Qn.prototype.dispatchEvent=function(e){if("string"==typeof e&&(e={type:e}),void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;var n,i=q(t.slice(0));try{for(i.s();!(n=i.n()).done;){var r=n.value,a=r.listener,o=(r.once&&this.removeEventListener(e.type,a),a.call(this,e));if(o&&o.stopContinue)break}}catch(e){i.e(e)}finally{i.f()}}}},Qn.prototype.traverse=function(e){var t=e(this);if(!t||!t.stopContinue){var n=this.children;if(n)for(var i=0,r=n.length;i<r;i++)n[i].traverse(e)}},Z.prototype.traverse=function(e){var t=e(this);if(!t||!t.stopContinue)for(var n=this.children,i=0,r=n.length;i<r;i++)n[i]&&n[i].traverse(e)},Er.prototype.setValues=function(e){if(void 0!==e)for(var t in e){var n,i=e[t];void 0===i?console.warn("THREE.Material: '"+t+"' parameter is undefined."):"shading"===t?(console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=i===FlatShading):(n=this[t])&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i}},bh.prototype.intersectObject=function(e,t,n,i){n=n||[];return Af(e,this,n,t,i),n.sort(gf),n},bh.prototype.intersectObjects=function(e,t,n,i){var r=n||[];if(!1===Array.isArray(e))console.warn("THREE.Raycaster.intersectObjects: objects is not an Array.");else{for(var a=0,o=e.length;a<o;a++)Af(e[a],this,r,t,i);r.sort(gf)}return r},Z.prototype.realVisible=function(){for(var e,t=!0,n=this;n;){if(!1===n.visible){t=!1;break}n=(e=n).parent}return t=!t||e instanceof Fs?t:!1};var yf,wf,bf,xf,Ef,Cf,Bf={},Mf=(Bf.RADIANS_PER_DEGREE=Math.PI/180,Bf.DEGREES_PER_RADIAN=180/Math.PI,Bf.Vector3=function(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0},Bf.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),0<arguments.length&&console.error("MathLight.Matrix4: the constructor no longer reads arguments. use .set() instead.")},Bf.Matrix4.prototype={identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},applyToVector3:function(e){var t=e.x,n=e.y,i=e.z,r=this.elements;return e.x=r[0]*t+r[4]*n+r[8]*i+r[12],e.y=r[1]*t+r[5]*n+r[9]*i+r[13],e.z=r[2]*t+r[6]*n+r[10]*i+r[14],this},getInverse:function(e,t){var n=this.elements,e=e.elements,i=e[0],r=e[1],a=e[2],o=e[3],s=e[4],l=e[5],u=e[6],c=e[7],d=e[8],h=e[9],p=e[10],f=e[11],m=e[12],v=e[13],g=e[14],e=e[15],A=h*g*c-v*p*c+v*u*f-l*g*f-h*u*e+l*p*e,y=m*p*c-d*g*c-m*u*f+s*g*f+d*u*e-s*p*e,w=d*v*c-m*h*c+m*l*f-s*v*f-d*l*e+s*h*e,b=m*h*u-d*v*u-m*l*p+s*v*p+d*l*g-s*h*g,x=i*A+r*y+a*w+o*b;if(0==x){var E="MathLight.Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(E);return console.warn(E),this.identity()}t=1/x;return n[0]=A*t,n[1]=(v*p*o-h*g*o-v*a*f+r*g*f+h*a*e-r*p*e)*t,n[2]=(l*g*o-v*u*o+v*a*c-r*g*c-l*a*e+r*u*e)*t,n[3]=(h*u*o-l*p*o-h*a*c+r*p*c+l*a*f-r*u*f)*t,n[4]=y*t,n[5]=(d*g*o-m*p*o+m*a*f-i*g*f-d*a*e+i*p*e)*t,n[6]=(m*u*o-s*g*o-m*a*c+i*g*c+s*a*e-i*u*e)*t,n[7]=(s*p*o-d*u*o+d*a*c-i*p*c-s*a*f+i*u*f)*t,n[8]=w*t,n[9]=(m*h*o-d*v*o-m*r*f+i*v*f+d*r*e-i*h*e)*t,n[10]=(s*v*o-m*l*o+m*r*c-i*v*c-s*r*e+i*l*e)*t,n[11]=(d*l*o-s*h*o-d*r*c+i*h*c+s*r*f-i*l*f)*t,n[12]=b*t,n[13]=(d*v*a-m*h*a+m*r*p-i*v*p-d*r*g+i*h*g)*t,n[14]=(m*l*a-s*v*a-m*r*u+i*v*u+s*r*g-i*l*g)*t,n[15]=(s*h*a-d*l*a+d*r*u-i*h*u-s*r*p+i*l*p)*t,this},makeRotationFromQuaternion:function(e){var t=this.elements,n=e.x,i=e.y,r=e.z,e=e.w,a=n+n,o=i+i,s=r+r,l=n*a,u=n*o,n=n*s,c=i*o,i=i*s,r=r*s,a=e*a,o=e*o,e=e*s;return t[0]=1-(c+r),t[4]=u-e,t[8]=n+o,t[1]=u+e,t[5]=1-(l+r),t[9]=i-a,t[2]=n-o,t[6]=i+a,t[10]=1-(l+c),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},Bf.Quaternion=function(e,t,n,i){this._x=e||0,this._y=t||0,this._z=n||0,this._w=void 0!==i?i:1},Bf.Quaternion.prototype={get x(){return this._x},set x(e){this._x=e},get y(){return this._y},set y(e){this._y=e},get z(){return this._z},set z(e){this._z=e},get w(){return this._w},set w(e){this._w=e},copy:function(e){this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w},inverse:function(){return this.conjugate().normalize()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(this._x=this._x*(e=1/e),this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this},setFromAxisAngle:function(e,t){var t=t/2,n=Math.sin(t);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(t),this},setFromUnitVectors:function(e,t){return void 0===yf&&(yf=new Bf.Vector3),(wf=Bf.dot(e,t)+1)<1e-6?(wf=0,Math.abs(e.x)>Math.abs(e.z)?Bf.setVector(yf,-e.y,e.x,0):Bf.setVector(yf,0,-e.z,e.y)):Bf.cross(e,t,yf),this._x=yf.x,this._y=yf.y,this._z=yf.z,this._w=wf,this.normalize()},multiply:function(e){return this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var n=e._x,i=e._y,r=e._z,e=e._w,a=t._x,o=t._y,s=t._z,t=t._w;return this._x=n*t+e*a+i*s-r*o,this._y=i*t+e*o+r*a-n*s,this._z=r*t+e*s+n*o-i*a,this._w=e*t-n*a-i*o-r*s,this}},Bf.convertWorkshopVector=function(e){return new Bf.Vector3(-e.x,e.y,e.z)},Bf.convertWorkshopQuaternion=function(e){return new Bf.Quaternion(-e.x,e.y,e.z,-e.w).multiply(new Bf.Quaternion(Math.sqrt(2)/2,Math.sqrt(2)/2,0,0))},Bf.convertWorkshopOrthoZoom=function(e){return-1===e?-1:e*($("#player").width()/$("#player").height())},Bf.convertWorkshopPanoramaQuaternion=function(e){return new Bf.Quaternion(e.x,-e.y,-e.z,e.w).normalize().multiply((new Bf.Quaternion).setFromAxisAngle(new Bf.Vector3(0,1,0),270*Bf.RADIANS_PER_DEGREE))},Bf.normalize=function(e){var t=e.x*e.x+e.y*e.y+e.z*e.z,t=Math.sqrt(t);e.x/=t,e.y/=t,e.z/=t},Bf.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},Bf.cross=function(e,t,n){var i=e.x,r=e.y,e=e.z;n.x=r*t.z-e*t.y,n.y=e*t.x-i*t.z,n.z=i*t.y-r*t.x},Bf.setVector=function(e,t,n,i){e.x=t,e.y=n,e.z=i},Bf.copyVector=function(e,t){t.x=e.x,t.y=e.y,t.z=e.z},Bf.addVector=function(e,t){e.x+=t.x,e.y+=t.y,e.z+=t.z},Bf.subVector=function(e,t){e.x-=t.x,e.y-=t.y,e.z-=t.z},Bf.applyQuaternionToVector=function(e,t){var n=t.x,i=t.y,r=t.z,a=e.x,o=e.y,s=e.z,e=e.w,l=e*n+o*r-s*i,u=e*i+s*n-a*r,c=e*r+a*i-o*n,n=-a*n-o*i-s*r;t.x=l*e+n*-a+u*-s-c*-o,t.y=u*e+n*-o+c*-a-l*-s,t.z=c*e+n*-s+l*-o-u*-a},{clampVFOV:function(e,t,n,i){return t<Mf.getHFOVFromVFOV(e,n,i)?Mf.getVFOVFromHFOV(t,n,i):e},getHFOVForCamera:function(e,t){return Mf.getHFOVByScreenPrecent(e.fov,e.aspect,t)},getHFOVByScreenPrecent:function(e,t,n){t=2*Math.atan(t*Math.tan(e*Bf.RADIANS_PER_DEGREE/2));return n?t:t*Bf.DEGREES_PER_RADIAN}}),Sf={config:{withCredentials:!(Bf.angleBetweenVectors=function(e,t){return Math.acos(Bf.dot(e,t))}),customHeaders:[{header:null,value:null}]},createXMLHttpRequest:function(){var e,t,n=new XMLHttpRequest;return this.config.customHeaders&&Array.isArray(this.config.customHeaders)&&0<this.config.customHeaders.length&&(e=n.open,t=this.config.customHeaders,n.open=function(){e.apply(this,[].slice.call(arguments)),t.forEach(function(e){e.header&&e.value&&n.setRequestHeader(e.header,e.value)})}),n}},Tf=function(){function r(e){ue(this,r),t=le(this,r);var t,n=new Zn,i=(n.minFilter=N,n.magFilter=N,new Gs({map:n,depthTest:!1,depthWrite:!1}));return t.texture=n,t.material=i,t.sprite=new el(t.material),t.add(t.sprite),t.borderThickness=4,t.fontface="Arial",t.fontsize=28,t.borderColor={r:0,g:0,b:0,a:1},t.backgroundColor={r:255,g:255,b:255,a:1},t.textColor={r:255,g:255,b:255,a:1},t.text="",t.setText(e),t}return v(r,Z),A(r,[{key:"setText",value:function(e){this.text!==e&&(this.text=e,this.update())}},{key:"setTextColor",value:function(e){this.textColor=e,this.update()}},{key:"setBorderColor",value:function(e){this.borderColor=e,this.update()}},{key:"setBackgroundColor",value:function(e){this.backgroundColor=e,this.update()}},{key:"update",value:function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var n=t.measureText(this.text).width,i=10+n+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,n=(t.canvas.width=i,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,n+this.borderThickness+10,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness+5,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness+5,this.fontsize+this.borderThickness),new Zn(e));n.minFilter=N,n.magFilter=N,n.needsUpdate=!0,this.sprite.material.map=n,this.texture=n,this.sprite.scale.set(.01*i,.01*r,1)}},{key:"roundRect",value:function(e,t,n,i,r,a){e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+i-a,n),e.quadraticCurveTo(t+i,n,t+i,n+a),e.lineTo(t+i,n+r-a),e.quadraticCurveTo(t+i,n+r,t+i-a,n+r),e.lineTo(t+a,n+r),e.quadraticCurveTo(t,n+r,t,n+r-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath(),e.fill(),e.stroke()}}])}(),_f=function(){function t(){var i,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,t),"Volume"===(i=le(this,t)).constructor.name&&console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."),i._clip=e.clip||!1,i._visible=!0,i.showVolumeLabel=!0,i._modifiable=e.modifiable||!0,i.label=new Tf("0"),i.label.setBorderColor({r:0,g:255,b:0,a:0}),i.label.setBackgroundColor({r:0,g:255,b:0,a:0}),i.label.material.depthTest=!1,i.label.material.depthWrite=!1,i.label.material.transparent=!0,i.label.position.y-=.5,i.add(i.label),i.label.updateMatrixWorld=function(){var e=new Oe;e.setFromMatrixPosition(i.matrixWorld),i.label.position.copy(e),i.label.updateMatrix(),i.label.matrixWorld.copy(i.label.matrix),i.label.matrixWorldNeedsUpdate=!1;for(var t=0,n=i.label.children.length;t<n;t++)i.label.children[t].updateMatrixWorld(!0)},i.addEventListener("select",function(e){}),i.addEventListener("deselect",function(e){}),i}return v(t,Z),A(t,[{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",object:this}))}},{key:"getVolume",value:function(){console.warn("override this in subclass")}},{key:"update",value:function(){}},{key:"raycast",value:function(e,t){}},{key:"clip",get:function(){return this._clip},set:function(e){this._clip!==e&&(this._clip=e,this.update(),this.dispatchEvent({type:"clip_changed",object:this}))}},{key:"modifieable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}])}(),Pf=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,r),(e=le(this,r,[e])).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="box_"+e.constructor.counter,new Jl(1,1,1)),n=(t.computeBoundingBox(),new Wl),i=Oe;return n.vertices.push(new i(-.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,-.5),new i(.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,-.5),new i(.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,-.5,.5),new i(.5,.5,.5),new i(.5,-.5,-.5),new i(.5,.5,-.5),new i(-.5,-.5,-.5),new i(-.5,.5,-.5)),e.material=new R({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.box=new Q(t,e.material),e.box.geometry.computeBoundingBox(),e.boundingBox=e.box.geometry.boundingBox,e.add(e.box),e.frame=new _l(n,new wl({color:0})),e.add(e.frame),e.update(),e}return v(r,_f),A(r,[{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new bi),this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=this.showVolumeLabel)}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)}}])}(),Df=function(){function x(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,x),(e=le(this,x,[e])).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="sphere_"+e.constructor.counter,new ju(1,32,32)),n=(t.computeBoundingBox(),e.material=new R({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.sphere=new Q(t,e.material),e.sphere.visible=!1,e.sphere.geometry.computeBoundingBox(),e.boundingBox=e.sphere.geometry.boundingBox,e.add(e.sphere),e.label.visible=!1,new Wl),i=0;i<8;i++)for(var r=i/8*Math.PI*2,a=Math.cos(r),o=Math.sin(r),s=0;s<=64;s++){var l=s/64*Math.PI*2,u=l+2*Math.PI/64,c=Math.sin(l),l=Math.cos(l),d=Math.sin(u),u=Math.cos(u),l=new Oe(a*l,o*l,c),c=(n.vertices.push(l),new Oe(a*u,o*u,d));n.vertices.push(c)}for(var h=0;h<=6;h++){var p=(1-(p=h/6))*(-Math.PI/2)+p*(Math.PI/2),f=Math.sin(p);console.log(p,f);for(var m=0;m<=64;m++){var v=m/64*Math.PI*2,g=v+2*Math.PI/64,A=Math.cos(v),v=Math.sin(v),y=Math.cos(g),g=Math.sin(g),w=Math.sqrt(1-f*f),A=new Oe(A*w,v*w,f),v=(n.vertices.push(A),new Oe(y*w,g*w,f));n.vertices.push(v)}}e.frame=new _l(n,new wl({color:0})),e.add(e.frame);var b=new R({wireframe:!0,color:0});return e.frame=new Q(t,b),e.update(),e}return v(x,_f),A(x,[{key:"update",value:function(){this.boundingBox=this.sphere.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new bi)}},{key:"raycast",value:function(e,t){var n=[];this.sphere.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return 4/3*Math.PI*this.scale.x*this.scale.y*this.scale.z}}])}(),If=function(){function t(){var e;return ue(this,t),(e=le(this,t)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="Profile_"+e.constructor.counter,e.points=[],e.spheres=[],e.edges=[],e.boxes=[],e.width=1,e.height=20,e._modifiable=!0,e.sphereGeometry=new ju(.4,10,10),e.color=new Se(16711680),e.lineColor=new Se(16711680),e}return v(t,Z),A(t,[{key:"createSphereMaterial",value:function(){return new dc({color:16711680,depthTest:!1,depthWrite:!1})}},{key:"getSegments",value:function(){for(var e=[],t=0;t<this.points.length-1;t++){var n=this.points[t].clone(),i=this.points[t+1].clone();e.push({start:n,end:i})}return e}},{key:"getSegmentMatrices",value:function(){var e,t=[],n=q(this.getSegments());try{for(n.s();!(e=n.n()).done;){var i=e.value,r=i.start,a=i.end,o=new Z,s=r.clone().setZ(0).distanceTo(a.clone().setZ(0)),l=(o.scale.set(s,1e4,this.width),o.up.set(0,0,1),(new Oe).addVectors(r,a).multiplyScalar(.5)),u=(new Oe).subVectors(a,r),c=new Oe(u.y,-u.x,0);o.position.set(0,0,0),o.lookAt(c),o.position.copy(l),o.updateMatrixWorld(),t.push(o.matrixWorld)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"addMarker",value:function(e){var t,n,i=this,r=(this.points.push(e),new Q(this.sphereGeometry,this.createSphereMaterial()));this.add(r),this.spheres.push(r),1<this.points.length&&((t=new Wl).vertices.push(new Oe,new Oe),t.colors.push(this.lineColor,this.lineColor,this.lineColor),(n=new wl({vertexColors:Tp,linewidth:2,transparent:!0,opacity:.4})).depthTest=!1,(t=new Ml(t,n)).visible=!1,this.add(t),this.edges.push(t),(n=new Q(new Jl(1,1,1),new R({color:16711680,transparent:!0,opacity:.2}))).visible=!1,this.add(n),this.boxes.push(n));r.addEventListener("drag",function(e){var t=ne.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds);t&&-1!==(e=i.spheres.indexOf(e.drag.object))&&i.setPosition(e,t.location)}),r.addEventListener("drop",function(e){e=i.spheres.indexOf(e.drag.object);-1!==e&&i.dispatchEvent({type:"marker_dropped",profile:i,index:e})}),r.addEventListener("mouseover",function(e){return e.object.material.emissive.setHex(8947848)}),r.addEventListener("mouseleave",function(e){return e.object.material.emissive.setHex(0)}),this.dispatchEvent({type:"marker_added",profile:this,sphere:r}),this.setPosition(this.points.length-1,e)}},{key:"removeMarker",value:function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0===e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update(),this.dispatchEvent({type:"marker_removed",profile:this})}},{key:"setPosition",value:function(e,t){var n=this.points[e],t=(n.copy(t),{type:"marker_moved",profile:this,index:e,position:n.clone()});this.dispatchEvent(t),this.update()}},{key:"setWidth",value:function(e){this.width=e,this.dispatchEvent({type:"width_changed",profile:this,width:e}),this.update()}},{key:"getWidth",value:function(){return this.width}},{key:"update",value:function(){var e;if(0!==this.points.length)if(1===this.points.length)e=this.points[0],this.spheres[0].position.copy(e);else{for(var t=this.points[0].clone(),n=this.points[0].clone(),i=new Oe,r=this.points.length-1,a=0;a<=r;a++){var o=this.points[a],s=this.spheres[a],l=0===a?r:a-1,u=this.points[l],c=this.edges[l],d=this.edges[a],l=this.boxes[l];s.position.copy(o),this._modifiable?s.visible=!0:s.visible=!1,c&&(c.geometry.vertices[1].copy(o),c.geometry.verticesNeedUpdate=!0,c.geometry.computeBoundingSphere()),d&&(d.geometry.vertices[0].copy(o),d.geometry.verticesNeedUpdate=!0,d.geometry.computeBoundingSphere()),l&&(s=o,d=(c=u).clone().setZ(0).distanceTo(s.clone().setZ(0)),l.scale.set(d,1e6,this.width),l.up.set(0,0,1),u=(new Oe).addVectors(c,s).multiplyScalar(.5),d=(new Oe).subVectors(s,c),s=new Oe(d.y,-d.x,0),l.position.set(0,0,0),l.lookAt(s),l.position.copy(u)),i.add(o),t.min(o),n.max(o)}i.multiplyScalar(1/this.points.length);for(var h=0;h<this.boxes.length;h++)this.boxes[h].position.z=t.z+(n.z-t.z)/2}}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.spheres[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"modifiable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}])}(),kf=new K,Rf=new Oe,Lf=function(){function t(){var e;ue(this,t),(e=le(this,t)).isLineSegmentsGeometry=!0,e.type="LineSegmentsGeometry";return e.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),e.setAttribute("position",new ee([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),e.setAttribute("uv",new ee([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2)),e}return v(t,Sd),A(t,[{key:"applyMatrix4",value:function(e){var t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return void 0!==t&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}},{key:"setPositions",value:function(e){e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));var t,e=new yh(t,6,1);return this.setAttribute("instanceStart",new zs(e,3,0)),this.setAttribute("instanceEnd",new zs(e,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}},{key:"setColors",value:function(e){e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));var t,e=new yh(t,6,1);return this.setAttribute("instanceColorStart",new zs(e,3,0)),this.setAttribute("instanceColorEnd",new zs(e,3,3)),this}},{key:"fromWireframeGeometry",value:function(e){return this.setPositions(e.attributes.position.array),this}},{key:"fromEdgesGeometry",value:function(e){return this.setPositions(e.attributes.position.array),this}},{key:"fromMesh",value:function(e){return this.fromWireframeGeometry(new nc(e.geometry)),this}},{key:"fromLineSegments",value:function(e){e=e.geometry;return this.setPositions(e.attributes.position.array),this}},{key:"computeBoundingBox",value:function(){null===this.boundingBox&&(this.boundingBox=new K);var e=this.attributes.instanceStart,t=this.attributes.instanceEnd;void 0!==e&&void 0!==t&&(this.boundingBox.setFromBufferAttribute(e),kf.setFromBufferAttribute(t),this.boundingBox.union(kf))}},{key:"computeBoundingSphere",value:function(){null===this.boundingSphere&&(this.boundingSphere=new bi),null===this.boundingBox&&this.computeBoundingBox();var e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(void 0!==e&&void 0!==t){for(var n=this.boundingSphere.center,i=(this.boundingBox.getCenter(n),0),r=0,a=e.count;r<a;r++)Rf.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(Rf)),Rf.fromBufferAttribute(t,r),i=Math.max(i,n.distanceToSquared(Rf));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}},{key:"toJSON",value:function(){}},{key:"applyMatrix",value:function(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}])}(),Ff=(D.line={worldUnits:{value:1},lineWidth:{value:1},resolution:{value:new Re(1,1)},viewportOffset:{value:new Re(0,0)},devicePixelRatio:{value:window.devicePixelRatio},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1},backColor:{type:"v3",value:new Se("#ddd")},clipDistance:{type:"f",value:4},occlusionDistance:{type:"f",value:1},maxClipFactor:{type:"f",value:1},maxOcclusionFactor:{type:"f",value:1},depthTexture:{value:null},nearPlane:{value:.1},farPlane:{value:1e5}},Da.line={uniforms:fa.merge([D.common,D.fog,D.line]),vertexShader:"\n\t\t#include <common>\n\t\t#include <color_pars_vertex>\n\t\t#include <fog_pars_vertex>\n\t\t#include <logdepthbuf_pars_vertex>\n\t\t#include <clipping_planes_pars_vertex>\n\n\t\tuniform float lineWidth;\n\t\tuniform vec2 resolution;\n uniform float devicePixelRatio; //add\n \n \n\t\tattribute vec3 instanceStart;\n\t\tattribute vec3 instanceEnd;\n\n\t\tattribute vec3 instanceColorStart;\n\t\tattribute vec3 instanceColorEnd;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashScale;\n\t\t\tattribute float instanceDistanceStart;\n\t\t\tattribute float instanceDistanceEnd;\n\t\t\tvarying float vLineDistance;\n\n\t\t#endif\n\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t// conservative estimate of the near plane\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#ifdef USE_COLOR\n\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\t// camera space\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\tworldStart = start.xyz;\n\t\t\t\tworldEnd = end.xyz;\n\n\t\t\t#else\n\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\tif ( perspective ) {\n\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// clip space\n\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t// ndc space\n\t\t\tvec3 ndcStart = clipStart.xyz / clipStart.w;\n\t\t\tvec3 ndcEnd = clipEnd.xyz / clipEnd.w;\n\n\t\t\t// direction\n\t\t\tvec2 dir = ndcEnd.xy - ndcStart.xy;\n\n\t\t\t// account for clip-space aspect ratio\n\t\t\tdir.x *= aspect;\n\t\t\tdir = normalize( dir );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// get the offset direction as perpendicular to the view vector\n\t\t\t\tvec3 worldDir = normalize( end.xyz - start.xyz );\n\t\t\t\tvec3 offset;\n\t\t\t\tif ( position.y < 0.5 ) {\n\n\t\t\t\t\toffset = normalize( cross( start.xyz, worldDir ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\toffset = normalize( cross( end.xyz, worldDir ) );\n\n\t\t\t\t}\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\tfloat forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) );\n\n\t\t\t\t// don't extend the line if we're rendering dashes because we\n\t\t\t\t// won't be rendering the endcaps\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t// extend the line bounds to encompass endcaps\n\t\t\t\t\tstart.xyz += - worldDir * lineWidth * 0.5;\n\t\t\t\t\tend.xyz += worldDir * lineWidth * 0.5;\n\n\t\t\t\t\t// shift the position of the quad so it hugs the forward edge of the line\n\t\t\t\t\toffset.xy -= dir * forwardOffset;\n\t\t\t\t\toffset.z += 0.5;\n\n\t\t\t\t#endif\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y > 1.0 || position.y < 0.0 ) {\n\n\t\t\t\t\toffset.xy += dir * 2.0 * forwardOffset;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for lineWidth\n\t\t\t\toffset *= lineWidth * 0.5;\n\n\t\t\t\t// set the world position\n\t\t\t\tworldPos = ( position.y < 0.5 ) ? start : end;\n\t\t\t\tworldPos.xyz += offset;\n\n\t\t\t\t// project the worldpos\n\t\t\t\tvec4 clip = projectionMatrix * worldPos;\n\n\t\t\t\t// shift the depth of the projected points so the line\n\t\t\t\t// segments overlap neatly\n\t\t\t\tvec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;\n\t\t\t\tclip.z = clipPose.z * clip.w;\n\n\t\t\t#else\n\n\t\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\t\t\t\t// undo aspect ratio adjustment\n\t\t\t\tdir.x /= aspect;\n\t\t\t\toffset.x /= aspect;\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\t\toffset += - dir;\n\n\t\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\t\toffset += dir;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for lineWidth\n\t\t\t\toffset *= lineWidth;\n\n\t\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\t\toffset /= resolution.y; //* devicePixelRatio;\n\n\t\t\t\t// select end\n\t\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t\t// back to clip space\n\t\t\t\toffset *= clip.w;\n\n\t\t\t\tclip.xy += offset;\n\n\t\t\t#endif\n\n\t\t\tgl_Position = clip;\n\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t#include <logdepthbuf_vertex>\n\t\t\t#include <clipping_planes_vertex>\n\t\t\t#include <fog_vertex>\n\n\t\t}\n\t\t",fragmentShader:"\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\t\tuniform float lineWidth;\n uniform bool uUseOrthographicCamera; \n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashOffset;\n\t\t\tuniform float dashSize;\n\t\t\tuniform float gapSize; \n\t\t#endif\n \n //加\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n uniform sampler2D depthTexture;\n uniform float nearPlane;\n uniform float farPlane; \n uniform vec2 resolution;\n uniform vec2 viewportOffset;\n uniform vec3 backColor;\n uniform float occlusionDistance;\n uniform float clipDistance;\n uniform float maxClipFactor;\n uniform float maxOcclusionFactor;\n #endif\n\n\n\n\t\tvarying float vLineDistance;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#include <common>\n\t\t#include <color_pars_fragment>\n\t\t#include <fog_pars_fragment>\n\t\t#include <logdepthbuf_pars_fragment>\n\t\t#include <clipping_planes_pars_fragment>\n\n\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n float convertToLinear(float zValue)\n {\n //if(uUseOrthographicCamera){\n // return zValue*(farPlane-nearPlane)+nearPlane;\n //}else{ \n float z = zValue * 2.0 - 1.0;\n return (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n //} \n }\n #endif\n\n\n\n\t\tvec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\n\n\t\t\tfloat mua;\n\t\t\tfloat mub;\n\n\t\t\tvec3 p13 = p1 - p3;\n\t\t\tvec3 p43 = p4 - p3;\n\n\t\t\tvec3 p21 = p2 - p1;\n\n\t\t\tfloat d1343 = dot( p13, p43 );\n\t\t\tfloat d4321 = dot( p43, p21 );\n\t\t\tfloat d1321 = dot( p13, p21 );\n\t\t\tfloat d4343 = dot( p43, p43 );\n\t\t\tfloat d2121 = dot( p21, p21 );\n\n\t\t\tfloat denom = d2121 * d4343 - d4321 * d4321;\n\n\t\t\tfloat numer = d1343 * d4321 - d1321 * d4343;\n\n\t\t\tmua = numer / denom;\n\t\t\tmua = clamp( mua, 0.0, 1.0 );\n\t\t\tmub = ( d1343 + d4321 * ( mua ) ) / d4343;\n\t\t\tmub = clamp( mub, 0.0, 1.0 );\n\n\t\t\treturn vec2( mua, mub );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include <clipping_planes_fragment>\n\n\t\t\t/*#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t#endif*/\n \n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n \n \n bool unvisible = mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize;\n //加\n #ifdef DASH_with_depth\n \n #else \n if (unvisible) discard; // todo - FIX\n #endif\n\t\t\t#endif\n \n\n\t\t\tfloat alpha = opacity;\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// Find the closest points on the view ray and the line segment\n\t\t\t\tvec3 rayEnd = normalize( worldPos.xyz ) * 1e5;\n\t\t\t\tvec3 lineDir = worldEnd - worldStart;\n\t\t\t\tvec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );\n\n\t\t\t\tvec3 p1 = worldStart + lineDir * params.x;\n\t\t\t\tvec3 p2 = rayEnd * params.y;\n\t\t\t\tvec3 delta = p1 - p2;\n\t\t\t\tfloat len = length( delta );\n\t\t\t\tfloat norm = len / lineWidth;\n\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\tfloat dnorm = fwidth( norm );\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tif ( norm > 0.5 ) {\n\n\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#endif\n\n\t\t\t#else\n\n\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t// artifacts appear on some hardware if a derivative is taken within a conditional\n\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\tfloat len2 = a * a + b * b;\n\t\t\t\t\tfloat dlen = fwidth( len2 );\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t#else\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t\t\t}\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, alpha );\n\n\n //加\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n \n float mixFactor = 0.0;\n float clipFactor = 0.0;\n\n float fragDepth = convertToLinear(gl_FragCoord.z);\n //gl_FragCoord大小为 viewport client大小 \n vec2 depthTxtCoords = vec2(gl_FragCoord.x - viewportOffset.x, gl_FragCoord.y - viewportOffset.y) / resolution;\n\n float textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n float delta = fragDepth - textureDepth;\n\n if (delta > 0.0)\n {\n \n mixFactor = clamp(delta / occlusionDistance, 0.0, maxOcclusionFactor);\n clipFactor = clamp(delta / clipDistance, 0.0, maxClipFactor);\n }\n \n if (clipFactor == 1.0)\n {\n discard;\n }\n \n vec4 backColor_ = vec4(backColor, opacity); //vec4(0.8,0.8,0.8, 0.8*opacity);\n \n #ifdef DASH_with_depth \n // 只在被遮住的部分显示虚线, 所以若同时是虚线不可见部分和被遮住时, a为0\n if(unvisible) backColor_.a = 0.0;\n #endif \n \n //vec4 diffuseColor = vec4(mix(diffuse, backColor_, mixFactor), opacity*(1.0 - clipFactor));\n \n \n \n diffuseColor = mix(diffuseColor, backColor_ , mixFactor); \n \n \n diffuseColor.a *= (1.0 - clipFactor); \n \n #endif\n\n\n\n\t\t\t#include <logdepthbuf_fragment>\n\t\t\t#include <color_fragment>\n\n\t\t\t//gl_FragColor = vec4( diffuseColor.rgb, alpha );\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a );\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <encodings_fragment>\n\t\t\t#include <fog_fragment>\n\t\t\t#include <premultiplied_alpha_fragment>\n\n\t\t}\n\t\t"},function(){function r(e){ue(this,r);var t=Potree.Common.changeShaderToWebgl2(Da.line.vertexShader,Da.line.fragmentShader,"ShaderMaterial"),n=t.vs,t=t.fs,i=le(this,r,[{type:"LineMaterial",uniforms:fa.clone(Da.line.uniforms),vertexShader:n,fragmentShader:t,clipping:!0}]),n=(i.isLineMaterial=!0,i.lineWidth_=0,i.supportExtDepth=e.supportExtDepth,i.depthTestWhenPick=!1,e.color&&(i.color=new Se(e.color)),e.backColor&&(i.uniforms.backColor.value=new Se(e.backColor)),e.clipDistance&&(i.uniforms.clipDistance.value=e.clipDistance),e.occlusionDistance&&(i.uniforms.occlusionDistance.value=e.occlusionDistance),e.maxClipFactor&&(i.uniforms.maxClipFactor.value=e.maxClipFactor),Object.defineProperties(i,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(e){!0===e?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},lineWidth:{enumerable:!0,get:function(){return this.lineWidth_},set:function(e){this.uniforms.lineWidth.value=e*window.devicePixelRatio,this.lineWidth_=e}},dashed:{enumerable:!0,get:function(){return Boolean("USE_DASH"in this.defines)},set:function(e){Boolean(e)!==Boolean("USE_DASH"in this.defines)&&(this.needsUpdate=!0),!0===e?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(e){this.uniforms.dashOffset.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}},alphaToCoverage:{enumerable:!0,get:function(){return Boolean("USE_ALPHA_TO_COVERAGE"in this.defines)},set:function(e){Boolean(e)!==Boolean("USE_ALPHA_TO_COVERAGE"in this.defines)&&(this.needsUpdate=!0),!0===e?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}},dashWithDepth:{enumerable:!0,get:function(){return"DASH_with_depth"in this.defines},set:function(e){(e=e&&!!this.supportExtDepth)!=this.dashWithDepth&&(e?this.defines.DASH_with_depth="":delete this.defines.DASH_with_depth,this.needsUpdate=!0)}}}),i.events={setSize:function(e){var t=e.viewport;i.uniforms.resolution.value.copy(t.resolution2),i.uniforms.devicePixelRatio.value=window.devicePixelRatio,i.lineWidth=i.lineWidth_,i.realUseDepth&&e.viewport&&(e=t.offset||new THREE.Vector2,i.uniforms.viewportOffset.value.copy(e))},render:function(e){i.useDepth&&i.updateDepthParams(e);e=e.viewport||viewer.mainViewport;e!=i.lastViewport&&i.events.setSize({viewport:e}),i.lastViewport=e}},i.setValues(e),viewer.mainViewport);return i.events.setSize({viewport:n}),viewer.addEventListener("resize",i.events.setSize),viewer.addEventListener("render.begin",i.events.render),i}return v(r,ga),A(r,[{key:"useDepth",get:function(){return this.useDepth_},set:function(e){e=e&&this.supportExtDepth,this.useDepth_!=e&&(this.setRealDepth(e),this.useDepth_=e)}},{key:"setRealDepth",value:function(e,t){this.realUseDepth!=e&&(e?this.defines.useDepth="":delete this.defines.useDepth,this.realUseDepth=e,this.autoDepthTest&&(this.depthWrite=this.depthTest=!e),this.needsUpdate=!0,t=t||viewer.mainViewport,e)&&this.events.setSize({viewport:t})}},{key:"updateDepthParams",value:function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).viewport||viewer.mainViewport,t=e.camera,n=this.useDepth&&t.isPerspectiveCamera&&(Potree.settings.pointEnableRT||"showPanos"==Potree.settings.displayMode||viewer.useEDL);this.setRealDepth(n,e),n&&(this.uniforms.depthTexture.value=viewer.getPRenderer().getRtEDL(e).depthTexture,this.uniforms.nearPlane.value=t.near,this.uniforms.farPlane.value=t.far)}}])}()),Of=new Oe,Uf=new Oe,Nf=new ei,zf=new ei,Gf=new ei,Hf=new Oe,Vf=new Me,Qf=new Th,jf=new Oe,Wf=new K,Jf=new bi,qf=new ei;function Yf(e,t,n){return qf.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),qf.multiplyScalar(1/qf.w),qf.x=Cf/n.width,qf.y=Cf/n.height,qf.applyMatrix4(e.projectionMatrixInverse),qf.multiplyScalar(1/qf.w),Math.abs(Math.max(qf.x,qf.y))}var Xf=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Lf,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Ff({color:16777215*Math.random()});return ue(this,n),(e=le(this,n,[e,t])).isLineSegments2=!0,e.type="LineSegments2",e}return v(n,Q),A(n,[{key:"computeLineDistances",value:function(){for(var e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count),r=0,a=0,o=t.count;r<o;r++,a+=2)Of.fromBufferAttribute(t,r),Uf.fromBufferAttribute(n,r),i[a]=0===a?0:i[a-1],i[a+1]=i[a]+Of.distanceTo(Uf);var s=new yh(i,2,1);return e.setAttribute("instanceDistanceStart",new zs(s,1,0)),e.setAttribute("instanceDistanceEnd",new zs(s,1,1)),this}},{key:"raycast",value:function(e,t){var n=this.material.worldUnits,i=e.camera,r=(null!==i||n||console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'),void 0!==e.params.Line2&&e.params.Line2.threshold||0),e=(bf=e.ray,this.matrixWorld),a=this.geometry,o=this.material;if((Cf=o.lineWidth+r,xf=a.attributes.instanceStart,Ef=a.attributes.instanceEnd,null===a.boundingSphere&&a.computeBoundingSphere(),Jf.copy(a.boundingSphere).applyMatrix4(e),r=n?.5*Cf:Yf(i,Math.max(i.near,Jf.distanceToPoint(bf.origin)),o.resolution),Jf.radius+=r,!1!==bf.intersectsSphere(Jf))&&(null===a.boundingBox&&a.computeBoundingBox(),Wf.copy(a.boundingBox).applyMatrix4(e),r=n?.5*Cf:Yf(i,Math.max(i.near,Wf.distanceToPoint(bf.origin)),o.resolution),Wf.expandByScalar(r),!1!==bf.intersectsBox(Wf)))if(n)for(var s=this,l=t,u=0,c=xf.count;u<c;u++){Qf.start.fromBufferAttribute(xf,u),Qf.end.fromBufferAttribute(Ef,u);var d=new Oe,h=new Oe;bf.distanceSqToSegment(Qf.start,Qf.end,h,d),h.distanceTo(d)<.5*Cf&&l.push({point:h,pointOnLine:d,distance:bf.origin.distanceTo(h),object:s,face:null,faceIndex:u,uv:null,uv2:null})}else{var p=this,a=i,f=t,m=a.projectionMatrix,v=p.material.resolution,g=p.matrixWorld,e=p.geometry,A=e.attributes.instanceStart,y=e.attributes.instanceEnd,w=-a.near;bf.at(1,Gf),Gf.w=1,Gf.applyMatrix4(a.matrixWorldInverse),Gf.applyMatrix4(m),Gf.multiplyScalar(1/Gf.w),Gf.x*=v.x/2,Gf.y*=v.y/2,Gf.z=0,Hf.copy(Gf),Vf.multiplyMatrices(a.matrixWorldInverse,g);for(var b,x,E,C,B=0,M=A.count;B<M;B++)Nf.fromBufferAttribute(A,B),zf.fromBufferAttribute(y,B),Nf.w=1,zf.w=1,Nf.applyMatrix4(Vf),zf.applyMatrix4(Vf),Nf.z>w&&zf.z>w||(Nf.z>w?(b=Nf.z-zf.z,b=(Nf.z-w)/b,Nf.lerp(zf,b)):zf.z>w&&(b=zf.z-Nf.z,x=(zf.z-w)/b,zf.lerp(Nf,x)),Nf.applyMatrix4(m),zf.applyMatrix4(m),Nf.multiplyScalar(1/Nf.w),zf.multiplyScalar(1/zf.w),Nf.x*=v.x/2,Nf.y*=v.y/2,zf.x*=v.x/2,zf.y*=v.y/2,Qf.start.copy(Nf),Qf.start.z=0,Qf.end.copy(zf),Qf.end.z=0,x=Qf.closestPointToPointParameter(Hf,!0),Qf.at(x,jf),E=-1<=(E=Be.lerp(Nf.z,zf.z,x))&&E<=1,C=Hf.distanceTo(jf)<.5*Cf,E&&C&&(Qf.start.fromBufferAttribute(A,B),Qf.end.fromBufferAttribute(y,B),Qf.start.applyMatrix4(g),Qf.end.applyMatrix4(g),E=new Oe,C=new Oe,bf.distanceSqToSegment(Qf.start,Qf.end,C,E),f.push({point:C,pointOnLine:E,distance:bf.origin.distanceTo(C),object:p,face:null,faceIndex:B,uv:null,uv2:null})))}}}])}(),Kf=function(){function r(){var e;return ue(this,r),(e=le(this,r)).isLineGeometry=!0,e.type="LineGeometry",e}return v(r,Lf),A(r,[{key:"setPositions",value:function(e){for(var t=e.length-3,n=new Float32Array(2*t),i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return I(r,"setPositions",this,3)([n]),this}},{key:"setColors",value:function(e){for(var t=e.length-3,n=new Float32Array(2*t),i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return I(r,"setColors",this,3)([n]),this}},{key:"fromLine",value:function(e){e=e.geometry;return this.setPositions(e.attributes.position.array),this}}])}(),Zf=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Kf,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Ff({color:16777215*Math.random()});return ue(this,n),(e=le(this,n,[e,t])).isLine2=!0,e.type="Line2",e}return v(n,Xf),A(n)}();function $f(){var e=new Kf,t=(e.setPositions([0,0,0,0,0,0]),new Ff({color:16711680,linewidth:2,resolution:new Re(1e3,1e3),gapSize:1,dashed:!0}));return t.depthTest=!1,new Zf(e,t)}function em(){var e={label:null,center:null,target:null,north:null,centerToNorth:null,centerToTarget:null,centerToTargetground:null,targetgroundToTarget:null,circle:null,node:null},t=new ju(1,32,32),n=new cc,i=new Tf("");return i.setTextColor({r:140,g:250,b:140,a:1}),i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.fontsize=16,i.material.depthTest=!1,i.material.opacity=1,e.label=i,e.center=new Q(t,n),e.target=new Q(t,n),e.north=new Q(t,n),e.centerToNorth=$f(),e.centerToTarget=$f(),e.centerToTargetground=$f(),e.targetgroundToTarget=$f(),e.circle=function(){for(var e=[],t=0;t<=128;t++){var n=2*Math.PI*(t/128),i=2*Math.PI*(t+1)/128,n=new Oe(Math.cos(n),Math.sin(n),0),i=new Oe(Math.cos(i),Math.sin(i),0);e.push.apply(e,Fe(n.toArray()).concat(Fe(i.toArray())))}var r=new Kf,a=(r.setPositions(e),new Ff({color:16711680,dashSize:5,gapSize:2,linewidth:2,resolution:new Re(1e3,1e3)}));return a.depthTest=!1,(r=new Zf(r,a)).computeLineDistances(),r}(),e.node=new Z,e.node.add(e.centerToNorth,e.centerToTarget,e.centerToTargetground,e.targetgroundToTarget,e.circle,e.label,e.center,e.target,e.north),e}var tm,nm,im=function(){function i(){var e,t,n;return ue(this,i),(e=le(this,i)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="Measure_"+e.constructor.counter,e.points=[],e._showDistances=!0,e._showCoordinates=!1,e._showArea=!1,e._closed=!0,e._showAngles=!1,e._showCircle=!1,e._showHeight=!1,e._showEdges=!0,e._showAzimuth=!1,e.maxMarkers=Number.MAX_SAFE_INTEGER,e.sphereGeometry=new ju(.4,10,10),e.color=new Se(16711680),e.spheres=[],e.edges=[],e.sphereLabels=[],e.edgeLabels=[],e.angleLabels=[],e.coordinateLabels=[],e.heightEdge=((t=new Kf).setPositions([0,0,0,0,0,0]),(n=new Ff({color:65280,dashSize:5,gapSize:2,linewidth:2,resolution:new Re(1e3,1e3)})).depthTest=!1,(t=new Zf(t,n)).visible=!1,t),e.heightLabel=((n=new Tf("")).setTextColor({r:140,g:250,b:140,a:1}),n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,n),e.areaLabel=((t=new Tf("")).setTextColor({r:140,g:250,b:140,a:1}),t.setBorderColor({r:0,g:0,b:0,a:1}),t.setBackgroundColor({r:0,g:0,b:0,a:1}),t.fontsize=16,t.material.depthTest=!1,t.material.opacity=1,t.visible=!1,t),e.circleRadiusLabel=((n=new Tf("")).setTextColor({r:140,g:250,b:140,a:1}),n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,n),e.circleRadiusLine=((t=new Kf).setPositions([0,0,0,0,0,0]),(n=new Ff({color:16711680,linewidth:2,resolution:new Re(1e3,1e3),gapSize:1,dashed:!0})).depthTest=!1,(t=new Zf(t,n)).visible=!1,t),e.circleLine=function(){for(var e=[],t=0;t<=128;t++){var n=2*Math.PI*(t/128),i=2*Math.PI*(t+1)/128,n=new Oe(Math.cos(n),Math.sin(n),0),i=new Oe(Math.cos(i),Math.sin(i),0);e.push.apply(e,Fe(n.toArray()).concat(Fe(i.toArray())))}var r=new Kf,a=(r.setPositions(e),new Ff({color:16711680,dashSize:5,gapSize:2,linewidth:2,resolution:new Re(1e3,1e3)}));return a.depthTest=!1,(r=new Zf(r,a)).visible=!1,r.computeLineDistances(),r}(),e.circleCenter=((n=new Q(new ju(1,32,32),new cc)).visible=!1,n),e.azimuth=em(),e.add(e.heightEdge),e.add(e.heightLabel),e.add(e.areaLabel),e.add(e.circleRadiusLabel),e.add(e.circleRadiusLine),e.add(e.circleLine),e.add(e.circleCenter),e.add(e.azimuth.node),e}return v(i,Z),A(i,[{key:"createSphereMaterial",value:function(){return new dc({color:this.color,depthTest:!1,depthWrite:!1})}},{key:"addMarker",value:function(e){var u=this,t=(null!=e.x?e={position:e}:e instanceof Array&&(e={position:ie(Oe,Fe(e))}),this.points.push(e),new Q(this.sphereGeometry,this.createSphereMaterial())),n=(this.add(t),this.spheres.push(t),new Kf),i=(n.setPositions([0,0,0,0,0,0]),new Ff({color:16711680,linewidth:2,resolution:new Re(1e3,1e3)})),n=(i.depthTest=!1,new Zf(n,i)),i=(n.visible=!0,this.add(n),this.edges.push(n),new Tf),n=(i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.material.depthTest=!1,i.visible=!1,i.fontsize=16,this.edgeLabels.push(i),this.add(i),new Tf),i=(n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,this.angleLabels.push(n),this.add(n),new Tf),n=(i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.fontsize=16,i.material.depthTest=!1,i.material.opacity=1,i.visible=!1,this.coordinateLabels.push(i),this.add(i),t.addEventListener("drag",function(e){var t=ne.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds,{pickClipped:!0});if(t){e=u.spheres.indexOf(e.drag.object);if(-1!==e){for(var n=u.points[e],i=0,r=Object.keys(n);i<r.length;i++){var a=r[i];t.point[a]||delete n[a]}var o,s=q(Object.keys(t.point).filter(function(e){return"position"!==e}));try{for(s.s();!(o=s.n()).done;){var l=o.value;n[l]=t.point[l]}}catch(e){s.e(e)}finally{s.f()}u.setPosition(e,t.location)}}}),t.addEventListener("drop",function(e){e=u.spheres.indexOf(e.drag.object);-1!==e&&u.dispatchEvent({type:"marker_dropped",measurement:u,index:e})}),t.addEventListener("mouseover",function(e){return e.object.material.emissive.setHex(8947848)}),t.addEventListener("mouseleave",function(e){return e.object.material.emissive.setHex(0)}),{type:"marker_added",measurement:this,sphere:t});this.dispatchEvent(n),this.setMarker(this.points.length-1,e)}},{key:"removeMarker",value:function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0===e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.coordinateLabels.splice(e,1),this.remove(this.angleLabels[e]),this.angleLabels.splice(e,1),this.spheres.splice(e,1),this.update(),this.dispatchEvent({type:"marker_removed",measurement:this})}},{key:"setMarker",value:function(e,t){this.points[e]=t;e={type:"marker_moved",measure:this,index:e,position:t.position.clone()};this.dispatchEvent(e),this.update()}},{key:"setPosition",value:function(e,t){this.points[e].position.copy(t);e={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(e),this.update()}},{key:"getArea",value:function(){for(var e=0,t=this.points.length-1,n=0;n<this.points.length;n++){var i=this.points[n].position,r=this.points[t].position;e+=(r.x+i.x)*(i.y-r.y),t=n}return Math.abs(e/2)}},{key:"getTotalDistance",value:function(){if(0===this.points.length)return 0;for(var e,t=0,n=1;n<this.points.length;n++){var i=this.points[n-1].position,r=this.points[n].position;t+=i.distanceTo(r)}return this.closed&&1<this.points.length&&(e=this.points[0].position,t+=this.points[this.points.length-1].position.distanceTo(e)),t}},{key:"getAngleBetweenLines",value:function(e,t,n){t=(new Oe).subVectors(t.position,e.position),n=(new Oe).subVectors(n.position,e.position);return 0===Math.sqrt(t.lengthSq()*n.lengthSq())?0:t.angleTo(n)}},{key:"getAngle",value:function(e){var t,n;return this.points.length<3||e>=this.points.length?0:(t=0===e?this.points[this.points.length-1]:this.points[e-1],n=this.points[e],e=this.points[(e+1)%this.points.length],this.getAngleBetweenLines(n,t,e))}},{key:"update",value:function(){if(0!==this.points.length)if(1===this.points.length)m=this.points[0].position,this.spheres[0].position.copy(m),v=this.coordinateLabels[0],m=m.toArray().map(function(e){return ne.addCommas(e.toFixed(2))}).join(" / "),v.setText(m),v.visible=this.showCoordinates;else{for(var e=this.points.length-1,t=new Oe,n=0;n<=e;n++){var i=this.points[n];t.add(i.position)}t.divideScalar(this.points.length);for(var r=0;r<=e;r++){var a=r,o=this.points[a],s=this.points[e<r+1?0:r+1],l=this.points[0===r?e:r-1],u=this.spheres[a],u=(u.position.copy(o.position),u.material.color=this.color,this.edges[a]),u=(u.material.color=this.color,u.position.copy(o.position),u.geometry.setPositions([0,0,0].concat(Fe(s.position.clone().sub(o.position).toArray()))),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.computeLineDistances(),u.visible=a<e||this.closed,this.showEdges||(u.visible=!1),this.edgeLabels[r]),c=(new Oe).add(o.position),d=(c.add(s.position),c=c.multiplyScalar(.5),o.position.distanceTo(s.position)),c=(u.position.copy(c),""),h=(null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(d=d/this.lengthUnit.unitspermeter*this.lengthUnitDisplay.unitspermeter,c=this.lengthUnitDisplay.code),ne.addCommas(d.toFixed(2))),h=(u.setText("".concat(h," ").concat(c)),u.visible=this.showDistances&&(a<e||this.closed)&&2<=this.points.length&&0<d,this.angleLabels[r]),c=this.getAngleBetweenLines(o,l,s),u=s.position.clone().sub(l.position),d=(u.multiplyScalar(.5),u=l.position.clone().add(u).sub(o.position).normalize(),Math.min(o.position.distanceTo(l.position),o.position.distanceTo(s.position))),l=(d/=9,o.position.clone().add(u.multiplyScalar(d))),s=(h.position.copy(l),ne.addCommas((c*(180/Math.PI)).toFixed(1))+"°");h.setText(s),h.visible=this.showAngles&&(a<e||this.closed)&&3<=this.points.length&&0<c}var p,f,m=this.heightEdge,v=(m.visible=this.showHeight,this.heightLabel.visible=this.showHeight,this.showHeight&&(y=(v=this.points.slice().sort(function(e,t){return e.position.z-t.position.z}))[0].position.clone(),v=v[v.length-1].position.clone(),f=y.z,A=(g=v.z)-f,f=new Oe(v.x,v.y,f),v=new Oe(v.x,v.y,g),m.position.copy(y),m.geometry.setPositions([0,0,0].concat(Fe(f.clone().sub(y).toArray()),Fe(f.clone().sub(y).toArray()),Fe(v.clone().sub(y).toArray()))),m.geometry.verticesNeedUpdate=!0,m.geometry.computeBoundingSphere(),m.computeLineDistances(),g=f.clone().add(v).multiplyScalar(.5),this.heightLabel.position.copy(g),y="",null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(A=A/this.lengthUnit.unitspermeter*this.lengthUnitDisplay.unitspermeter,y=this.lengthUnitDisplay.code),m=ne.addCommas(A.toFixed(2)),f="".concat(m," ").concat(y),this.heightLabel.setText(f)),this.circleRadiusLabel),g=this.circleRadiusLine,A=this.circleLine,m=this.circleCenter,y=3===this.points.length,w=(v.visible=this.showCircle&&y,g.visible=this.showCircle&&y,A.visible=this.showCircle&&y,m.visible=this.showCircle&&y,this.showCircle&&y&&(f=this.points[0].position,y=this.points[1].position,p=this.points[2].position,b=y.clone().sub(f),b=p.clone().sub(f).clone().cross(b).normalize(),w=(f=(p=Potree.Utils.computeCircleCenter(f,y,p)).distanceTo(f))/20,m.position.copy(p),m.scale.set(w,w,w),g.geometry.setPositions([0,0,0].concat(Fe(y.clone().sub(p).toArray()))),g.geometry.verticesNeedUpdate=!0,g.geometry.computeBoundingSphere(),g.position.copy(p),g.computeLineDistances(),m=p.clone().add(b),A.position.copy(p),A.scale.set(f,f,f),A.lookAt(m),v.visible=!0,v.position.copy(p.clone().add(y).multiplyScalar(.5)),v.setText("".concat(f.toFixed(3)))),this.areaLabel.position.copy(t),this.areaLabel.visible=this.showArea&&3<=this.points.length,this.getArea()),g="",b=(null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(w=w/Math.pow(this.lengthUnit.unitspermeter,2)*Math.pow(this.lengthUnitDisplay.unitspermeter,2),g=this.lengthUnitDisplay.code),ne.addCommas(w.toFixed(1))),A="".concat(b," ").concat(g,"²");this.areaLabel.setText(A)}}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.spheres[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"showCoordinates",get:function(){return this._showCoordinates},set:function(e){this._showCoordinates=e,this.update()}},{key:"showAngles",get:function(){return this._showAngles},set:function(e){this._showAngles=e,this.update()}},{key:"showCircle",get:function(){return this._showCircle},set:function(e){this._showCircle=e,this.update()}},{key:"showAzimuth",get:function(){return this._showAzimuth},set:function(e){this._showAzimuth=e,this.update()}},{key:"showEdges",get:function(){return this._showEdges},set:function(e){this._showEdges=e,this.update()}},{key:"showHeight",get:function(){return this._showHeight},set:function(e){this._showHeight=e,this.update()}},{key:"showArea",get:function(){return this._showArea},set:function(e){this._showArea=e,this.update()}},{key:"closed",get:function(){return this._closed},set:function(e){this._closed=e,this.update()}},{key:"showDistances",get:function(){return this._showDistances},set:function(e){this._showDistances=e,this.update()}}])}(),rm=function(){function i(e){var t,n;return ue(this,i),(n=le(this,i)).constructor.counter=void 0===n.constructor.counter?0:n.constructor.counter+1,n.name="polygon_clip_volume_"+n.constructor.counter,n.camera=e.clone(),(t=n.camera.rotation).set.apply(t,Fe(e.rotation.toArray())),n.camera.rotation.order=e.rotation.order,n.camera.updateMatrixWorld(),n.camera.updateProjectionMatrix(),n.camera.matrixWorldInverse.copy(n.camera.matrixWorld).invert(),n.viewMatrix=n.camera.matrixWorldInverse.clone(),n.projMatrix=n.camera.projectionMatrix.clone(),n.markers=[],n.initialized=!1,n}return v(i,Z),A(i,[{key:"addMarker",value:function(){function t(e){var t=e.viewer.renderer.getSize(new Re),e=new Oe(e.drag.end.x/t.width*2-1,e.drag.end.y/t.height*-2+1,0);i.position.copy(e)}function n(e){r()}var i=new Q,r=function(e){i.removeEventListener("drag",t),i.removeEventListener("drop",n)};i.addEventListener("drag",t),i.addEventListener("drop",n),this.markers.push(i)}},{key:"removeLastMarker",value:function(){0<this.markers.length&&this.markers.splice(this.markers.length-1,1)}}])}(),ne=function(){function g(){ue(this,g)}return A(g,null,[{key:"loadShapefileFeatures",value:(i=J(X().mark(function e(t,n){var i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],r=function(){n(i)},e.next=4,shapefile.open(t);case 4:a=e.sent;case 5:return e.next=8,a.read();case 8:if((o=e.sent).done)return r(),e.abrupt("break",15);e.next=12;break;case 12:o.value&&"Feature"===o.value.type&&void 0!==o.value.geometry&&i.push(o.value),e.next=5;break;case 15:case"end":return e.stop()}},e)})),function(e,t){return i.apply(this,arguments)})},{key:"toString",value:function(e){return null!=e.x?e.x.toFixed(2)+", "+e.y.toFixed(2)+", "+e.z.toFixed(2):""+e}},{key:"normalizeURL",value:function(e){e=new URL(e);return e.protocol+"//"+e.hostname+e.pathname.replace(/\/+/g,"/")}},{key:"pathExists",value:function(e){var t=Sf.createXMLHttpRequest();return t.open("GET",e,!1),t.send(null),200===t.status}},{key:"debugSphere",value:function(e,t,n,i){var r=new ju(1,8,8),i=void 0!==i?new R({color:i}):new cc,r=new Q(r,i);return r.position.copy(t),r.scale.set(n,n,n),e.add(r),r}},{key:"debugLine",value:function(e,t,n,i){var i=new wl({color:i}),r=new Wl,a=new Oe(0,0,0),n=n.clone().sub(t),a=(r.vertices.push(a,n),new Ml(r,i));return a.position.copy(t),e.add(a),{node:a,set:function(e,t){r.vertices[0].copy(e),r.vertices[1].copy(t),r.verticesNeedUpdate=!0}}}},{key:"debugCircle",value:function(e,t,n,i,r){for(var r=new wl({color:r}),a=new Wl,o=0;o<=32;o++){var s=2*Math.PI*(o/32),l=2*Math.PI*(o+1)/32,s=new Oe(Math.cos(s),Math.sin(s),0),l=new Oe(Math.cos(l),Math.sin(l),0);a.vertices.push(s,l)}r=new Ml(a,r);r.position.copy(t),r.scale.set(n,n,n),e.add(r)}},{key:"debugBox",value:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Me,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:16776960,a=[[t.min.x,t.min.y,t.min.z],[t.min.x,t.min.y,t.max.z],[t.min.x,t.max.y,t.min.z],[t.min.x,t.max.y,t.max.z],[t.max.x,t.min.y,t.min.z],[t.max.x,t.min.y,t.max.z],[t.max.x,t.max.y,t.min.z],[t.max.x,t.max.y,t.max.z]].map(function(e){return ie(Oe,Fe(e))}),o=t.getCenter(new Oe),o=[{position:[t.min.x,o.y,o.z],color:16711680},{position:[t.max.x,o.y,o.z],color:8912896},{position:[o.x,t.min.y,o.z],color:65280},{position:[o.x,t.max.y,o.z],color:34816},{position:[o.x,o.y,t.min.z],color:255},{position:[o.x,o.y,t.max.z],color:136}],s=q(a);try{for(s.s();!(n=s.n()).done;){var l=n.value.clone().applyMatrix4(i);g.debugSphere(e,l,.1,16711680)}}catch(e){s.e(e)}finally{s.f()}for(var u=0,c=[[0,4],[4,5],[5,1],[1,0],[2,6],[6,7],[7,3],[3,2],[0,2],[4,6],[5,7],[1,3]];u<c.length;u++){var d=c[u],h=a[d[0]].clone().applyMatrix4(i),d=a[d[1]].clone().applyMatrix4(i);g.debugLine(e,h,d,r)}for(var p=0,f=o;p<f.length;p++){var m=f[p],v=ie(Oe,Fe(m.position)).applyMatrix4(i);g.debugSphere(e,v,.1,m.color)}}},{key:"debugPlane",value:function(e,t){t=new tp(t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,3<arguments.length&&void 0!==arguments[3]?arguments[3]:255);e.add(t)}},{key:"computeTransformedBoundingBox",value:function(e,t){e=[new Oe(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new Oe(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new Oe(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new Oe(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new Oe(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new Oe(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new Oe(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new Oe(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new Oe(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],t=new K;return t.setFromPoints(e),t}},{key:"addCommas",value:function(e){for(var e=(e+="").split("."),t=e[0],e=1<e.length?"."+e[1]:"",n=/(\d+)(\d{3})/;n.test(t);)t=t.replace(n,"$1,$2");return t+e}},{key:"removeCommas",value:function(e){return e.replace(/,/g,"")}},{key:"createWorker",value:function(e){e=new Blob([e],{type:"application/javascript"});return new Worker(URL.createObjectURL(e))}},{key:"moveTo",value:function(e,t,n){var i=e.view,e=e.getActiveCamera(),r=TWEEN.Easing.Quartic.Out,t=new TWEEN.Tween(i.position).to(t,500),t=(t.easing(r),t.start(),e.position.distanceTo(n)),a=(new Oe).addVectors(e.position,e.getWorldDirection(new Oe).clone().multiplyScalar(t)),e=new TWEEN.Tween(a).to(n,500);e.easing(r),e.onUpdate(function(){i.lookAt(a)}),e.onComplete(function(){i.lookAt(a)}),e.start()}},{key:"loadSkybox",value:function(e){for(var t=new Z,n=new ya(75,window.innerWidth/window.innerHeight,1,1e5),i=(n.up.set(0,0,1),new Fs),r=".jpg",a=[e+"px"+r,e+"nx"+r,e+"py"+r,e+"ny"+r,e+"pz"+r,e+"nz"+r],o=[],s=0;s<6;s++)!function(){var t=new R({map:null,side:me,depthTest:!1,depthWrite:!1,color:4343126});o.push(t),(new Gc).load(a[s],function(e){t.map=e,t.needsUpdate=!0,t.color.setHex(16777215)},function(e){},function(e){console.log("An error happened",e)})}();e=new Q(new Jl(700,700,700),o);return i.add(e),i.traverse(function(e){return e.frustumCulled=!1}),i.rotation.x=Math.PI/2,t.children.push(n),n.parent=t,{camera:n,scene:i,parent:t}}},{key:"createGrid",value:function(e,t,n,i){for(var i=new wl({color:i||8947848}),r=new Wl,a=0;a<=t;a++)r.vertices.push(new Oe(-n*e/2,a*n-n*t/2,0)),r.vertices.push(new Oe(n*e/2,a*n-n*t/2,0));for(var o=0;o<=e;o++)r.vertices.push(new Oe(o*n-n*e/2,-n*t/2,0)),r.vertices.push(new Oe(o*n-n*e/2,n*t/2,0));i=new _l(r,i);return i.receiveShadow=!0,i}},{key:"createBackgroundTexture",value:function(e,t){function n(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}for(var i=new Uint8Array(3*(e*t)),r=[1,1.5,1.7],a=n(0,0),o=0;o<e;o++)for(var s=0;s<t;s++){var l=o+e*s,u=n(2*(o/e*2-1),2*(s/t*2-1))/a,c=(.5*u+.5)*(c=(Math.random()+Math.random()+Math.random())/3)*.03;c*=.4,i[3*l+0]=255*(u/15+.05+c)*r[0],i[3*l+1]=255*(u/15+.05+c)*r[1],i[3*l+2]=255*(u/15+.05+c)*r[2]}var d=new Ea(i,e,t,Dt);return d.needsUpdate=!0,d}},{key:"getMousePointCloudIntersection",value:function(e,t,n,i){var r,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},o=n.renderer,s={x:e.x/o.domElement.clientWidth*2-1,y:2*-(e.y/o.domElement.clientHeight)+1},l={},a=(a.pickClipped&&(l.pickClipped=a.pickClipped),l.x=e.x,l.y=o.domElement.clientHeight-e.y,new bh),u=(a.setFromCamera(s,t),a.ray),c=null,d=1/0,h=null,p=null,f=q(i);try{for(f.s();!(r=f.n()).done;){var m,v=r.value,g=v.pick(n,t,u,l);g&&(m=t.position.distanceTo(g.position))<d&&(d=m,c=v,h=g.position,p=g)}}catch(e){f.e(e)}finally{f.f()}return c?{location:h,distance:d,pointcloud:c,point:p}:null}},{key:"pixelsArrayToImage",value:function(e,t,n){var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d"));e=new e.constructor(e);for(var a=0;a<e.length;a++)e[4*a+3]=255;t=r.createImageData(t,n),t.data.set(e),r.putImageData(t,0,0),n=new Image;return n.src=i.toDataURL(),n}},{key:"pixelsArrayToDataUrl",value:function(e,t,n){var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d"));e=new e.constructor(e);for(var a=0;a<e.length;a++)e[4*a+3]=255;t=r.createImageData(t,n);return t.data.set(e),r.putImageData(t,0,0),i.toDataURL()}},{key:"pixelsArrayToCanvas",value:function(e,t,n){for(var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d")),a=(e=new e.constructor(e),4*t),o=0;o<parseInt(n/2);o++){var s=n-o-1,l=e.slice(o*a,o*a+a),u=e.slice(s*a,s*a+a);e.set(u,o*a),e.set(l,s*a)}t=r.createImageData(t,n);return t.data.set(e),r.putImageData(t,0,0),i}},{key:"removeListeners",value:function(e,t){void 0!==e._listeners&&e._listeners[t]&&delete e._listeners[t]}},{key:"mouseToRay",value:function(e,t,n,i){n={x:e.x/n*2-1,y:-e.y/i*2+1},e=new Oe(n.x,n.y,.5),i=t.position.clone(),e.unproject(t),n=(new Oe).subVectors(e,i).normalize();return new _i(i,n)}},{key:"projectedRadius",value:function(e,t,n,i,r){if(t instanceof Ad)return g.projectedRadiusOrtho(e,t.projectionMatrix,i,r);if(t instanceof ya)return g.projectedRadiusPerspective(e,t.fov*Math.PI/180,n,r);throw new Error("invalid parameters")}},{key:"projectedRadiusPerspective",value:function(e,t,n,i){return e*(1/Math.tan(t/2)/n*i/2)}},{key:"projectedRadiusOrtho",value:function(e,t,n,i){var r=new ei(0),e=new ei(e);return r.applyMatrix4(t),e.applyMatrix4(t),r=new Oe(r.x,r.y,r.z),e=new Oe(e.x,e.y,e.z),r.x=.5*(r.x+1)*n,r.y=.5*(r.y+1)*i,e.x=.5*(e.x+1)*n,e.y=.5*(e.y+1)*i,r.distanceTo(e)}},{key:"topView",value:function(e,t){e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(t,1)}},{key:"frontView",value:function(e,t){e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(t,1)}},{key:"leftView",value:function(e,t){e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(t,1)}},{key:"rightView",value:function(e,t){e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(t,1)}},{key:"findClosestGpsTime",value:function(e,t){var n,i=performance.now(),r=[],a=q(t.scene.pointclouds);try{for(a.s();!(n=a.n()).done;){var o,s=n.value,l=(r.push(s.root),q(s.root.children));try{for(l.s();!(o=l.n()).done;){var u=o.value;u&&r.push(u)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){a.e(e)}finally{a.f()}for(var c=null,d=1/0,h=1/0,p=0,f=r;p<f.length;p++){var m=f[p];if(null!=m.geometryNode&&null!=m.geometryNode.geometry&&null!=m.sceneNode)for(var v=m.geometryNode.geometry.attributes["gps-time"],g=v.potree.range,A=0;A<v.array.length;A++){var y=v.array[A]*(g[1]-g[0])+g[0],y=Math.abs(e-y);y<h&&(d=A,h=y,c=m)}}t=c.geometryNode.geometry,t=new Oe(t.attributes.position.array[3*d+0],t.attributes.position.array[3*d+1],t.attributes.position.array[3*d+2]);t.applyMatrix4(c.sceneNode.matrixWorld);i=performance.now()-i;return console.log("duration: ".concat(i.toFixed(3),"ms")),{node:c,index:d,position:t}}},{key:"frustumSphereIntersection",value:function(e,t){for(var n=e.planes,i=t.center,r=-t.radius,a=Number.MAX_VALUE,o=0;o<6;o++){var s=n[o].distanceToPoint(i);if(s<r)return 0;a=Math.min(a,s)}return a>=t.radius?2:1}},{key:"generateDataTexture",value:function(e,t,n){for(var i=e*t,r=new Uint8Array(4*e*t),a=Math.floor(255*n.r),o=Math.floor(255*n.g),s=Math.floor(255*n.b),l=0;l<i;l++)r[3*l]=a,r[3*l+1]=o,r[3*l+2]=s;n=new Ea(r,e,t,It);return n.needsUpdate=!0,n.magFilter=ht,n}},{key:"getParameterByName",value:function(e){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");e=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(document.location.search);return null===e?null:decodeURIComponent(e[1].replace(/\+/g," "))}},{key:"setParameter",value:function(e,t){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("([\\?&])("+e+"=([^&#]*))").exec(document.location.search),i=window.location.href;i=null===n?(0===window.location.search.length?i+="?":i+="&",i+e+"="+t):i.replace(n[2],e+"="+t),window.history.replaceState({},"",i)}},{key:"createChildAABB",value:function(e,t){var n=e.min.clone(),e=e.max.clone(),i=(new Oe).subVectors(e,n);return 0<(1&t)?n.z+=i.z/2:e.z-=i.z/2,0<(2&t)?n.y+=i.y/2:e.y-=i.y/2,0<(4&t)?n.x+=i.x/2:e.x-=i.x/2,new K(n,e)}},{key:"clipboardCopy",value:function(e){var t=document.createElement("textarea");t.style.position="fixed",t.style.top=0,t.style.left=0,t.style.width="2em",t.style.height="2em",t.style.padding=0,t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy")?console.log("copied text to clipboard"):console.log("copy to clipboard failed")}catch(e){console.log("error while trying to copy to clipboard")}document.body.removeChild(t)}},{key:"getMeasurementIcon",value:function(e){return e instanceof im?!e.showDistances||e.showArea||e.showAngles?e.showDistances&&e.showArea&&!e.showAngles?"".concat(Potree.resourcePath,"/icons/area.svg"):1===e.maxMarkers?"".concat(Potree.resourcePath,"/icons/point.svg"):e.showDistances||e.showArea||!e.showAngles?e.showHeight?"".concat(Potree.resourcePath,"/icons/height.svg"):"".concat(Potree.resourcePath,"/icons/distance.svg"):"".concat(Potree.resourcePath,"/icons/angle.png"):"".concat(Potree.resourcePath,"/icons/distance.svg"):e instanceof If?"".concat(Potree.resourcePath,"/icons/profile.svg"):e instanceof _f?"".concat(Potree.resourcePath,"/icons/volume.svg"):e instanceof rm?"".concat(Potree.resourcePath,"/icons/clip-polygon.svg"):void 0}},{key:"lineToLineIntersection",value:function(e,t,n,i){function r(e,t,n,i){return(a[e].x-a[t].x)*(a[n].x-a[i].x)+(a[e].y-a[t].y)*(a[n].y-a[i].y)+(a[e].z-a[t].z)*(a[n].z-a[i].z)}var a=[e,t,n,i],o=(r(0,2,3,2)*r(3,2,1,0)-r(0,2,1,0)*r(3,2,3,2))/(r(1,0,1,0)*r(3,2,3,2)-r(3,2,1,0)*r(3,2,1,0)),s=(r(0,2,3,2)+o*r(3,2,1,0))/r(3,2,3,2),t=t.clone().sub(e),i=i.clone().sub(n),e=e.clone().add(t.multiplyScalar(o)),t=n.clone().add(i.multiplyScalar(s));return e.clone().add(t).multiplyScalar(.5)}},{key:"computeCircleCenter",value:function(e,t,n){var i=t.clone().sub(e),r=n.clone().sub(e),a=r.clone().cross(i).normalize(),i=i.clone().cross(a).normalize(),r=r.clone().cross(a).normalize(),a=e.clone().add(t).multiplyScalar(.5),t=e.clone().add(n).multiplyScalar(.5),e=a,n=a.clone().add(i),a=t,i=t.clone().add(r);return g.lineToLineIntersection(e,n,a,i)}},{key:"getNorthVec",value:function(e,t,n){var i,r,a;return n?(proj4.defs("pointcloud",n),a=(n=proj4("pointcloud","WGS84")).forward(e.toArray()),r=n.forward([e.x,e.y+t]),i=Math.sqrt(Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)),r=[a[0],a[1]+i],a=n.inverse(r),ie(Oe,Fe(a).concat([e.z])).sub(e)):new Oe(0,1,0).multiplyScalar(t)}},{key:"computeAzimuth",value:function(e,t,n){var i;return-(n?(i=(n=n.includes("EPSG")?proj4(n,"WGS84"):(proj4.defs("pointcloud",n),proj4("pointcloud","WGS84"))).forward(e.toArray()),n=[(n=n.forward(t.toArray()))[0]-i[0],n[1]-i[1]],Math.atan2(n[1],n[0])-Math.PI/2):(i=[t.x-e.x,t.y-e.y],Math.atan2(i[1],i[0])-Math.PI/2))}},{key:"loadScript",value:(n=J(X().mark(function e(n){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(e){var t;document.getElementById(n)?e():((t=document.createElement("script")).id=n,t.onload=function(){e()},t.src=n,document.body.appendChild(t))}));case 1:case"end":return e.stop()}},e)})),function(e){return n.apply(this,arguments)})},{key:"createSvgGradient",value:function(e){var t="".concat(Math.random(),"_").concat(Date.now()),n="http://www.w3.org/2000/svg",i=document.createElementNS(n,"svg"),r=(i.setAttributeNS(null,"width","2em"),i.setAttributeNS(null,"height","3em"),document.createElementNS(n,"defs")),a=document.createElementNS(n,"linearGradient");a.setAttributeNS(null,"id",t),a.setAttributeNS(null,"gradientTransform","rotate(90)");for(var o=e.length-1;0<=o;o--){var s=e[o],l=parseInt(100-100*s[0]),s=U(s[1].toArray().map(function(e){return parseInt(255*e)}),3),u=s[0],c=s[1],s=s[2],d=document.createElementNS(n,"stop");d.setAttributeNS(null,"offset","".concat(l,"%")),d.setAttributeNS(null,"stop-color","rgb(".concat(u,", ").concat(c,", ").concat(s,")")),a.appendChild(d)}r.appendChild(a),i.appendChild(r);r=document.createElementNS(n,"rect");return r.setAttributeNS(null,"width","100%"),r.setAttributeNS(null,"height","100%"),r.setAttributeNS(null,"fill",'url("#'.concat(t,'")')),r.setAttributeNS(null,"stroke","black"),r.setAttributeNS(null,"stroke-width","0.1em"),i.appendChild(r),i}},{key:"waitAny",value:(t=J(X().mark(function e(n){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(t){n.map(function(e){e.then(function(){t()})})}));case 1:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]);var t,n,i}(),am=(ne.screenPass=new function(){this.screenScene=new Fs,this.screenQuad=new Q(new _a(2,2,1)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new Aa,this.render=function(e,t,n){this.screenQuad.material=t,void 0===n?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,n)}},function(){function n(e){ue(this,n);var t=-1===(this.version=e).indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)}return A(n,[{key:"newerThan",value:function(e){e=new n(e);return this.versionMajor>e.versionMajor||this.versionMajor===e.versionMajor&&this.versionMinor>e.versionMinor}},{key:"equalOrHigher",value:function(e){e=new n(e);return this.versionMajor>e.versionMajor||this.versionMajor===e.versionMajor&&this.versionMinor>=e.versionMinor}},{key:"upTo",value:function(e){return!this.newerThan(e)}}])}()),om=function(){return A(function e(t,n,i){ue(this,e),this.version="string"==typeof t?new am(t):t,this.boundingBox=n,this.scale=i},[{key:"load",value:function(t){var n=this;if(!t.loaded){var i=t.getURL(),r=(this.version.equalOrHigher("1.4")&&(i+=".bin"),Sf.createXMLHttpRequest());r.open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){if(4===r.readyState){if(200!==r.status&&0!==r.status||null===r.response)throw new Error("Failed to load file! HTTP status: ".concat(r.status,", file: ").concat(i));var e=r.response;n.parse(t,e)}};try{r.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}}},{key:"parse",value:function(o,e,s){var l=o.pcoGeometry.pointAttributes,t=e.byteLength/o.pcoGeometry.pointAttributes.byteSize,u=(this.version.upTo("1.5")&&(o.numPoints=t),Potree.scriptPath+"/workers/BinaryDecoderWorker.js"),c=Potree.workerPool.getWorker(u),t=(c.onmessage=function(e){var i,t=e.data,r=t.attributeBuffers,n=new K((new Oe).fromArray(t.tightBoundingBox.min),(new Oe).fromArray(t.tightBoundingBox.max)),a=(Potree.workerPool.returnWorker(u,c),new V);for(i in r)!function(){var e,t=r[i].buffer,n=r[i].attribute;"POSITION_CARTESIAN"===i?a.setAttribute("position",new H(new Float32Array(t),3)):"rgba"===i?a.setAttribute("rgba",new H(new Uint8Array(t),4,!0)):"NORMAL_SPHEREMAPPED"===i||"NORMAL_OCT16"===i||"NORMAL"===i?a.setAttribute("normal",new H(new Float32Array(t),3)):"INDICES"===i?((e=new H(new Uint8Array(t),4)).normalized=!0,a.setAttribute("indices",e)):"SPACING"===i?(e=new H(new Float32Array(t),1),a.setAttribute("spacing",e)):((e=new H(new Float32Array(t),1)).potree={offset:r[i].offset,scale:r[i].scale,preciseBuffer:r[i].preciseBuffer,range:n.range},a.setAttribute(i,e),(t=l.attributes.find(function(e){return e.name===n.name})).range[0]=Math.min(t.range[0],n.range[0]),t.range[1]=Math.max(t.range[1],n.range[1]),0===o.getLevel()&&(t.initialRange=n.range))}();n.max.sub(n.min),n.min.set(0,0,0);e=e.data.buffer.byteLength/l.byteSize;o.numPoints=e,o.geometry=a,o.mean=ie(Oe,Fe(t.mean)),o.tightBoundingBox=n,o.loaded=!0,o.loading=!1,o.estimatedSpacing=t.estimatedSpacing,Potree.numNodesLoading--,s()},{buffer:e,pointAttributes:l,version:this.version.version,min:[o.boundingBox.min.x,o.boundingBox.min.y,o.boundingBox.min.z],offset:[o.pcoGeometry.offset.x,o.pcoGeometry.offset.y,o.pcoGeometry.offset.z],scale:this.scale,spacing:o.spacing,hasChildren:o.hasChildren,name:o.name});c.postMessage(t,[t.buffer])}}])}(),ah=document.createElement("canvas"),sm=null===(tm=ah.getContext("webgl")||ah.getContext("experimental-webgl"))?{}:(Zd=tm.getShaderPrecisionFormat(tm.VERTEX_SHADER,tm.HIGH_FLOAT),ep=tm.getShaderPrecisionFormat(tm.VERTEX_SHADER,tm.MEDIUM_FLOAT),qh=tm.getShaderPrecisionFormat(tm.FRAGMENT_SHADER,tm.HIGH_FLOAT),Zl=tm.getShaderPrecisionFormat(tm.FRAGMENT_SHADER,tm.MEDIUM_FLOAT),Zd=0<Zd.precision&&0<qh.precision,qh=0<ep.precision&&0<Zl.precision,{SHADER_INTERPOLATION:{isSupported:function(){return tm.getExtension("EXT_frag_depth")&&8<=tm.getParameter(tm.MAX_VARYING_VECTORS)}},SHADER_SPLATS:{isSupported:function(){return tm.getExtension("EXT_frag_depth")&&tm.getExtension("OES_texture_float")&&8<=tm.getParameter(tm.MAX_VARYING_VECTORS)}},SHADER_EDL:{isSupported:function(){return tm.getExtension("EXT_frag_depth")&&tm.getExtension("OES_texture_float")&&8<=tm.getParameter(tm.MAX_VARYING_VECTORS)}},precision:Zd?"highp":qh?"mediump":"lowp"}),lm={DATA_TYPE_DOUBLE:{ordinal:0,name:"double",size:8},DATA_TYPE_FLOAT:{ordinal:1,name:"float",size:4},DATA_TYPE_INT8:{ordinal:2,name:"int8",size:1},DATA_TYPE_UINT8:{ordinal:3,name:"uint8",size:1},DATA_TYPE_INT16:{ordinal:4,name:"int16",size:2},DATA_TYPE_UINT16:{ordinal:5,name:"uint16",size:2},DATA_TYPE_INT32:{ordinal:6,name:"int32",size:4},DATA_TYPE_UINT32:{ordinal:7,name:"uint32",size:4},DATA_TYPE_INT64:{ordinal:8,name:"int64",size:8},DATA_TYPE_UINT64:{ordinal:9,name:"uint64",size:8}},um=0;for(nm in lm)lm[um]=lm[nm],um++;var cm=A(function e(t,n,i){ue(this,e),this.name=t,this.type=n,this.numElements=i,this.byteSize=this.numElements*this.type.size,this.description="",this.range=[1/0,-1/0]}),dm=(cm.POSITION_CARTESIAN=new cm("POSITION_CARTESIAN",lm.DATA_TYPE_FLOAT,3),cm.RGBA_PACKED=new cm("COLOR_PACKED",lm.DATA_TYPE_INT8,4),cm.COLOR_PACKED=cm.RGBA_PACKED,cm.RGB_PACKED=new cm("COLOR_PACKED",lm.DATA_TYPE_INT8,3),cm.NORMAL_FLOATS=new cm("NORMAL_FLOATS",lm.DATA_TYPE_FLOAT,3),cm.INTENSITY=new cm("INTENSITY",lm.DATA_TYPE_UINT16,1),cm.CLASSIFICATION=new cm("CLASSIFICATION",lm.DATA_TYPE_UINT8,1),cm.NORMAL_SPHEREMAPPED=new cm("NORMAL_SPHEREMAPPED",lm.DATA_TYPE_UINT8,2),cm.NORMAL_OCT16=new cm("NORMAL_OCT16",lm.DATA_TYPE_UINT8,2),cm.NORMAL=new cm("NORMAL",lm.DATA_TYPE_FLOAT,3),cm.RETURN_NUMBER=new cm("RETURN_NUMBER",lm.DATA_TYPE_UINT8,1),cm.NUMBER_OF_RETURNS=new cm("NUMBER_OF_RETURNS",lm.DATA_TYPE_UINT8,1),cm.SOURCE_ID=new cm("SOURCE_ID",lm.DATA_TYPE_UINT16,1),cm.INDICES=new cm("INDICES",lm.DATA_TYPE_UINT32,1),cm.SPACING=new cm("SPACING",lm.DATA_TYPE_FLOAT,1),cm.GPS_TIME=new cm("GPS_TIME",lm.DATA_TYPE_DOUBLE,1),function(){return A(function e(t){if(ue(this,e),this.attributes=[],this.byteSize=0,this.size=0,this.vectors=[],null!=t)for(var n=0;n<t.length;n++){var i=t[n],i=cm[i];this.attributes.push(i),this.byteSize+=i.byteSize,this.size++}},[{key:"add",value:function(e){this.attributes.push(e),this.byteSize+=e.byteSize,this.size++}},{key:"addVector",value:function(e){this.vectors.push(e)}},{key:"hasNormals",value:function(){for(var e in this.attributes){e=this.attributes[e];if(e===cm.NORMAL_SPHEREMAPPED||e===cm.NORMAL_FLOATS||e===cm.NORMAL||e===cm.NORMAL_OCT16)return!0}return!1}}])}()),hm=function(){return A(function e(){ue(this,e),this.boundingBox=new K,this.numPoints=0,this.data={}},[{key:"add",value:function(e){var t,n=this.numPoints,i=n+e.numPoints,r=Object.keys(this.data),a=Object.keys(e.data),o=q(new Set([].concat(r,a)));try{for(o.s();!(t=o.n()).done;){var s,l,u,c,d,h=t.value;r.includes(h)&&a.includes(h)?((s=new this.data[h].constructor(this.data[h].length+e.data[h].length)).set(this.data[h],0),s.set(e.data[h],this.data[h].length),this.data[h]=s):r.includes(h)&&!a.includes(h)?(l=this.data[h].length/this.numPoints,(u=new this.data[h].constructor(l*i)).set(this.data[h],0),this.data[h]=u):!r.includes(h)&&a.includes(h)&&(c=e.data[h].length/e.numPoints,(d=new e.data[h].constructor(c*i)).set(e.data[h],c*n),this.data[h]=d)}}catch(e){o.e(e)}finally{o.f()}this.numPoints=i,this.boundingBox.union(e.boundingBox)}}])}(),pm=function(){return A(function e(){ue(this,e)},null,[{key:"toString",value:function(e){var t,n="",i=Object.keys(e.data).filter(function(e){return"normal"!==e}).sort(function(e,t){return"position"===e?-1:"position"===t?1:"rgba"===e?-1:"rgba"===t?1:void 0}),r=[],a=q(i);try{for(a.s();!(t=a.n()).done;){var o=t.value,s=e.data[o].length/e.numPoints;if("position"===o)r=r.concat(["x","y","z"]);else if("rgba"===o)r=r.concat(["r","g","b","a"]);else if(1<s)for(var l=0;l<s;l++)r.push("".concat(o,"_").concat(l));else r.push(o)}}catch(e){a.e(e)}finally{a.f()}for(var n=r.join(", ")+"\n",u=0;u<e.numPoints;u++){var c,d=[],h=q(i);try{for(h.s();!(c=h.n()).done;){var p=c.value,f=e.data[p].length/e.numPoints,m=e.data[p].subarray(f*u,f*u+f).join(", ");d.push(m)}}catch(e){h.e(e)}finally{h.f()}n+=d.join(", ")+"\n"}return n}}])}(),fm=function(){return A(function e(){ue(this,e)},null,[{key:"toLAS",value:function(e){for(var t=e.boundingBox,n=t.min.clone(),i=t.min.distanceTo(t.max),r=new Oe(.001,.001,.001),r=1e6<i?new Oe(.01,.01,.01):new Oe(.001,.001,.001),i=function(e,t,n){for(var i=new Uint8Array(n),r=0;r<e.length;r++){var a=e.charCodeAt(r);i[t+r]=a}},a=new ArrayBuffer(227+28*e.numPoints),o=new DataView(a),s=new Uint8Array(a),l=(i("LASF",0,a),s[24]=1,s[25]=2,i("Potree 1.7",58,a),o.setUint16(94,227,!0),o.setUint32(96,227,!0),s[104]=2,o.setUint16(105,28,!0),o.setUint32(107,e.numPoints,!0),o.setFloat64(131,r.x,!0),o.setFloat64(139,r.y,!0),o.setFloat64(147,r.z,!0),o.setFloat64(155,n.x,!0),o.setFloat64(163,n.y,!0),o.setFloat64(171,n.z,!0),o.setFloat64(179,t.max.x,!0),o.setFloat64(187,t.min.x,!0),o.setFloat64(195,t.max.y,!0),o.setFloat64(203,t.min.y,!0),o.setFloat64(211,t.max.z,!0),o.setFloat64(219,t.min.z,!0),227),u=0;u<e.numPoints;u++){var c=e.data.position[3*u+0],d=e.data.position[3*u+1],h=e.data.position[3*u+2],c=parseInt((c-n.x)/r.x),d=parseInt((d-n.y)/r.y),h=parseInt((h-n.z)/r.z),c=(o.setUint32(l+0,c,!0),o.setUint32(l+4,d,!0),o.setUint32(l+8,h,!0),e.data.intensity&&o.setUint16(l+12,e.data.intensity[u],!0),0);e.data.returnNumber&&(c+=e.data.returnNumber[u]),e.data.numberOfReturns&&(c+=e.data.numberOfReturns[u]<<3),o.setUint8(l+14,c),e.data.classification&&o.setUint8(l+15,e.data.classification[u]),e.data.pointSourceID&&o.setUint16(l+18,e.data.pointSourceID[u]),e.data.rgba&&(d=e.data.rgba,o.setUint16(l+20,255*d[4*u+0],!0),o.setUint16(l+22,255*d[4*u+1],!0),o.setUint16(l+24,255*d[4*u+2],!0)),l+=28}return a}}])}(),mm=function(){return A(function e(){ue(this,e),this._listeners={}},[{key:"addEventListener",value:function(e,t){var n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}},{key:"hasEventListener",value:function(e,t){var n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}},{key:"removeEventListener",value:function(e,t){e=this._listeners[e];void 0!==e&&-1!==(t=e.indexOf(t))&&e.splice(t,1)}},{key:"removeEventListeners",value:function(e){void 0!==this._listeners[e]&&delete this._listeners[e]}},{key:"dispatchEvent",value:function(e){var t=this._listeners[e.type];if(void 0!==t){e.target=this;var n,i=q(t.slice(0));try{for(i.s();!(n=i.n()).done;)n.value.call(this,e)}catch(e){i.e(e)}finally{i.f()}}}}])}(),vm=function(){function t(){var e;return ue(this,t),(e=le(this,t)).needsTransformUpdate=!0,e}return v(t,mm),A(t,[{key:"getChildren",value:function(){throw new Error("override function")}},{key:"getBoundingBox",value:function(){throw new Error("override function")}},{key:"isLoaded",value:function(){throw new Error("override function")}},{key:"isGeometryNode",value:function(){throw new Error("override function")}},{key:"isTreeNode",value:function(){throw new Error("override function")}},{key:"getLevel",value:function(){throw new Error("override function")}},{key:"getBoundingSphere",value:function(){throw new Error("override function")}}])}(),gm=function(){function e(){return ue(this,e),le(this,e)}return v(e,Z),A(e,[{key:"initialized",value:function(){return null!==this.root}}])}(),Am=A(function e(){ue(this,e),this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null}),ym=function(){function M(e,t,n){var i;return ue(this,M),(i=le(this,M)).id=M.IDCount++,i.name=e,i.index=parseInt(e.charAt(e.length-1)),i.pcoGeometry=t,i.geometry=null,i.boundingBox=n,i.boundingSphere=n.getBoundingSphere(new bi),i.children={},i.numPoints=0,i.level=null,i.loaded=!1,i.oneTimeDisposeHandlers=[],i}return v(M,vm),A(M,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"getURL",value:function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:(t.equalOrHigher("1.4")||t.upTo("1.3"))&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e}},{key:"getHierarchyPath",value:function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,n=this.name.substr(1),i=Math.floor(n.length/t),r=0;r<i;r++)e+=n.substr(r*t,t)+"/";return e=e.slice(0,-1)}},{key:"addChild",value:function(e){(this.children[e.index]=e).parent=this}},{key:"load",value:function(){!0===this.loading||!0===this.loaded||Potree.numNodesLoading>=Potree.maxNodesLoading||(this.loading=!0,Potree.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")?this.level%this.pcoGeometry.hierarchyStepSize==0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints():(this.pcoGeometry.dispatchEvent({type:"updateNodeMaxLevel",level:this.level}),this.loadPoints()))}},{key:"loadPoints",value:function(){this.pcoGeometry.loader.load(this)}},{key:"loadHierachyThenPoints",value:function(){var E=this;if(E.level%E.pcoGeometry.hierarchyStepSize==0){var C=E.pcoGeometry.octreeDir+"/"+E.getHierarchyPath()+"/"+E.name+".hrc",B=Sf.createXMLHttpRequest();B.open("GET",C,!0),B.responseType="arraybuffer",B.overrideMimeType("text/plain; charset=x-user-defined"),B.onreadystatechange=function(){if(4===B.readyState)if(200===B.status||0===B.status){for(var e=B.response,t=E,n=e,e=performance.now(),i=new DataView(n),r=[],a=i.getUint8(0),o=i.getUint32(1,!0),s=(t.numPoints=o,r.push({children:a,numPoints:o,name:t.name}),[]),l=5;0<r.length;){for(var u,c,d,h=r.shift(),p=1,f=0;f<8;f++)0!=(h.children&p)&&(u=h.name+f,c=i.getUint8(l),d=i.getUint32(l+1,!0),r.push({children:c,numPoints:d,name:u}),s.push({children:c,numPoints:d,name:u}),l+=5),p*=2;if(l===n.byteLength)break}for(var m={},v=(m[t.name]=t).pcoGeometry,g=0;g<s.length;g++){var A=s[g].name,y=s[g].numPoints,w=parseInt(A.charAt(A.length-1)),b=m[A.substring(0,A.length-1)],x=A.length-1,w=new M(A,v,ne.createChildAABB(b.boundingBox,w));w.level=x,w.numPoints=y,w.hasChildren=0<s[g].children,w.spacing=v.spacing/Math.pow(2,x),b.addChild(w),m[A]=w}5<(a=performance.now()-e)&&(o="duration: ".concat(a,"ms, numNodes: ").concat(s.length),console.log(o)),t.loadPoints()}else console.log("Failed to load file! HTTP status: "+B.status+", file: "+C),Potree.numNodesLoading--};try{B.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1,this.dispatchEvent({type:"dispose"});for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}])}(),wm={SPECTRAL:[[ym.IDCount=0,new Se(.3686,.3098,.6353)],[.1,new Se(.1961,.5333,.7412)],[.2,new Se(.4,.7608,.6471)],[.3,new Se(.6706,.8667,.6431)],[.4,new Se(.902,.9608,.5961)],[.5,new Se(1,1,.749)],[.6,new Se(.9961,.8784,.5451)],[.7,new Se(.9922,.6824,.3804)],[.8,new Se(.9569,.4275,.2627)],[.9,new Se(.8353,.2431,.3098)],[1,new Se(.6196,.0039,.2588)]],PLASMA:[[0,new Se(.241,.015,.61)],[.1,new Se(.387,.001,.654)],[.2,new Se(.524,.025,.653)],[.3,new Se(.651,.125,.596)],[.4,new Se(.752,.227,.513)],[.5,new Se(.837,.329,.431)],[.6,new Se(.907,.435,.353)],[.7,new Se(.963,.554,.272)],[.8,new Se(.992,.681,.195)],[.9,new Se(.987,.822,.144)],[1,new Se(.94,.975,.131)]],YELLOW_GREEN:[[0,new Se(.1647,.2824,.3451)],[.1,new Se(.1338,.3555,.4227)],[.2,new Se(.061,.4319,.4864)],[.3,new Se(0,.5099,.5319)],[.4,new Se(0,.5881,.5569)],[.5,new Se(.137,.665,.5614)],[.6,new Se(.2906,.7395,.5477)],[.7,new Se(.4453,.8099,.5201)],[.8,new Se(.6102,.8748,.485)],[.9,new Se(.7883,.9323,.4514)],[1,new Se(.9804,.9804,.4314)]],VIRIDIS:[[0,new Se(.267,.005,.329)],[.1,new Se(.283,.141,.458)],[.2,new Se(.254,.265,.53)],[.3,new Se(.207,.372,.553)],[.4,new Se(.164,.471,.558)],[.5,new Se(.128,.567,.551)],[.6,new Se(.135,.659,.518)],[.7,new Se(.267,.749,.441)],[.8,new Se(.478,.821,.318)],[.9,new Se(.741,.873,.15)],[1,new Se(.993,.906,.144)]],INFERNO:[[0,new Se(.077,.042,.206)],[.1,new Se(.225,.036,.388)],[.2,new Se(.373,.074,.432)],[.3,new Se(.522,.128,.42)],[.4,new Se(.665,.182,.37)],[.5,new Se(.797,.255,.287)],[.6,new Se(.902,.364,.184)],[.7,new Se(.969,.516,.063)],[.8,new Se(.988,.683,.072)],[.9,new Se(.961,.859,.298)],[1,new Se(.988,.998,.645)]],GRAYSCALE:[[0,new Se(0,0,0)],[1,new Se(1,1,1)]],TURBO:[[0,new Se(.18995,.07176,.23217)],[.07,new Se(.25107,.25237,.63374)],[.13,new Se(.27628,.42118,.89123)],[.2,new Se(.25862,.57958,.99876)],[.27,new Se(.15844,.73551,.92305)],[.33,new Se(.09267,.86554,.7623)],[.4,new Se(.19659,.94901,.59466)],[.47,new Se(.42778,.99419,.38575)],[.53,new Se(.64362,.98999,.23356)],[.6,new Se(.80473,.92452,.20459)],[.67,new Se(.93301,.81236,.22667)],[.73,new Se(.99314,.67408,.20348)],[.8,new Se(.9836,.49291,.12849)],[.87,new Se(.92105,.31489,.05475)],[.93,new Se(.81608,.18462,.01809)],[1,new Se(.66449,.08436,.00424)]],RAINBOW:[[0,new Se(.278,0,.714)],[1/6,new Se(0,0,1)],[2/6,new Se(0,1,1)],[.5,new Se(0,1,0)],[4/6,new Se(1,1,0)],[5/6,new Se(1,.64,0)],[1,new Se(1,0,0)]],CONTOUR:[[0,new Se(0,0,0)],[.03,new Se(0,0,0)],[.04,new Se(1,1,1)],[1,new Se(1,1,1)]]},bm={"pointcloud_new.vs":'\nprecision highp float;\nprecision highp int;\n \n#define PI 3.141592653589793\n\n \n\n\n\n#if defined(usePanoMap) \n \n uniform samplerCube pano0Map; //随便设置一个samplerCube去使用都会让点云消失\n uniform samplerCube pano1Map;\n \n uniform float progress;\n uniform float easeInOutRatio;\n\n \n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix; \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix;\n /*\n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n */\n#endif \n\n\n\n\n \n\n//--------------\n\n\n\n\n\nattribute vec3 position;\nattribute vec3 color;\nattribute float intensity;\nattribute float classification;\nattribute float returnNumber;\nattribute float numberOfReturns;\nattribute float pointSourceID;\nattribute vec4 indices; //每个点的index\nattribute float spacing;\nattribute float gpsTime;\nattribute vec3 normal;\nattribute float aExtra;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\n\n//uniform float uScreenWidth;\n//uniform float uScreenHeight;\nuniform vec2 resolution;\n\n\nuniform float fov;\nuniform float near;\nuniform float far;\n\n\n\n\nuniform bool uDebug;\n\nuniform bool uUseOrthographicCamera;\nuniform float uOrthoWidth;\nuniform float uOrthoHeight;\n\n#define CLIPTASK_NONE 0\n#define CLIPTASK_HIGHLIGHT 1\n#define CLIPTASK_SHOW_INSIDE 2\n#define CLIPTASK_SHOW_OUTSIDE 3\n\n#define CLIPMETHOD_INSIDE_ANY 0\n#define CLIPMETHOD_INSIDE_ALL 1\n\n//最外层裁剪(下载)\n#if defined(bigClipInBox)\n\tuniform mat4 clipBoxBig_in;\n#endif\n//内层裁剪\n#if defined(num_in_clipboxes) && num_in_clipboxes > 0\n\tuniform mat4 clipBoxes_in[num_in_clipboxes];\n#endif\n#if defined(num_out_clipboxes) && num_out_clipboxes > 0\n\tuniform mat4 clipBoxes_out[num_out_clipboxes];\n#endif\n\n\n#if defined(num_clipspheres) && num_clipspheres > 0\n\tuniform mat4 uClipSpheres[num_clipspheres];\n#endif\n\n \n#if defined(num_highlightBox) && num_highlightBox > 0\n uniform mat4 boxes_highlight[num_highlightBox]; \n#endif \n\t\t \n\n#if defined(num_prism) && num_prism > 0\n uniform mat3 prismList[num_prism];\n uniform vec2 prismPoints[prismPointCountSum]; \n#endif \n\n#if defined(showBaseHeight) \n uniform sampler2D baseHeightAreaMap ;\n uniform vec2 baseHeightBoundZ;\n uniform vec4 baseHeightBoundXY; \n#endif \n\nuniform float size;\nuniform float minSize;\nuniform float maxSize; \nuniform float orthoMaxSize;//add\n\n\nuniform float uPCIndex;\nuniform float uOctreeSpacing;\nuniform float uNodeSpacing;\nuniform float uOctreeSize;\nuniform vec3 uBBSize;\nuniform float uLevel;\nuniform float levelPercent;//add\nuniform float uVNStart;\nuniform bool uIsLeafNode;\n\nuniform vec3 uColor;\nuniform float uOpacity; \nvarying float vOpacity; //add\n\n\n\nuniform vec2 elevationRange;\nuniform vec2 intensityRange;\n\nuniform vec2 uFilterReturnNumberRange;\nuniform vec2 uFilterNumberOfReturnsRange;\nuniform vec2 uFilterPointSourceIDClipRange;\nuniform vec2 uFilterGPSTimeClipRange;\n//uniform float ufilterByNormalThreshold; \n\nuniform float uGpsScale;\nuniform float uGpsOffset;\n\nuniform vec2 uNormalizedGpsBufferRange;\n\nuniform vec3 uIntensity_gbc;\nuniform vec3 uRGB_gbc;\nuniform vec3 uExtra_gbc;\n\nuniform float uTransition;\nuniform float wRGB;\nuniform float wIntensity;\nuniform float wElevation;\nuniform float wClassification;\nuniform float wReturnNumber;\nuniform float wSourceID;\n\nuniform vec2 uExtraNormalizedRange;\nuniform vec2 uExtraRange;\nuniform float uExtraScale;\nuniform float uExtraOffset;\n\nuniform vec3 uShadowColor;\n\nuniform sampler2D visibleNodes;\nuniform sampler2D gradient;\nuniform sampler2D classificationLUT;\n\n#if defined(color_type_matcap)\nuniform sampler2D matcapTextureUniform;\n#endif\nuniform bool backfaceCulling;\n\n#if defined(num_shadowmaps) && num_shadowmaps > 0\nuniform sampler2D uShadowMap[num_shadowmaps];\nuniform mat4 uShadowWorldView[num_shadowmaps];\nuniform mat4 uShadowProj[num_shadowmaps];\n#endif\n\n\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float \tvRadius;\nvarying float \tvPointSize;\n\n\nfloat Round(float number){\n\treturn floor(number + 0.5);\n}\n\n// \n// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### \n// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### \n// \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nint numberOfOnes(int number, int index){\n\tint numOnes = 0;\n\tint tmp = 128;\n\tfor(int i = 7; i >= 0; i--){\n\t\t\n\t\tif(number >= tmp){\n\t\t\tnumber = number - tmp;\n\n\t\t\tif(i <= index){\n\t\t\t\tnumOnes++;\n\t\t\t}\n\t\t}\n\t\t\n\t\ttmp = tmp / 2;\n\t}\n\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(int number, int index){\n\n\t// weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\n\tint powi = 1;\n\tif(index == 0){\n\t\tpowi = 1;\n\t}else if(index == 1){\n\t\tpowi = 2;\n\t}else if(index == 2){\n\t\tpowi = 4;\n\t}else if(index == 3){\n\t\tpowi = 8;\n\t}else if(index == 4){\n\t\tpowi = 16;\n\t}else if(index == 5){\n\t\tpowi = 32;\n\t}else if(index == 6){\n\t\tpowi = 64;\n\t}else if(index == 7){\n\t\tpowi = 128;\n\t}else{\n\t\treturn false;\n\t}\n\n\tint ndp = number / powi;\n\n\treturn mod(float(ndp), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){//////we use this\n\t \n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(Round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(Round(value.r * 255.0));\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(Round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(Round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\t//return value.a * 255.0;\n\n\t\t\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\n\n\t\t\treturn depth + lodOffset;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\nfloat getSpacing(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfloat spacing = uNodeSpacing;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(Round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(Round(value.r * 255.0));\n\t\tfloat spacingFactor = value.a;\n\n\t\tif(i > 0.0){\n\t\t\tspacing = spacing / (255.0 * spacingFactor);\n\t\t}\n\t\t\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(Round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(Round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\n\t\t\t//spacing = spacing / (255.0 * spacingFactor);\n\t\t\t//spacing = spacing / 3.0;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn spacing;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn spacing;\n}\n\nfloat getPointSizeAttenuation(){\n\treturn pow(2.0, getLOD());\n}\n\n\n#endif\n\n\n// ---------------------\n// KD-TREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree)\n\nfloat getLOD(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = 0.0;\n\tfloat depth = 0.0;\n\t\t\n\t\t\n\tvec3 size = uBBSize;\t\n\tvec3 pos = position;\n\t\t\n\tfor(float i = 0.0; i <= 1000.0; i++){\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\t\n\t\tint children = int(value.r * 255.0);\n\t\tfloat next = value.g * 255.0;\n\t\tint split = int(value.b * 255.0);\n\t\t\n\t\tif(next == 0.0){\n\t\t \treturn depth;\n\t\t}\n\t\t\n\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\n\t\tif(split == 1){\n\t\t\tsplitv.x = 1.0;\n\t\t}else if(split == 2){\n\t\t \tsplitv.y = 1.0;\n\t\t}else if(split == 4){\n\t\t \tsplitv.z = 1.0;\n\t\t}\n\t\t\n\t\tiOffset = iOffset + next;\n\t\t\n\t\tfloat factor = length(pos * splitv / size);\n\t\tif(factor < 0.5){\n\t\t\t// left\n\t\tif(children == 0 || children == 2){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t}else{\n\t\t\t// right\n\t\t\tpos = pos - size * splitv * 0.5;\n\t\t\tif(children == 0 || children == 1){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t\tif(children == 3){\n\t\t\t\tiOffset = iOffset + 1.0;\n\t\t\t}\n\t\t}\n\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\n\t\t\n\t\tdepth++;\n\t}\n\t\t\n\t\t\n\treturn depth;\t\n}\n\nfloat getPointSizeAttenuation(){\n\treturn 0.5 * pow(1.3, getLOD());\n}\n\n#endif\n\n\n\n// \n// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ######## ## ######## ## ## ## ###### ###### \n// ######### ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## #### ######## ####### ## ######## ###### \n// \n\n\n\n// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\nfloat getContrastFactor(float contrast){\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\n}\n\nvec3 getRGB(){\n\tvec3 rgb = color;\n\t\n\trgb = pow(rgb, vec3(uRGB_gbc.x));\n\trgb = rgb + uRGB_gbc.y;\n\trgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5;\n\trgb = clamp(rgb, 0.0, 1.0);\n\n\treturn rgb;\n}\n\nfloat getIntensity(){\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\n\tw = pow(w, uIntensity_gbc.x);\n\tw = w + uIntensity_gbc.y;\n\tw = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5;\n\tw = clamp(w, 0.0, 1.0);\n\n\treturn w;\n}\n\nvec3 getGpsTime(){\n\n\tfloat w = (gpsTime + uGpsOffset) * uGpsScale;\n\n\n\tvec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\n\t// vec2 r = uNormalizedGpsBufferRange;\n\t// float w = gpsTime * (r.y - r.x) + r.x;\n\t// w = clamp(w, 0.0, 1.0);\n\t// vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn c;\n}\n\nvec3 getElevation(vec4 world){ \n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\n\tvec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\treturn cElevation;\n}\n\nvec4 getClassification(){\n\tvec2 uv = vec2(classification / 255.0, 0.5);\n\tvec4 classColor = texture2D(classificationLUT, uv);\n\t\n\treturn classColor;\n}\n\nvec3 getReturns(){\n\n\t// 0b 00_000_111\n\tfloat rn = mod(returnNumber, 8.0);\n\t// 0b 00_111_000\n\tfloat nr = mod(returnNumber / 8.0, 8.0);\n\n\tif(nr <= 1.0){\n\t\treturn vec3(1.0, 0.0, 0.0);\n\t}else{\n\t\treturn vec3(0.0, 1.0, 0.0);\n\t}\n\n\t// return vec3(nr / 4.0, 0.0, 0.0);\n\n\t// if(nr == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(rn == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(rn == nr){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n\n\t// if(numberOfReturns == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(returnNumber == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(returnNumber == numberOfReturns){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n}\n\nvec3 getReturnNumber(){\n\tif(numberOfReturns == 1.0){\n\t\treturn vec3(1.0, 1.0, 0.0);\n\t}else{\n\t\tif(returnNumber == 1.0){\n\t\t\treturn vec3(1.0, 0.0, 0.0);\n\t\t}else if(returnNumber == numberOfReturns){\n\t\t\treturn vec3(0.0, 0.0, 1.0);\n\t\t}else{\n\t\t\treturn vec3(0.0, 1.0, 0.0);\n\t\t}\n\t}\n}\n\nvec3 getNumberOfReturns(){\n\tfloat value = numberOfReturns;\n\n\tfloat w = value / 6.0;\n\n\tvec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\treturn color;\n}\n\nvec3 getSourceID(){\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\n}\n\nvec3 getCompositeColor(vec4 world){\n\tvec3 c;\n\tfloat w;\n\n\tc += wRGB * getRGB();\n\tw += wRGB;\n\t\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\n\tw += wIntensity;\n\t\n\tc += wElevation * getElevation(world);\n\tw += wElevation;\n\t\n\tc += wReturnNumber * getReturnNumber();\n\tw += wReturnNumber;\n\t\n\tc += wSourceID * getSourceID();\n\tw += wSourceID;\n\t\n\tvec4 cl = wClassification * getClassification();\n\tc += cl.a * cl.rgb;\n\tw += wClassification * cl.a;\n\n\tc = c / w;\n\t\n\tif(w == 0.0){\n\t\t//c = color;\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t}\n\t\n\treturn c;\n}\n\n\nvec3 getNormal(){\n\t//vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.;\n\tvec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\treturn n_view;\n}\nbool applyBackfaceCulling() {\n\t// Black not facing vertices / Backface culling\n \n\tvec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. )));\n\tvec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\n\tif((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { \n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\n#if defined(color_type_matcap)\n// Matcap Material\nvec3 getMatcap(){ \n\tvec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); \n\tif(uUseOrthographicCamera) { \n\t\teye = vec3(0., 0., -1.);\n\t}\n\tvec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n;\n\tfloat m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. ));\n\tvec2 vN = r_en.xy / m + .5;\n\treturn texture2D(matcapTextureUniform, vN).rgb; \n}\n#endif\n\nvec3 getExtra(){\n\n\tfloat w = (aExtra + uExtraOffset) * uExtraScale;\n\tw = clamp(w, 0.0, 1.0);\n\n\tvec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\t// vec2 r = uExtraNormalizedRange;\n\n\t// float w = aExtra * (r.y - r.x) + r.x;\n\n\t// w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x);\n\n\t// w = clamp(w, 0.0, 1.0);\n\n\t// vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\treturn color;\n}\n\nvec3 getColor(vec4 world){\n\tvec3 color;\n\t\n\t#ifdef color_type_rgba\n\t\tcolor = getRGB();\n \n \n\t#elif defined color_type_height || defined color_type_elevation\n\t\tcolor = getElevation(world);\n\t#elif defined color_type_rgb_height\n\t\tvec3 cHeight = getElevation();\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\n\t#elif defined color_type_depth\n\t\tfloat linearDepth = gl_Position.w;\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\n\t\t//color = vec3(1.0, 0.5, 0.3);\n\t#elif defined color_type_intensity\n\t\tfloat w = getIntensity();\n\t\tcolor = vec3(w, w, w);\n\t#elif defined color_type_gps_time\n\t\tcolor = getGpsTime();\n\t#elif defined color_type_intensity_gradient\n\t\tfloat w = getIntensity();\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_color\n\t\tcolor = uColor;\n\t#elif defined color_type_level_of_detail\n\t\tfloat depth = getLOD();\n\t\tfloat w = depth / 10.0;\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_indices\n\t\tcolor = indices.rgb;\n\t#elif defined color_type_classification\n\t\tvec4 cl = getClassification(); \n\t\tcolor = cl.rgb;\n\t#elif defined color_type_return_number\n\t\tcolor = getReturnNumber();\n\t#elif defined color_type_returns\n\t\tcolor = getReturns();\n\t#elif defined color_type_number_of_returns\n\t\tcolor = getNumberOfReturns();\n\t#elif defined color_type_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_point_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_normal\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\n\t#elif defined color_type_phong\n\t\tcolor = color;\n\t#elif defined color_type_composite\n\t\tcolor = getCompositeColor(world);\n\t#elif defined color_type_matcap\n\t\tcolor = getMatcap();\n\t#elif defined color_type_heightCpt //add\n color = vec3(0.0,0.0,0.0);\n #else\n\t\tcolor = getExtra();\n\t#endif\n\t\n\tif (backfaceCulling && applyBackfaceCulling()){\n //color = vec3(0.);\n }\n //applyBackfaceCulling直接返回false或者注释color = vec3(0.);都没问题\n\treturn color;\n}\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\tfloat maxSize_ = maxSize;\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * resolution.y / (slope * vViewPosition.z);\n \n \n \n /*\n\tfloat scale = length(\n\t\tmodelViewMatrix * vec4(0, 0, 0, 1) - \n\t\tmodelViewMatrix * vec4(uOctreeSpacing, 0, 0, 1)\n\t) / uOctreeSpacing;\n \n\tprojFactor = projFactor * scale;\n\t*/\n \n \n\tfloat r = uOctreeSpacing * 1.7;\n\t//vRadius = r;\n \n \n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){ \n pointSize = size / uOrthoWidth * resolution.x; //改成近似adaptive_point_size根据窗口缩放。其实就是size * zoom (size单位转化为米,如size为1代表一个点云在场景中1米宽,zoom代表1px=1/zoom米)\n maxSize_ = orthoMaxSize; //for panoEditor, when zoom in, need more details, rather than always same size\n\n\t\t}else{ //近大远小,模拟真实mesh,边缘放大\n\t\t\t//pointSize = size * spacing * projFactor; //spacing是attribute 为空 如果有这个值就能更自适应填补\n //pointSize = size * uOctreeSpacing * projFactor / 18.0; //直接用cloud的spacing里,不过因为都一样所以可能没有什么意义\n\t\t\t//pointSize = pointSize * projFactor;\n pointSize = size * projFactor ;\n\t\t}\n \n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * resolution.x; //uScreenWidth;\n maxSize_ = orthoMaxSize;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n \n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize_, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n} \n\n\nbool insideBox(mat4 clipBox, vec4 worldPos){//add\n vec4 clipPosition = clipBox * worldPos;\n bool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\n inside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\n inside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\n\n return inside;\n}\n\n\n\n#if defined(color_type_heightCpt)\n vec3 percentToByte(float num){\n //输出是0-1, shader精度不够,只够存3个数\n float a = 1.0;\n float result[4];\n for(int i=0;i<3;i++){\n a = i == 2 ? a/255.0 : a / 256.0 ; \n //分成256份,其中255份给当前位置,最后一份给后一个位置,而到了最后一个位置时没有下一个位置了所以只分成255份\n if(num > a){\n float c = num / a;\n float r = floor(c);\n r = min(255.0, r);\n result[i] = r;\n num -= r * a;\n }else{\n result[i] = 0.0;\n }\n } \n return vec3(result[0]/255.0, result[1]/255.0,result[2]/255.0); \n \n //除以多少255还是256? 参考uPCIndex / 255.0 应该是255\n } \n#endif\n\n \n\n#if defined(num_prism) && num_prism > 0\n \n \n int insidePrism(mat3 prismInfo, int pointIndexStart, vec4 worldPos){//是否在棱柱里 \n \n float zMin = prismInfo[0][0];\n float zMid = prismInfo[0][1];\n float zMax = prismInfo[0][2]; \n float xMin = prismInfo[1][0];\n float xMax = prismInfo[1][1];\n float yMin = prismInfo[1][2];\n float yMax = prismInfo[2][0]; \n\n int pointCount = int(Round(prismInfo[2][1]));\n \n if( worldPos.x < xMin || worldPos.x > xMax || worldPos.y < yMin || worldPos.y > yMax)return 0;\n #ifndef showBaseHeight\n if( worldPos.z < zMin || worldPos.z > zMax) return 0;\n #endif\n \n \n bool inside = false;\n \n int j=pointCount-1;\n \n for(int i=0; i<prism_maxPointsCount; i++){\n if(i>=pointCount)break;\n float xi = prismPoints[i+pointIndexStart].x, yi = prismPoints[i+pointIndexStart].y, xj = prismPoints[j+pointIndexStart].x, yj = prismPoints[j+pointIndexStart].y;\n\n if(((yi > worldPos.y) != (yj > worldPos.y)) && (worldPos.x < (xj - xi) * (worldPos.y - yi) / (yj - yi) + xi)){\n inside = !inside;\n }\n j=i; \n }\n \n if(inside){\n #ifdef showBaseHeight\n return 1;\n #else \n #ifdef color_type_heightCpt \n vColor = percentToByte((worldPos.z - zMin) / (zMax - zMin)); \n #endif \n #endif\n \n return worldPos.z < zMid ? 1 : 2;\n }else return 0; \n } \n \n#endif\n\n#ifdef showBaseHeight\n float byteToFloat(vec3 color){ \n float percent = 0.0;\n float a = 1.0; \n for(int i=0;i<3;i++){\n a = i == 2 ? a/255.0 : a/256.0; \n percent += a * color[i] ;\n }\n return percent * 255.0 ; \n } \n \n#endif\n\n\n \n\n\nvoid doClipping(vec4 world){\n\n\t{\n\t\tvec4 cl = getClassification(); \n\t\tif(cl.a == 0.0){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#if defined(clip_return_number_enabled)\n\t{ // return number filter\n\t\tvec2 range = uFilterReturnNumberRange;\n\t\tif(returnNumber < range.x || returnNumber > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_number_of_returns_enabled)\n\t{ // number of return filter\n\t\tvec2 range = uFilterNumberOfReturnsRange;\n\t\tif(numberOfReturns < range.x || numberOfReturns > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_gps_enabled)\n\t{ // GPS time filter\n\t\tfloat time = (gpsTime + uGpsOffset) * uGpsScale;\n\t\tvec2 range = uFilterGPSTimeClipRange;\n\n\t\tif(time < range.x || time > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_point_source_id_enabled)\n\t{ // point source id filter\n\t\tvec2 range = uFilterPointSourceIDClipRange;\n\t\tif(pointSourceID < range.x || pointSourceID > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t \n\n\n //总共三种box : 最外层可见、内层可见和不可见(外层可见和内层可见是交集,内层可见和内层不可见是并集)\n \n #if defined(bigClipInBox) \n if(!insideBox(clipBoxBig_in, world)){ \n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;;\n } \n #endif \n \n #if defined(num_in_clipboxes) && num_in_clipboxes > 0\n //当有可见box时,需要在任一可见box内才可见\n bool visi1 = false;\n\t\tfor(int i = 0; i < num_in_clipboxes; i++){ \n if(insideBox(clipBoxes_in[i], world)){\n visi1 = true;\n break;\n } \n\t\t}\n if(!visi1){\n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;\n }\n\t#endif\n\n\n #if defined(num_out_clipboxes) && num_out_clipboxes > 0\n //当有不可见box时,不在所有不可见box内才可见\n bool visi2 = true;\n\t\tfor(int i = 0; i < num_out_clipboxes; i++){ \n if(insideBox(clipBoxes_out[i], world)){\n visi2 = false;\n break;\n } \n\t\t}\n if(!visi2){\n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;\n }\n\t#endif \n \n \n #if defined(num_highlightBox) && num_highlightBox > 0\n //当有高亮box时,需要在任一可见高亮内都高宽\n bool highlight = false;\n\t\tfor(int i = 0; i < num_highlightBox; i++){ \n if(insideBox(boxes_highlight[i], world)){\n highlight = true;\n break;\n } \n\t\t}\n if(highlight){\n vColor.r += 0.5; \n }\n\t#endif\n \n \n \n int highlight_ = 0; \n \n #if defined(num_prism) && num_prism > 0 \n //基于prism棱柱的土方量显示或计算\n \n int pointIndexStart = 0;\n\t\tfor(int i = 0; i < num_prism; i++){ \n highlight_ = insidePrism(prismList[i], pointIndexStart, world);\n \n if(highlight_>0){ \n #if !defined(showBaseHeight) && !defined(color_type_heightCpt)\n if(highlight_ == 1){\n vColor.r += 0.5; \n }else if(highlight_ == 2){\n vColor.g += 0.5;\n }\n #endif\n \n break;\n }\n \n \n pointIndexStart += int(Round(prismList[i][2][1])); \n\t\t} \n \n #ifdef color_type_heightCpt \n if(highlight_==0){ \n gl_Position = vec4(100.0, 100.0, 100.0, 1.0); //unvisible\n return;\n }\n #endif \n \n\t#endif\n \n \n \n \n #ifdef showBaseHeight\n //基于模型的土方量显示或计算\n bool outsidePrism = false;\n #if defined(num_prism) && num_prism > 0//高亮交集\n if( highlight_ == 0 ){\n outsidePrism = true;\n }\n #endif \n \n if(!outsidePrism){\n \n float zMin = baseHeightBoundZ.x; \n float zMax = baseHeightBoundZ.y; \n float xMin = baseHeightBoundXY.x;\n float xMax = baseHeightBoundXY.y;\n float yMin = baseHeightBoundXY.z;\n float yMax = baseHeightBoundXY.w; \n \n bool inside = false;\n if(world.z < zMin || world.z > zMax || world.x < xMin || world.x > xMax || world.y < yMin || world.y > yMax){\n inside = false;\n }else{\n vec2 uv = vec2((world.x - xMin) / (xMax - xMin), (world.y - yMin) / (yMax - yMin) );\n \n vec4 color = texture2D(baseHeightAreaMap,uv);\n //抗锯齿待写\n \n \n if(color.a==1.0){ \n \n float currentHeight = (world.z - zMin) / (zMax - zMin) ; \n \n #ifdef color_type_heightCpt\n /*float diff = currentHeight - baseHeight;\n if(diff<0.0){\n diff = -diff;\n vOpacity = 0.5;//需要透明通道,容易出错\n }else{\n vOpacity = 1.0;\n }\n vColor = percentToByte(diff); \n */ \n vColor = percentToByte(currentHeight);\n //vColor = color.rgb;\n vOpacity = 1.0;\n \n #else\n //vColor = color.rgb;\n float baseHeight = byteToFloat(color.rgb);\n if(currentHeight > baseHeight){\n vColor.g += 0.5; \n }else{\n vColor.r += 0.5; \n }\n #endif\n \n inside = true;\n }else{\n inside = false;\n }\n \n \n \n } \n \n if(inside == false){\n #ifdef color_type_heightCpt\n gl_Position = vec4(100.0, 100.0, 100.0, 1.0); //unvisible\n return;\n #endif\n }\n \n }\n\t#endif\n}\n\n\n\n// \n// ## ## ### #### ## ## \n// ### ### ## ## ## ### ## \n// #### #### ## ## ## #### ## \n// ## ### ## ## ## ## ## ## ## \n// ## ## ######### ## ## #### \n// ## ## ## ## ## ## ### \n// ## ## ## ## #### ## ## \n//\n\n\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \n\nvec3 transformAxis( vec3 direction ) //navvis->4dkk\n{\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n}\n\nvoid main() {\n //bool filtered_by_normal = false; \n float normalZ = 0.0;\n\n\n\n #ifdef use_filter_by_normal\n /*if(abs(getNormal().z) > 0.4) { //ufilterByNormalThreshold 暂定 3\n\t\t\t// Move point outside clip space space to discard it.\n\t\t\t//gl_Position = vec4(0.0, 0.0, 2.0, 1.0); //gl_Position的可视区域是 x,y,z都是[-1,1] \n //return;\n //filtered_by_normal = true; //标记一下。不直接不绘制,因为有的法线都是垂直向上\n \n\t\t}*/\n \n normalZ = abs(getNormal().z);\n #endif\n \n \n vec4 worldPos = modelMatrix * vec4(position, 1.0); \n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0 ); //vec4 mvPosition = viewMatrix * worldPos;\n vViewPosition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vLogDepth = log2(-mvPosition.z);\n \n \n \n // COLOR\n //加-------------------\n #if defined(usePanoMap)\n \n vec3 positionLocalToPanoCenter0 = worldPos.xyz - pano0Position;\n vec3 vWorldPosition0 = (vec4(positionLocalToPanoCenter0, 1.0) * pano0Matrix).xyz; \n vWorldPosition0.x *= -1.0;\n vWorldPosition0 = transformAxis(vWorldPosition0);\n \n vec3 positionLocalToPanoCenter1 = worldPos.xyz - pano1Position;\n vec3 vWorldPosition1 = (vec4(positionLocalToPanoCenter1, 1.0) * pano1Matrix).xyz; \n vWorldPosition1.x *= -1.0;\n vWorldPosition1 = transformAxis(vWorldPosition1);\n \n /*\n vec2 samplerCoord0 = getSamplerCoord(vWorldPosition0.xyz);\n vec2 samplerCoord1 = getSamplerCoord(vWorldPosition1.xyz); \n vec4 colorFromPano0 = texture2D(pano0Map,samplerCoord0);\n vec4 colorFromPano1 = texture2D(pano1Map,samplerCoord1);\n */\n \n \n \n \n vec4 colorFromPano0=textureCube(pano0Map,vWorldPosition0.xyz);\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1.xyz);\n\n vColor = mix(colorFromPano0,colorFromPano1,progress).xyz; \n\n \n //float easeInOutRatio = 0.0; //缓冲,渐变点云到贴图的颜色 \n if(progress < easeInOutRatio){\n float easeProgress = (easeInOutRatio - progress) / easeInOutRatio;\n vec3 vColor1 = getColor(worldPos);\n vColor = mix(vColor,vColor1,easeProgress); \n }else if(progress > 1.0 - easeInOutRatio){ \n float easeProgress = (progress - (1.0 - easeInOutRatio) ) / easeInOutRatio;\n vec3 vColor1 = getColor(worldPos);\n vColor = mix(vColor,vColor1,easeProgress); \n }\n \n\n #else\n \n vColor = getColor(worldPos);\n \n #endif\n \n \n //------------------- \n \n if(uOpacity>=1.0 || uUseOrthographicCamera){ \n vOpacity = uOpacity; \n \n \n if(uOpacity<1.0){ //uUseOrthographicCamera \n //防止缩小后点云几乎看不见 \n vOpacity *= 4.0-3.0 * levelPercent; \n \n }\n \n }else{ //#ifdef attenuated_opacity zoom不会改变z 所以这并不是用在分屏时候的\n float v = -gl_Position.z-1.0 ; // 范围从-2到0, e的-2到0次方的范围是0.818到1 \n //vOpacity = uOpacity * exp(v/ (levelPercent * 20.0 ) ); \n \n //近处加深,远处变淡 gl_Position.z似乎朝向屏幕里为正\n float r = clamp( pow(1.1, v/10.0 ), 0.1, 1.0 ); //除以的数字越大,近高远低的程度越小,范围越长。 程度太高远处单薄的区域看不见 pow的底数越大改变率越大\n vOpacity = uOpacity * r ;\n \n \n } \n \n vOpacity *= max(0.3, pow((1.0 - normalZ),5.0));//垂直朝相机时降低透明度 \n //vOpacity = clamp(vOpacity, 0.0, 1.0); \n\n\n\n // POINT SIZE\n float pointSize = getPointSize();\n \n gl_PointSize = pointSize;\n vPointSize = pointSize;\n\n \n \n \n \n\n // only for "replacing" approaches\n // if(getLOD() != uLevel){\n // \tgl_Position = vec4(10.0, 10.0, 10.0, 1.0);\n // }\n\n\n #if defined hq_depth_pass\n float originalDepth = gl_Position.w;\n float adjustedDepth = originalDepth + 2.0 * vRadius;\n float adjust = adjustedDepth / originalDepth;\n\n mvPosition.xyz = mvPosition.xyz * adjust;\n gl_Position = projectionMatrix * mvPosition;\n #endif\n\n\n // CLIPPING\n doClipping(worldPos);\n\n #if defined(num_clipspheres) && num_clipspheres > 0\n for(int i = 0; i < num_clipspheres; i++){\n vec4 sphereLocal = uClipSpheres[i] * mvPosition;\n\n float distance = length(sphereLocal.xyz);\n\n if(distance < 1.0){\n float w = distance;\n vec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n \n vColor = cGradient;\n //vColor = cGradient * 0.7 + vColor * 0.3;\n }\n }\n #endif\n\n #if defined(num_shadowmaps) && num_shadowmaps > 0\n\n const float sm_near = 0.1;\n const float sm_far = 10000.0;\n\n for(int i = 0; i < num_shadowmaps; i++){\n vec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\n float distanceToLight = abs(viewPos.z);\n \n vec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\n vec3 nc = projPos.xyz / projPos.w;\n \n float u = nc.x * 0.5 + 0.5;\n float v = nc.y * 0.5 + 0.5;\n\n vec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\n vec2 sampleLocations[9];\n sampleLocations[0] = vec2(0.0, 0.0);\n sampleLocations[1] = sampleStep;\n sampleLocations[2] = -sampleStep;\n sampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\n sampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\n\n sampleLocations[5] = vec2(0.0, sampleStep.y);\n sampleLocations[6] = vec2(0.0, -sampleStep.y);\n sampleLocations[7] = vec2(sampleStep.x, 0.0);\n sampleLocations[8] = vec2(-sampleStep.x, 0.0);\n\n float visibleSamples = 0.0;\n float numSamples = 0.0;\n\n float bias = vRadius * 2.0;\n\n for(int j = 0; j < 9; j++){\n vec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\n\n float linearDepthFromSM = depthMapValue.x + bias;\n float linearDepthFromViewer = distanceToLight;\n\n if(linearDepthFromSM > linearDepthFromViewer){\n visibleSamples += 1.0;\n }\n\n numSamples += 1.0;\n }\n\n float visibility = visibleSamples / numSamples;\n\n if(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){\n //vColor = vec3(0.0, 0.0, 0.2);\n }else{\n //vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility);\n vColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\n }\n\n\n }\n\n #endif\n\n \n \n}\n',"pointcloud_new.fs":"\n#if defined paraboloid_point_shape\n\t#extension GL_EXT_frag_depth : enable\n#endif\n#define PI 3.141592653589793\n\n\n\nprecision highp float;\nprecision highp int;\n\n/*\n#if defined(usePanoMap) \n \n uniform samplerCube pano0Map; //随便设置一个samplerCube去使用都会让点云消失\n uniform samplerCube pano1Map;\n \n uniform float progress;\n uniform float easeInOutRatio;\n\n \n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix; \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix;\n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n\n#endif \n*/\n\n\n\n//------------\n\n\n\n\n\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\nuniform mat4 uProjInv;\nuniform vec3 cameraPosition;\n\n\nuniform mat4 projectionMatrix;\n//uniform float uOpacity;\nvarying float vOpacity; //add\n\nuniform float blendHardness;\nuniform float blendDepthSupplement;\nuniform float fov;\nuniform float uSpacing;\nuniform float near;\nuniform float far;\nuniform float uPCIndex;\nuniform float uScreenWidth;\nuniform float uScreenHeight;\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float\tvRadius;\nvarying float \tvPointSize;\nvarying vec3 \tvPosition;\n\n\nfloat specularStrength = 1.0;\n\n\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \n\n\n\n\nvoid main() {\n\n vec3 color = vColor; \n\t \n \n /*#if defined(usePanoMap) //加 经测试,即使全部写在fragment里也是无论pointsize多大都是一个点一个颜色,所以干脆写在vectex里\n \n \n vec4 colorFromPano0=textureCube(pano0Map,vWorldPosition0.xyz);\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1.xyz);\n \n color = mix(colorFromPano0,colorFromPano1,progress).xyz; \n \n \n //float easeInOutRatio = 0.0; //缓冲,渐变点云到贴图的颜色 \n if(progress < easeInOutRatio){\n float easeProgress = (easeInOutRatio - progress) / easeInOutRatio; \n color = mix(color,vColor,easeProgress); \n }else if(progress > 1.0 - easeInOutRatio){ \n float easeProgress = (progress - (1.0 - easeInOutRatio) ) / easeInOutRatio; \n color = mix(color,vColor,easeProgress); \n }\n \n \n #else \n color = vColor;\n #endif*/\n \n \n \n\tfloat depth = gl_FragCoord.z;\n\n\t#if defined(circle_point_shape) || defined(paraboloid_point_shape) \n\t\tfloat u = 2.0 * gl_PointCoord.x - 1.0;\n\t\tfloat v = 2.0 * gl_PointCoord.y - 1.0;\n\t#endif\n\t\n\t#if defined(circle_point_shape) \n\t\tfloat cc = u*u + v*v;\n\t\tif(cc > 1.0){\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t\n\n \n\n\t\n \n #if defined color_type_indices //pick point recognize\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0); //uPCIndex : node Index\n\t#else\n\t\tgl_FragColor = vec4(color, vOpacity);\n\t#endif\n \n \n \n \n \n \n \n \n\n\t#if defined paraboloid_point_shape\n\t\tfloat wi = 0.0 - ( u*u + v*v);\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\n\t\tpos.z += wi * vRadius;\n\t\tfloat linearDepth = -pos.z;\n\t\tpos = projectionMatrix * pos;\n\t\tpos = pos / pos.w;\n\t\tfloat expDepth = pos.z;\n\t\tdepth = (pos.z + 1.0) / 2.0;\n\t\tgl_FragDepthEXT = depth;\n\t\tgl_FragDepthEXT = clamp(gl_FragDepthEXT, 0.0, 1.0); //add\n \n \n\t\t#if defined(color_type_depth)\n\t\t\tcolor.r = linearDepth;\n\t\t\tcolor.g = expDepth;\n\t\t#endif\n\t\t\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = log2(linearDepth);\n\t\t#endif\n\t\t\n\t#else\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = vLogDepth;\n\t\t#endif\n\t#endif\n\n\t#if defined(weighted_splats)\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\n\t\tfloat weight = max(0.0, 1.0 - distance);\n\t\tweight = pow(weight, 1.5);\n\n\t\tgl_FragColor.a = weight;\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\n\t#endif\n\n\t//gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0);\n\t\n}\n\n\n","pointcloud_sm.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec3 color;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float near;\nuniform float far;\n\nuniform float uSpacing;\nuniform float uOctreeSize;\nuniform float uLevel;\nuniform float uVNStart;\n\nuniform sampler2D visibleNodes;\n\nvarying float vLinearDepth;\nvarying vec3 vColor;\n\n#define PI 3.141592653589793\n\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if defined(adaptive_point_size)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nfloat numberOfOnes(float number, float index){\n\tfloat tmp = mod(number, pow(2.0, index + 1.0));\n\tfloat numOnes = 0.0;\n\tfor(float i = 0.0; i < 8.0; i++){\n\t\tif(mod(tmp, 2.0) != 0.0){\n\t\t\tnumOnes++;\n\t\t}\n\t\ttmp = floor(tmp / 2.0);\n\t}\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(float number, float index){\n\treturn mod(floor(number / pow(2.0, index)), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = uVNStart;\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tfloat index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z;\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\tfloat mask = value.r * 255.0;\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tiOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0);\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn depth;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\n#endif\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.5;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\t\t\t\n\t\t}else{\n\t\t\tpointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n\nvoid main() {\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tvLinearDepth = gl_Position.w;\n\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\n}\n","pointcloud_sm.fs":"\nprecision mediump float;\nprecision mediump int;\n\nvarying vec3 vColor;\nvarying float vLinearDepth;\n\nvoid main() {\n\n\t//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n\t//gl_FragColor = vec4(vColor, 1.0);\n\t//gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0);\n\tgl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0);\n\t\n}\n\n\n","normalize.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}","normalize.fs":"\n#extension GL_EXT_frag_depth : enable\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uDepthMap;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\t\n\tif(depth >= 1.0){\n\t\tdiscard;\n\t}\n\n\tgl_FragColor = vec4(depth, 1.0, 0.0, 1.0);\n\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\t\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\t\n\tgl_FragDepthEXT = depth;\n\n\n}","normalize_and_edl.fs":"\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uEDLMap;\nuniform sampler2D uDepthMap;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLMap, uvNeighbor).a;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main() {\n\n\tfloat edlDepth = texture2D(uEDLMap, vUv).a;\n\tfloat res = response(edlDepth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\tif(depth >= 1.0 && res == 0.0){\n\t\tdiscard;\n\t}\n\t\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\tcolor = color * shade;\n\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\n\tgl_FragDepthEXT = depth;\n}","edl_new.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4(position,1.0);\n\n\tgl_Position = projectionMatrix * mvPosition;\n}","edl_new.fs":"\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\n//uniform float screenWidth;\n//uniform float screenHeight;\nuniform vec2 resolution;\n\n\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\nuniform float opacity;\n\n//uniform float uNear;\n//uniform float uFar;\n\nuniform mat4 uProj;\n\nuniform sampler2D uEDLColor;\nuniform sampler2D uEDLDepth;\n\nvarying vec2 vUv;\n\nuniform int useEDL;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / resolution; //vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t//获取周围八个格子的值\n\t\tfloat neighbourDepth = texture2D(uEDLColor, uvNeighbor).a;\n\t\tneighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\t //if(depth == 0.0){\n\t\t\t //\tsum += 100.0;\n\t\t\t //}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth); //获取差值\n\t\t\t //}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main(){\n\tvec4 cEDL = texture2D(uEDLColor, vUv);\n\t\n\tfloat depth = cEDL.a;\n\tdepth = (depth == 1.0) ? 0.0 : depth;\n \n if(depth == 0.0){ //去掉这句就能在无点云像素的地方渲染outline,但会遮住其他mesh\n\t\tdiscard;\n\t}\n \n \n if(useEDL == 1){\n float res = response(depth); \n float shade = exp(-res * 300.0 * edlStrength); //自然常数e为底的指数函数 \n const float min = 0.2; //add 使边缘色变浅 范围从0-1 变为min-1\n shade = shade * (1.0-min) + min;\n gl_FragColor = vec4(cEDL.rgb * shade, opacity); \n }else{//加 不改颜色的情况 \n gl_FragColor = vec4(cEDL.rgb, opacity);\n } \n //注意,edlStrength越强,在相同depth的叠放的点云间的轮廓线颜色越深\n //作用:勾勒边缘,强化深度差异,模拟阴影,加强结构立体感\n \n { // write regular hyperbolic depth values to depth buffer 修改深度\n float dl = pow(2.0, depth);\n\n vec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0);\n float pz = dp.z / dp.w;\n float fragDepth = (pz + 1.0) / 2.0;\n\n gl_FragDepthEXT = fragDepth;\n }\n\t\n}\n","blur.vs":"\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}","blur.fs":"\nuniform mat4 projectionMatrix;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform float near;\nuniform float far;\n\nuniform sampler2D map;\n\nvarying vec2 vUv;\n\nvoid main() {\n\n\tfloat dx = 1.0 / screenWidth;\n\tfloat dy = 1.0 / screenHeight;\n\n\tvec3 color = vec3(0.0, 0.0, 0.0);\n\tcolor += texture2D(map, vUv + vec2(-dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, dy)).rgb;\n\n\tcolor = color / 9.0;\n\t\n\tgl_FragColor = vec4(color, 1.0);\n}","depthBasic.vs":"\n \n\nvarying vec2 vUv;\nvoid main() {\n \n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","depthBasic.fs":"varying vec2 vUv;\nuniform float opacity;\nuniform float mapScale;\nuniform vec3 baseColor;\n\n#if defined use_map\n uniform sampler2D map; \n \n vec4 getMapColor(vec4 color){ \n if(mapScale == 1.0){\n color = texture2D(map, vUv) * color; \n return color;\n }else{ \n vec2 uv = (vUv - 0.5) / mapScale + 0.5; \n if(uv.x > 1.0 || uv.y > 1.0 || uv.x < 0.0 || uv.y < 0.0){\n //color = vec4(0.0,0.0,0.0,0.0);\n discard;\n }else{\n color = texture2D(map, uv) * color; \n }\n return color; \n }\n }\n#endif\n \n\n #if defined(GL_EXT_frag_depth) && defined(useDepth)\n //似乎通过gl.getExtension('EXT_frag_depth')得到的GL_EXT_frag_depth\n \n uniform sampler2D depthTexture;\n uniform float nearPlane;\n uniform float farPlane; \n uniform vec2 resolution;\n uniform vec2 viewportOffset; // viewportOffset 范围从0-整个画布的像素\n uniform vec3 backColor;\n uniform float occlusionDistance;\n uniform float clipDistance;\n uniform float maxClipFactor;\n uniform float maxOcclusionFactor;\n //uniform bool uUseOrthographicCamera; \n\n float convertToLinear(float zValue)\n {\n //if(uUseOrthographicCamera){\n // return zValue*(farPlane-nearPlane)+nearPlane;\n //}else{ \n float z = zValue * 2.0 - 1.0;\n return (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n //} \n }\n#endif\n \n \n \nvoid main() {\n \n \n vec4 color = vec4(baseColor, opacity);\n \n \n \n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n // mixFactor and clipFactor define the color mixing proportion between the states of\n // full visibility and occluded visibility\n // and\n // full visibility and total invisibility\n \n float mixFactor = 0.0;\n float clipFactor = 0.0;\n \n \n // The linear depth value of the current fragment\n float fragDepth = convertToLinear(gl_FragCoord.z);\n\n // The coordinates of the current fragment in the depth texture\n vec2 depthTxtCoords = vec2(gl_FragCoord.x-viewportOffset.x, gl_FragCoord.y - viewportOffset.y) / resolution;\n //gl_FragCoord大小为 viewport client大小 \n \n // The linear depth value of the pixel occupied by this fragment in the depth buffer\n float textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n // The difference between the two depths\n float delta = fragDepth - textureDepth;\n\n if (delta > 0.0)//差距\n {\n // occlusionDistance and clipDistance define the width of the respective zones and\n // mixFactor and clipFactor express the interpolation between the two colors depending on the position\n // of the current fragment withing those zones.\n \n \n mixFactor = clamp(delta / occlusionDistance, 0.0, maxOcclusionFactor);\n clipFactor = clamp(delta / clipDistance, 0.0, maxClipFactor);\n }\n \n // If the fragment is totally transparent, don't bother drawing it\n if (clipFactor == 1.0)\n {\n discard;\n }else{\n \n #if defined use_map\n color = getMapColor(color); \n #endif\n \n \n color = vec4(mix(color.rgb, backColor, mixFactor), color.a * (1.0 - clipFactor));\n }\n \n #else\n #if defined use_map\n color = getMapColor(color); \n #endif \n #endif\n \n gl_FragColor = color;\n \n}\n","copyCubeMap.vs":"varying vec3 vWorldPos;\nvec3 transformAxis( vec3 direction ) //navvis->4dkk\n{\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n}\nvoid main() {\n vWorldPos = vec3(-position.x, -position.y, position.z);\n //vWorldPos = transformAxis(vWorldPos);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","copyCubeMap.fs":"varying vec3 vWorldPos;\nuniform float alpha;\nuniform samplerCube tDiffuse;\n\n\nvoid main() {\n vec4 texColor = textureCube(tDiffuse, vWorldPos);\n gl_FragColor = vec4(texColor.rgb, texColor.a * alpha);\n} \n ","basicTextured.vs":"varying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","basicTextured.fs":"varying vec2 vUv;\nuniform float opacity;\n \n\n#ifdef HasMap\n uniform sampler2D map; \n#endif\n#ifdef HasColor\n uniform vec3 color;\n#endif\n\nvoid main() {\n vec4 color_;\n #ifdef HasColor\n color_ = vec4(color, opacity); \n #else\n color_ = vec4(1.0,1.0,1.0, opacity);\n #endif\n \n #ifdef HasMap\n vec4 texColor = texture2D(map, vUv); \n gl_FragColor = texColor * color_;\n #else\n gl_FragColor = color_;\n #endif\n \n \n}\n","skybox.vs":"uniform mat4 matrix; \nvarying vec3 vWorldPosition;\n\n\n\nvoid main() \n{ \n \n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz ; // - cameraPosition; \n vWorldPosition = (vec4(vWorldPosition, 1.0) * matrix).xyz;\n vWorldPosition.x *= -1.0;\n\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}","skybox.fs":"varying vec3 vWorldPosition;\nuniform sampler2D tDiffuse; \n\n#define PI 3.141592653 \n\n/*vec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,direction.z)/(PI*2.0)+0.5;\n float ty=acos(direction.y)/PI;\n\n return vec2(tx,ty);\n}*/\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \nvoid main() \n{\n vec2 samplerCoord = getSamplerCoord(vWorldPosition);\n vec4 color = texture2D(tDiffuse, samplerCoord);\n //gl_FragColor = RGBEToLinear( color ); //对于hdr必须加这一句,否则效果很奇怪。copy自meshBasicMaterial里的mat_fragment的mapTexelToLinear函数,只要有map就会使用该函数\n gl_FragColor = color;\n //#include <tonemapping_fragment>\n //////#include <encodings_fragment>\n\n} \n"},xm={DEFAULT:{0:{visible:!0,name:"never classified",color:[.5,.5,.5,1]},1:{visible:!0,name:"unclassified",color:[.5,.5,.5,1]},2:{visible:!0,name:"ground",color:[.63,.32,.18,1]},3:{visible:!0,name:"low vegetation",color:[0,1,0,1]},4:{visible:!0,name:"medium vegetation",color:[0,.8,0,1]},5:{visible:!0,name:"high vegetation",color:[0,.6,0,1]},6:{visible:!0,name:"building",color:[1,.66,0,1]},7:{visible:!0,name:"low point(noise)",color:[1,0,1,1]},8:{visible:!0,name:"key-point",color:[1,0,0,1]},9:{visible:!0,name:"water",color:[0,0,1,1]},12:{visible:!0,name:"overlap",color:[1,1,0,1]},DEFAULT:{visible:!0,name:"default",color:[.3,.6,.6,.5]}}},Em=(Object.defineProperty(xm,"RANDOM",{get:function(){for(var e={},t=0;t<=255;t++)e[t]=new ei(Math.random(),Math.random(),Math.random());return e.DEFAULT=new ei(Math.random(),Math.random(),Math.random()),e}}),function(){return A(function e(t){ue(this,e);for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];this[r]=t[r]}},[{key:"inspect",value:function(){return"Enum(".concat(this.name,": ").concat(this.value,")")}}])}()),dh=function(){return A(function e(t){ue(this,e),this.object=t;for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n],a=t[r];"object"===O(a)?a.name=r:a={name:r,value:a},this[r]=new Em(a)}},[{key:"fromValue",value:function(e){for(var t=0,n=Object.keys(this.object);t<n.length;t++){var i=n[t];if(this[i].value===e)return this[i]}throw new Error("No enum for value: ".concat(e))}}])}(),Cm={ORTHOGRAPHIC:0,PERSPECTIVE:1,VR:2},Bm={NONE:0,HIGHLIGHT:1,SHOW_INSIDE:2,SHOW_OUTSIDE:3},Mm={INSIDE_ANY:0,INSIDE_ALL:1},Sm={CLAMP:0,REPEAT:1,MIRRORED_REPEAT:2},Tm={LEFT:1,RIGHT:2,MIDDLE:4},_m={FIXED:0,ATTENUATED:1,ADAPTIVE:2},Pm={SQUARE:0,CIRCLE:1,PARABOLOID:2},Dm={OCTREE:0,KDTREE:1},Im={METER:{code:"m",unitspermeter:1},FEET:{code:"ft",unitspermeter:3.28084},INCH:{code:"″",unitspermeter:39.3701}},km=function(){function o(){function e(e,t){return void 0!==e?e:t}var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=(ue(this,o),(t=le(this,o)).visibleNodesTexture=ne.generateDataTexture(2048,1,new Se(16777215)),t.visibleNodesTexture.minFilter=ht,t.visibleNodesTexture.magFilter=ht,e(n.size,1)),r=e(n.minSize,2),a=e(n.maxSize,50),n=e(n.treeType,Dm.OCTREE),n=(t._pointSizeType=_m.FIXED,t._shape=Pm.SQUARE,t._useClipBox=!1,t.clipBoxes=[],t.clipPolygons=[],t._weighted=!1,t._gradient=wm.SPECTRAL,t.gradientTexture=o.generateGradientTexture(t._gradient),t.lights=!1,t.fog=!1,t._treeType=n,t._useEDL=!1,t.defines=new Map,t.ranges=new Map,t._activeAttributeName=null,t._defaultIntensityRangeChanged=!1,t._defaultElevationRangeChanged=!1,new Ea(new Uint8Array(1024),256,1,It));return n.magFilter=ht,n.needsUpdate=!0,t.classificationTexture=n,t.attributes={position:{type:"fv",value:[]},color:{type:"fv",value:[]},normal:{type:"fv",value:[]},intensity:{type:"f",value:[]},classification:{type:"f",value:[]},returnNumber:{type:"f",value:[]},numberOfReturns:{type:"f",value:[]},pointSourceID:{type:"f",value:[]},indices:{type:"fv",value:[]}},t.uniforms={level:{type:"f",value:0},vnStart:{type:"f",value:0},spacing:{type:"f",value:1},blendHardness:{type:"f",value:2},blendDepthSupplement:{type:"f",value:0},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new Se(16777215)},uOpacity:{type:"f",value:1},size:{type:"f",value:i},minSize:{type:"f",value:r},maxSize:{type:"f",value:a},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},elevationRange:{type:"2fv",value:[0,0]},clipBoxCount:{type:"f",value:0},clipPolygonCount:{type:"i",value:0},clipBoxes:{type:"Matrix4fv",value:[]},clipPolygons:{type:"3fv",value:[]},clipPolygonVCount:{type:"iv",value:[]},clipPolygonVP:{type:"Matrix4fv",value:[]},visibleNodes:{type:"t",value:t.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:t.gradientTexture},classificationLUT:{type:"t",value:t.classificationTexture},uHQDepthMap:{type:"t",value:null},toModel:{type:"Matrix4f",value:[]},diffuse:{type:"fv",value:[1,1,1]},transition:{type:"f",value:.5},intensityRange:{type:"fv",value:[1/0,-1/0]},intensity_gbc:{type:"fv",value:[1,0,0]},uRGB_gbc:{type:"fv",value:[1,0,0]},wRGB:{type:"f",value:1},wIntensity:{type:"f",value:0},wElevation:{type:"f",value:0},wClassification:{type:"f",value:0},wReturnNumber:{type:"f",value:0},wSourceID:{type:"f",value:0},useOrthographicCamera:{type:"b",value:!1},elevationGradientRepat:{type:"i",value:Sm.CLAMP},clipTask:{type:"i",value:1},clipMethod:{type:"i",value:1},uShadowColor:{type:"3fv",value:[0,0,0]},uExtraScale:{type:"f",value:1},uExtraOffset:{type:"f",value:0},uExtraRange:{type:"2fv",value:[0,1]},uExtraGammaBrightContr:{type:"3fv",value:[1,0,0]},uFilterReturnNumberRange:{type:"fv",value:[0,7]},uFilterNumberOfReturnsRange:{type:"fv",value:[0,7]},uFilterGPSTimeClipRange:{type:"fv",value:[0,7]},uFilterPointSourceIDClipRange:{type:"fv",value:[0,65535]},backfaceCulling:{type:"b",value:!1}},t.classification=xm.DEFAULT,t.defaultAttributeValues.normal=[0,0,0],t.defaultAttributeValues.classification=[0,0,0],t.defaultAttributeValues.indices=[0,0,0,0],t.vertexShader=bm["pointcloud.vs"],t.fragmentShader=bm["pointcloud.fs"],t.vertexColors=Tp,t.updateShaderSource(),t}return v(o,ac),A(o,[{key:"setDefine",value:function(e,t){null!=t?this.defines.get(e)!==t&&(this.defines.set(e,t),this.updateShaderSource()):this.removeDefine(e)}},{key:"removeDefine",value:function(e){this.defines.delete(e)}},{key:"updateShaderSource",value:function(){var e=bm["pointcloud.vs"],t=bm["pointcloud.fs"],n=this.getDefines(),i=e.indexOf("#version "),r=t.indexOf("#version "),e=0<=i?e.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(e),t=0<=r?t.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(t);this.vertexShader=e,this.fragmentShader=t,1===this.opacity?(this.blending=ge,this.transparent=!1,this.depthTest=!0,this.depthWrite=!0,this.depthFunc=Xe):this.opacity<1&&!this.useEDL&&(this.blending=ye,this.transparent=!0,this.depthTest=!1,this.depthWrite=!0,this.depthFunc=qe),this.weighted&&(this.blending=ye,this.transparent=!0,this.depthTest=!0,this.depthWrite=!1),this.needsUpdate=!0}},{key:"getDefines",value:function(){var e,t,n=[],i=(this.pointSizeType===_m.FIXED?n.push("#define fixed_point_size"):this.pointSizeType===_m.ATTENUATED?n.push("#define attenuated_point_size"):this.pointSizeType===_m.ADAPTIVE&&n.push("#define adaptive_point_size"),this.shape===Pm.SQUARE?n.push("#define square_point_shape"):this.shape===Pm.CIRCLE?n.push("#define circle_point_shape"):this.shape===Pm.PARABOLOID&&n.push("#define paraboloid_point_shape"),this._useEDL&&n.push("#define use_edl"),this.activeAttributeName&&(e=this.activeAttributeName.replace(/[^a-zA-Z0-9]/g,"_"),n.push("#define color_type_".concat(e))),this._treeType===Dm.OCTREE?n.push("#define tree_type_octree"):this._treeType===Dm.KDTREE&&n.push("#define tree_type_kdtree"),this.weighted&&n.push("#define weighted_splats"),q(this.defines));try{for(i.s();!(t=i.n()).done;){var r=U(t.value,2),a=(r[0],r[1]);n.push(a)}}catch(e){i.e(e)}finally{i.f()}return n.join("\n")}},{key:"setClipBoxes",value:function(e){if(e){var t=this.clipBoxes.length!==e.length&&(0===e.length||0===this.clipBoxes.length);this.uniforms.clipBoxCount.value=this.clipBoxes.length,this.clipBoxes=e,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.clipBoxes.length);for(var n=0;n<this.clipBoxes.length;n++){var i=e[n];this.uniforms.clipBoxes.value.set(i.inverse.elements,16*n)}for(var r=0;r<this.uniforms.clipBoxes.value.length;r++)Number.isNaN(this.uniforms.clipBoxes.value[r])&&(this.uniforms.clipBoxes.value[r]=1/0)}}},{key:"setClipPolygons",value:function(e,t){e&&(this.clipPolygons=e,this.clipPolygons.length!==e.length)&&this.updateShaderSource()}},{key:"gradient",get:function(){return this._gradient},set:function(e){this._gradient!==e&&(this._gradient=e,this.gradientTexture=o.generateGradientTexture(this._gradient),this.uniforms.gradient.value=this.gradientTexture)}},{key:"useOrthographicCamera",get:function(){return this.uniforms.useOrthographicCamera.value},set:function(e){this.uniforms.useOrthographicCamera.value!==e&&(this.uniforms.useOrthographicCamera.value=e)}},{key:"backfaceCulling",get:function(){return this.uniforms.backfaceCulling.value},set:function(e){this.uniforms.backfaceCulling.value!==e&&(this.uniforms.backfaceCulling.value=e,this.dispatchEvent({type:"backface_changed",target:this}))}},{key:"recomputeClassification",value:function(){for(var e=this.classification,t=this.classificationTexture.image.data,n=[1,1,1,1],i=!1,r=0;r<256;r++){var a=void 0,o=!0,s=(e[r]?(a=e[r].color,o=e[r].visible):e[r%32]?(a=e[r%32].color,o=e[r%32].visible):e.DEFAULT?(a=e.DEFAULT.color,o=e.DEFAULT.visible):a=n,parseInt(255*a[0])),l=parseInt(255*a[1]),u=parseInt(255*a[2]),o=o?parseInt(255*a[3]):0;t[4*r+0]!==s&&(t[4*r+0]=s,i=!0),t[4*r+1]!==l&&(t[4*r+1]=l,i=!0),t[4*r+2]!==u&&(t[4*r+2]=u,i=!0),t[4*r+3]!==o&&(t[4*r+3]=o,i=!0)}i&&(this.classificationTexture.needsUpdate=!0,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"spacing",get:function(){return this.uniforms.spacing.value},set:function(e){this.uniforms.spacing.value!==e&&(this.uniforms.spacing.value=e)}},{key:"useClipBox",get:function(){return this._useClipBox},set:function(e){this._useClipBox!==e&&(this._useClipBox=e,this.updateShaderSource())}},{key:"clipTask",get:function(){return this.uniforms.clipTask.value},set:function(e){this.uniforms.clipTask.value=e}},{key:"elevationGradientRepat",get:function(){return this.uniforms.elevationGradientRepat.value},set:function(e){this.uniforms.elevationGradientRepat.value=e}},{key:"clipMethod",get:function(){return this.uniforms.clipMethod.value},set:function(e){this.uniforms.clipMethod.value=e}},{key:"weighted",get:function(){return this._weighted},set:function(e){this._weighted!==e&&(this._weighted=e,this.updateShaderSource())}},{key:"fov",get:function(){return this.uniforms.fov.value},set:function(e){this.uniforms.fov.value!==e&&(this.uniforms.fov.value=e)}},{key:"screenWidth",get:function(){return this.uniforms.screenWidth.value},set:function(e){this.uniforms.screenWidth.value!==e&&(this.uniforms.screenWidth.value=e)}},{key:"screenHeight",get:function(){return this.uniforms.screenHeight.value},set:function(e){this.uniforms.screenHeight.value!==e&&(this.uniforms.screenHeight.value=e)}},{key:"near",get:function(){return this.uniforms.near.value},set:function(e){this.uniforms.near.value!==e&&(this.uniforms.near.value=e)}},{key:"far",get:function(){return this.uniforms.far.value},set:function(e){this.uniforms.far.value!==e&&(this.uniforms.far.value=e)}},{key:"opacity",get:function(){return this.uniforms.uOpacity.value},set:function(e){this.uniforms&&this.uniforms.uOpacity&&this.uniforms.uOpacity.value!==e&&(this.uniforms.uOpacity.value=e,this.updateShaderSource(),this.dispatchEvent({type:"opacity_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"activeAttributeName",get:function(){return this._activeAttributeName},set:function(e){this._activeAttributeName!==e&&(this._activeAttributeName=e,this.updateShaderSource(),this.dispatchEvent({type:"active_attribute_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"pointSizeType",get:function(){return this._pointSizeType},set:function(e){this._pointSizeType!==e&&(this._pointSizeType=e,this.updateShaderSource(),this.dispatchEvent({type:"point_size_type_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"useEDL",get:function(){return this._useEDL},set:function(e){this._useEDL!==e&&(this._useEDL=e,this.updateShaderSource())}},{key:"color",get:function(){return this.uniforms.uColor.value},set:function(e){this.uniforms.uColor.value.equals(e)||(this.uniforms.uColor.value.copy(e),this.dispatchEvent({type:"color_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"shape",get:function(){return this._shape},set:function(e){this._shape!==e&&(this._shape=e,this.updateShaderSource(),this.dispatchEvent({type:"point_shape_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"treeType",get:function(){return this._treeType},set:function(e){this._treeType!==e&&(this._treeType=e,this.updateShaderSource())}},{key:"bbSize",get:function(){return this.uniforms.bbSize.value},set:function(e){this.uniforms.bbSize.value=e}},{key:"size",get:function(){return this.uniforms.size.value},set:function(e){this.uniforms.size.value!==e&&(this.uniforms.size.value=e,this.dispatchEvent({type:"point_size_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"minSize",get:function(){return this.uniforms.minSize.value},set:function(e){this.uniforms.minSize.value!==e&&(this.uniforms.minSize.value=e,this.dispatchEvent({type:"point_size_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"elevationRange",get:function(){return this.uniforms.elevationRange.value},set:function(e){this.uniforms.elevationRange.value[0]===e[0]&&this.uniforms.elevationRange.value[1]===e[1]||(this.uniforms.elevationRange.value=e,this._defaultElevationRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"heightMin",get:function(){return this.uniforms.elevationRange.value[0]},set:function(e){this.elevationRange=[e,this.elevationRange[1]]}},{key:"heightMax",get:function(){return this.uniforms.elevationRange.value[1]},set:function(e){this.elevationRange=[this.elevationRange[0],e]}},{key:"transition",get:function(){return this.uniforms.transition.value},set:function(e){this.uniforms.transition.value=e}},{key:"intensityRange",get:function(){return this.uniforms.intensityRange.value},set:function(e){e instanceof Array&&2===e.length&&(e[0]===this.uniforms.intensityRange.value[0]&&e[1]===this.uniforms.intensityRange.value[1]||(this.uniforms.intensityRange.value=e,this._defaultIntensityRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this})))}},{key:"intensityGamma",get:function(){return this.uniforms.intensity_gbc.value[0]},set:function(e){this.uniforms.intensity_gbc.value[0]!==e&&(this.uniforms.intensity_gbc.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"intensityContrast",get:function(){return this.uniforms.intensity_gbc.value[2]},set:function(e){this.uniforms.intensity_gbc.value[2]!==e&&(this.uniforms.intensity_gbc.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"intensityBrightness",get:function(){return this.uniforms.intensity_gbc.value[1]},set:function(e){this.uniforms.intensity_gbc.value[1]!==e&&(this.uniforms.intensity_gbc.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbGamma",get:function(){return this.uniforms.uRGB_gbc.value[0]},set:function(e){this.uniforms.uRGB_gbc.value[0]!==e&&(this.uniforms.uRGB_gbc.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbContrast",get:function(){return this.uniforms.uRGB_gbc.value[2]},set:function(e){this.uniforms.uRGB_gbc.value[2]!==e&&(this.uniforms.uRGB_gbc.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbBrightness",get:function(){return this.uniforms.uRGB_gbc.value[1]},set:function(e){this.uniforms.uRGB_gbc.value[1]!==e&&(this.uniforms.uRGB_gbc.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraGamma",get:function(){return this.uniforms.uExtraGammaBrightContr.value[0]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[0]!==e&&(this.uniforms.uExtraGammaBrightContr.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraBrightness",get:function(){return this.uniforms.uExtraGammaBrightContr.value[1]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[1]!==e&&(this.uniforms.uExtraGammaBrightContr.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraContrast",get:function(){return this.uniforms.uExtraGammaBrightContr.value[2]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[2]!==e&&(this.uniforms.uExtraGammaBrightContr.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"getRange",value:function(e){return this.ranges.get(e)}},{key:"setRange",value:function(e,t){var n=!1,i=this.ranges.get(e),n=null==i||null==t||i[0]!==t[0]||i[1]!==t[1];this.ranges.set(e,t),n&&this.dispatchEvent({type:"material_property_changed",target:this})}},{key:"extraRange",get:function(){return this.uniforms.uExtraRange.value},set:function(e){e instanceof Array&&2===e.length&&(e[0]===this.uniforms.uExtraRange.value[0]&&e[1]===this.uniforms.uExtraRange.value[1]||(this.uniforms.uExtraRange.value=e,this._defaultExtraRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this})))}},{key:"weightRGB",get:function(){return this.uniforms.wRGB.value},set:function(e){this.uniforms.wRGB.value!==e&&(this.uniforms.wRGB.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightIntensity",get:function(){return this.uniforms.wIntensity.value},set:function(e){this.uniforms.wIntensity.value!==e&&(this.uniforms.wIntensity.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightElevation",get:function(){return this.uniforms.wElevation.value},set:function(e){this.uniforms.wElevation.value!==e&&(this.uniforms.wElevation.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightClassification",get:function(){return this.uniforms.wClassification.value},set:function(e){this.uniforms.wClassification.value!==e&&(this.uniforms.wClassification.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightReturnNumber",get:function(){return this.uniforms.wReturnNumber.value},set:function(e){this.uniforms.wReturnNumber.value!==e&&(this.uniforms.wReturnNumber.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightSourceID",get:function(){return this.uniforms.wSourceID.value},set:function(e){this.uniforms.wSourceID.value!==e&&(this.uniforms.wSourceID.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"disableEvents",value:function(){void 0===this._hiddenListeners&&(this._hiddenListeners=this._listeners,this._listeners={})}},{key:"enableEvents",value:function(){this._listeners=this._hiddenListeners,this._hiddenListeners=void 0}}],[{key:"generateGradientTexture",value:function(e){for(var t=document.createElement("canvas"),n=(t.width=64,t.height=64,t.getContext("2d")),i=(n.rect(0,0,64,64),n.createLinearGradient(0,0,64,64)),r=0;r<e.length;r++){var a=e[r];i.addColorStop(a[0],"#"+a[1].getHexString())}n.fillStyle=i,n.fill();n=new zl(t);return n.needsUpdate=!0,n.minFilter=N,n.wrap=ut,n.repeat=2,n}},{key:"generateMatcapTexture",value:function(e){e=new URL(Potree.resourcePath+"/textures/matcap/"+e).href,e=(new Gc).load(e);return e.magFilter=e.minFilter=N,e.needsUpdate=!0,e}}])}(),Rm=function(){function t(){var e;return ue(this,t),(e=le(this,t)).children=[],e.sceneNode=null,e.octree=null,e}return v(t,vm),A(t,[{key:"getNumPoints",value:function(){return this.geometryNode.numPoints}},{key:"isLoaded",value:function(){return!0}},{key:"isTreeNode",value:function(){return!0}},{key:"isGeometryNode",value:function(){return!1}},{key:"getLevel",value:function(){return this.geometryNode.level}},{key:"getBoundingSphere",value:function(){return this.geometryNode.boundingSphere}},{key:"getBoundingBox",value:function(){return this.geometryNode.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"getPointsInBox",value:function(e){if(!this.sceneNode)return null;for(var t=this.geometryNode.buffer,n=t.offset("position"),i=t.stride,r=new DataView(t.data),e=e.matrixWorld.clone().invert(),a=(new Me).multiplyMatrices(e,this.sceneNode.matrixWorld),o=[],s=new ei,l=0;l<t.numElements;l++){var u=r.getFloat32(l*i+n+0,!0),c=r.getFloat32(l*i+n+4,!0),d=r.getFloat32(l*i+n+8,!0);s.set(u,c,d,1),s.applyMatrix4(a),-.5<s.x&&s.x<.5&&-.5<s.y&&s.y<.5&&-.5<s.z&&s.z<.5&&(s.set(u,c,d,1).applyMatrix4(this.sceneNode.matrixWorld),o.push(new Oe(s.x,s.y,s.z)))}return o}},{key:"name",get:function(){return this.geometryNode.name}}])}(),Lm=function(){function l(e,t){var i;ue(this,l),(i=le(this,l)).pointBudget=1/0,i.pcoGeometry=e,i.boundingBox=i.pcoGeometry.boundingBox,i.boundingSphere=i.boundingBox.getBoundingSphere(new bi),i.material=t||new km,i.visiblePointsTarget=2e6,i.minimumNodePixelSize=150,i.level=0,i.position.copy(e.offset),i.updateMatrix();for(var n,r="rgba",a=0,o=["rgba","rgb","intensity","classification"];a<o.length&&(0===(n=function(){var e,t=o[a],n=i.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===t});return!n||(e="Array"===n.range[0].constructor.name?n.range[0]:[n.range[0]],n="Array"===n.range[1].constructor.name?n.range[1]:[n.range[1]],e=ie(Oe,Fe(e)),n=ie(Oe,Fe(n)),0===e.distanceTo(n))?0:(r=t,1)}())||1!==n);a++);i.material.activeAttributeName=r,i.showBoundingBox=!1,i.boundingBoxNodes=[],i.loadQueue=[],i.visibleBounds=new K,i.visibleNodes=[],i.visibleGeometry=[],i.generateDEM=!1,i.profileRequests=[],i.name="",i._visible=!0;var t=[i.pcoGeometry.tightBoundingBox,i.getBoundingBoxWorld()].find(function(e){return void 0!==e}),s=(i.updateMatrixWorld(!0),(t=ne.computeTransformedBoundingBox(t,i.matrixWorld)).min.z),t=t.max.z;return i.material.heightMin=s,i.material.heightMax=t,i.projection=e.projection,i.fallbackProjection=e.fallbackProjection,i.root=i.pcoGeometry.root,i}return v(l,gm),A(l,[{key:"setName",value:function(e){this.name!==e&&(this.name=e,this.dispatchEvent({type:"name_changed",name:e,pointcloud:this}))}},{key:"getName",value:function(){return this.name}},{key:"getAttribute",value:function(t){var e=this.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===t});return e||null}},{key:"getAttributes",value:function(){return this.pcoGeometry.pointAttributes}},{key:"toTreeNode",value:function(s,t){var l=this,u=new Rm,e=new Fl(s.geometry,this.material);e.name=s.name,e.position.copy(s.boundingBox.min),e.frustumCulled=!1,e.onBeforeRender=function(e,t,n,i,r,a){var o;r.program&&(e.getContext().useProgram(r.program.program),r.program.getUniforms().map.level&&(o=s.getLevel(),r.uniforms.level.value=o,r.program.getUniforms().map.level.setValue(e.getContext(),o)),l.visibleNodeTextureOffsets&&r.program.getUniforms().map.vnStart&&(o=l.visibleNodeTextureOffsets.get(u),r.uniforms.vnStart.value=o,r.program.getUniforms().map.vnStart.setValue(e.getContext(),o)),r.program.getUniforms().map.pcIndex)&&(o=u.pcIndex||l.visibleNodes.indexOf(u),r.uniforms.pcIndex.value=o,r.program.getUniforms().map.pcIndex.setValue(e.getContext(),o))},u.geometryNode=s,u.sceneNode=e,u.pointcloud=this,u.children=[];for(var n,i=0;i<8;i++)u.children[i]=s.children[i];t?(n=parseInt(s.name[s.name.length-1]),t.sceneNode.add(e),t.children[n]=u):(this.root=u,this.add(e));return s.oneTimeDisposeHandlers.push(function(){var e=parseInt(s.name[s.name.length-1]);t.sceneNode.remove(u.sceneNode),t.children[e]=s}),u}},{key:"updateVisibleBounds",value:function(){for(var e=[],t=0;t<this.visibleNodes.length;t++){for(var n=this.visibleNodes[t],i=!0,r=0;r<n.children.length;r++){var a=n.children[r];a instanceof Rm?i=i&&!a.sceneNode.visible:a instanceof ym&&(i=!0)}i&&e.push(n)}this.visibleBounds.min=new Oe(1/0,1/0,1/0),this.visibleBounds.max=new Oe(-1/0,-1/0,-1/0);for(var o=0;o<e.length;o++){var s=e[o];this.visibleBounds.expandByPoint(s.getBoundingBox().min),this.visibleBounds.expandByPoint(s.getBoundingBox().max)}}},{key:"updateMaterial",value:function(e,t,n,i){e.fov=n.fov*(Math.PI/180),e.screenWidth=i.domElement.clientWidth,e.screenHeight=i.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=n.near,e.far=n.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.getSize(new Oe).x}},{key:"computeVisibilityTextureData",value:function(e,t){Potree.measureTimings&&performance.mark("computeVisibilityTextureData-start");for(var n=new Uint8Array(4*e.length),i=new Map,r=((e=e.slice()).sort(function(e,t){e=e.geometryNode.name,t=t.geometryNode.name;return e.length!==t.length?e.length-t.length:e<t?-1:t<e?1:0}),new Oe,new Map),a=new Array(e.length).fill(1/0),o=0;o<e.length;o++){var s,l=e[o],u=(r.set(l.name,l),i.set(l,o),0<o&&(u=parseInt(l.name.slice(-1)),s=l.name.slice(0,-1),s=r.get(s),a[s=i.get(s)]=Math.min(a[s],o-s),n[4*s+0]=n[4*s+0]|1<<u,n[4*s+1]=a[s]>>8,n[4*s+2]=a[s]%256),l.geometryNode.density);"number"==typeof u?(s=Math.log2(u)/2-1.5,n[4*o+3]=10*(10+s)):n[4*o+3]=100}return Potree.measureTimings&&(performance.mark("computeVisibilityTextureData-end"),performance.measure("render.computeVisibilityTextureData","computeVisibilityTextureData-start","computeVisibilityTextureData-end")),{data:n,offsets:i}}},{key:"nodeIntersectsProfile",value:function(e,t){for(var n=e.boundingBox.clone().applyMatrix4(this.matrixWorld).getBoundingSphere(new bi),i=!1,r=0;r<t.points.length-1;r++)var a=new Oe(t.points[r+0].x,t.points[r+0].y,n.center.z),o=new Oe(t.points[r+1].x,t.points[r+1].y,n.center.z),a=new Th(a,o).closestPointToPoint(n.center,!0,new Oe).distanceTo(n.center),i=i||a<n.radius+t.width;return i}},{key:"deepestNodeAt",value:function(e){for(var t=this.matrixWorld.clone().invert(),n=e.clone().applyMatrix4(t),i=this.root;;){var r,a=null,o=q(i.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;void 0!==s&&s.getBoundingBox().containsPoint(n)&&(a=s)}}catch(e){o.e(e)}finally{o.f()}if(!(null!==a&&a instanceof Rm))break;i=a}return i}},{key:"nodesOnRay",value:function(e,t){for(var n=[],i=t.clone(),r=0;r<e.length;r++){var a=e[r],o=a.getBoundingSphere().clone().applyMatrix4(this.matrixWorld);i.intersectsSphere(o)&&n.push(a)}return n}},{key:"updateMatrixWorld",value:function(e){!0===this.matrixAutoUpdate&&this.updateMatrix(),!0!==this.matrixWorldNeedsUpdate&&!0!==e||(this.parent?this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1)}},{key:"hideDescendants",value:function(e){for(var t=[],n=0;n<e.children.length;n++){var i=e.children[n];i.visible&&t.push(i)}for(;0<t.length;){var r=t.shift();r.visible=!1;for(var a=0;a<r.children.length;a++){var o=r.children[a];o.visible&&t.push(o)}}}},{key:"moveToOrigin",value:function(){this.position.set(0,0,0),this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld,e=ne.computeTransformedBoundingBox(e,t);this.position.set(0,0,0).sub(e.getCenter(new Oe))}},{key:"moveToGroundPlane",value:function(){this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld,e=ne.computeTransformedBoundingBox(e,t);this.position.y+=-e.min.y}},{key:"getBoundingBoxWorld",value:function(){this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld;return ne.computeTransformedBoundingBox(e,t)}},{key:"getPointsInProfile",value:function(e,t,n){if(n)return n=new Potree.ProfileRequest(this,e,t,n),this.profileRequests.push(n),n;for(var i={segments:[],boundingBox:new K,projectedBoundingBox:new Bh},r=0;r<e.points.length-1;r++){var a=e.points[r],o=e.points[r+1],s=this.getProfile(a,o,e.width,t);i.segments.push({start:a,end:o,points:s,project:null}),i.boundingBox.expandByPoint(s.boundingBox.min),i.boundingBox.expandByPoint(s.boundingBox.max)}for(var l=new Oe,u=0;u<i.segments.length;u++){var c=i.segments[u],d=c.start,h=c.end,p=function(e,t,n,i){var r=e,e=t,a=n,o=i,t=new Oe(1,0,0),n=(new Oe).subVectors(e,r),s=(n.y=0,n.normalize(),Math.acos(t.dot(n)));return 0<n.z&&(s=-s),function(e){var t=(new Me).makeTranslation(-r.x,-o.min.y,-r.z),n=(new Me).makeRotationY(-s),i=(new Me).makeTranslation(a.x,0,0),e=e.clone();return e.applyMatrix4(t),e.applyMatrix4(n),e.applyMatrix4(i),e}}(d,h,l.clone(),i.boundingBox.clone());c.project=p,l.x+=new Oe(d.x,0,d.z).distanceTo(new Oe(h.x,0,h.z)),l.y+=h.y-d.y}return i.projectedBoundingBox.min.x=0,i.projectedBoundingBox.min.y=i.boundingBox.min.y,i.projectedBoundingBox.max.x=l.x,i.projectedBoundingBox.max.y=i.boundingBox.max.y,i}},{key:"getProfile",value:function(e,t,n,i,r){e=new Potree.ProfileRequest(e,t,n,i,r);this.profileRequests.push(e)}},{key:"getVisibleExtent",value:function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)}},{key:"intersectsPoint",value:function(e){if(!(this.pcoGeometry.root&&this.pcoGeometry.root.geometry))return!1;if(void 0===this.signedDistanceField){for(var t=new Float32Array(Math.pow(32,3)).fill(1/0),n=this.pcoGeometry.root.geometry.attributes.position,i=this.boundingBox,r=n.count,a=0;a<r;a+=3){var o=n.array[3*a+0],s=n.array[3*a+1],l=n.array[3*a+2];t[parseInt(Math.min(o/i.max.x*32,31))+32*parseInt(Math.min(s/i.max.y*32,31))+32*parseInt(Math.min(l/i.max.z*32,31))*32]=0}this.signedDistanceField={resolution:32,field:t}}var u=this.signedDistanceField,c=this.boundingBox,d=this.matrixWorld.clone().invert(),e=e.clone().applyMatrix4(d),d=u.resolution,h=parseInt(d*(e.x/c.max.x)),p=parseInt(d*(e.y/c.max.y)),e=parseInt(d*(e.z/c.max.z));return!(h<0||p<0||e<0||d<=h||d<=p||d<=e||0!==u.field[h+p*d+e*d*d])}},{key:"pick",value:function(e,t,n){function i(e,t){return void 0!==e?e:t}var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},a=e.renderer,e=e.pRenderer,o=(performance.mark("pick-start"),i(r.pickWindowSize,65)),s=(i(r.pickOutsideClipRegion,!1),a.getSize(new Re)),l=Math.ceil(i(r.width,s.width)),s=Math.ceil(i(r.height,s.height)),u=i(r.pointSizeType,this.material.pointSizeType),c=i(r.pointSize,this.material.size),d=this.nodesOnRay(this.visibleNodes,n);if(0===d.length)return null;this.pickState||(n=new Fs,(p=new Potree.PointCloudMaterial).activeAttributeName="indices",h=new ti(1,1,{minFilter:N,magFilter:ht,format:It}),this.pickState={renderTarget:h,material:p,scene:n});for(var h=this.pickState,p=h.material,n=(p.pointSizeType=u,p.shape=Potree.PointShape.PARABOLOID,p.uniforms.uFilterReturnNumberRange.value=this.material.uniforms.uFilterReturnNumberRange.value,p.uniforms.uFilterNumberOfReturnsRange.value=this.material.uniforms.uFilterNumberOfReturnsRange.value,p.uniforms.uFilterGPSTimeClipRange.value=this.material.uniforms.uFilterGPSTimeClipRange.value,p.uniforms.uFilterPointSourceIDClipRange.value=this.material.uniforms.uFilterPointSourceIDClipRange.value,p.activeAttributeName="indices",p.size=c,p.uniforms.minSize.value=this.material.uniforms.minSize.value,p.uniforms.maxSize.value=this.material.uniforms.maxSize.value,p.classification=this.material.classification,p.recomputeClassification(),r.pickClipped?(p.clipBoxes=this.material.clipBoxes,p.uniforms.clipBoxes=this.material.uniforms.clipBoxes,this.material.clipTask===Potree.ClipTask.HIGHLIGHT?p.clipTask=Potree.ClipTask.NONE:p.clipTask=this.material.clipTask,p.clipMethod=this.material.clipMethod):p.clipBoxes=[],this.updateMaterial(p,d,t,a),h.renderTarget.setSize(l,s),new Re(r.x,r.y)),u=a.getContext(),c=(u.enable(u.SCISSOR_TEST),u.scissor(parseInt(n.x-(o-1)/2),parseInt(n.y-(o-1)/2),parseInt(o),parseInt(o)),a.state.buffers.depth.setTest(p.depthTest),a.state.buffers.depth.setMask(p.depthWrite),a.state.setBlending(ge),a.setRenderTarget(h.renderTarget),u.clearColor(0,0,0,0),a.clear(!0,!0,!0),this.material),p=(this.material=p,e.renderOctree(this,d,t,h.renderTarget),this.material=c,function(e,t,n){return Math.min(Math.max(t,e),n)}),e=parseInt(p(n.x-(o-1)/2,0,l)),t=parseInt(p(n.y-(o-1)/2,0,s)),h=parseInt(Math.min(e+o,l)-e),c=parseInt(Math.min(t+o,s)-t),p=new Uint8Array(4*(h*c)),f=(u.readPixels(e,t,o,o,u.RGBA,u.UNSIGNED_BYTE,p),a.setRenderTarget(null),a.state.reset(),a.setScissorTest(!1),u.disable(u.SCISSOR_TEST),p),m=new Uint32Array(p.buffer),v=(Number.MAX_VALUE,[]),g=0;g<o;g++)for(var A=0;A<o;A++){var y=g+A*o,w=Math.pow(g-(o-1)/2,2)+Math.pow(A-(o-1)/2,2),b=f[4*y+3],y=(f[4*y+3]=0,m[y]);0===b&&0===y||void 0===b||void 0===y||(y={pIndex:y,pcIndex:b,distanceToCenter:w},!r.all&&0<v.length?w<v[0].distanceToCenter&&(v[0]=y):v.push(y))}for(var x=0,E=v;x<E.length;x++){var C=E[x],B={};if(!d[C.pcIndex])return null;var M,S=d[C.pcIndex],T=S.sceneNode,_=S.geometryNode.geometry;for(M in _.attributes)!function(){var e,t,n,i,r,a=_.attributes[M];"position"===M?(e=a.array[3*C.pIndex+0],r=a.array[3*C.pIndex+1],t=a.array[3*C.pIndex+2],(e=new Oe(e,r,t)).applyMatrix4(T.matrixWorld),B[M]=e):"indices"!==M&&(r=a.array.slice(a.itemSize*C.pIndex,a.itemSize*(C.pIndex+1)),a.potree&&(t=a.potree,n=t.scale,i=t.offset,r=r.map(function(e){return e/n+i})),B[M]=r)}();C.point=B}return performance.mark("pick-end"),performance.measure("pick","pick-start","pick-end"),r.all?v.map(function(e){return e.point}):0===v.length?null:v[0].point}},{key:"getFittedBoxGen",value:X().mark(function e(t){var n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=performance.now(),i=new K,r=t.matrixWorld.clone().invert(),a=q(this.visibleNodes),e.prev=4,a.s();case 6:if((o=a.n()).done){e.next=21;break}if((o=o.value).sceneNode){e.next=10;break}return e.abrupt("continue",19);case 10:for(s=o.geometryNode.buffer,l=s.offset("position"),u=s.stride,c=new DataView(s.data),d=(new Me).multiplyMatrices(r,o.sceneNode.matrixWorld),h=new ei,p=0;p<s.numElements;p++)f=c.getFloat32(p*u+l+0,!0),m=c.getFloat32(p*u+l+4,!0),v=c.getFloat32(p*u+l+8,!0),h.set(f,m,v,1),h.applyMatrix4(d),-.5<h.x&&h.x<.5&&-.5<h.y&&h.y<.5&&-.5<h.z&&h.z<.5&&i.expandByPoint(h);return void(e.next=19);case 19:e.next=6;break;case 21:e.next=26;break;case 23:e.prev=23,e.t0=e.catch(4),a.e(e.t0);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return A=i.getCenter(new Oe).applyMatrix4(t.matrixWorld),(g=new Z).position.copy(A),g.scale.copy(t.scale),g.rotation.copy(t.rotation),A=(new Oe).subVectors(i.max,i.min),g.scale.multiply(A),A=performance.now()-n,console.log("duration: ",A),e.next=40,g;case 40:case"end":return e.stop()}},e,this,[[4,23,26,29]])})},{key:"getFittedBox",value:function(e){var t,n=performance.now(),i=new K,r=e.matrixWorld.clone().invert(),a=q(this.visibleNodes);try{for(a.s();!(t=a.n()).done;){var o=t.value;if(o.sceneNode&&!(o.getLevel()>1/0))for(var s=o.geometryNode.buffer,l=s.offset("position"),u=s.stride,c=new DataView(s.data),d=(new Me).multiplyMatrices(r,o.sceneNode.matrixWorld),h=new ei,p=0;p<s.numElements;p++){var f=c.getFloat32(p*u+l+0,!0),m=c.getFloat32(p*u+l+4,!0),v=c.getFloat32(p*u+l+8,!0);h.set(f,m,v,1),h.applyMatrix4(d),-.5<h.x&&h.x<.5&&-.5<h.y&&h.y<.5&&-.5<h.z&&h.z<.5&&i.expandByPoint(h)}}}catch(e){a.e(e)}finally{a.f()}var g=i.getCenter(new Oe).applyMatrix4(e.matrixWorld),A=new Z,g=(A.position.copy(g),A.scale.copy(e.scale),A.rotation.copy(e.rotation),(new Oe).subVectors(i.max,i.min)),e=(A.scale.multiply(g),performance.now()-n);return console.log("duration: ",e),A}},{key:"progress",get:function(){return this.visibleNodes.length/this.visibleGeometry.length}},{key:"find",value:function(e){var t,n=null,i=q(e);try{for(i.s();!(t=i.n()).done;)var r=t.value,n="r"===r?this.root:n.children[r]}catch(e){i.e(e)}finally{i.f()}return n}},{key:"visible",get:function(){return this._visible},set:function(e){e!==this._visible&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",pointcloud:this}))}}])}();function Fm(e,t){var n;if(t===ut)return e.REPEAT;if(t===ct)return e.CLAMP_TO_EDGE;if(t===dt)return e.MIRRORED_REPEAT;if(t===ht)return e.NEAREST;if(1004===t)return e.NEAREST_MIPMAP_NEAREST;if(1005===t)return e.NEAREST_MIPMAP_LINEAR;if(t===N)return e.LINEAR;if(1007===t)return e.LINEAR_MIPMAP_NEAREST;if(t===gt)return e.LINEAR_MIPMAP_LINEAR;if(t===At)return e.UNSIGNED_BYTE;if(t===Mt)return e.UNSIGNED_SHORT_4_4_4_4;if(t===St)return e.UNSIGNED_SHORT_5_5_5_1;if(t===Tt)return e.UNSIGNED_SHORT_5_6_5;if(t===yt)return e.BYTE;if(t===wt)return e.SHORT;if(t===bt)return e.UNSIGNED_SHORT;if(t===xt)return e.INT;if(t===Et)return e.UNSIGNED_INT;if(t===Ct)return e.FLOAT;if(t===Bt&&null!==(n=extensions.get("OES_texture_half_float")))return n.HALF_FLOAT_OES;if(t===Pt)return e.ALPHA;if(t===Dt)return e.RGB;if(t===It)return e.RGBA;if(t===kt)return e.LUMINANCE;if(t===Rt)return e.LUMINANCE_ALPHA;if(t===Ft)return e.DEPTH_COMPONENT;if(t===Ot)return e.DEPTH_STENCIL;if(t===Ee)return e.FUNC_ADD;if(t===Ce)return e.FUNC_SUBTRACT;if(t===Te)return e.FUNC_REVERSE_SUBTRACT;if(t===De)return e.ZERO;if(t===Ie)return e.ONE;if(t===ke)return e.SRC_COLOR;if(t===Ne)return e.ONE_MINUS_SRC_COLOR;if(t===ze)return e.SRC_ALPHA;if(t===Ge)return e.ONE_MINUS_SRC_ALPHA;if(t===He)return e.DST_ALPHA;if(t===Ve)return e.ONE_MINUS_DST_ALPHA;if(t===Qe)return e.DST_COLOR;if(t===je)return e.ONE_MINUS_DST_COLOR;if(t===We)return e.SRC_ALPHA_SATURATE;if((t===Qt||t===RGBA_S3TC_DXT1_Format||t===Wt||t===RGBA_S3TC_DXT5_Format)&&null!==(n=extensions.get("WEBGL_compressed_texture_s3tc"))){if(t===Qt)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===jt)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Wt)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Jt)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((t===qt||t===Yt||t===Xt||t===Kt)&&null!==(n=extensions.get("WEBGL_compressed_texture_pvrtc"))){if(t===qt)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Yt)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===Xt)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===Kt)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(t===Zt&&null!==(n=extensions.get("WEBGL_compressed_texture_etc1")))return n.COMPRESSED_RGB_ETC1_WEBGL;if((t===_e||t===Pe)&&null!==(n=extensions.get("EXT_blend_minmax"))){if(t===_e)return n.MIN_EXT;if(t===Pe)return n.MAX_EXT}return t===UnsignedInt248Type&&null!==(n=extensions.get("WEBGL_depth_texture"))?n.UNSIGNED_INT_24_8_WEBGL:0}var Om={position:{name:"position",location:0},color:{name:"color",location:1},rgba:{name:"color",location:1},intensity:{name:"intensity",location:2},classification:{name:"classification",location:3},returnNumber:{name:"returnNumber",location:4},"return number":{name:"returnNumber",location:4},returns:{name:"returnNumber",location:4},numberOfReturns:{name:"numberOfReturns",location:5},"number of returns":{name:"numberOfReturns",location:5},pointSourceID:{name:"pointSourceID",location:6},"source id":{name:"pointSourceID",location:6},"point source id":{name:"pointSourceID",location:6},indices:{name:"indices",location:7},normal:{name:"normal",location:8},spacing:{name:"spacing",location:9},"gps-time":{name:"gpsTime",location:10},aExtra:{name:"aExtra",location:11}},Um=function(){return A(function e(t,n,i,r){ue(this,e),this.gl=t,this.name=n,this.vsSource=i,this.fsSource=r,this.cache=new Map,this.vs=null,this.fs=null,this.program=null,this.uniformLocations={},this.attributeLocations={},this.uniformBlockIndices={},this.uniformBlocks={},this.uniforms={},this.update(i,r)},[{key:"update",value:function(e,t){this.vsSource=e,this.fsSource=t,this.linkProgram()}},{key:"compileShader",value:function(e,t){var n=this.gl;if(n.shaderSource(e,t),n.compileShader(e),!n.getShaderParameter(e,n.COMPILE_STATUS))throw n=n.getShaderInfoLog(e),e=t.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"),"could not compile shader ".concat(this.name,": ").concat(n,", \n").concat(e)}},{key:"linkProgram",value:function(){var e=performance.now(),t=this.gl,n=(this.uniformLocations={},this.attributeLocations={},this.uniforms={},t.useProgram(null),this.cache.get("".concat(this.vsSource,", ").concat(this.fsSource)));if(n)this.program=n.program,this.vs=n.vs,this.fs=n.fs,this.attributeLocations=n.attributeLocations,this.uniformLocations=n.uniformLocations,this.uniformBlocks=n.uniformBlocks,this.uniforms=n.uniforms;else{this.vs=t.createShader(t.VERTEX_SHADER),this.fs=t.createShader(t.FRAGMENT_SHADER),this.program=t.createProgram();for(var i=0,r=Object.keys(Om);i<r.length;i++){var a=r[i],o=Om[a].location,a=Om[a].name;t.bindAttribLocation(this.program,o,a)}this.compileShader(this.vs,this.vsSource),this.compileShader(this.fs,this.fsSource);var s=this.program;if(t.attachShader(s,this.vs),t.attachShader(s,this.fs),t.linkProgram(s),t.detachShader(s,this.vs),t.detachShader(s,this.fs),!t.getProgramParameter(s,t.LINK_STATUS))throw n=t.getProgramInfoLog(s),"could not link program ".concat(this.name,": ").concat(n);for(var l=t.getProgramParameter(s,t.ACTIVE_ATTRIBUTES),u=0;u<l;u++){var c=t.getActiveAttrib(s,u),d=t.getAttribLocation(s,c.name);this.attributeLocations[c.name]=d}for(var h=t.getProgramParameter(s,t.ACTIVE_UNIFORMS),p=0;p<h;p++){var f=t.getActiveUniform(s,p),m=t.getUniformLocation(s,f.name);this.uniformLocations[f.name]=m,this.uniforms[f.name]={location:m,value:null}}if("undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext)for(var v=t.getProgramParameter(s,t.ACTIVE_UNIFORM_BLOCKS),g=0;g<v;g++){var A=t.getActiveUniformBlockName(s,g),y=t.getUniformBlockIndex(s,A),w=(this.uniformBlockIndices[A]=y,t.uniformBlockBinding(s,y,y),t.getActiveUniformBlockParameter(s,y,t.UNIFORM_BLOCK_DATA_SIZE)),b=t.createBuffer();t.bindBuffer(t.UNIFORM_BUFFER,b),t.bufferData(t.UNIFORM_BUFFER,w,t.DYNAMIC_READ),t.bindBufferBase(t.UNIFORM_BUFFER,y,b),t.bindBuffer(t.UNIFORM_BUFFER,null),this.uniformBlocks[A]={name:A,index:y,dataSize:w,buffer:b}}n={program:this.program,vs:this.vs,fs:this.fs,attributeLocations:this.attributeLocations,uniformLocations:this.uniformLocations,uniforms:this.uniforms,uniformBlocks:this.uniformBlocks};this.cache.set("".concat(this.vsSource,", ").concat(this.fsSource),n);n=performance.now()-e;console.log("shader compile duration: ".concat(n.toFixed(3)))}}},{key:"setUniformMatrix4",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&(t=new Float32Array(t.elements),n.uniformMatrix4fv(e,!1,t))}},{key:"setUniform1f",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1f(e.location,t))}},{key:"setUniformBoolean",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1i(e.location,t))}},{key:"setUniformTexture",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}},{key:"setUniform2f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform2f(e,t[0],t[1])}},{key:"setUniform3f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform3f(e,t[0],t[1],t[2])}},{key:"setUniform",value:function(e,t){t.constructor===Me?this.setUniformMatrix4(e,t):"number"==typeof t?this.setUniform1f(e,t):"boolean"==typeof t?this.setUniformBoolean(e,t):t instanceof Nm?this.setUniformTexture(e,t):t instanceof Array?2===t.length?this.setUniform2f(e,t):3===t.length&&this.setUniform3f(e,t):console.error("unhandled uniform type: ",e,t)}},{key:"setUniform1i",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}}])}(),Nm=function(){return A(function e(t,n){ue(this,e),this.gl=t,this.texture=n,this.id=t.createTexture(),this.target=t.TEXTURE_2D,this.version=-1,this.update(n)},[{key:"update",value:function(){var e,t,n,i,r,a,o,s;this.texture.image?(e=this.gl,t=this.texture,this.version!==t.version&&(this.target=e.TEXTURE_2D,e.bindTexture(this.target,this.id),n=Fm(e,t.format),i=t.image.width,r=t.image.height,a=n,o=Fm(e,t.type),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,t.unpackAlignment),t instanceof Ea?(s=t.image.data,e.texParameteri(this.target,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,Fm(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,Fm(e,t.minFilter)),e.texImage2D(this.target,0,n,i,r,0,a,o,s)):(t instanceof zl||t instanceof Zn)&&(s=t.image,e.texParameteri(this.target,e.TEXTURE_WRAP_S,Fm(e,t.wrapS)),e.texParameteri(this.target,e.TEXTURE_WRAP_T,Fm(e,t.wrapT)),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,Fm(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,Fm(e,t.minFilter)),e.texImage2D(this.target,0,n,n,o,s),t instanceof Zn)&&e.generateMipmap(e.TEXTURE_2D),e.bindTexture(this.target,null),this.version=t.version)):this.version=this.texture.version}}])}(),zm=A(function e(){ue(this,e),this.numElements=0,this.vao=null,this.vbos=new Map}),Gm=function(){return A(function e(t){ue(this,e),this.threeRenderer=t,this.gl=this.threeRenderer.getContext(),this.buffers=new Map,this.shaders=new Map,this.textures=new Map,this.glTypeMapping=new Map,this.glTypeMapping.set(Float32Array,this.gl.FLOAT),this.glTypeMapping.set(Uint8Array,this.gl.UNSIGNED_BYTE),this.glTypeMapping.set(Uint16Array,this.gl.UNSIGNED_SHORT),this.toggle=0},[{key:"deleteBuffer",value:function(e){var t=this.gl,n=this.buffers.get(e);if(null!=n){for(var i in e.attributes)t.deleteBuffer(n.vbos.get(i).handle);this.buffers.delete(e)}}},{key:"createBuffer",value:function(t){var e,n=this,i=this.gl,r=new zm;for(e in r.vao=i.createVertexArray(),r.numElements=t.attributes.position.count,i.bindVertexArray(r.vao),t.attributes){var a,o=t.attributes[e],s=i.createBuffer(),l=(i.bindBuffer(i.ARRAY_BUFFER,s),i.bufferData(i.ARRAY_BUFFER,o.array,i.STATIC_DRAW),o.normalized),u=this.glTypeMapping.get(o.array.constructor);void 0!==Om[e]&&(a=Om[e].location,i.vertexAttribPointer(a,o.itemSize,u,l,0,0),i.enableVertexAttribArray(a)),r.vbos.set(e,{handle:s,name:e,count:o.count,itemSize:o.itemSize,type:t.attributes.position.array.constructor,version:0})}i.bindBuffer(i.ARRAY_BUFFER,null),i.bindVertexArray(null);var c=function(e){n.deleteBuffer(t),t.removeEventListener("dispose",c)};return t.addEventListener("dispose",c),r}},{key:"updateBuffer",value:function(e){var t,n=this.gl,i=this.buffers.get(e);for(t in n.bindVertexArray(i.vao),e.attributes){var r=e.attributes[t],a=r.normalized,o=this.glTypeMapping.get(r.array.constructor),s=null;i.vbos.has(t)?(s=i.vbos.get(t).handle,i.vbos.get(t).version=r.version):(s=n.createBuffer(),i.vbos.set(t,{handle:s,name:t,count:r.count,itemSize:r.itemSize,type:e.attributes.position.array.constructor,version:r.version})),n.bindBuffer(n.ARRAY_BUFFER,s),n.bufferData(n.ARRAY_BUFFER,r.array,n.STATIC_DRAW),void 0!==Om[t]&&(s=Om[t].location,n.vertexAttribPointer(s,r.itemSize,o,a,0,0),n.enableVertexAttribArray(s))}n.bindBuffer(n.ARRAY_BUFFER,null),n.bindVertexArray(null)}},{key:"traverse",value:function(e){for(var t=[],n=[e];0<n.length;){var i=n.pop();i instanceof gm?t.push(i):(i=i.children.filter(function(e){return e.visible}),n.push.apply(n,Fe(i)))}return{octrees:t}}},{key:"renderNodes",value:function(R,e,L,t,n,F,i){var O,U=this,N=(W.measureTimings&&performance.mark("renderNodes-start"),this.gl),z=i.material||R.material,G=null==i.shadowMaps?[]:i.shadowMaps,H=t.matrixWorldInverse,V=(i.viewOverride&&(H=i.viewOverride),new Me),Q=new Float32Array(16),j=0,r=q(e);try{for(r.s();!(O=r.n()).done;)!function(){var e=O.value;if(void 0!==W.debug.allowedNodes&&!W.debug.allowedNodes.includes(e.name))return;for(var t=e.sceneNode.matrixWorld,n=(V.multiplyMatrices(H,t),L&&(n=L.offsets.get(e),F.setUniform1f("uVNStart",n)),e.getLevel()),i=(e.debug?F.setUniform("uDebug",!0):F.setUniform("uDebug",!1),F.uniformLocations.modelMatrix),i=(i&&(Q.set(t.elements),N.uniformMatrix4fv(i,!1,Q)),F.uniformLocations.modelViewMatrix),r=0;r<16;r++)Q[r]=V.elements[r];if(N.uniformMatrix4fv(i,!1,Q),z.clipPolygons&&0<z.clipPolygons.length){var a,o=[],s=[],l=q(z.clipPolygons);try{for(l.s();!(a=l.n()).done;){var u=a.value,c=u.viewMatrix,d=u.projMatrix.clone().multiply(c).multiply(t);o.push(u.markers.length),s.push(d)}}catch(e){l.e(e)}finally{l.f()}for(var i=(i=[]).concat.apply(i,Fe(s.map(function(e){return e.elements}))),h=new Array(24*z.clipPolygons.length),p=0;p<z.clipPolygons.length;p++)for(var f=z.clipPolygons[p],m=0;m<f.markers.length;m++)h[24*p+(3*m+0)]=f.markers[m].position.x,h[24*p+(3*m+1)]=f.markers[m].position.y,h[24*p+(3*m+2)]=f.markers[m].position.z;var v=F.uniformLocations["uClipPolygonVCount[0]"],v=(N.uniform1iv(v,o),F.uniformLocations["uClipPolygonWVP[0]"]),v=(N.uniformMatrix4fv(v,!1,i),F.uniformLocations["uClipPolygonVertices[0]"]);N.uniform3fv(v,h)}if(F.setUniform1f("uLevel",n),F.setUniform1f("uNodeSpacing",e.geometryNode.estimatedSpacing),F.setUniform1f("uPCIndex",j),0<G.length){var i=F.uniformLocations["uShadowMap[0]"],g=(F.setUniform3f("uShadowColor",z.uniforms.uShadowColor.value),new Array(G.length).fill(5).map(function(e,t){return e+t}));N.uniform1iv(i,g);for(var A=0;A<G.length;A++){var y=G[A],w=g[A],y=U.threeRenderer.properties.get(y.target.texture).__webglTexture;N.activeTexture(N["TEXTURE".concat(w)]),N.bindTexture(N.TEXTURE_2D,y)}v=G.map(function(e){return e.camera.matrixWorldInverse}).map(function(e){return(new Me).multiplyMatrices(e,t)}),i=(n=[]).concat.apply(n,Fe(v.map(function(e){return e.elements}))),n=F.uniformLocations["uShadowWorldView[0]"];N.uniformMatrix4fv(n,!1,i);n=(v=[]).concat.apply(v,Fe(G.map(function(e){return e.camera.projectionMatrix.elements}))),i=F.uniformLocations["uShadowProj[0]"];N.uniformMatrix4fv(i,!1,n)}var b=e.geometryNode.geometry,i=(b.attributes["gps-time"]&&(b.attributes["gps-time"],T=(n=(i=(v=R.getAttribute("gps-time")).initialRange)[1]-i[0])/(v=(e=v.range)[1]-e[0]),i=-(e[0]-i[0])/n,T=Number.isNaN(T)?1:T,i=Number.isNaN(i)?0:i,F.setUniform1f("uGpsScale",T),F.setUniform1f("uGpsOffset",i),T=[((n=z.uniforms.uFilterGPSTimeClipRange.value)[0]-e[0])/v,(n[1]-e[0])/v],F.setUniform2f("uFilterGPSTimeClipRange",T)),z.uniforms.uFilterReturnNumberRange.value),n=z.uniforms.uFilterNumberOfReturnsRange.value,e=z.uniforms.uFilterPointSourceIDClipRange.value,x=(F.setUniform2f("uFilterReturnNumberRange",i),F.setUniform2f("uFilterNumberOfReturnsRange",n),F.setUniform2f("uFilterPointSourceIDClipRange",e),null);if(U.buffers.has(b))for(var E in x=U.buffers.get(b),b.attributes)b.attributes[E].version>x.vbos.get(E).version&&U.updateBuffer(b);else x=U.createBuffer(b),U.buffers.set(b,x);if(N.bindVertexArray(x.vao),void 0===Om[z.activeAttributeName]&&Object.keys(b.attributes).includes(z.activeAttributeName)){var C,B=Om.aExtra.location;for(C in b.attributes){b.attributes[C];var M=x.vbos.get(C);N.bindBuffer(N.ARRAY_BUFFER,M.handle),N.disableVertexAttribArray(B)}var S=z.activeAttributeName,v=b.attributes[S],T=x.vbos.get(S),e=(void 0!==v&&void 0!==T&&(i=U.glTypeMapping.get(v.array.constructor),n=v.normalized,N.bindBuffer(N.ARRAY_BUFFER,T.handle),N.vertexAttribPointer(B,v.itemSize,i,n,0,0),N.enableVertexAttribArray(B)),R.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===S})),T=(T=z.getRange(S))||e.range,v=e.initialRange,i=v[1]-v[0],n=T=T||[0,1],e=i/(n[1]-n[0]),T=-(n[0]-v[0])/i,e=Number.isNaN(e)?1:e,T=Number.isNaN(T)?0:T;F.setUniform1f("uExtraScale",e),F.setUniform1f("uExtraOffset",T)}else for(var _ in b.attributes){var P,D,I=b.attributes[_],k=x.vbos.get(_);void 0!==Om[_]&&(_=Om[_].location,P=U.glTypeMapping.get(I.array.constructor),D=I.normalized,N.bindBuffer(N.ARRAY_BUFFER,k.handle),N.vertexAttribPointer(_,I.itemSize,P,D,0,0),N.enableVertexAttribArray(_))}n=x.numElements;N.drawArrays(N.POINTS,0,n),j++}()}catch(e){r.e(e)}finally{r.f()}N.bindVertexArray(null),W.measureTimings&&(performance.mark("renderNodes-end"),performance.measure("render.renderNodes","renderNodes-start","renderNodes-end"))}},{key:"renderOctree",value:function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},a=this.gl,o=r.material||e.material,s=null==r.shadowMaps?[]:r.shadowMaps,l=n.matrixWorldInverse,u=n.matrixWorld,c=(r.viewOverride&&(u=(l=r.viewOverride).clone().invert()),n.projectionMatrix),d=c.clone().invert(),h=null,p=null,f=0;0<=o.pointSizeType&&(o.pointSizeType!==_m.ADAPTIVE&&"level of detail"!==o.activeAttributeName||(m=null!=r.vnTextureNodes?r.vnTextureNodes:t,p=e.computeVisibilityTextureData(m,n),(m=o.visibleNodesTexture).image.data.set(p.data),m.needsUpdate=!0));this.shaders.has(o)||(m=[o.vertexShader,o.fragmentShader],m=new Um(a,"pointcloud",m[0],m[1]),this.shaders.set(o,m)),h=this.shaders.get(o);var m=[o.vertexShader,o.fragmentShader],v=m[0],m=m[1],g=o.snapEnabled?o.numSnapshots:0,A=o.clipBoxes&&o.clipBoxes.length?o.clipBoxes.length:0,y=r.clipSpheres&&r.clipSpheres.length?r.clipSpheres.length:0,w=o.clipPolygons&&o.clipPolygons.length?o.clipPolygons.length:0,s=["#define num_shadowmaps ".concat(s.length),"#define num_snapshots ".concat(g),"#define num_clipboxes ".concat(A),"#define num_clipspheres ".concat(y),"#define num_clippolygons ".concat(w)],A=(e.pcoGeometry.root.isLoaded()&&((g=e.pcoGeometry.root.geometry.attributes)["gps-time"]&&s.push("#define clip_gps_enabled"),g["return number"]&&s.push("#define clip_return_number_enabled"),g["number of returns"]&&s.push("#define clip_number_of_returns_enabled"),g["source id"]||g["point source id"])&&s.push("#define clip_point_source_id_enabled"),s.join("\n")),y=v.indexOf("#version "),w=m.indexOf("#version "),v=0<=y?v.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(v),m=0<=w?m.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(m);h.update(v,m),o.needsUpdate=!1;for(var b=0,x=Object.keys(o.uniforms);b<x.length;b++){var E,C=x[b],C=o.uniforms[C];"t"==C.type&&(C=C.value)&&(this.textures.has(C)||(E=new Nm(a,C),this.textures.set(C,E)),this.textures.get(C).update())}a.useProgram(h.program);(void 0===r.transparent||r.transparent)&&o.opacity<1?(a.enable(a.BLEND),a.blendFunc(a.SRC_ALPHA,a.ONE),a.depthMask(!1),a.disable(a.DEPTH_TEST)):(a.disable(a.BLEND),a.depthMask(!0),a.enable(a.DEPTH_TEST)),void 0!==r.blendFunc&&(a.enable(a.BLEND),a.blendFunc.apply(a,Fe(r.blendFunc))),void 0!==r.depthTest&&(!0===r.depthTest?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST)),void 0!==r.depthWrite&&(!0===r.depthWrite?a.depthMask(!0):a.depthMask(!1)),h.setUniformMatrix4("projectionMatrix",c),h.setUniformMatrix4("viewMatrix",l),h.setUniformMatrix4("uViewInv",u),h.setUniformMatrix4("uProjInv",d);g=i?i.width:o.screenWidth,s=i?i.height:o.screenHeight;if(h.setUniform1f("uScreenWidth",g),h.setUniform1f("uScreenHeight",s),h.setUniform1f("fov",Math.PI*n.fov/180),h.setUniform1f("near",n.near),h.setUniform1f("far",n.far),n instanceof Ad?(h.setUniform("uUseOrthographicCamera",!0),h.setUniform("uOrthoWidth",n.right-n.left),h.setUniform("uOrthoHeight",n.top-n.bottom)):h.setUniform("uUseOrthographicCamera",!1),o.clipBoxes.length+o.clipPolygons.length===0?h.setUniform1i("clipTask",Bm.NONE):h.setUniform1i("clipTask",o.clipTask),h.setUniform1i("clipMethod",o.clipMethod),o.clipBoxes&&0<o.clipBoxes.length&&(y=h.uniformLocations["clipBoxes[0]"],a.uniformMatrix4fv(y,!1,o.uniforms.clipBoxes.value)),r.clipSpheres&&0<r.clipSpheres.length){var B,M=[],S=q(r.clipSpheres);try{for(S.s();!(B=S.n()).done;){var T=B.value.matrixWorld,_=n.matrixWorld,L=T.clone().invert(),F=(new Me).multiplyMatrices(L,_);M.push(F)}}catch(e){S.e(e)}finally{S.f()}A=(w=[]).concat.apply(w,Fe(M.map(function(e){return e.elements}))),v=h.uniformLocations["uClipSpheres[0]"];a.uniformMatrix4fv(v,!1,A)}h.setUniform1f("size",o.size),h.setUniform1f("maxSize",o.uniforms.maxSize.value),h.setUniform1f("minSize",o.uniforms.minSize.value),h.setUniform1f("uOctreeSpacing",o.spacing),h.setUniform("uOctreeSize",o.uniforms.octreeSize.value),h.setUniform3f("uColor",o.color.toArray()),h.setUniform1f("uOpacity",o.opacity),h.setUniform2f("elevationRange",o.elevationRange),h.setUniform2f("intensityRange",o.intensityRange),h.setUniform3f("uIntensity_gbc",[o.intensityGamma,o.intensityBrightness,o.intensityContrast]),h.setUniform3f("uRGB_gbc",[o.rgbGamma,o.rgbBrightness,o.rgbContrast]),h.setUniform1f("uTransition",o.transition),h.setUniform1f("wRGB",o.weightRGB),h.setUniform1f("wIntensity",o.weightIntensity),h.setUniform1f("wElevation",o.weightElevation),h.setUniform1f("wClassification",o.weightClassification),h.setUniform1f("wReturnNumber",o.weightReturnNumber),h.setUniform1f("wSourceID",o.weightSourceID),h.setUniform("backfaceCulling",o.uniforms.backfaceCulling.value);m=this.textures.get(o.visibleNodesTexture),m&&(h.setUniform1i("visibleNodesTexture",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(m.target,m.id),f++),c=this.textures.get(o.gradientTexture),h.setUniform1i("gradient",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(c.target,c.id),l=o.elevationGradientRepeat,l===Sm.REPEAT?(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.REPEAT)):l===Sm.MIRRORED_REPEAT?(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.MIRRORED_REPEAT),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.MIRRORED_REPEAT)):(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE)),f++,u=this.textures.get(o.classificationTexture),h.setUniform1i("classificationLUT",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(u.target,u.id),f++,d=this.textures.get(o.matcapTexture);if(h.setUniform1i("matcapTextureUniform",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(d.target,d.id),f++,!0===o.snapEnabled){var g=h.uniformLocations["uSnapshot[0]"],s=h.uniformLocations["uSnapshotDepth[0]"],y=f,P=new Array(5).fill(y).map(function(e,t){return e+t}),D=new Array(5).fill(1+Math.max.apply(Math,Fe(P))).map(function(e,t){return e+t}),f=1+Math.max.apply(Math,Fe(D));a.uniform1iv(g,P),a.uniform1iv(s,D);for(var I=0;I<5;I++){var k=o.uniforms.uSnapshot.value[I],R=o.uniforms.uSnapshotDepth.value[I];if(!k)break;var k=this.threeRenderer.properties.get(k).__webglTexture,R=this.threeRenderer.properties.get(R).__webglTexture,O=P[I],U=D[I];a.activeTexture(a["TEXTURE".concat(O)]),a.bindTexture(a.TEXTURE_2D,k),a.activeTexture(a["TEXTURE".concat(U)]),a.bindTexture(a.TEXTURE_2D,R)}v=(w=[]).concat.apply(w,Fe(o.uniforms.uSnapView.value.map(function(e){return e.elements}))),A=h.uniformLocations["uSnapView[0]"];a.uniformMatrix4fv(A,!1,v);l=(m=[]).concat.apply(m,Fe(o.uniforms.uSnapProj.value.map(function(e){return e.elements}))),c=h.uniformLocations["uSnapProj[0]"];a.uniformMatrix4fv(c,!1,l);d=(u=[]).concat.apply(u,Fe(o.uniforms.uSnapProjInv.value.map(function(e){return e.elements}))),y=h.uniformLocations["uSnapProjInv[0]"];a.uniformMatrix4fv(y,!1,d);g=(f=[]).concat.apply(f,Fe(o.uniforms.uSnapViewInv.value.map(function(e){return e.elements}))),s=h.uniformLocations["uSnapViewInv[0]"];a.uniformMatrix4fv(s,!1,g)}this.renderNodes(e,t,p,n,i,h,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,null),a.activeTexture(a.TEXTURE0)}},{key:"render",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},r=this.gl;null!=n&&this.threeRenderer.setRenderTarget(n);var a,o=q(this.traverse(e).octrees);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=s.visibleNodes;this.renderOctree(s,l,t,n,i)}}catch(e){o.e(e)}finally{o.f()}r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,null),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindVertexArray(null),this.threeRenderer.resetState()}}])}();function Hm(e,t){for(var n=0,i=Object.keys(t.uniforms);n<i.length;n++){var r=i[n];t.uniforms[r].value=e.uniforms[r].value}t.gradientTexture=e.gradientTexture,t.visibleNodesTexture=e.visibleNodesTexture,t.classificationTexture=e.classificationTexture,t.matcapTexture=e.matcapTexture,t.activeAttributeName=e.activeAttributeName,t.ranges=e.ranges}var Vm=function(){return A(function e(t,n){ue(this,e),this.geometry=t,this.material=n,this.sceneNode=new Fl(t,n),this.geometryNode={estimatedSpacing:1,geometry:t}},[{key:"getLevel",value:function(){return 0}}])}(),Qm=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).trueOctree=e,t.pcoGeometry=e.pcoGeometry,t.points=[],t.visibleNodes=[],t.material=new km,Hm(t.trueOctree.material,t.material),t.material.pointSizeType=_m.FIXED,t.batchSize=1e5,t.currentBatch=null,t}return v(n,gm),A(n,[{key:"getAttribute",value:function(e){return this.trueOctree.getAttribute(e)}},{key:"dispose",value:function(){var e,t=q(this.visibleNodes);try{for(t.s();!(e=t.n()).done;)e.value.geometry.dispose()}catch(e){t.e(e)}finally{t.f()}this.visibleNodes=[],this.currentBatch=null,this.points=[]}},{key:"addPoints",value:function(e){null===this.currentBatch&&(this.currentBatch=this.createNewBatch(e)),this.points.push(e);for(var t={start:this.currentBatch.geometry.drawRange.count,count:0},n=new K,i=new Oe,r=0;r<e.numPoints;r++){if(t.start+t.count>=this.batchSize){for(var a=0,o=Object.keys(this.currentBatch.geometry.attributes);a<o.length;a++){var s=o[a],s=this.currentBatch.geometry.attributes[s];s.updateRange.offset=t.start,s.updateRange.count=t.count,s.needsUpdate=!0}this.currentBatch.geometry.computeBoundingBox(),this.currentBatch.geometry.computeBoundingSphere(),this.currentBatch=this.createNewBatch(e),t={start:0,count:0}}i.set(e.data.position[3*r+0]+this.trueOctree.position.x,e.data.position[3*r+1]+this.trueOctree.position.y,e.data.position[3*r+2]+this.trueOctree.position.z);for(var l=e.data.mileage[r],u=i.z,c=(n.expandByPoint(new Oe(l,0,u)),t.start+t.count),d=this.currentBatch.geometry,h=0,p=Object.keys(e.data);h<p.length;h++)for(var f=p[h],m=e.data[f],v=d.attributes[f],g=v.itemSize,A=0;A<g;A++)v.array[g*c+A]=m[g*r+A];var y=d.attributes.position;y.array[3*c+0]=l,y.array[3*c+1]=0,y.array[3*c+2]=u,t.count++,this.currentBatch.geometry.drawRange.count++}for(var w=0,b=Object.keys(this.currentBatch.geometry.attributes);w<b.length;w++){var x=b[w],x=this.currentBatch.geometry.attributes[x];x.updateRange.offset=t.start,x.updateRange.count=t.count,x.needsUpdate=!0}e.projectedBox=n,this.projectedBox=this.points.reduce(function(e,t){return e.union(t.projectedBox)},new K)}},{key:"createNewBatch",value:function(e){for(var t=new V,n=0,i=Object.keys(e.data);n<i.length;n++){var r=i[n],a=e.data[r],o=a.length/e.numPoints,a=a.constructor,s=!1;this.trueOctree.root.sceneNode&&this.trueOctree.root.sceneNode.geometry.attributes[r]&&(s=this.trueOctree.root.sceneNode.geometry.attributes[r].normalized);a=new H(new a(o*this.batchSize),o,s);a.potree={range:[0,1]},t.setAttribute(r,a)}t.drawRange.start=0,t.drawRange.count=0;var l=new Vm(t,this.material);return this.visibleNodes.push(l),l}},{key:"computeVisibilityTextureData",value:function(){for(var e=new Uint8Array(4*this.visibleNodes.length),t=new Map,n=0;n<this.visibleNodes.length;n++)t[this.visibleNodes[n]]=n;return{data:e,offsets:t}}}])}(),jm=function(){function n(e){ue(this,n),(t=le(this,n)).viewer=e,t.elRoot=$("#profile_window"),t.renderArea=t.elRoot.find("#profileCanvasContainer"),t.svg=d3.select("svg#profileSVG"),t.mouseIsDown=!1,t.projectedBox=new K,t.pointclouds=new Map,t.numPoints=0,t.lastAddPointsTimestamp=void 0,t.mouse=new Re(0,0),t.scale=new Oe(1,1,1),t.autoFitEnabled=!0,t.autoFit=!1;var t,e="".concat(W.resourcePath,"/icons/arrow_cw.svg"),e=($("#potree_profile_rotate_cw").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_ccw.svg")),e=($("#potree_profile_rotate_ccw").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_up.svg")),e=($("#potree_profile_move_forward").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_down.svg")),e=($("#potree_profile_move_backward").attr("src",e),"".concat(W.resourcePath,"/icons/file_csv_2d.svg")),e=($("#potree_download_csv_icon").attr("src",e),"".concat(W.resourcePath,"/icons/file_las_3d.svg")),e=($("#potree_download_las_icon").attr("src",e),"".concat(W.resourcePath,"/icons/close.svg"));return $("#closeProfileContainer").attr("src",e),t.initTHREE(),t.initSVG(),t.initListeners(),t.pRenderer=new Gm(t.renderer),t.elRoot.i18n(),t}return v(n,mm),A(n,[{key:"initListeners",value:function(){function r(){var e=h.viewer.scene.getActiveCamera(),t=h.viewer.renderer.domElement,n=h.viewerPickSphere.position.distanceTo(e.position),e=10/ne.projectedRadius(1,e,n,t.clientWidth,t.clientHeight);h.viewerPickSphere.scale.set(e,e,e)}function e(e){h.autoFit=!1;var t=0,e=(void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),Math.sign(t)),t=[h.scaleX.invert(h.mouse.x),h.scaleY.invert(h.mouse.y)],e=(0<e?h.scale.multiplyScalar(1.1):h.scale.multiplyScalar(100/110),h.updateScales(),[h.scaleX.invert(h.mouse.x),h.scaleY.invert(h.mouse.y)]);h.camera.position.x-=e[0]-t[0],h.camera.position.z-=e[1]-t[1],h.render(),h.updateScales()}function t(){var e,t=new hm,n=q(h.pointclouds);try{for(n.s();!(e=n.n()).done;){var i,r=U(e.value,2),a=r[0],o=q(r[1].points);try{for(o.s();!(i=o.n()).done;){for(var s=i.value,l=s.data.position,u=new Float32Array(l),c=0;c<s.numPoints;c++)u[3*c+2]+=a.position.z;s.data.position=u,t.add(s),s.data.position=l}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}return t}var h=this;$(window).resize(function(){h.enabled&&h.render()}),this.renderArea.mousedown(function(e){h.mouseIsDown=!0}),this.renderArea.mouseup(function(e){h.mouseIsDown=!1}),this.renderArea.mousemove(function(e){if(0!==h.pointclouds.size){var t=h.renderArea[0].getBoundingClientRect(),n=e.clientX-t.left,e=e.clientY-t.top,t=new Re(n,e);if(h.mouseIsDown){h.autoFit=!1,h.lastDrag=(new Date).getTime();n=[h.scaleX.invert(h.mouse.x),h.scaleY.invert(h.mouse.y)],e=[h.scaleX.invert(t.x),h.scaleY.invert(t.y)];h.camera.position.x-=e[0]-n[0],h.camera.position.z-=e[1]-n[1],h.render()}else if(0<h.pointclouds.size){var e=Math.abs(h.scaleX.invert(0)-h.scaleX.invert(40)),n=h.scaleX.invert(t.x),i=h.scaleY.invert(t.y),o=h.selectPoint(n,i,e);if(o){for(var s=o.point,l=new Float64Array([s.position[0]+o.pointcloud.position.x,s.position[1]+o.pointcloud.position.y,s.position[2]+o.pointcloud.position.z]),i=(h.elRoot.find("#profileSelectionProperties").fadeIn(200),h.pickSphere.visible=!0,h.pickSphere.scale.set(.5*e,.5*e,.5*e),h.pickSphere.position.set(s.mileage,0,l[2]),(n=h.viewerPickSphere.position).set.apply(n,Fe(l)),h.viewer.scene.scene.children.includes(h.viewerPickSphere)||(h.viewer.scene.scene.add(h.viewerPickSphere),h.viewer.hasEventListener("update",r))||h.viewer.addEventListener("update",r),h.elRoot.find("#profileSelectionProperties")),u="<table>",c=0,d=Object.keys(s);c<d.length;c++)!function(){var t,n,e=d[c],i=s[e],r=o.pointcloud.getAttribute(e),a=function(e){return e};if(r&&4<r.type.size&&(r=r.initialRange,t=1/(r[1]-r[0]),n=r[0],a=function(e){return e/t+n}),"position"===e){r=Fe(l).map(function(e){return ne.addCommas(e.toFixed(3))});u+="\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>x</td>\n\t\t\t\t\t\t\t\t\t<td>".concat(r[0],"</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>y</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(r[1],"</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>z</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(r[2],"</td>\n\t\t\t\t\t\t\t\t</tr>")}else if("rgba"===e)u+="\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(e,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(i.join(", "),"</td>\n\t\t\t\t\t\t\t\t</tr>");else{if("normal"===e)return;u+="mileage"===e?"\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(e,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(i.toFixed(3),"</td>\n\t\t\t\t\t\t\t\t</tr>"):"\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(e,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(a(i),"</td>\n\t\t\t\t\t\t\t\t</tr>")}}();u+="</table>",i.html(u),h.selectedPoint=s}else{h.viewer.scene.scene.add(h.viewerPickSphere);e=h.viewer.scene.scene.children.indexOf(h.viewerPickSphere);0<=e&&h.viewer.scene.scene.children.splice(e,1),h.viewer.removeEventListener("update",r)}h.render()}h.mouse.copy(t)}}),$(this.renderArea)[0].addEventListener("mousewheel",e,!1),$(this.renderArea)[0].addEventListener("DOMMouseScroll",e,!1),$("#closeProfileContainer").click(function(){h.hide()});$("#potree_download_csv_icon").click(function(){var e=t(),e=pm.toString(e),e=new Blob([e],{type:"text/string"});$("#potree_download_profile_ortho_link").attr("href",URL.createObjectURL(e))}),$("#potree_download_las_icon").click(function(){var e=t(),e=fm.toLAS(e),e=new Blob([e],{type:"application/octet-binary"});$("#potree_download_profile_link").attr("href",URL.createObjectURL(e))})}},{key:"selectPoint",value:function(e,t,n){var i,r={distance:1/0,pointcloud:null,points:null,index:null},a=new Bh(new Re(e-n,t-n),new Re(e+n,t+n)),o=q(this.pointclouds);try{for(o.s();!(i=o.n()).done;){var s,l=U(i.value,2),u=l[0],c=q(l[1].points);try{for(c.s();!(s=c.n()).done;){var d=s.value;if(new Bh(new Re(d.projectedBox.min.x,d.projectedBox.min.z),new Re(d.projectedBox.max.x,d.projectedBox.max.z)).intersectsBox(a)){d.numPoints;for(var h=0;h<d.numPoints;h++){var p,f=d.data.mileage[h]-e,m=d.data.position[3*h+2]-t+u.position.z,v=Math.sqrt(f*f+m*m),g=v<n&&v<r.distance,A=!0;!d.data.classification||!(p=u.material.classification[d.data.classification[h]])||p.visible&&0!==p.color.w||(A=!1),g&&A&&(r={distance:v,pointcloud:u,points:d,index:h})}}else d.numPoints}}catch(e){c.e(e)}finally{c.f()}}}catch(e){o.e(e)}finally{o.f()}if(r.distance<1/0){for(var y=r.points,w={},b=0,x=Object.keys(y.data);b<x.length;b++){var E=x[b],C=y.data[E],B=C.length/y.numPoints,C=C.subarray(B*r.index,B*r.index+B);1===C.length?w[E]=C[0]:w[E]=C}return r.point=w,r}return null}},{key:"initTHREE",value:function(){this.renderer=new Is({alpha:!0,premultipliedAlpha:!1}),this.renderer.setClearColor(0,0),this.renderer.setSize(10,10),this.renderer.autoClear=!1,this.renderArea.append($(this.renderer.domElement)),this.renderer.domElement.tabIndex="2222",$(this.renderer.domElement).css("width","100%"),$(this.renderer.domElement).css("height","100%");var e=this.renderer.getContext();if(null==e.createVertexArray){var t=e.getExtension("OES_vertex_array_object");if(!t)throw new Error("OES_vertex_array_object extension not supported");e.createVertexArray=t.createVertexArrayOES.bind(t),e.bindVertexArray=t.bindVertexArrayOES.bind(t)}this.camera=new Ad(-1e3,1e3,1e3,-1e3,-1e3,1e3),this.camera.up.set(0,0,1),this.camera.rotation.order="ZXY",this.camera.rotation.x=Math.PI/2,this.scene=new Fs,this.profileScene=new Fs;e=new ju(1,16,16),t=new cc;this.pickSphere=new Q(e,t),this.scene.add(this.pickSphere),this.viewerPickSphere=new Q(e,t)}},{key:"initSVG",value:function(){var e=this.renderArea[0].clientWidth,t=this.renderArea[0].clientHeight,n=this.renderArea[0].offsetLeft;this.svg.selectAll("*").remove(),this.scaleX=d3.scale.linear().domain([this.camera.left+this.camera.position.x,this.camera.right+this.camera.position.x]).range([0,e]),this.scaleY=d3.scale.linear().domain([this.camera.bottom+this.camera.position.z,this.camera.top+this.camera.position.z]).range([t,0]),this.xAxis=d3.svg.axis().scale(this.scaleX).orient("bottom").innerTickSize(-t).outerTickSize(1).tickPadding(10).ticks(e/50),this.yAxis=d3.svg.axis().scale(this.scaleY).orient("left").innerTickSize(-e).outerTickSize(1).tickPadding(10).ticks(t/20),this.elXAxis=this.svg.append("g").attr("class","x axis").attr("transform","translate(".concat(n,", ").concat(t,")")).call(this.xAxis),this.elYAxis=this.svg.append("g").attr("class","y axis").attr("transform","translate(".concat(n,", 0)")).call(this.yAxis)}},{key:"addPoints",value:function(e,t){var n=this;if(0!==t.numPoints){var i,r,a,o=this.pointclouds.get(e),s=(o||(o=new Qm(e),this.pointclouds.set(e,o),this.profileScene.add(o),(i=function(){n.render()})(),e.material.addEventListener("material_property_changed",i),this.addEventListener("on_reset_once",function(){e.material.removeEventListener("material_property_changed",i)})),o.addPoints(t),this.projectedBox.union(o.projectedBox),this.autoFit&&this.autoFitEnabled&&(t=this.renderArea[0].clientWidth,o=this.renderArea[0].clientHeight,r=t/(t=this.projectedBox.getSize(new Oe)).x,o=o/t.z,t=Math.min(r,o),r=this.projectedBox.getCenter(new Oe),this.scale.set(t,t,1),this.camera.position.copy(r)),this.render(),0),l=q(this.pointclouds.entries());try{for(l.s();!(a=l.n()).done;){var u=U(a.value,2);u[0];s+=u[1].points.reduce(function(e,t){return e+t.numPoints},0)}}catch(e){l.e(e)}finally{l.f()}$("#profile_num_points").html(ne.addCommas(s))}}},{key:"reset",value:function(){this.lastReset=(new Date).getTime(),this.dispatchEvent({type:"on_reset_once"}),this.removeEventListeners("on_reset_once"),this.autoFit=!0,this.projectedBox=new K;var e,t=q(this.pointclouds);try{for(t.s();!(e=t.n()).done;){var n=U(e.value,2);n[0];n[1].dispose()}}catch(e){t.e(e)}finally{t.f()}this.pointclouds.clear(),this.mouseIsDown=!1,this.mouse.set(0,0),this.autoFitEnabled&&this.scale.set(1,1,1),this.pickSphere.visible=!1,this.elRoot.find("#profileSelectionProperties").hide(),this.render()}},{key:"show",value:function(){this.elRoot.fadeIn(),this.enabled=!0}},{key:"hide",value:function(){this.elRoot.fadeOut(),this.enabled=!1}},{key:"updateScales",value:function(){var e=this.renderArea[0].clientWidth,t=this.renderArea[0].clientHeight,n=-e/2/this.scale.x,i=+e/2/this.scale.x,r=+t/2/this.scale.y,a=-t/2/this.scale.y,n=(this.camera.left=n,this.camera.right=i,this.camera.top=r,this.camera.bottom=a,this.camera.updateProjectionMatrix(),this.scaleX.domain([this.camera.left+this.camera.position.x,this.camera.right+this.camera.position.x]).range([0,e]),this.scaleY.domain([this.camera.bottom+this.camera.position.z,this.camera.top+this.camera.position.z]).range([t,0]),this.renderArea[0].offsetLeft);this.xAxis.scale(this.scaleX).orient("bottom").innerTickSize(-t).outerTickSize(1).tickPadding(10).ticks(e/50),this.yAxis.scale(this.scaleY).orient("left").innerTickSize(-e).outerTickSize(1).tickPadding(10).ticks(t/20),this.elXAxis.attr("transform","translate(".concat(n,", ").concat(t,")")).call(this.xAxis),this.elYAxis.attr("transform","translate(".concat(n,", 0)")).call(this.yAxis)}},{key:"requestScaleUpdate",value:function(){void 0===this.lastReset||void 0===this.lastScaleUpdate||100<(new Date).getTime()-this.lastReset&&100<(new Date).getTime()-this.lastScaleUpdate?(this.updateScales(),this.lastScaleUpdate=(new Date).getTime(),this.scaleUpdatePending=!1):this.scaleUpdatePending||(setTimeout(this.requestScaleUpdate.bind(this),100),this.scaleUpdatePending=!0)}},{key:"render",value:function(){var e,t=this.renderArea[0].clientWidth,n=this.renderArea[0].clientHeight,i=this.renderer,r=this.pRenderer,a=this.camera,o=this.profileScene,s=this.scene,l=this.scaleX,u=this.pickSphere,c=(i.setSize(t,n),i.setClearColor(0,0),i.clear(!0,!0,!1),q(this.pointclouds.keys()));try{for(c.s();!(e=c.n()).done;){var d=e.value,h=d.material,p=this.pointclouds.get(d).material;Hm(h,p),p.size=2}}catch(e){c.e(e)}finally{c.f()}r.render(o,a,null);t=Math.abs(l.invert(0)-l.invert(5));0===t?u.visible=!1:(u.scale.set(t,t,t),u.visible=!0),i.render(s,a),this.requestScaleUpdate()}}])}(),Wm=function(){return A(function e(t){function n(e){var t=l.profile,n=t.points,i=n[0],r=n[n.length-1],i=i.clone().add(r).multiplyScalar(.5),r=(new Me).makeTranslation(-i.x,-i.y,-i.z),e=(new Me).makeRotationZ(e),a=(new Me).makeTranslation(i.x,i.y,i.z).multiply(e).multiply(r),o=n.map(function(e){return e.clone().applyMatrix4(a)});l.profileWindow.autoFitEnabled=!1;for(var s=0;s<n.length;s++)t.setPosition(s,o[s])}var l=this;ue(this,e),this.viewer=t,this.profileWindow=t.profileWindow,this.profile=null,this.numPoints=0,this.threshold=6e4,this.rotateAmount=10,this.scheduledRecomputeTime=null,this.enabled=!0,this.requests=[],this._recompute=function(){l.recompute()},this.viewer.addEventListener("scene_changed",function(e){e.oldScene.removeEventListener("pointcloud_added",l._recompute),e.scene.addEventListener("pointcloud_added",l._recompute)}),this.viewer.scene.addEventListener("pointcloud_added",this._recompute),$("#potree_profile_rotate_amount").val(parseInt(this.rotateAmount)),$("#potree_profile_rotate_amount").on("input",function(e){var t=$("#potree_profile_rotate_amount").val();isNaN(t)?$("#potree_profile_rotate_amount").css("background-color","#ff9999"):(t=parseFloat(t),l.rotateAmount=t,$("#potree_profile_rotate_amount").css("background-color",""))});$("#potree_profile_rotate_cw").click(function(){var e=Be.degToRad(l.rotateAmount);n(-e)}),$("#potree_profile_rotate_ccw").click(function(){var e=Be.degToRad(l.rotateAmount);n(e)}),$("#potree_profile_move_forward").click(function(){var e=l.profile,t=e.points,n=t[0],n=t[t.length-1].clone().sub(n).normalize(),i=new Oe(0,0,1).cross(n).clone().multiplyScalar(e.width/2);l.profileWindow.autoFitEnabled=!1;for(var r=0;r<t.length;r++)e.setPosition(r,t[r].clone().add(i))}),$("#potree_profile_move_backward").click(function(){var e=l.profile,t=e.points,n=t[0],n=t[t.length-1].clone().sub(n).normalize(),i=new Oe(0,0,1).cross(n).clone().multiplyScalar(-e.width/2);l.profileWindow.autoFitEnabled=!1;for(var r=0;r<t.length;r++)e.setPosition(r,t[r].clone().add(i))})},[{key:"setProfile",value:function(e){null!==this.profile&&this.profile!==e&&(this.profile.removeEventListener("marker_moved",this._recompute),this.profile.removeEventListener("marker_added",this._recompute),this.profile.removeEventListener("marker_removed",this._recompute),this.profile.removeEventListener("width_changed",this._recompute)),this.profile=e,this.profile.addEventListener("marker_moved",this._recompute),this.profile.addEventListener("marker_added",this._recompute),this.profile.addEventListener("marker_removed",this._recompute),this.profile.addEventListener("width_changed",this._recompute),this.recompute()}},{key:"reset",value:function(){if(this.profileWindow.reset(),this.numPoints=0,this.profile){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.cancel()}catch(e){t.e(e)}finally{t.f()}}}},{key:"progressHandler",value:function(e,t){var n,i=q(t.segments);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.profileWindow.addPoints(e,r.points),this.numPoints+=r.points.numPoints}}catch(e){i.e(e)}finally{i.f()}}},{key:"cancel",value:function(){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.cancel()}catch(e){t.e(e)}finally{t.f()}this.requests=[]}},{key:"finishLevelThenCancel",value:function(){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.finishLevelThenCancel()}catch(e){t.e(e)}finally{t.f()}this.requests=[]}},{key:"recompute",value:function(){var n=this;if(this.profile&&!(null!==this.scheduledRecomputeTime&&this.scheduledRecomputeTime>(new Date).getTime())){this.scheduledRecomputeTime=(new Date).getTime()+100,this.scheduledRecomputeTime=null,this.reset();var i,t=q(this.viewer.scene.pointclouds.filter(function(e){return e.visible}));try{for(t.s();!(i=t.n()).done;)!function(){var t=i.value,e=t.getPointsInProfile(n.profile,null,{onProgress:function(e){n.enabled&&(n.progressHandler(t,e.points),n.numPoints>n.threshold)&&n.finishLevelThenCancel()},onFinish:function(e){n.enabled},onCancel:function(){n.enabled}});n.requests.push(e)}()}catch(e){t.e(e)}finally{t.f()}}}}])}(),Jm=function(){function a(e){ue(this,a),(t=le(this,a)).viewer=e,t.renderer=e.renderer,t.addEventListener("start_inserting_volume",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.scene=new Fs,t.scene.name="scene_volume",t.viewer.inputHandler.registerInteractiveScene(t.scene),t.onRemove=function(e){t.scene.remove(e.volume)},t.onAdd=function(e){t.scene.add(e.volume)};var t,n,i=q(e.scene.volumes);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.onAdd({volume:r})}}catch(e){i.e(e)}finally{i.f()}return t.viewer.inputHandler.addEventListener("delete",function(e){e.selection.filter(function(e){return e instanceof _f}).forEach(function(e){return t.viewer.scene.removeVolume(e)})}),e.addEventListener("update",t.update.bind(t)),e.addEventListener("render.pass.scene",function(e){return t.render(e)}),e.addEventListener("scene_changed",t.onSceneChange.bind(t)),e.scene.addEventListener("volume_added",t.onAdd),e.scene.addEventListener("volume_removed",t.onRemove),t}return v(a,Qn),A(a,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListeners("volume_added",this.onAdd),e.oldScene.removeEventListeners("volume_removed",this.onRemove)),e.scene.addEventListener("volume_added",this.onAdd),e.scene.addEventListener("volume_removed",this.onRemove)}},{key:"startInsertion",value:function(){var n=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=new(e.type||Pf),t=(i.clip=e.clip||!1,i.name=e.name||"Volume",this.dispatchEvent({type:"start_inserting_volume",volume:i}),this.viewer.scene.addVolume(i),this.scene.add(i),{callback:null}),r=function(e){var t=n.viewer.scene.getActiveCamera(),e=ne.getMousePointCloudIntersection(e.drag.end,n.viewer.scene.getActiveCamera(),n.viewer,n.viewer.scene.pointclouds,{pickClipped:!1});e&&(i.position.copy(e.location),e=i.getWorldPosition(new Oe).applyMatrix4(t.matrixWorldInverse),t=Math.abs(e.z/5),i.scale.set(t,t,t))},a=function(e){i.removeEventListener("drag",r),i.removeEventListener("drop",a),t.callback()};return t.callback=function(e){i.removeEventListener("drag",r),i.removeEventListener("drop",a),n.viewer.removeEventListener("cancel_insertions",t.callback)},i.addEventListener("drag",r),i.addEventListener("drop",a),this.viewer.addEventListener("cancel_insertions",t.callback),this.viewer.inputHandler.startDragging(i),i}},{key:"update",value:function(){if(this.viewer.scene){var e,t=this.viewer.scene.getActiveCamera(),n=this.viewer.renderer.getSize(new Re),i=n.width,r=n.height,a=q(this.viewer.scene.volumes);try{for(a.s();!(e=a.n()).done;){var o=e.value,s=o.label,l=s.position.distanceTo(t.position),u=70/ne.projectedRadius(1,t,l,i,r);s.scale.set(u,u,u);var c=(c=o.getVolume())/Math.pow(this.viewer.lengthUnit.unitspermeter,3)*Math.pow(this.viewer.lengthUnitDisplay.unitspermeter,3),d=ne.addCommas(c.toFixed(3))+" "+this.viewer.lengthUnitDisplay.code+"³";s.setText(d)}}catch(e){a.e(e)}finally{a.f()}}}},{key:"render",value:function(e){var t=this.viewer.renderer,n=t.getRenderTarget();e.renderTarget&&t.setRenderTarget(e.renderTarget),t.render(this.scene,this.viewer.scene.getActiveCamera()),t.setRenderTarget(n)}}])}(),qm=function(){function a(e,t){var n=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],i=(ue(this,a),void 0===t&&(t=16776960),new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7])),e=new Float32Array([e.min.x,e.min.y,e.min.z,e.max.x,e.min.y,e.min.z,e.max.x,e.min.y,e.max.z,e.min.x,e.min.y,e.max.z,e.min.x,e.max.y,e.min.z,e.max.x,e.max.y,e.min.z,e.max.x,e.max.y,e.max.z,e.min.x,e.max.y,e.max.z]),r=new V,i=(r.setIndex(new H(i,1)),r.setAttribute("position",new H(e,3)),new wl({color:t,depthTest:n}));return le(this,a,[r,i])}return v(a,_l),A(a)}(),Ym={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,DELETE:46,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0),Q:"Q".charCodeAt(0),E:"E".charCodeAt(0),R:"R".charCodeAt(0),F:"F".charCodeAt(0)},Xm=function(){function t(){var e;ue(this,t);return(e=le(this,t)).setValues({uniforms:{uDepthMap:{type:"t",value:null},uWeightMap:{type:"t",value:null}},vertexShader:e.getDefines()+bm["normalize.vs"],fragmentShader:e.getDefines()+bm["normalize.fs"]}),e}return v(t,ac),A(t,[{key:"getDefines",value:function(){return""}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+bm["normalize.vs"],t=this.getDefines()+bm["normalize.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.needsUpdate=!0}}])}(),Km=function(){function t(){var e;ue(this,t);return(e=le(this,t)).setValues({uniforms:{screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},edlStrength:{type:"f",value:1},radius:{type:"f",value:1},neighbours:{type:"2fv",value:[]},uEDLMap:{type:"t",value:null},uDepthMap:{type:"t",value:null},uWeightMap:{type:"t",value:null}},vertexShader:e.getDefines()+bm["normalize.vs"],fragmentShader:e.getDefines()+bm["normalize_and_edl.fs"]}),e.neighbourCount=8,e}return v(t,ac),A(t,[{key:"getDefines",value:function(){var e="";return e+="#define NEIGHBOUR_COUNT "+this.neighbourCount+"\n"}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+bm["normalize.vs"],t=this.getDefines()+bm["normalize_and_edl.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.uniforms.neighbours.value=this.neighbours,this.needsUpdate=!0}},{key:"neighbourCount",get:function(){return this._neighbourCount},set:function(e){if(this._neighbourCount!==e){this._neighbourCount=e,this.neighbours=new Float32Array(2*this._neighbourCount);for(var t=0;t<this._neighbourCount;t++)this.neighbours[2*t+0]=Math.cos(2*t*Math.PI/this._neighbourCount),this.neighbours[2*t+1]=Math.sin(2*t*Math.PI/this._neighbourCount);this.updateShaderSource()}}}])}(),Zm=function(){return A(function e(t){ue(this,e),this.viewer=t,this.depthMaterials=new Map,this.attributeMaterials=new Map,this.normalizationMaterial=null,this.rtDepth=null,this.rtAttribute=null,this.gl=t.renderer.getContext(),this.initialized=!1},[{key:"init",value:function(){this.initialized||(this.normalizationMaterial=new Xm,this.normalizationMaterial.depthTest=!0,this.normalizationMaterial.depthWrite=!0,this.normalizationMaterial.transparent=!0,this.normalizationEDLMaterial=new Km,this.normalizationEDLMaterial.depthTest=!0,this.normalizationEDLMaterial.depthWrite=!0,this.normalizationEDLMaterial.transparent=!0,this.rtDepth=new ti(1024,1024,{minFilter:ht,magFilter:ht,format:It,type:Ct,depthTexture:new Gl(void 0,void 0,Et)}),this.rtAttribute=new ti(1024,1024,{minFilter:ht,magFilter:ht,format:It,type:Ct,depthTexture:this.rtDepth.depthTexture}),this.initialized=!0)}},{key:"resize",value:function(e,t){this.rtDepth.setSize(e,t),this.rtAttribute.setSize(e,t)}},{key:"clearTargets",value:function(){var e=this.viewer.renderer,t=e.getRenderTarget();e.setClearColor(0,0),e.setRenderTarget(this.rtDepth),e.clear(!0,!0,!0),e.setRenderTarget(this.rtAttribute),e.clear(!0,!0,!0),e.setRenderTarget(t)}},{key:"clear",value:function(){this.init();var e=this.viewer,t=e.renderer,e=e.background;"skybox"===e||"gradient"===e?t.setClearColor(0,0):"black"===e?t.setClearColor(0,1):"white"===e?t.setClearColor(16777215,1):t.setClearColor(0,0),t.clear(),this.clearTargets()}},{key:"render",value:function(e){this.init();var t,n=this.viewer,e=e.camera||n.scene.getActiveCamera(),i=this.viewer.renderer.getSize(new Re),r=i.width,a=i.height,i=(n.dispatchEvent({type:"render.pass.begin",viewer:n}),this.resize(r,a),n.scene.pointclouds.filter(function(e){return e.visible})),o=new Map,s=q(i);try{for(s.s();!(t=s.n()).done;){var l,u,c=t.value;o.set(c,c.material),this.attributeMaterials.has(c)||(l=new km,this.attributeMaterials.set(c,l)),this.depthMaterials.has(c)||((u=new km).setDefine("depth_pass","#define hq_depth_pass"),u.setDefine("use_edl","#define use_edl"),this.depthMaterials.set(c,u))}}catch(e){s.e(e)}finally{s.f()}var d,h=q(i);try{for(h.s();!(d=h.n()).done;){var p=d.value,f=p.pcoGeometry.boundingBox.getSize(new Oe).x,m=o.get(p),v=this.depthMaterials.get(p);v.size=m.size,v.minSize=m.minSize,v.maxSize=m.maxSize,v.pointSizeType=m.pointSizeType,v.visibleNodesTexture=m.visibleNodesTexture,v.weighted=!1,v.screenWidth=r,v.shape=Pm.CIRCLE,v.screenHeight=a,v.uniforms.visibleNodes.value=m.visibleNodesTexture,v.uniforms.octreeSize.value=f,v.spacing=p.pcoGeometry.spacing,v.classification=m.classification,v.uniforms.classificationLUT.value.image.data=m.uniforms.classificationLUT.value.image.data,v.classificationTexture.needsUpdate=!0,v.uniforms.uFilterReturnNumberRange.value=m.uniforms.uFilterReturnNumberRange.value,v.uniforms.uFilterNumberOfReturnsRange.value=m.uniforms.uFilterNumberOfReturnsRange.value,v.uniforms.uFilterGPSTimeClipRange.value=m.uniforms.uFilterGPSTimeClipRange.value,v.uniforms.uFilterPointSourceIDClipRange.value=m.uniforms.uFilterPointSourceIDClipRange.value,v.clipTask=m.clipTask,v.clipMethod=m.clipMethod,v.setClipBoxes(m.clipBoxes),v.setClipPolygons(m.clipPolygons),p.material=v}}catch(e){h.e(e)}finally{h.f()}n.pRenderer.render(n.scene.scenePointCloud,e,this.rtDepth,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof Df})});var g,A=q(i);try{for(A.s();!(g=A.n()).done;){var y=g.value,w=y.pcoGeometry.boundingBox.getSize(new Oe).x,b=o.get(y),x=this.attributeMaterials.get(y);x.size=b.size,x.minSize=b.minSize,x.maxSize=b.maxSize,x.pointSizeType=b.pointSizeType,x.activeAttributeName=b.activeAttributeName,x.visibleNodesTexture=b.visibleNodesTexture,x.weighted=!0,x.screenWidth=r,x.screenHeight=a,x.shape=Pm.CIRCLE,x.uniforms.visibleNodes.value=b.visibleNodesTexture,x.uniforms.octreeSize.value=w,x.spacing=y.pcoGeometry.spacing,x.classification=b.classification,x.uniforms.classificationLUT.value.image.data=b.uniforms.classificationLUT.value.image.data,x.classificationTexture.needsUpdate=!0,x.uniforms.uFilterReturnNumberRange.value=b.uniforms.uFilterReturnNumberRange.value,x.uniforms.uFilterNumberOfReturnsRange.value=b.uniforms.uFilterNumberOfReturnsRange.value,x.uniforms.uFilterGPSTimeClipRange.value=b.uniforms.uFilterGPSTimeClipRange.value,x.uniforms.uFilterPointSourceIDClipRange.value=b.uniforms.uFilterPointSourceIDClipRange.value,x.elevationGradientRepeat=b.elevationGradientRepeat,x.elevationRange=b.elevationRange,x.gradient=b.gradient,x.matcap=b.matcap,x.intensityRange=b.intensityRange,x.intensityGamma=b.intensityGamma,x.intensityContrast=b.intensityContrast,x.intensityBrightness=b.intensityBrightness,x.rgbGamma=b.rgbGamma,x.rgbContrast=b.rgbContrast,x.rgbBrightness=b.rgbBrightness,x.weightRGB=b.weightRGB,x.weightIntensity=b.weightIntensity,x.weightElevation=b.weightElevation,x.weightRGB=b.weightRGB,x.weightClassification=b.weightClassification,x.weightReturnNumber=b.weightReturnNumber,x.weightSourceID=b.weightSourceID,x.color=b.color,x.clipTask=b.clipTask,x.clipMethod=b.clipMethod,x.setClipBoxes(b.clipBoxes),x.setClipPolygons(b.clipPolygons),y.material=x}}catch(e){A.e(e)}finally{A.f()}var E,i=this.gl,C=(n.renderer.setRenderTarget(null),n.pRenderer.render(n.scene.scenePointCloud,e,this.rtAttribute,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof Df}),blendFunc:[i.SRC_ALPHA,i.ONE],depthWrite:!1}),q(o));try{for(C.s();!(E=C.n()).done;){var B=U(E.value,2),M=B[0],S=B[1];M.material=S}}catch(e){C.e(e)}finally{C.f()}n.renderer.setRenderTarget(null),"skybox"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.skybox.camera.rotation.copy(n.scene.cameraP.rotation),n.skybox.camera.fov=n.scene.cameraP.fov,n.skybox.camera.aspect=n.scene.cameraP.aspect,n.skybox.parent.rotation.x=0,n.skybox.parent.updateMatrixWorld(),n.skybox.camera.updateProjectionMatrix(),n.renderer.render(n.skybox.scene,n.skybox.camera)):"gradient"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.renderer.render(n.scene.sceneBG,n.scene.cameraBG)):("black"===n.background?n.renderer.setClearColor(0,1):"white"===n.background?n.renderer.setClearColor(16777215,1):n.renderer.setClearColor(0,0),n.renderer.clear());i=this.useEDL?this.normalizationEDLMaterial:this.normalizationMaterial;this.useEDL&&(i.uniforms.edlStrength.value=n.edlStrength,i.uniforms.radius.value=n.edlRadius,i.uniforms.screenWidth.value=r,i.uniforms.screenHeight.value=a,i.uniforms.uEDLMap.value=this.rtDepth.texture),i.uniforms.uWeightMap.value=this.rtAttribute.texture,i.uniforms.uDepthMap.value=this.rtAttribute.depthTexture,ne.screenPass.render(n.renderer,i),n.renderer.render(n.scene.scene,e),n.dispatchEvent({type:"render.pass.scene",viewer:n}),n.renderer.clearDepth(),n.transformationTool.update(),n.dispatchEvent({type:"render.pass.perspective_overlay",viewer:n}),n.renderer.render(n.controls.sceneControls,e),n.renderer.render(n.clippingTool.sceneVolume,e),n.renderer.render(n.transformationTool.scene,e),n.renderer.setViewport(r-n.navigationCube.width,a-n.navigationCube.width,n.navigationCube.width,n.navigationCube.width),n.renderer.render(n.navigationCube,n.navigationCube.camera),n.renderer.setViewport(0,0,r,a),n.dispatchEvent({type:"render.pass.end",viewer:n})}}])}(),$m=A(function e(t){ue(this,e),this.previous=null,this.next=null,this.node=t}),sp=function(){return A(function e(){ue(this,e),this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0},[{key:"size",value:function(){return this.elements}},{key:"contains",value:function(e){return null==this.items[e.id]}},{key:"touch",value:function(e){var t;e.loaded&&(null==this.items[e.id]?((t=new $m(e)).previous=this.last,null!==(this.last=t).previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):null===(t=this.items[e.id]).previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,(this.last=t).previous.next=t):null!==t.next&&(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,(this.last=t).previous.next=t))}},{key:"remove",value:function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)}},{key:"getLRUItem",value:function(){return null===this.first?null:this.first.node}},{key:"toString",value:function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e=(e+="}")+("("+this.size()+")")}},{key:"freeMemory",value:function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first.node;this.disposeDescendants(e)}}},{key:"disposeDescendants",value:function(e){var t=[];for(t.push(e);0<t.length;){var n,i=t.pop();for(n in i.dispose(),this.remove(i),i.children)i.children.hasOwnProperty(n)&&i.children[n].loaded&&t.push(i.children[n])}}}])}(),ev=function(){function r(){function e(e,t){return void 0!==e?e:t}var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=(ue(this,r),t=le(this,r,[n]),e(n.maxSize,200)),n=e(n.orthoMaxSize,3),i=(t._gradient=wm.RAINBOW,t.gradientTexture=r.generateGradientTexture(t._gradient),delete t.uniforms.screenWidth,delete t.uniforms.screenHeight,delete t.uniforms.clipBoxes,delete t.uniforms.clipPolygons,delete t.uniforms.clipPolygonVCount,delete t.uniforms.clipPolygonVP,delete t.uniforms.clipBoxCount,Object.assign(t.uniforms,{resolution:{type:"v2",value:new Re},maxSize:{type:"f",value:i},orthoMaxSize:{type:"f",value:n},gradient:{type:"t",value:t.gradientTexture},clipBoxes_in:{type:"Matrix4fv",value:[]},clipBoxes_out:{type:"Matrix4fv",value:[]},clipBoxBig_in:{type:"Matrix4fv",value:[]},boxes_highlight:{type:"Matrix4fv",value:[]},progress:{type:"f",value:0},easeInOutRatio:{type:"f",value:.3},pano0Map:{type:"t",value:null},pano0Position:{type:"v3",value:new Oe},pano0Matrix:{type:"m4",value:new Me},pano1Map:{type:"t",value:null},pano1Position:{type:"v3",value:new Oe},pano1Matrix:{type:"m4",value:new Me},prismList:{type:"Matrix3fv",value:null},prismPoints:{type:"vec2fv",value:null},baseHeightAreaMap:{type:"t",value:null},baseHeightBoundZ:{type:"vec2",value:new Re},baseHeightBoundXY:{type:"vec4",value:new ei}}),delete t.clipBoxes,t.clipBoxes_in=[],t.clipBoxes_out=[],t.highlightBoxes=[],t.prisms=[],j.changeShaderToWebgl2(bm["pointcloud_new.vs"],bm["pointcloud_new.fs"],"selfBuild")),n=i.vs,i=i.fs;return bm["pointcloud_new.vs"]=n,bm["pointcloud_new.fs"]=i,t.updateShaderSource(),t}return v(r,km),A(r,[{key:"updateShaderSource",value:function(){var e=bm["pointcloud_new.vs"],t=bm["pointcloud_new.fs"],n=this.getDefines(),i=e.indexOf("#version "),r=t.indexOf("#version "),e=0<=i?e.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(e),t=0<=r?t.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(t);this.vertexShader=e,this.fragmentShader=t,1!==this.opacity||this.useFilterByNormal?(this.opacity<1||this.useFilterByNormal)&&!this.useEDL&&(this.blending=ye,this.transparent=!0,this.depthTest=!1,this.depthWrite=!0,this.depthFunc=qe):(this.blending=ge,this.transparent=!1,this.depthTest=!0,this.depthWrite=!0,this.depthFunc=Xe),this.weighted&&(this.blending=ye,this.transparent=!0,this.depthTest=!0,this.depthWrite=!1),this.shaderNeedsUpdate=!0}},{key:"getDefines",value:function(){var e,t,n=[],i=(this.pointSizeType===_m.FIXED?n.push("#define fixed_point_size"):this.pointSizeType===_m.ATTENUATED?n.push("#define attenuated_point_size"):this.pointSizeType===_m.ADAPTIVE&&n.push("#define adaptive_point_size"),sm.EXT_DEPTH.isSupported(viewer.renderer.getContext())||this.shape!==Pm.PARABOLOID||(this.shape=Pm.SQUARE),this.shape===Pm.SQUARE?n.push("#define square_point_shape"):this.shape===Pm.CIRCLE?n.push("#define circle_point_shape"):this.shape===Pm.PARABOLOID&&n.push("#define paraboloid_point_shape"),(this._useEDL||this.fakeEDL)&&n.push("#define use_edl"),this.activeAttributeName&&(e=this.activeAttributeName.replace(/[^a-zA-Z0-9]/g,"_"),n.push("#define color_type_".concat(e))),this._treeType===Dm.OCTREE?n.push("#define tree_type_octree"):this._treeType===Dm.KDTREE&&n.push("#define tree_type_kdtree"),this.weighted&&n.push("#define weighted_splats"),q(this.defines));try{for(i.s();!(t=i.n()).done;){var r=U(t.value,2),a=(r[0],r[1]);n.push(a)}}catch(e){i.e(e)}finally{i.f()}return n.join("\n")}},{key:"pointSizeType",get:function(){return this._pointSizeType},set:function(e){k(r,"pointSizeType",e="string"==typeof e?_m[e]:e,this,1,1)}},{key:"color",get:function(){return this.uniforms.uColor.value},set:function(e){var t,n;e!=this.color_&&("string"==typeof(t=e)&&(n=Potree.config.colors[e])&&(t=(new Se).fromArray(n).multiplyScalar(1/255)),this.uniforms.uColor.value.set(t),this.dispatchEvent({type:"color_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}),this.color_=e)}},{key:"setProjectedPanos",value:function(e,t,n,i){this.usePanoMap=!0,null!=n&&(this.uniforms.progress.value=n),this.uniforms.pano0Map.value=e.getSkyboxTexture(),this.uniforms.pano0Position.value.copy(e.position),this.uniforms.pano0Matrix.value.copy(e.panoMatrix),this.uniforms.easeInOutRatio.value=i||0,this.uniforms.pano1Map.value=t.getSkyboxTexture(),this.uniforms.pano1Position.value.copy(t.position),this.uniforms.pano1Matrix.value.copy(t.panoMatrix)}},{key:"stopProjectedPanos",value:function(){this.usePanoMap=!1}},{key:"setClipBoxes",value:function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:[];if(t&&n){this.uniforms.clipBoxBig_in.value=e&&e.inverse,this.uniforms.clipBoxes_in.value=new Float32Array(16*t.length),this.uniforms.clipBoxes_out.value=new Float32Array(16*n.length),this.uniforms.boxes_highlight.value=new Float32Array(16*i.length);for(var a=0;a<t.length;a++){var o=t[a];this.uniforms.clipBoxes_in.value.set(o.inverse.elements,16*a)}for(var s=0;s<n.length;s++){var l=n[s];this.uniforms.clipBoxes_out.value.set(l.inverse.elements,16*s)}for(var u=0;u<i.length;u++){var c=i[u];this.uniforms.boxes_highlight.value.set(c.inverse.elements,16*u)}if(r.length)for(var d=r.pointsCount=r.reduce(function(e,t){return e+t.points.length},0),h=(this.uniforms.prismList.value=new Float32Array(9*r.length),this.uniforms.prismPoints.value=new Float32Array(2*d),r.maxPointsCount=0),p=0;p<r.length;p++){var f=r[p].prismBound,m=r[p].horizonZ;this.uniforms.prismList.value.set([f.min.z,m,f.max.z,f.min.x,f.max.x,f.min.y,f.max.y,r[p].points.length],9*p);for(var v=0;v<r[p].points.length;v++)this.uniforms.prismPoints.value.set([r[p].points[v].x,r[p].points[v].y],2*v+h);h+=2*r[p].points.length,r.maxPointsCount=Math.max(r.maxPointsCount,r[p].points.length)}(this.clipBoxes_in.length!==t.length||this.clipBoxes_out.length!=n.length||this.highlightBoxes.length!==i.length||!this.bigClipInBox!=!e||this.prisms.length!=r.length||this.prisms.maxPointsCount!=r.maxPointsCount)&&(this.shaderNeedsUpdate=!0,viewer.dispatchEvent("content_changed")),this.bigClipInBox=e,this.clipBoxes_in=t,this.clipBoxes_out=n,this.highlightBoxes=i,this.prisms=r}}}])}(),tv=new Se(1,1,1);function nv(e){function t(e){for(var t=[],n=e.length,i=0;i<n-1;i++)t.push(e[i],e[i+1]);return t}var n;return e[0]&&e[0]instanceof Array?(n=[],e.forEach(function(e){return n.push.apply(n,Fe(t(e)))}),n):2<e.length&&!e[2].equals(e[1])?t(e):e}var iv,rv,av={createLine:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.mat||(n=Object.assign({lineWidth:t.lineWidth||1,color:t.color||tv},t),t.deshed&&(n.dashSize=t.dashSize||.1,n.gapSize=t.gapSize||.1),new Rp[t.deshed?"LineDashedMaterial":"LineBasicMaterial"](n)),n=new _l(new V,n);return n.renderOrder=t.renderOrder||Potree.config.renderOrders.lines,this.moveLine(n,e),n},moveLine:function(e,t){(!e.uncontinuous||t[0]&&t[0]instanceof Array)&&(t=nv(t));var n=[];t.forEach(function(e){return n.push(e.x,e.y,e.z)}),e.geometry.setAttribute("position",new ee(n,3)),e.geometry.attributes.position.needsUpdate=!0,e.geometry.computeBoundingSphere(),e.material instanceof pc&&(e.computeLineDistances(),e.geometry.verticesNeedUpdate=!0)},createFatLineMat:function(e){var t=!!sm.EXT_DEPTH.isSupported(),e=$.extend({},{lineWidth:5,color:16777215,transparent:!0,depthWrite:!1,depthTest:!1,dashSize:.1,gapSize:.1},e,{dashed:(!e.dashWithDepth||t)&&!!e.dashed,dashWithDepth:!!e.dashWithDepth,useDepth:!!e.useDepth,supportExtDepth:t});return new Ff(e)},createFatLine:function(e,t){var n=new Kf,i=(n.setColors(t.color||[1,1,1]),t.mat||this.createFatLineMat(t)),n=new Zf(n,i);return n.uncontinuous=t.uncontinuous,n.scale.set(1,1,1),n.renderOrder=Potree.config.renderOrders.lines,this.moveFatLine(n,e),n},moveFatLine:function(e,t){var n=e.geometry,i=[];(t=!e.uncontinuous||t[0]&&t[0]instanceof Array?nv(t):t).forEach(function(e){i.push.apply(i,Fe(e.toArray()))}),(n=n||(e.geometry=new Kf)).attributes.instanceEnd&&n.attributes.instanceEnd.data.array.length!=i.length&&(n.dispose(),n=new Kf,e.geometry=n),n.setPositions(i),null!=e.material.defines.USE_DASH&&(e.geometry.computeBoundingSphere(),e.computeLineDistances())},updateLine:function(e,t){e instanceof Zf?av.moveFatLine(e,t):av.moveLine(e,t)},createBoldLine:function(e,t){function n(){i.lastVector=r;var e=(t=new Oe(0,-1,0)).clone().cross(r).normalize(),t=t.angleTo(r);i.quaternion.setFromAxisAngle(e,t)}var i=(t=t||{})&&t.cylinder,r=e[1].clone().sub(e[0]);if(t&&"init"==t.type){if((i=new Q).material=t.mat,0==r.length())return i;n()}if(0!=r.length()){if("update"!=t.type){var a=e[0].clone().add(e[1]).multiplyScalar(.5);if(i.position.copy(a),(!i.lastVector||"moveAndRotate"==t.type||i.lastVector&&0<r.angleTo(i.lastVector))&&n(),config.isEdit&&!objects.mainDesign.editing)return i}var a=e[0].distanceTo(e[1]),o=t&&t.standPos||objects.player.position,s=config.isMobile?20:40,l=e[0].distanceTo(o),u=e[1].distanceTo(o),c=te.getFootPoint(o,e[0],e[1]);c=t.constantBold||"panorama"!=objects.player.mode?[new Re(.1,a/2),new Re(.1,-a/2)]:0<c.clone().sub(e[0]).dot(c.clone().sub(e[1]))?[new Re(l/s,a/2),new Re(u/s,-a/2)]:(t=c.distanceTo(o),o=c.distanceTo(e[0]),[new Re(l/s,a/2),new Re(t/s,a/2-o),new Re(u/s,-a/2)]),i.geometry&&i.geometry.dispose(),i.geometry=new ku(c,4),i.renderOrder=2}return i},updateBoldLine:function(e,t,n,i,r){this.createBoldLine(t,{type:n,cylinder:e,standPos:i,constantBold:r})}},ov={getShape:function(e,t){!e[0]||e[0]instanceof Array||(e=[e]);var a=[];return t&&t.forEach(function(e){var t=new ud;t.moveTo(e[0].x,e[0].y);for(var n=1,i=e.length;n<i;n++)t.lineTo(e[n].x,e[n].y);a.push(t)}),e.map(function(e){var t,n=new cd;n.moveTo(e[0].x,e[0].y);for(var i=1,r=e.length;i<r;i++)n.lineTo(e[i].x,e[i].y);return(t=n.holes).push.apply(t,a),n.dontClose=e.dontClose,n})},getShapeGeo:function(e,t){return new Hu(this.getShape(e,t))},getExtrudeGeo:function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{openEnded:!1,shapeDontClose:!1},e=this.getShape(e,t);if(r.extrudePath){var n=r.extrudePath.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0),a=(2==r.extrudePath.length&&(r.tension=0,r.steps=1),[]),o=r.dontSmooth?0:.2;if(r.extrudePath.forEach(function(e,t){if(0==t||t==r.extrudePath.length-1)return a.push(e);var n=a[a.length-1],i=n.distanceTo(e);i<=o?console.log("第".concat(t,"个点(").concat(e.toArray(),")因为和上一个数据(").concat(n.toArray(),")太接近(dis:").concat(i,")所以删除")):t==r.extrudePath.length-2&&(n=r.extrudePath[r.extrudePath.length-1],i<=o)?console.log("第".concat(t,"个点(").concat(e.toArray(),")因为和下一个数据(").concat(n.toArray(),")太接近(dis:").concat(i,")所以删除")):a.push(e)}),r.extrudePath=a,r.dontSmooth){for(var i=new ld,s=0;s<r.extrudePath.length-1;s++){var l=new id(r.extrudePath[s],r.extrudePath[s+1]);i.add(l)}r.extrudePath=i}else r.extrudePath=new Xc(r.extrudePath,r.closed,"catmullrom",r.tension)}t=$.extend(r,{steps:null!=r.steps?r.steps:r.extrudePath?Math.round(n/(r.spaceDis||.3)):1,bevelEnabled:!1});return new Tu(e,t)},getUnPosPlaneGeo:(jh=new Uint16Array([0,1,2,0,2,3]),nu=new Float32Array([0,0,1,0,1,1,0,1]),(iv=new V).setIndex(new H(jh,1)),iv.setAttribute("uv",new H(nu,2)),function(){return iv}),getPlaneGeo:function(e,t,n,i){var r=this.getUnPosPlaneGeo().clone(),e=[e.x,e.y,e.z,t.x,t.y,t.z,n.x,n.y,n.z,i.x,i.y,i.z];return r.setAttribute("position",new ee(e,3)),r.computeVertexNormals(),r.computeBoundingSphere(),r},drawPlane:function(e,t,n,i,r){return new Q(this.getPlaneGeo(e,t,n,i),r)},movePlane:function(e,t,n,i,r){t=new Float32Array([t.x,t.y,t.z,n.x,n.y,n.z,i.x,i.y,i.z,r.x,r.y,r.z]);e.geometry.addAttribute("position",new H(t,3)),e.geometry.computeBoundingSphere()},createGeometry:function(e,t,n,i){var r,a,o,s=new V,l=[];return e.forEach(function(e){return l.push(e.x,e.y,e.z)}),s.setAttribute("position",new ee(l,3)),t&&(r=[],t.forEach(function(e){return r.push.apply(r,Fe(e))}),s.setIndex(r)),n&&(a=[],n.forEach(function(e){return a.push(e.x,e.y)}),s.setAttribute("uv",new ee(a,2))),i&&(o=[],i.forEach(function(e){return o.push(e.x,e.y,e.z)}),s.setAttribute("normal",new ee(o,3))),s},updateGeometry:function(e,t,n,i,r){var a,o,s,l=[];return t.forEach(function(e){return l.push(e.x,e.y,e.z)}),e.setAttribute("position",new ee(l,3)),e.attributes.position.needsUpdate=!0,n&&(a=[],n.forEach(function(e){return a.push.apply(a,Fe(e))}),e.setIndex(a)),i&&(o=[],i.forEach(function(e){return o.push(e.x,e.y)}),e.setAttribute("uv",new ee(o,2))),r&&(s=[],r.forEach(function(e){return s.push(e.x,e.y,e.z)}),e.setAttribute("normal",new ee(s,3))),e.computeBoundingSphere(),e}},sv=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,r),viewer.renderer.getSize(new Re)),n=t.width,t=t.height,n={resolution:{type:"v2",value:new Re(n,t)},viewportOffset:{type:"v2",value:new Re(0,0)},nearPlane:{type:"f",value:.1},farPlane:{type:"f",value:1e4},depthTexture:{type:"t",value:null},opacity:{type:"f",value:1},map:{type:"t",value:e.map},baseColor:{type:"v3",value:e.color?new Se(e.color):new Se("#ffffff")},backColor:{type:"v3",value:e.backColor?new Se(e.backColor):new Se("#ddd")},clipDistance:{type:"f",value:e.clipDistance||4},occlusionDistance:{type:"f",value:e.occlusionDistance||1},maxClipFactor:{type:"f",value:e.maxClipFactor||1},maxOcclusionFactor:{type:"f",value:e.maxOcclusionFactor||1},mapScale:{type:"f",value:e.mapScale||1}},t=j.changeShaderToWebgl2(bm["depthBasic.vs"],bm["depthBasic.fs"],"ShaderMaterial"),i=le(this,r,[{uniforms:n,vertexShader:t.vs,fragmentShader:t.fs,depthWrite:!1,depthTest:!1,transparent:null==e.transparent||e.transparent,side:e.side||0}]);return i.events={setSize:function(e){var t;i.realUseDepth&&e.viewport&&(t=(e=e.viewport).offset||new Re,i.uniforms.resolution.value.copy(e.resolution2),i.uniforms.viewportOffset.value.copy(t))},render:function(e){i.updateDepthParams(e)}},i.autoDepthTest=e.autoDepthTest,null!=e.opacity&&(i.opacity=e.opacity),i.useDepth=e.useDepth,i.map=e.map,i}return v(r,ga),A(r,[{key:"useDepth",get:function(){return this.useDepth_},set:function(e){e=e&&sm.EXT_DEPTH.isSupported(),this.useDepth_!=e&&(this.setRealDepth(e),(this.useDepth_=e)?(viewer.addEventListener("render.begin",this.events.render),viewer.addEventListener("resize",this.events.setSize),this.updateDepthParams()):(viewer.removeEventListener("render.begin",this.events.render),viewer.removeEventListener("resize",this.events.setSize)))}},{key:"setRealDepth",value:function(e,t){this.realUseDepth!=e&&(e?this.defines.useDepth="":delete this.defines.useDepth,this.realUseDepth=e,this.autoDepthTest&&(this.depthWrite=this.depthTest=!e),this.needsUpdate=!0,t=t||viewer.mainViewport,e)&&this.events.setSize({viewport:t})}},{key:"map",get:function(){return this.uniforms.map.value},set:function(e){(this.uniforms.map.value=e)?this.defines.use_map="":delete this.defines.use_map}},{key:"opacity",get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms&&(this.uniforms.opacity.value=e)}},{key:"color",get:function(){return this.uniforms.baseColor.value},set:function(e){this.uniforms&&this.uniforms.baseColor.value.set(e)}},{key:"copy",value:function(e){return I(r,"copy",this,3)([e]),this.useDepth=e.useDepth,this.map=e.map,this}},{key:"updateDepthParams",value:function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).viewport||viewer.mainViewport,t=e.camera,n=this.useDepth&&t.isPerspectiveCamera&&(Potree.settings.pointEnableRT||"showPanos"==Potree.settings.displayMode||viewer.useEDL);this.setRealDepth(n,e),n&&(this.uniforms.depthTexture.value=viewer.getPRenderer().getRtEDL(e).depthTexture,this.uniforms.nearPlane.value=t.near,this.uniforms.farPlane.value=t.far)}}])}(),lv=new _a(1,1),uv=function(){function r(){function e(e){n.matrixMap.clear()}function t(e){n.applyMatrix(e)}var n,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,r),(n=le(this,r,[lv,i.mat||new sv(i)])).root=i.root||n,n.renderOrder=null!=i.renderOrder?i.renderOrder:4,n.pickOrder=i.pickOrder||0,n.sizeInfo=i.sizeInfo,n.dontFixOrient=i.dontFixOrient,n.options=i,n.position.y=i.disToLine||0,n.matrixAutoUpdate=!1,n.matrixMap=new Map,n.root!=n&&(n.matrixMapRoot=new Map,n.root.matrixAutoUpdate=!1),n.visiMap=new Map,n.name=i.name||"sprite",n.useViewport=null,n.viewports=i.viewports,n.visible_=!0,viewer.mapViewer&&viewer.mapViewer.addEventListener("camera_changed",e),viewer.addEventListener("camera_changed",e);return viewer.addEventListener("raycaster",t),viewer.addEventListener("render.begin",t),viewer.addEventListener("render.begin2",t),viewer.addEventListener("cameraSetLayers",t),n.addEventListener("dispose",function(){viewer.mapViewer&&viewer.mapViewer.removeEventListener("camera_changed",e),viewer.removeEventListener("camera_changed",e),viewer.removeEventListener("raycaster",t),viewer.removeEventListener("render.begin",t),viewer.removeEventListener("render.begin2",t)}),n}return v(r,Q),A(r,[{key:"visible",get:function(){return this.visible_},set:function(e){var t=this.visible_;(this.visible_=e)&&!t&&this.matrixMap&&this.matrixMap.clear()}},{key:"realVisible",value:function(e,t){var n=this;if(!t||t.some(function(e){var t;return e.traverse(function(e){if(e==n)return{stopContinue:t=!0}}),t})){if(!e.camera.layers.test(this.layers))return!1;if(!this.visible&&this.unvisibleReasons&&this.unvisibleReasons.some(function(e){return"unableCompute"!=e.reason}))return!1;for(var i=!0,r=this.parent,a=this;r;){if(!1===r.visible){i=!1;break}r=(a=r).parent}return i=!i||a instanceof Fs?i:!1}}},{key:"waitUpdate",value:function(){this.matrixMap.clear()}},{key:"update",value:function(){var t=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!n.viewport)return(e=this.viewports||viewer.viewports)?void e.forEach(function(e){t.update({viewport:e})}):void 0;if(this.root&&this.realVisible(n.viewport,n.interactables)&&(!this.viewports||this.viewports.includes(n.viewport))&&"magnifier"!=n.viewport.name){var e=n.viewport.camera;if(!this.dontFixOrient){if(this.root.lineDir){this.root.updateMatrix(),this.root.updateMatrixWorld(!0);var i,r=this.root.getWorldPosition(new Oe),a=function(e){t.visiMap.set(n.viewport,e),Potree.Utils.updateVisible(t,"unableCompute",!!e)},o=(n.viewer||n).renderer,s=Potree.Utils.getPos2d(r,n.viewport,o.domElement.parentElement,o);if(!s.trueSide)return a(!1);for(var l="",u=1,c=[];"got"!=l&&c.length<10;){if(d=r.clone().add(this.root.lineDir.clone().multiplyScalar(u)),(i=Potree.Utils.getPos2d(d,n.viewport,o.domElement.parentElement,o)).trueSide){var d=i.pos.distanceTo(s.pos);if(te.closeTo(d,0))return void a(!1);if(!(d<10)||c.includes("tooLong")){l="got";break}l="tooShort",u*=100/d}else c.includes("tooLong-reverse")?(l="tooLong",u/=2):(l="tooLong-reverse",u=-u);c.push(l)}if(!i.trueSide)return a(!1);var h=s.pos,p=i.pos;c.filter(function(e){return"tooLong-reverse"==e}).length%2==1&&(p=s.pos,h=i.pos);var f=-(new Re).subVectors(h,p).angle(),m=Math.abs(this.position.y),v=this.root.measure&&this.root.measure.facePlane,g=(new Oe).subVectors(r,e.position),v=v&&v.normal.dot(g)<0;h.x<p.x?(f+=Math.PI,null!=v&&(this.position.y=v?m:-m)):null!=v&&(this.position.y=v?-m:m),a(!0)}g=this.root.parent.getWorldQuaternion(new ii);this.root.quaternion.multiplyQuaternions(g.invert(),e.quaternion),f&&(h=(new ii).setFromAxisAngle(new Oe(0,0,1),f),this.root.quaternion.multiply(h))}p=this.sizeInfo;p&&(this.root.updateMatrix(),this.root.updateMatrixWorld(!0),m=null==p.nearBound&&null!=p.farBound||null!=p.nearBound&&null==p.farBound?(v=e.position.distanceTo(this.root.getWorldPosition(new Oe)),null==p.farBound&&v<p.nearBound?p.scale*v/p.nearBound:null==p.nearBound&&v>p.farBound?p.scale*v/p.farBound:p.scale):te.getScaleForConstantSize($.extend(p,{camera:e,position:this.root.getWorldPosition(new Oe),resolution:n.viewport.resolution})),isNaN(m)||this.root.scale.set(m,m,m)),this.updateMatrix(),this.matrixMap.set(n.viewport,this.matrix.clone()),this.root!=this&&(this.root.updateMatrix(),this.matrixMapRoot.set(n.viewport,this.root.matrix.clone())),this.needsUpdate=!1,this.useViewport=n.viewport}}},{key:"applyMatrix",value:function(e){e=e||{viewport:viewer.mainViewport};var t=this.visiMap.get(e.viewport);Potree.Utils.updateVisible(this,"unableCompute",0!=t),"magnifier"==e.viewport.name||this.viewports&&!this.viewports.includes(e.viewport)||this.root&&this.realVisible(e.viewport,e.interactables)&&((t=this.matrixMap.get(e.viewport))||(this.update(e),t=this.matrixMap.get(e.viewport)))&&e.viewport!=this.useViewport&&(this.useViewport=e.viewport,this.matrix.copy(t),this.root!=this&&(t=this.matrixMapRoot.get(e.viewport),this.root.matrix.copy(t)),e.raycaster)&&this.root.updateMatrixWorld(!0)}},{key:"setUniforms",value:function(e,t){this.material.setUniforms(e,t)}},{key:"dispose",value:function(){this.removeAllListeners(),this.parent&&this.parent.remove(this),this.dispatchEvent("dispose")}}])}(),cv=function(){function i(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(ue(this,i),e=le(this,i),new Zn);return n.minFilter=N,n.magFilter=N,e.sprite=new uv(Object.assign({root:e},t,{map:n})),e.add(e.sprite),e.fontWeight=null==t.fontWeight?"Bold":t.fontWeight,e.rectBorderThick=t.rectBorderThick||0,e.textBorderThick=t.textBorderThick||0,e.fontface="Arial",e.fontsize=t.fontsize||16,e.textBorderColor=t.textBorderColor?j.CloneObject(t.textBorderColor):{r:0,g:0,b:0,a:0},e.backgroundColor=t.backgroundColor?j.CloneObject(t.backgroundColor):{r:255,g:255,b:255,a:1},e.textColor=t.textColor?j.CloneObject(t.textColor):{r:0,g:0,b:0,a:1},e.borderColor=t.borderColor?j.CloneObject(t.borderColor):{r:0,g:0,b:0,a:0},e.borderRadius=t.borderRadius||6,e.margin=t.margin,e.setText(t.text),e.name=t.name,e}return v(i,Z),A(i,[{key:"setText",value:function(e){this.text!==(e=null==e?"":e)&&(e instanceof Array?this.text=e:this.text=[e+""],this.updateTexture(),this.sprite.waitUpdate())}},{key:"setTextColor",value:function(e){this.textColor=j.CloneObject(e),this.updateTexture()}},{key:"setBorderColor",value:function(e){this.borderColor=j.CloneObject(e),this.updateTexture()}},{key:"setBackgroundColor",value:function(e){this.backgroundColor=j.CloneObject(e),this.updateTexture()}},{key:"setPos",value:function(e){this.position.copy(e),this.sprite.waitUpdate()}},{key:"update",value:function(){this.sprite.waitUpdate()}},{key:"setUniforms",value:function(e,t){this.sprite.setUniforms(e,t)}},{key:"updateTexture1",value:function(){var e=document.createElement("canvas"),t=e.getContext("2d"),n=window.devicePixelRatio,i=(t.font=this.fontWeight+" "+this.fontsize*n+"px "+this.fontface,t.measureText(this.text)),r=i.width,a=(this.margin?(new Re).copy(this.margin):new Re(this.fontsize,Math.max(.4*this.fontsize,10))).clone().multiplyScalar(n),r=2*a.x+r+2*this.rectBorderThick*n,o=2*a.y+this.fontsize*n+2*this.rectBorderThick*n,s=(t.canvas.width=r,t.canvas.height=o,t.font=this.fontWeight+" "+this.fontsize*n+"px "+this.fontface,Math.max(1,Math.pow(this.fontsize/16,1.3))*n);t.textBaseline="alphabetic";i=(null==i.actualBoundingBoxAscent?this.fontsize*n*.8:i.actualBoundingBoxAscent)+a.y+s,t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",s=this.rectBorderThick*n,t.lineWidth=s,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",this.roundRect(t,s/2,s/2,r-s,o-s,this.borderRadius*n),this.textBorderThick&&(t.strokeStyle="rgba("+this.textBorderColor.r+","+this.textBorderColor.g+","+this.textBorderColor.b+","+this.textBorderColor.a+")",t.lineWidth=this.textBorderThick*n,t.strokeText(this.text,s+a.x,i)),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,s+a.x,i),t=new Zn(e);t.minFilter=N,t.magFilter=N,t.needsUpdate=!0,this.sprite.material.map&&this.sprite.material.map.dispose(),this.sprite.material.map=t,this.sprite.scale.set(.01*r/n,.01*o/n,1)}},{key:"updateTexture",value:function(){var e,t=document.createElement("canvas"),n=t.getContext("2d"),i=window.devicePixelRatio,r=(n.font=this.fontWeight+" "+this.fontsize*i+"px "+this.fontface,0),a=[],o=q(this.text);try{for(o.s();!(e=o.n()).done;){var s=e.value,l=n.measureText(s),u=l.width;a.push(l),r=Math.max(r,u)}}catch(e){o.e(e)}finally{o.f()}for(var c=(this.margin?(new Re).copy(this.margin):new Re(this.fontsize,Math.max(.4*this.fontsize,10))).clone().multiplyScalar(i),d=.5*(this.fontsize+c.y),h=2*c.x+r+2*(this.rectBorderThick+this.textBorderThick)*i,p=2*c.y+(this.fontsize+2*this.textBorderThick)*i*this.text.length+2*this.rectBorderThick*i+d*(this.text.length-1),f=(n.canvas.width=h,n.canvas.height=p,n.font=this.fontWeight+" "+this.fontsize*i+"px "+this.fontface,4e3<h&&console.error("spriteWidth",h,"spriteHeight",p,this.fontsize,i,this.text,c),Math.max(1,Math.pow(this.fontsize/16,1.3))*i),m=(n.textBaseline="alphabetic",n.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",this.rectBorderThick*i),v=(n.lineWidth=m,n.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",this.roundRect(n,m/2,m/2,h-m,p-m,this.borderRadius*i),n.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",c.y),g=0;g<this.text.length;g++){v+=(null==a[g].actualBoundingBoxAscent?this.fontsize*i*.8:a[g].actualBoundingBoxAscent)+f+this.textBorderThick;var A=(r-a[g].width)/2,A=this.rectBorderThick+c.x+A;this.textBorderThick&&(n.strokeStyle="rgba("+this.textBorderColor.r+","+this.textBorderColor.g+","+this.textBorderColor.b+","+this.textBorderColor.a+")",n.lineWidth=this.textBorderThick*i,n.strokeText(this.text[g],A,v)),this.textshadowColor&&(n.shadowOffsetX=0,n.shadowOffsetY=0,n.shadowColor=this.textshadowColor,n.shadowBlur=12*i),n.fillText(this.text[g],A,v),v+=d}m=new Zn(t);m.minFilter=N,m.magFilter=N,m.needsUpdate=!0,this.sprite.material.map&&this.sprite.material.map.dispose(),this.sprite.material.map=m,this.sprite.scale.set(.01*h/i,.01*p/i,1)}},{key:"roundRect",value:function(e,t,n,i,r,a){e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+i-a,n),e.arcTo(t+i,n,t+i,n+a,a),e.lineTo(t+i,n+r-a),e.arcTo(t+i,n+r,t+i-a,n+r,a),e.lineTo(t+a,n+r),e.arcTo(t,n+r,t,n+r-a,a),e.lineTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.closePath(),e.fill(),e.stroke()}},{key:"dispose",value:function(){this.sprite.material.uniforms.map.value.dispose(),this.parent&&this.parent.remove(this),this.sprite.dispose(),this.removeAllListeners(),this.dispatchEvent("dispose")}}])}(),dv=function(){function t(){var e;return ue(this,t),(e=le(this,t)).getArrow(),e.createArrows(),e}return v(t,Z),A(t,[{key:"getArrow",value:function(){var e=new Z,t=av.createLine([new Oe,new Oe(0,0,2)]),n=new Q(new Jl(.3,.3,4)),i=(n.position.set(0,0,9),new Q(new Xl(0,.6,2,12,1,!1)));i.position.set(0,0,12),i.rotation.set(Math.PI/2,0,0),e.add(n),e.add(t),e.add(i),this.arrowGroup=e}},{key:"createArrows",value:function(){var r=this;new R({color:"#00d7df",side:2,transparent:!0,opacity:.8,depthWrite:!1});["x","y","z"].forEach(function(e){var t=(new Se).set(Potree.config.axis[e].color),n=r.arrowGroup.clone(),i=(n.children.forEach(function(e){e.material=e.material.clone(),e.material.color.copy(t)}),r.createLabel(e,t));i.position.set(0,0,16),n.add(i),"y"==e?n.rotation.x=-Math.PI/2:"x"==e&&(n.rotation.y=Math.PI/2),r.add(n)})}},{key:"createLabel",value:function(e,t){t=new cv({backgroundColor:{r:0,g:0,b:0,a:0},textColor:{r:255*t.r,g:255*t.g,b:255*t.b,a:1},fontsize:120,renderOrder:5,text:e,name:"axis"});return t.scale.set(3,3,3),t}}])}(),hv=function(){function n(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,n),(e=le(this,n)).icon=t.icon||"",e.tooltip=t.tooltip,void 0!==t.onclick&&(e.onclick=t.onclick),e}return v(n,mm),A(n,[{key:"onclick",value:function(e){}},{key:"pairWith",value:function(e){}},{key:"setIcon",value:function(e){var t=this.icon;e!==t&&(this.icon=e,this.dispatchEvent({type:"icon_changed",action:this,icon:e,oldIcon:t}))}}])}(),pv=function(){function o(){var n,e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,o),(n=le(this,o)).scene=null,n._title=t.title||"No Title",n._description=t.description||"",n.offset=new Oe,n.uuid=Be.generateUUID(),t.position?null!=t.position.x?n.position=t.position:n.position=ie(Oe,Fe(t.position)):n.position=null,n.cameraPosition=t.cameraPosition instanceof Array?(new Oe).fromArray(t.cameraPosition):t.cameraPosition,n.cameraTarget=t.cameraTarget instanceof Array?(new Oe).fromArray(t.cameraTarget):t.cameraTarget,n.radius=t.radius,n.view=t.view||null,n.keepOpen=!1,n.descriptionVisible=!1,n.showDescription=!0,n.actions=t.actions||[],n.isHighlighted=!1,n._visible=!0,n.__visible=!0,n._display=!0,n._expand=!1,n.collapseThreshold=[t.collapseThreshold,100].find(function(e){return void 0!==e}),n.children=[],n.parent=null,n.boundingBox=new K,W.resourcePath+"/icons/close.svg"),i=(n.domElement=$('\n\t\t\t<div class="annotation" oncontextmenu="return false;">\n\t\t\t\t<div class="annotation-titlebar">\n\t\t\t\t\t<span class="annotation-label"></span>\n\t\t\t\t</div>\n\t\t\t\t<div class="annotation-description">\n\t\t\t\t\t<span class="annotation-description-close">\n\t\t\t\t\t\t<img src="'.concat(t,'" width="16px">\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class="annotation-description-content">').concat(n._description,"</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t")),n.elTitlebar=n.domElement.find(".annotation-titlebar"),n.elTitle=n.elTitlebar.find(".annotation-label"),n.elTitle.append(n._title),n.elDescription=n.domElement.find(".annotation-description"),n.elDescriptionClose=n.elDescription.find(".annotation-description-close"),n.clickTitle=function(){n.hasView()&&n.moveHere(n.scene.getActiveCamera()),n.dispatchEvent({type:"click",target:n})},n.elTitle.click(n.clickTitle),n.actions=n.actions.map(function(e){return e instanceof hv?e:new hv(e)}),q(n.actions));try{for(i.s();!(e=i.n()).done;)e.value.pairWith(n)}catch(e){i.e(e)}finally{i.f()}var r,a=q(n.actions.filter(function(e){return void 0===e.showIn||e.showIn.includes("scene")}));try{for(a.s();!(r=a.n()).done;)!function(){var e=r.value,t=$('<img src="'.concat(e.icon,'" class="annotation-action-icon">'));n.elTitlebar.append(t),t.click(function(){return e.onclick({annotation:n})})}()}catch(e){a.e(e)}finally{a.f()}return n.elDescriptionClose.hover(function(e){return n.elDescriptionClose.css("opacity","1")},function(e){return n.elDescriptionClose.css("opacity","0.5")}),n.elDescriptionClose.click(function(e){return n.setHighlighted(!1)}),n.domElement.mouseenter(function(e){return n.setHighlighted(!0)}),n.domElement.mouseleave(function(e){return n.setHighlighted(!1)}),n.domElement.on("touchstart",function(e){n.setHighlighted(!n.isHighlighted)}),n.display=!1,n}return v(o,mm),A(o,[{key:"installHandles",value:function(o){var i,r,a,s,l,u,c,d,e,h=this;void 0===this.handles&&(i=$('\n\t\t\t<div style="position: absolute; left: 300; top: 200; pointer-events: none">\n\t\t\t\t<svg width="300" height="600">\n\t\t\t\t\t<line x1="0" y1="0" x2="1200" y2="200" style="stroke: black; stroke-width:2" />\n\t\t\t\t\t<circle cx="50" cy="50" r="4" stroke="black" stroke-width="2" fill="gray" />\n\t\t\t\t\t<circle cx="150" cy="50" r="4" stroke="black" stroke-width="2" fill="gray" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t'),r=i.find("svg")[0],a=i.find("line")[0],s=i.find("circle")[0],l=i.find("circle")[1],u=function(e,t){s.setAttribute("cx","".concat(e.x)),s.setAttribute("cy","".concat(e.y)),l.setAttribute("cx","".concat(t.x)),l.setAttribute("cy","".concat(t.y)),a.setAttribute("x1",e.x),a.setAttribute("y1",e.y),a.setAttribute("x2",t.x),a.setAttribute("y2",t.y);var n=r.getBBox(),n=(r.setAttribute("width","".concat(n.width)),r.setAttribute("height","".concat(n.height)),r.setAttribute("viewBox","".concat(n.x," ").concat(n.y," ").concat(n.width," ").concat(n.height)),e.y-t.y),t=e.x-t.x;0<n&&(e.y=e.y-n),0<t&&(e.x=e.x-t),i.css("left","".concat(e.x,"px")),i.css("top","".concat(e.y,"px"))},$(o.renderArea).append(i),c=this.position.clone(),d=this.offset.clone(),$(this.domElement).draggable({start:function(e,t){c=h.position.clone(),d=h.offset.clone(),$(h.domElement).find(".annotation-titlebar").css("pointer-events","none"),console.log($(h.domElement).find(".annotation-titlebar"))},stop:function(){$(h.domElement).find(".annotation-titlebar").css("pointer-events","")},drag:function(e,t){var n=o.renderer.getSize(new Re).width,i=-(t.originalPosition.left-t.position.left)/n*2,t=(t.originalPosition.top-t.position.top)/n*2,n=o.scene.getActiveCamera(),r=(new Oe).addVectors(c,d).project(n).clone(),i=(r.x+=i,r.y+=t,r.clone()),t=(i.unproject(n),(new Oe).subVectors(i,h.position));h.offset.copy(t)}}),o.addEventListener("update",e=function(){h.position;function e(e){var t=i.getActiveCamera(),n=new Oe,t=(new Me).multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);return(e=new ei(e.x,e.y,e.z,1).applyMatrix4(t)).w=Math.max(e.w,.1),e.divideScalar(e.w),n.copy(e),n.x=r*(n.x+1)/2,n.y=a*(1-(n.y+1)/2),n}var i=o.scene,t=o.renderer.getSize(new Re),r=t.width,a=t.height,t=h.position.clone(),n=(new Oe).addVectors(h.position,h.offset),t=e(t),n=e(n);u(t,n)}),this.handles={domElement:i,setCoordinates:u,updateCallback:e})}},{key:"removeHandles",value:function(e){void 0!==this.handles&&(this.handles.domElement.remove(),e.removeEventListener("update",this.handles.updateCallback),delete this.handles)}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",annotation:this}))}},{key:"display",get:function(){return this._display},set:function(e){this._display!==e&&((this._display=e)?this.domElement.show():this.domElement.hide())}},{key:"expand",get:function(){return this._expand},set:function(e){this._expand!==e&&(e?this.display=!1:(this.display=!0,this.traverseDescendants(function(e){e.display=!1})),this._expand=e)}},{key:"title",get:function(){return this._title},set:function(e){this._title!==e&&(this._title=e,this.elTitle.empty(),this.elTitle.append(this._title),this.dispatchEvent({type:"annotation_changed",annotation:this}))}},{key:"description",get:function(){return this._description},set:function(e){this._description!==e&&(this._description=e,(e=this.elDescription.find(".annotation-description-content")).empty(),e.append(this._description),this.dispatchEvent({type:"annotation_changed",annotation:this}))}},{key:"add",value:function(e){if(!this.children.includes(e)){this.children.push(e),e.parent=this;var t=[];e.traverse(function(e){t.push(e)});for(var n=0,i=t;n<i.length;n++)for(var r=i[n],a=this;null!==a;)a.dispatchEvent({type:"annotation_added",annotation:r}),a=a.parent}}},{key:"level",value:function(){return null===this.parent?0:this.parent.level()+1}},{key:"hasChild",value:function(e){return this.children.includes(e)}},{key:"remove",value:function(t){this.hasChild(t)&&(t.removeAllChildren(),t.dispose(),this.children=this.children.filter(function(e){return e!==t}),t.parent=null)}},{key:"removeAllChildren",value:function(){var t=this;this.children.forEach(function(e){0<e.children.length&&e.removeAllChildren(),t.remove(e)})}},{key:"updateBounds",value:function(){var e,t=new K,n=(this.position&&t.expandByPoint(this.position),q(this.children));try{for(n.s();!(e=n.n()).done;){var i=e.value;i.updateBounds(),t.union(i.boundingBox)}}catch(e){n.e(e)}finally{n.f()}this.boundingBox.copy(t)}},{key:"traverse",value:function(e){var t=e(this);if(void 0===t||!0===t){var n,i=q(this.children);try{for(i.s();!(n=i.n()).done;)n.value.traverse(e)}catch(e){i.e(e)}finally{i.f()}}}},{key:"traverseDescendants",value:function(e){var t,n=q(this.children);try{for(n.s();!(t=n.n()).done;)t.value.traverse(e)}catch(e){n.e(e)}finally{n.f()}}},{key:"flatten",value:function(){var t=[];return this.traverse(function(e){t.push(e)}),t}},{key:"descendants",value:function(){var t=this,n=[];return this.traverse(function(e){e!==t&&n.push(e)}),n}},{key:"setHighlighted",value:function(e){e?(this.domElement.css("opacity","0.8"),this.elTitlebar.css("box-shadow","0 0 5px #fff"),this.domElement.css("z-index","1000"),this._description&&(this.descriptionVisible=!0,this.elDescription.fadeIn(200),this.elDescription.css("position","relative"))):(this.domElement.css("opacity","0.5"),this.elTitlebar.css("box-shadow",""),this.domElement.css("z-index","100"),this.descriptionVisible=!1,this.elDescription.css("display","none")),this.isHighlighted=e}},{key:"hasView",value:function(){var e=null!=this.cameraTarget.x&&null!=this.cameraPosition.x,t=void 0!==this.radius;return e||t}},{key:"moveHere",value:function(e){var t,n,i,r,a,o;this.hasView()&&(t=this.scene.view,n=TWEEN.Easing.Quartic.Out,o=this.cameraTarget||this.position||this.boundingBox.getCenter(new Oe),this.cameraPosition?(a=this.cameraPosition,ne.moveTo(this.scene,a,o)):this.radius&&(a=t.direction,o=o.clone().add(a.multiplyScalar(-this.radius)),i=t.radius,r=this.radius,(a=new TWEEN.Tween(t.position).to(o,500)).easing(n),a.start(),(o=new TWEEN.Tween({x:0}).to({x:1},500).onUpdate(function(){t.radius=this.x*r+(1-this.x)*i})).easing(n),o.start()))}},{key:"dispose",value:function(){this.domElement.parentElement&&this.domElement.parentElement.removeChild(this.domElement)}},{key:"toString",value:function(){return"Annotation: "+this._title}}])}(),fv=function(){function t(){var e;return ue(this,t),(e=le(this,t)).annotations=new pv,e.scene=new Fs,e.sceneBG=new Fs,e.scenePointCloud=new Fs,e.cameraP=new ya(e.fov,1,.1,1e6),e.cameraO=new Ad(-1,1,1,-1,.1,1e6),e.cameraVR=new ya,e.cameraBG=new Aa,e.cameraScreenSpace=new Ad(-1,1,1,-1,.1,10),e.cameraMode=Cm.PERSPECTIVE,e.overrideCamera=null,e.pointclouds=[],e.measurements=[],e.profiles=[],e.volumes=[],e.polygonClipVolumes=[],e.cameraAnimations=[],e.orientedImages=[],e.images360=[],e.geopackages=[],e.fpControls=null,e.orbitControls=null,e.earthControls=null,e.geoControls=null,e.deviceControls=null,e.inputHandler=null,e.view=new ff,e.directionalLight=null,e.initialize(),e}return v(t,mm),A(t,[{key:"estimateHeightAt",value:function(e){var t,n=null,i=1/0,r=q(this.pointclouds);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(void 0!==a.root.geometryNode){for(var o=null,s=1/0,l=e.clone().sub(a.position),u=(l.z=0,new _i(l,new Oe(0,0,1))),c=[a.root];0<c.length;){var d=c.pop(),h=d.getBoundingBox();if(u.intersectBox(h)){var p=d.geometryNode.mean.z+a.position.z+d.geometryNode.boundingBox.min.z;d.geometryNode.spacing<=s&&(o=p,s=d.geometryNode.spacing);for(var f=0,m=Object.keys(d.children);f<m.length;f++){var v=m[f];d.children[v].geometryNode&&c.push(d.children[v])}}}(null===n||s<i)&&(n=o,i=s)}}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"getBoundingBox",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.pointclouds,n=new K,i=(this.scenePointCloud.updateMatrixWorld(!0),this.referenceFrame.updateMatrixWorld(!0),q(t));try{for(i.s();!(e=i.n()).done;){var r=e.value,a=(r.updateMatrixWorld(!0),r.pcoGeometry.tightBoundingBox||r.boundingBox),o=ne.computeTransformedBoundingBox(a,r.matrixWorld);n.union(o)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"addPointCloud",value:function(e){this.pointclouds.push(e),this.scenePointCloud.add(e),this.dispatchEvent({type:"pointcloud_added",pointcloud:e})}},{key:"addVolume",value:function(e){this.volumes.push(e),this.dispatchEvent({type:"volume_added",scene:this,volume:e}),viewer.dispatchEvent("content_changed")}},{key:"addOrientedImages",value:function(e){this.orientedImages.push(e),this.scene.add(e.node),this.dispatchEvent({type:"oriented_images_added",scene:this,images:e})}},{key:"removeOrientedImages",value:function(e){var t=this.orientedImages.indexOf(e);-1<t&&(this.orientedImages.splice(t,1),this.dispatchEvent({type:"oriented_images_removed",scene:this,images:e}))}},{key:"add360Images",value:function(e){this.images360.push(e),this.scene.add(e.node),this.dispatchEvent({type:"360_images_added",scene:this,images:e})}},{key:"remove360Images",value:function(e){var t=this.images360.indexOf(e);-1<t&&(this.images360.splice(t,1),this.dispatchEvent({type:"360_images_removed",scene:this,images:e}))}},{key:"addGeopackage",value:function(e){this.geopackages.push(e),this.scene.add(e.node),this.dispatchEvent({type:"geopackage_added",scene:this,geopackage:e})}},{key:"removeGeopackage",value:function(e){var t=this.geopackages.indexOf(e);-1<t&&(this.geopackages.splice(t,1),this.dispatchEvent({type:"geopackage_removed",scene:this,geopackage:e}))}},{key:"removeVolume",value:function(e){var t=this.volumes.indexOf(e);-1<t&&(this.volumes.splice(t,1),this.dispatchEvent({type:"volume_removed",scene:this,volume:e})),viewer.dispatchEvent("content_changed")}},{key:"addCameraAnimation",value:function(e){this.cameraAnimations.push(e),this.dispatchEvent({type:"camera_animation_added",scene:this,animation:e})}},{key:"removeCameraAnimation",value:function(e){var t=this.cameraAnimations.indexOf(volume);-1<t&&(this.cameraAnimations.splice(t,1),this.dispatchEvent({type:"camera_animation_removed",scene:this,animation:e}))}},{key:"addPolygonClipVolume",value:function(e){this.polygonClipVolumes.push(e),this.dispatchEvent({type:"polygon_clip_volume_added",scene:this,volume:e})}},{key:"removePolygonClipVolume",value:function(e){var t=this.polygonClipVolumes.indexOf(e);-1<t&&(this.polygonClipVolumes.splice(t,1),this.dispatchEvent({type:"polygon_clip_volume_removed",scene:this,volume:e}))}},{key:"addMeasurement",value:function(e){e.lengthUnit=this.lengthUnit,e.lengthUnitDisplay=this.lengthUnitDisplay,this.measurements.push(e),this.dispatchEvent({type:"measurement_added",scene:this,measurement:e}),viewer.dispatchEvent("content_changed")}},{key:"removeMeasurement",value:function(e){var t=this.measurements.indexOf(e);-1<t&&(this.measurements.splice(t,1),this.dispatchEvent({type:"measurement_removed",scene:this,measurement:e}),viewer.dispatchEvent("content_changed"))}},{key:"addProfile",value:function(e){this.profiles.push(e),this.dispatchEvent({type:"profile_added",scene:this,profile:e})}},{key:"removeProfile",value:function(e){var t=this.profiles.indexOf(e);-1<t&&(this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",scene:this,profile:e}))}},{key:"removeAllMeasurements",value:function(){for(;0<this.measurements.length;)this.removeMeasurement(this.measurements[0]);for(;0<this.profiles.length;)this.removeProfile(this.profiles[0]);for(;0<this.volumes.length;)this.removeVolume(this.volumes[0])}},{key:"removeAllClipVolumes",value:function(){var e,t=q(this.volumes.filter(function(e){return!0===e.clip}));try{for(t.s();!(e=t.n()).done;){var n=e.value;this.removeVolume(n)}}catch(e){t.e(e)}finally{t.f()}for(;0<this.polygonClipVolumes.length;)this.removePolygonClipVolume(this.polygonClipVolumes[0])}},{key:"getActiveCamera",value:function(){return this.overrideCamera||(this.cameraMode===Cm.PERSPECTIVE?this.cameraP:this.cameraMode===Cm.ORTHOGRAPHIC?this.cameraO:this.cameraMode===Cm.VR?this.cameraVR:null)}},{key:"initialize",value:function(){this.referenceFrame=new Z,this.referenceFrame.matrixAutoUpdate=!1,this.scenePointCloud.add(this.referenceFrame),this.cameraP.up.set(0,0,1),this.cameraP.position.set(1e3,1e3,1e3),this.cameraO.up.set(0,0,1),this.cameraO.position.set(1e3,1e3,1e3),this.cameraScreenSpace.lookAt(new Oe(0,0,0),new Oe(0,0,-1),new Oe(0,1,0)),this.directionalLight=new wd(16777215,.5),this.directionalLight.position.set(10,10,10),this.directionalLight.lookAt(new Oe(0,0,0)),this.scenePointCloud.add(this.directionalLight);var e=new bd(5592405),e=(this.scenePointCloud.add(e),ne.createBackgroundTexture(512,512)),e=(e.minFilter=e.magFilter=ht,e.minFilter=e.magFilter=N,new Q(new _a(2,2,1),new R({map:e})));e.material.depthTest=!1,e.material.depthWrite=!1,this.sceneBG.add(e)}},{key:"addAnnotation",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(e instanceof Array?t.position=(new Oe).fromArray(e):null!=e.x&&(t.position=e),new pv(t));return this.annotations.add(e),e}},{key:"getAnnotations",value:function(){return this.annotations}},{key:"removeAnnotation",value:function(e){this.annotations.remove(e)}}])}(),mv=function(){function t(){var e;return ue(this,t),delete(e=le(this,t)).sceneBG,e.cameraP=new ya(e.fov,1,Potree.config.view.near,Potree.config.view.near),e.cameraO=new Ad(-1,1,1,-1,Potree.config.view.near,Potree.settings.cameraFar),e.cameraP.limitFar=!0,e.initializeExtend(),e.axisArrow=new dv,e.scene.add(e.axisArrow),Potree.settings.isDebug||Potree.settings.showAxis||(e.axisArrow.visible=!1),Potree.Utils.setObjectLayers(e.axisArrow,"bothMapAndScene"),e.tags=new Z,e.scene.add(e.tags),e}return v(t,fv),A(t,[{key:"estimateHeightAt",value:function(e){var t,n=null,i=1/0,r=q(this.pointclouds);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(void 0!==a.root.geometryNode){for(var o=null,s=1/0,l=e.clone().sub(a.position),u=(l.z=0,new _i(l,new Oe(0,0,1))),c=[a.root];0<c.length;){var d=c.pop(),h=d.getBoundingBox();if(u.intersectBox(h)){var p=d.geometryNode.mean.z+a.position.z+d.geometryNode.boundingBox.min.z;d.geometryNode.spacing<=s&&(o=p,s=d.geometryNode.spacing);for(var f=0,m=Object.keys(d.children);f<m.length;f++){var v=m[f];d.children[v].geometryNode&&c.push(d.children[v])}}}(null===n||s<i)&&(n=o,i=s)}}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"removePointCloud",value:function(e){var t=this.pointclouds.indexOf(e);-1!=t&&(this.pointclouds.splice(t,1),this.scenePointCloud.remove(e),e.panos.forEach(function(e){e.dispose()}))}},{key:"removeCameraAnimation",value:function(e){var t=this.cameraAnimations.indexOf(e);-1<t&&(this.cameraAnimations.splice(t,1),this.dispatchEvent({type:"camera_animation_removed",scene:this,animation:e}))}},{key:"getActiveCamera",value:function(){return viewer.mainViewport.camera}},{key:"initialize",value:function(){}},{key:"initializeExtend",value:function(){this.referenceFrame=new Z,this.referenceFrame.matrixAutoUpdate=!1,this.scenePointCloud.add(this.referenceFrame),window.axisYup||(this.cameraP.up.set(0,0,1),this.cameraO.up.set(0,0,1)),this.cameraP.position.set(1e3,1e3,1e3),this.cameraO.position.set(1e3,1e3,1e3),this.cameraScreenSpace.lookAt(new Oe(0,0,0),new Oe(0,0,-1),new Oe(0,1,0)),this.directionalLight=new wd(16777215,.5),this.directionalLight.position.set(10,10,10),this.directionalLight.lookAt(new Oe(0,0,0)),this.scenePointCloud.add(this.directionalLight);var e=new bd(5592405),e=(this.scenePointCloud.add(e),new bd(16777215,.5)),e=(Potree.Utils.setObjectLayers(e,"light"),this.scene.add(e),new wd(16777215,.7)),e=(e.position.set(10,10,10),e.lookAt(new Oe(0,0,0)),Potree.Utils.setObjectLayers(e,"light"),this.scene.add(e),new wd(16777215,.3)),e=(e.position.set(-10,-5,-7),e.lookAt(new Oe(0,0,0)),Potree.Utils.setObjectLayers(e,"light"),this.scene.add(e),ne.createBackgroundTexture(512,512)),e=(e.minFilter=e.magFilter=ht,e.minFilter=e.magFilter=N,new Q(new _a(2,2,1),new R({map:e}))),e=(e.material.depthTest=!1,e.material.depthWrite=!1,e.name="bg",this.scene.add(e),e.layers.set(Potree.config.renderLayers.bg),new Q(new _a(2,2,1),new R({transparent:!0})));e.material.depthTest=!1,e.material.depthWrite=!1,e.name="bg2",this.scene.add(e),e.layers.set(Potree.config.renderLayers.bg2),this.bg2=e}}])}(),vv=(Ym.BACKSPACE=8,new Gc),gv=(vv.crossOrigin="anonymous",Potree.defines={},Potree.defines.Buttons={NONE:0,LEFT:1,RIGHT:2,MIDDLE:4},Potree.browser=vf,Potree.defines.GLCubeFaces={GL_TEXTURE_CUBE_MAP_POSITIVE_X:0,GL_TEXTURE_CUBE_MAP_NEGATIVE_X:1,GL_TEXTURE_CUBE_MAP_POSITIVE_Y:2,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:3,GL_TEXTURE_CUBE_MAP_POSITIVE_Z:4,GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:5},Potree.defines.PanoSizeClass={BASE:1,STANDARD:2,HIGH:3,ULTRAHIGH:4},Potree.defines.PanoRendererEvents={PanoRenderComplete:"panorama.render.complete",TileRenderFailure:"panorama.tile.render.failed",TileRenderSuccess:"panorama.tile.render.success",TileUploadAttempted:"panorama.tile.upload.attempted",UploadAttemptedForAllTiles:"panorama.upload.attempted.all.tiles",ZoomLevelRenderStarted:"panorama.zoom.render.started"},Potree.defines.SceneRendererEvents={ContextCreated:"scene-renderer-context-created",AfterRender:"after-render",MemoryUsageUpdated:"scene-renderer-memory-usage-updated"},Potree.defines.TileDownloaderEvents={TileDownloadSuccess:"tiledownloader.download.success",TileDownloadFailure:"tiledownloader.download.failure",PanoDownloadComplete:"tiledownloader.pano.download.complete"},Potree.defines.Vectors={UP:new Oe(0,1,0),DOWN:new Oe(0,-1,0),LEFT:new Oe(-1,0,0),RIGHT:new Oe(1,0,0),FORWARD:new Oe(0,0,-1),BACK:new Oe(0,0,1)},Potree.defines.DownloadStatus=Object.freeze({None:0,Queued:1,ForceQueued:2,Downloading:3,Downloaded:4,DownloadFailed:5}),Potree.defines.ModelManagerEvents={ModelAdded:"model-added",ActiveModelChanged:"active-model-changed"},Potree.defines.PanoramaEvents={Enter:"panorama.enter",Exit:"panorama.exit",LoadComplete:"panorama.load.complete",LoadFailed:"panorama.load.failed",TileLoaded:"panorama.tile.loaded",VideoRendered:"panorama.video.rendered"},Bm.SHOW_INSIDE_Big=4,sm.EXT_DEPTH={isSupported:function(e){if(rv=e=e||rv,vf.detectIOS()){var t=vf.iosVersion(),n=t.major,i=t.minor,t=t.patch;if(15==n&&4==i&&1==t)return console.warn("检测到是ios15.4.1, 关闭EXT_frag_depth"),!1}return"undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||e.getExtension("EXT_frag_depth")}},ne.loadSkybox=function(t,e,n){e?(i=e.camera,o=e.scene,r=e.parent,a=e.cameraOrtho):(r=new Z,i=new ya(75,window.innerWidth/window.innerHeight,1,1e5),a=new Ad(-1,1,1,-1,Potree.config.view.near,Potree.settings.cameraFar),window.axisYup||i.up.set(0,0,1),o=new Fs,e=Potree.config.skyboxBgWidth,e=new Q(new da(e,e,e),new ga({vertexShader:bm["skybox.vs"],fragmentShader:bm["skybox.fs"],side:me,uniforms:{tDiffuse:{type:"t",value:null},matrix:{type:"m4",value:new Me}},depthTest:!1,depthWrite:!1})),o.add(e),o.traverse(function(e){return e.frustumCulled=!1}),r.children.push(i),i.parent=r);var i,r,a,o,s=vv.load(t,function(){console.log("loadSkybox成功",t),s.wrapS=ut,s.flipY=!1,s.magFilter=N,s.minFilter=N,o.children[0].material.uniforms.tDiffuse.value=s,n&&n(),viewer.dispatchEvent("content_changed")},null,function(e){console.error("loadSkybox失败",t)});return{camera:i,scene:o,parent:r,cameraOrtho:a}},ne.getMousePointCloudIntersection=function(e,t,n,i,r,a){var o=6<arguments.length&&void 0!==arguments[6]?arguments[6]:{};if(a&&0!=a.length){var s,l,u=r.renderer,u=(e?(o.x=t.x,o.y=e.resolution.y-t.y):(o.x=t.x,o.y=u.domElement.clientHeight-t.y),new bh),L=(u.setFromCamera(n,i),u.ray),c=null,d=1/0,h=null,p=null,f=new Map,m=new Map,v=new Map,g=new Map,A=new Map,F=new Map,y=new Map,t=!1;if(o.measuring||"showPanos"==Potree.settings.displayMode?(s=Potree.settings.pointDensity,Potree.settings.pointDensity="magnifier",a.forEach(function(e){y.set(e,e.visible),e.visible=Potree.Utils.getObjVisiByReason(e,"datasetSelection"),e.visible&&(F.set(e,e.temp.pointSize),l=e.material.pointSizeType,e.material.pointSizeType=Potree.config.material.pointSizeType)}),t=!0):(1<r.viewports.filter(function(e){return!e.noPointcloud&&e.active}).length||o.cameraChanged)&&(e.beforeRender&&e.beforeRender(),t=!0),!o.pickClipped){var w,b=q(a);try{for(b.s();!(w=b.n()).done;){var x=w.value;f.set(x,x.clipBoxes_in),m.set(x,x.clipBoxes_out),v.set(x,x.bigClipInBox),g.set(x,x.highlightBoxes),x.material.setClipBoxes(null,[],[],[])}}catch(e){b.e(e)}finally{b.f()}t=!0}if(t){var E,C=q(a);try{for(C.s();!(E=C.n()).done;){var B=E.value;A.set(B,B.visibleNodes)}}catch(e){C.e(e)}finally{C.f()}window.notViewOffset?Potree.updatePointClouds(a,i,e.resolution):((n=i.clone()).setViewOffset(e.resolution.x,e.resolution.y,o.x-40,e.resolution.y-o.y-40,80,80),Potree.updatePointClouds(a,n,e.resolution))}var M,S=[],T=q(a);try{for(T.s();!(M=T.n()).done;){var _,P=M.value,D=P.pick(r,e,i,L,o);D&&(S.push(P),(_=i.position.distanceTo(D.position))<d)&&(d=_,c=P,h=D.position,p=D)}}catch(e){T.e(e)}finally{T.f()}if(!o.measuring&&"showPanos"!=Potree.settings.displayMode||(Potree.settings.pointDensity=s,a.forEach(function(e){e.visible&&(e.material.pointSizeType=l),e.visible=y.get(e)})),!o.pickClipped){var O,I=q(a);try{for(I.s();!(O=I.n()).done;){var k=O.value;k.material.setClipBoxes(v.get(k),f.get(k),m.get(k),g.get(k))}}catch(e){I.e(e)}finally{I.f()}}if(t){var U,R=q(a);try{for(R.s();!(U=R.n()).done;){var N=U.value;N.visibleNodes=A.get(N)}}catch(e){R.e(e)}finally{R.f()}}return c?{location:h,distance:d,pointcloud:c,point:p,pointclouds:S,normal:p.normal&&(new Oe).fromArray(p.normal).applyMatrix4(c.rotateMatrix)}:null}},ne.pixelsArrayToDataUrl=function(e,t,n){for(var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.7,r=document.createElement("canvas"),a=(r.width=t,r.height=n,r.getContext("2d")),o=(e=new e.constructor(e),4*t),s=0;s<parseInt(n/2);s++){var l=n-s-1,u=e.slice(s*o,s*o+o),c=e.slice(l*o,l*o+o);e.set(c,s*o),e.set(u,l*o)}t=a.createImageData(t,n);return t.data.set(e),a.putImageData(t,0,0),r.toDataURL(i)},ne.renderTargetToDataUrl=function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.7,a=new Uint8Array(4*(t*n));return i.readRenderTargetPixels(e,0,0,t,n,a),ne.pixelsArrayToDataUrl(a,t,n,r)},ne.mouseToRay=function(e,t){var n=new Oe(e.x,e.y,1),e=new Oe(e.x,e.y,-1),t=(n.unproject(t),e.unproject(t),(new Oe).subVectors(n,e).normalize());return new _i(e,t)},ne.getPos2d=function(e,t,n,i){var e=te.closeTo(t.camera.position,e,1e-5)?new Oe(0,0,1.5):e.clone().project(t.camera),r=i&&i.getSize(new Re),a=i?r.x:n.clientWidth,i=i?r.y:n.clientHeight,r=(e.x+1)/2*a*t.width,n=(1-(e.y+1)/2)*i*t.height,a=t.left*a,t=(1-t.bottom-t.height)*i,i=e.x<=1&&-1<=e.x&&e.x<=1&&-1<=e.y;return{pos:new Re(a+r,t+n),vector:e,trueSide:e.z<1,inSight:i,posInViewport:new Re(r,n)}},ne.screenPass=new function(){this.screenScene=new Fs,this.screenQuad=new Q(new _a(2,2,1)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new Aa,this.render=function(e,t,n,i){this.screenQuad.material=t,void 0===n?(i||e).render(this.screenScene,this.camera):(t=e.getRenderTarget(),e.setRenderTarget(n),(i||e).render(this.screenScene,this.camera),e.setRenderTarget(t))}},ne.computePointcloudsBound=function(e){var t=new K;return e.forEach(function(e){e.updateBound(),t.union(e.bound2)}),{boundSize:t.getSize(new Oe),center:t.getCenter(new Oe),boundingBox:t}},ne.convertScreenPositionToNDC=function(e,t,n,i){return(e=e||new Re).x=t.x/n*2-1,e.y=-t.y/i*2+1,e},ne.convertNDCToScreenPosition=function(e,t,n,i){return(t=t||new Re).x=Math.round((e.x+1)/2*n),t.y=Math.round(-(e.y-1)/2*i),t},ne.getOrthoCameraMoveVec=function(e,t){var n=t.right/t.zoom,i=t.top/t.zoom,r=new Oe;return r.set(e.x*n,e.y*i,0).applyQuaternion(t.quaternion),r},ne.VectorFactory={fromArray:function(e){if(e)return(e.length<2||3<e.length)&&console.error("Wrong number of ordinates for a point!"),(new(3===e.length?Oe:Re)).fromArray(e)},fromArray3:function(e){if(e)return 3!==e.length&&console.error("Wrong number of ordinates for a point!"),(new Oe).fromArray(e)},fromArray2:function(e){if(e)return 2!==e.length&&console.error("Wrong number of ordinates for a point!"),(new Re).fromArray(e)},toString:function(e){return e.x.toFixed(8)+","+e.y.toFixed(8)+","+e.z.toFixed(3)}},ne.QuaternionFactory={rot90:(new ii).setFromAxisAngle(new Oe(0,0,1),Be.degToRad(-90)),fromArray:function(e){if(e)return 4!==e.length&&console.error("Wrong number of ordinates for a quaternion!"),new ii(e[1],e[2],e[3],e[0]).multiply(this.rot90)},toArray:function(e){if(e)return[(e=e.clone().multiply(a).toArray())[3],e[0],e[1],e[2]]},fromLonLat:function(e){if(e)return(new ii).setFromEuler(new Oi(e.lon,e.lat,0))},toLonLat:function(e){if(e)return{lon:(e=(new Oi).setFromQuaternion(e)).x,lat:e.y}}},ne.datasetPosTransform=function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=t.pointcloud||viewer.scene.pointclouds.find(function(e){return e.dataset_id==t.datasetId});if(n?e="merge"==Potree.settings.editType?t.fromDataset?n.matrixWorld:(new Me).copy(n.matrixWorld).invert():t.fromDataset?n.transformMatrix:n.transformInvMatrix:Potree.settings.intersectOnObjs&&(n=t.object||viewer.objs.children.find(function(e){return e.dataset_id==t.datasetId}))&&(e=t.fromDataset?n.matrixWorld:(new Me).copy(n.matrixWorld).invert()),e)return(new Oe).copy(t.position).applyMatrix4(e);null!=t.datasetId&&console.error("datasetPosTransform找不到datasetId为".concat(t.datasetId,"的数据集或模型,请检查数据, 模型未创建或删除"))},ne.datasetRotTransform=function(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=n.pointcloud||viewer.scene.pointclouds.find(function(e){return e.dataset_id==n.datasetId});if(i){if(n.rotation)e=(new Me).makeRotationFromEuler(n.rotation);else if(n.quaternion)e=(new Me).makeRotationFromQuaternion(n.quaternion);else{if(!n.matrix)return;e=n.matrix.clone()}i=n.fromDataset?i.rotateMatrix:i.rotateInvMatrix,i=(new Me).multiplyMatrices(i,e);return n.getRotation?t=(new Oi).setFromRotationMatrix(i):n.getQuaternion?t=(new ii).setFromRotationMatrix(i):n.getMatrix&&(t=i),t}},ne.isInsideFrustum=function(e,t){var n=new Me,t=(n.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),new Ma);return t.setFromProjectionMatrix(n),e instanceof bi?t.intersectsSphere(e):t.intersectsBox(e)},ne.isIntersectBox=function(e,t){var n=new Oe(.5,0,0).applyMatrix4(t),i=new Oe(-.5,0,0).applyMatrix4(t),r=new Oe(0,.5,0).applyMatrix4(t),a=new Oe(0,-.5,0).applyMatrix4(t),o=new Oe(0,0,.5).applyMatrix4(t),s=new Oe(0,0,-.5).applyMatrix4(t),l=(new Oe).subVectors(i,n).normalize(),u=l.clone().multiplyScalar(-1),c=(new Oe).subVectors(a,r).normalize(),d=c.clone().multiplyScalar(-1),h=(new Oe).subVectors(s,o).normalize(),p=h.clone().multiplyScalar(-1),l=(new ir).setFromNormalAndCoplanarPoint(l,n),n=(new ir).setFromNormalAndCoplanarPoint(u,i),u=(new ir).setFromNormalAndCoplanarPoint(c,r),i=(new ir).setFromNormalAndCoplanarPoint(d,a),c=(new ir).setFromNormalAndCoplanarPoint(h,o),r=(new ir).setFromNormalAndCoplanarPoint(p,s),d=new Ma(l,n,u,i,c,r);if(e instanceof K){a=new K(new Oe(-.5,-.5,-.5),new Oe(.5,.5,.5)).applyMatrix4(t);if(e.intersectsBox(a))return d.intersectsBox(e)}else{if(e instanceof Array)return(h=new bi).setFromPoints(e),this.isIntersectBox(h,t);if(e instanceof bi)return d.intersectsSphere(e);{if(e instanceof Oe)return d.containsPoint(e);0 instanceof Me}}},ne.getIntersect=function(e,t,n,i){i||(e.updateMatrixWorld(),i=new bh,r=new Oe(n.x,n.y,-1).unproject(e),n=new Oe(n.x,n.y,1).unproject(e).sub(r).normalize(),i.set(r,n)),t.forEach(function(e){i.layers.enable(te.getBaseLog(2,e.layers.mask))});var r,e=i.intersectObjects(t);return 0===e.length?null:e[0]},ne.addOrRemoveDefine=function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"",r=e.defines;if("add"==n){if(null!=r[t]&&r[t]==i)return;r[t]=i}else{if(null!=r[t])return;delete r[t]}e.needsUpdate=!0},ne.makeTexDontResize=function(e){if(!e||!e.image)return console.log("!map || !map.image",e,e&&e.image);Be.isPowerOfTwo(e.image.width)&&Be.isPowerOfTwo(e.image.height)||(e.wrapS=e.wrapT=ct,e.minFilter=N,e.generateMipmaps=!1,e.needsUpdate=!0)},ne.updateVisible=function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=4<arguments.length?arguments[4]:void 0;e.unvisibleReasons||(e.unvisibleReasons=[]),e.visibleReasons||(e.visibleReasons=[]);n?(-1<(i=e.unvisibleReasons.findIndex(function(e){return e.reason==t}))&&(a="cancel",e.unvisibleReasons.splice(i,1)),"add"!=a||e.visibleReasons.some(function(e){return e.reason==t})||e.visibleReasons.push({reason:t,level:r})):(-1<(i=e.visibleReasons.findIndex(function(e){return e.reason==t}))&&(a="cancel",e.visibleReasons.splice(i,1)),"cancel"==a||e.unvisibleReasons.some(function(e){return e.reason==t})||e.unvisibleReasons.push({reason:t,level:r})),e.unvisibleReasons=e.unvisibleReasons.sort(function(e,t){return t.level-e.level}),e.visibleReasons=e.visibleReasons.sort(function(e,t){return t.level-e.level}),n=e.visibleReasons[0]?e.visibleReasons[0].level:-1,n=(e.unvisibleReasons[0]?e.unvisibleReasons[0].level:-1)<=n,e.visible!=n&&(e.visible=n,e.dispatchEvent({type:"isVisible",visible:n,reason:t}))},ne.getObjVisiByReason=function(e,t){return!!e.visible||!e.unvisibleReasons||!e.unvisibleReasons.some(function(e){return e.reason==t})},ne.setCameraLayers=function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[];t.layers.disableAll(),e.concat(n).forEach(function(e){e=Potree.config.renderLayers[e];null==e?console.error("setCameraLayer没找到layer!"):t.layers.enable(e)})},ne.setObjectLayers=function(e,t){var n=Potree.config.renderLayers[t];null==n?console.error("setObjectLayers没找到layer!",t):e.traverse(function(e){e.layers.set(n)})},ne.imgAddText=function(){var i=J(X().mark(function e(n,t,i){var r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new Potree.TextSprite(Object.assign({backgroundColor:{r:0,g:0,b:0,a:0},textColor:{r:255,g:255,b:255,a:1},margin:{x:3,y:3},renderOrder:50,fontsize:20,text:t},i)),(a=new Image).src=r.sprite.material.map.image.toDataURL("image/png"),e.abrupt("return",new Promise(function(t,e){a.onload=function(){i.horizonCenter&&(i.leftRatioToImg=.5-a.width/n.width/2);var e=j.imgAddLabel(n,a,i);r.dispose(),t(e)}}));case 4:case"end":return e.stop()}},e)}));return function(e,t,n){return i.apply(this,arguments)}}(),ne.combineImgs=function(){var r=J(X().mark(function e(c,d,h,p){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(n,e){c[0][0];for(var t=c.length,i=c[0].length,r=0,a=t*i,o=(h=h||c.reduce(function(e,t){return e+t[0].width},0),p=p||c[0].reduce(function(e,t){return e+t.height},0),document.createElement("canvas")),s=(o.width=h,o.height=p,o.getContext("2d")),l=0;l<t;l++)for(var u=0;u<i;u++)!function(){var t=new Image;t.src=c[l][u].dataUrl,t.index={i:l,j:u},t.onload=function(){var e;r++,s.drawImage(t,t.index.i*t.width,t.index.j*t.height,t.width,t.height),r==a&&(e=o.toDataURL("image/png",d),s.clearRect(0,0,h,p),n(e))}}()}));case 1:case"end":return e.stop()}},e)}));return function(e,t,n,i){return r.apply(this,arguments)}}(),om.prototype.load=function(t,n){var i=this;if(!t.loaded){var r=t.getURL(),a=(this.version.equalOrHigher("1.4")&&(r+=".bin"),r+="?m="+t.pcoGeometry.timeStamp,Sf.createXMLHttpRequest());a.open("GET",r,!0),a.responseType="arraybuffer",a.overrideMimeType("text/plain; charset=x-user-defined"),a.onreadystatechange=function(){if(4===a.readyState){if(200!==a.status&&0!==a.status||null===a.response)throw t.loadFailed="status:"+a.status+",url:"+r,Potree.numNodesLoading--,new Error("Failed to load file! HTTP status: ".concat(a.status,", file: ").concat(r));var e=a.response;i.parse(t,e,n)}};try{a.send(null)}catch(e){t.loadFailed="catchError",Potree.numNodesLoading--,console.error("加载点云node出错 ",r,e)}}},cm.RGBA_PACKED=new cm("rgba",lm.DATA_TYPE_INT8,4),cm.COLOR_PACKED=cm.RGBA_PACKED,cm.INTENSITY=new cm("intensity",lm.DATA_TYPE_UINT16,1),cm.CLASSIFICATION=new cm("classification",lm.DATA_TYPE_UINT8,1),cm.GPS_TIME=new cm("gps-time",lm.DATA_TYPE_DOUBLE,1),jm.prototype.initTHREE=function(){this.renderer=new Is({alpha:!0,premultipliedAlpha:!1}),this.renderer.setClearColor(0,0),this.renderer.setSize(10,10),this.renderer.autoClear=!1,this.renderArea.append($(this.renderer.domElement)),this.renderer.domElement.tabIndex="2222",$(this.renderer.domElement).css("width","100%"),$(this.renderer.domElement).css("height","100%");var e=this.renderer.getContext();if(null==e.createVertexArray){var t=e.getExtension("OES_vertex_array_object");if(!t)throw new Error("OES_vertex_array_object extension not supported");e.createVertexArray=t.createVertexArrayOES.bind(t),e.bindVertexArray=t.bindVertexArrayOES.bind(t)}this.camera=new Ad(-1e3,1e3,1e3,-1e3,-1e3,1e3),this.camera.up.set(0,0,1),this.camera.rotation.order="ZXY",this.camera.rotation.x=Math.PI/2,this.scene=new Fs,this.profileScene=new Fs;e=new ju(1,16,16),t=new cc;this.pickSphere=new Q(e,t),this.scene.add(this.pickSphere),this.viewerPickSphere=new Q(e,t)},Potree.updatePointClouds=function(e,t,n){viewer.addTimeMark("updateClouds","start");var i,r=q(e);try{for(r.s();!(i=r.n()).done;){var a,o=i.value,s=performance.now(),l=q(o.profileRequests);try{for(l.s();!(a=l.n()).done;)if(a.value.update(),5<performance.now()-s)break}catch(e){l.e(e)}finally{l.f()}performance.now()}}catch(e){r.e(e)}finally{r.f()}var u,t=Potree.updateVisibility(e,t,n),c=q(e);try{for(c.s();!(u=c.n()).done;)u.value.updateVisibleBounds()}catch(e){c.e(e)}finally{c.f()}return Potree.lru.freeMemory(),viewer.addTimeMark("updateClouds","end"),t},Potree.updateVisibilityStructures=function(e,t,n){for(var i={},r={},a={},o=new BinaryHeap(function(e){return-e.weight}),s=(viewer.addTimeMark("visiStructure","start"),t.matrixWorldInverse),l=t.projectionMatrix,u=t.matrixWorld,c=(new Me).multiply(l).multiply(s),d=0;d<e.length;d++){var h=e[d];if(h.initialized()&&(h.numVisibleNodes=0,h.numVisiblePoints=0,h.deepestVisibleLevel=0,h.visibleNodes=[],h.visibleGeometry=[],h.visible||!h.hasDepthTex&&h.unvisibleReasons&&1==h.unvisibleReasons.length&&"displayMode"==h.unvisibleReasons[0].reason&&null!==h.root)){o.push({pointcloud:d,node:h.root,weight:Number.MAX_VALUE});var p=new Ma,f=h.matrixWorld,f=(new Me).multiply(c).multiply(f),f=(p.setFromProjectionMatrix(f),i[d]=p,h.matrixWorldInverse),p=(new Me).multiply(f).multiply(u),f=(new Oe).setFromMatrixPosition(p),f=(r[d]=f,(new ii).setFromRotationMatrix(p)),p=new Oe(0,0,-1).applyQuaternion(f);a[d]=p,h.root.isTreeNode()&&h.hideDescendants(h.root.sceneNode);for(var m=0;m<h.boundingBoxNodes.length;m++)h.boundingBoxNodes[m].visible=!1}}return viewer.addTimeMark("visiStructure","end"),{frustums:i,camObjPositions:r,priorityQueue:o,camObjDirs:a}},Potree.updateVisibility=function(S,T,e){var t,_=0,P=new Map(S.map(function(e){return[e,0]})),D=[],I=[],k=[],R=1/0,n=Potree.updateVisibilityStructures(S,T,e),L=n.frustums,F=n.camObjPositions,O=n.priorityQueue,U=n.camObjDirs,N=0,n=(e.x,e.y),e=T.fov*Math.PI/180,z=.5*n/Math.tan(e/2),G=(Potree._pointcloudTransformVersion||(Potree._pointcloudTransformVersion=new Map),Potree._pointcloudTransformVersion),i=q(S);try{for(i.s();!(t=i.n()).done;){var r,a=t.value;(a.hasDepthTex?a.visible:Potree.Utils.getObjVisiByReason(a,"datasetSelection"))&&(a.updateMatrixWorld(),G.has(a)?(r=G.get(a)).transform.equals(a.matrixWorld)||(r.number++,r.transform.copy(a.matrixWorld),a.dispatchEvent({type:"transformation_changed",target:a})):G.set(a,{number:0,transform:a.matrixWorld.clone()}))}}catch(e){i.e(e)}finally{i.f()}for(var o,s=function(){var e=O.pop(),t=e.node,n=e.parent,i=S[e.pointcloud],r=t.getBoundingBox(),a=L[e.pointcloud],o=F[e.pointcloud];if(!a)return 0;function s(e){return e=d.clone().multiply(e.box.matrixWorld),Potree.Utils.isIntersectBox(r,e)}var l=U[e.pointcloud],a=a.intersectsBox(r),u=null==i.maxLevel?1/0:i.maxLevel,c=(null==i.minLevel||i.minLevel,t.getLevel()),d=(a=(a=(a=a&&!(_+t.getNumPoints()>Potree.pointBudget))&&!(P.get(i)+t.getNumPoints()>i.pointBudget))&&c<=u,i.matrixWorld.clone().invert()),h=i.material.clipBoxes_in,p=(i.material.clipBoxes_out,i.material.bigClipInBox);if(a&&p&&(s(p)||(a=!1)),a&&0<h.length){for(var f=!1,m=0,v=h.length;m<v;m++)if(s(h[m])){f=!0;break}f||(a=!1)}if(a&&(p="prismHeight"==i.material.activeAttributeName&&i.material.prisms&&i.material.prisms.find(function(e){return e.computing}))&&!r.clone().applyMatrix4(i.matrixWorld).intersectsBox(p.prismBound)&&(a=!1),t.spacing?R=Math.min(R,t.spacing):t.geometryNode&&t.geometryNode.spacing&&(R=Math.min(R,t.geometryNode.spacing)),_+t.getNumPoints()>Potree.pointBudget)return viewer.dispatchEvent({type:"overPointBudget",restQueueSize:O.size(),numVisiblePoints:_}),1;if(!a)return 0;_+=t.getNumPoints();for(var p=P.get(i),g=(P.set(i,p+t.getNumPoints()),i.numVisibleNodes++,i.numVisiblePoints+=t.getNumPoints(),!t.isGeometryNode()||n&&!n.isTreeNode()||(t.isLoaded()&&N<2?(t=i.toTreeNode(t,n),N++):(k.push({pointcloud:i,node:t}),I.push(t))),t.isTreeNode()&&(Potree.lru.touch(t.geometryNode),t.sceneNode.visible=!0,t.sceneNode.material=i.material,D.push(t),i.visibleNodes.push(t),void 0===t._transformVersion&&(t._transformVersion=-1),a=G.get(i),t._transformVersion!==a.number&&(t.sceneNode.updateMatrix(),t.sceneNode.matrixWorld.multiplyMatrices(i.matrixWorld,t.sceneNode.matrix),t._transformVersion=a.number),i.showBoundingBox&&!t.boundingBoxNode&&t.getBoundingBox?(n=.1+(p=c/(u+1)),a=(new Se).setHSL(p,n,n),(c=new qm(t.getBoundingBox(),a)).matrixAutoUpdate=!1,i.boundingBoxNodes.push(c),t.boundingBoxNode=c,t.boundingBoxNode.matrix.copy(i.matrixWorld)):i.showBoundingBox?(t.boundingBoxNode.visible=!0,t.boundingBoxNode.matrix.copy(i.matrixWorld)):!i.showBoundingBox&&t.boundingBoxNode&&(t.boundingBoxNode.visible=!1)),t.getChildren()),A=0;A<g.length;A++){var y=g[A],w=0;if(T.isPerspectiveCamera){var b=y.getBoundingSphere(),x=b.center,E=b.center.distanceToSquared(o),C=Math.pow(E,.7),B=b.radius,M=B*(z/C);if(M<i.minimumNodePixelSize/Math.pow(E,.2))continue;w=M,b.containsPoint(o)||(w*=(1+(new Oe).subVectors(x,o).normalize().dot(l))/2),C-B<0&&(w=Number.MAX_VALUE)}else{E=y.getBoundingSphere();if(E.radius*T.zoom<i.minimumNodePixelSize)continue;M=E.center.distanceToSquared(o),w=E.radius/M}O.push({pointcloud:e.pointcloud,node:y,parent:t,weight:w})}};0<O.size()&&(0===(o=s())||1!==o););var l,u=q(S.filter(function(e){return e.generateDEM&&e.dem instanceof Potree.DEM}));try{for(u.s();!(l=u.n()).done;){var c=l.value,d=c.visibleNodes.filter(function(e){return e.getLevel()<=4});c.dem.update(d)}}catch(e){u.e(e)}finally{u.f()}if((k=k.filter(function(e){return!e.loadFailed})).length){for(var h=j.getBestCount("unloadedGeometry",viewer.lastFrameChanged?1:3,6,4,15),p=0;p<Math.min(h,k.length);p++)k[p].node.load(k[p].pointcloud.pcoGeometry);Potree.pointsLoading||(Potree.pointsLoading=!0,viewer.dispatchEvent("startLoadPoints"))}else Potree.pointsLoading&&(Potree.pointsLoading=!1,setTimeout(function(){Potree.pointsLoading||viewer.dispatchEvent("pointsLoaded")},document.hidden?3e3:50));return Potree.unloadedGeometry=k,Potree.numVisiblePoints=_,{visibleNodes:D,numVisiblePoints:_,lowestSpacing:R}},Potree.numVisiblePoints=0,Zm.prototype.init);Zm.prototype.init=function(){gv(),viewer.addEventListener("resize",this.resize.bind(this))},Zm.prototype.resize=function(e){this.rtDepth.setSize(e.canvasWidth,e.canvasHeight),this.rtAttribute.setSize(e.canvasWidth,e.canvasHeight)},Zm.prototype.clear=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(this.init(),this.viewer),n=t.renderer,t=t.background;"skybox"===t||"gradient"===t?n.setClearColor(0,0):"black"===t?n.setClearColor(0,1):"white"===t?n.setClearColor(16777215,1):n.setClearColor(0,0),e.target||n.clear(),this.clearTargets(e)},Zm.prototype.render=function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(this.init(),this.viewer),i=t.camera||n.scene.getActiveCamera(),r=t.width?t:this.viewer.renderer.getSize(new Re),a=r.width,o=r.height,r=(n.renderer.setRenderTarget(t.target||null),n.dispatchEvent({type:"render.pass.begin",viewer:n}),n.scene.pointclouds.filter(function(e){return e.visible})),s=new Map,l=q(r);try{for(l.s();!(e=l.n()).done;){var u,c,d=e.value;s.set(d,d.material),this.attributeMaterials.has(d)||(u=new ev,this.attributeMaterials.set(d,u)),this.depthMaterials.has(d)||((c=new ev).setDefine("depth_pass","#define hq_depth_pass"),c.setDefine("use_edl","#define use_edl"),this.depthMaterials.set(d,c))}}catch(e){l.e(e)}finally{l.f()}var h,p=q(r);try{for(p.s();!(h=p.n()).done;){var f=h.value,m=f.pcoGeometry.boundingBox.getSize(new Oe).x,v=s.get(f),g=this.depthMaterials.get(f);g.size=v.size,g.minSize=v.minSize,g.maxSize=v.maxSize,g.pointSizeType=v.pointSizeType,g.visibleNodesTexture=v.visibleNodesTexture,g.weighted=!1,g.screenWidth=a,g.shape=PointShape.CIRCLE,g.screenHeight=o,g.uniforms.visibleNodes.value=v.visibleNodesTexture,g.uniforms.octreeSize.value=m,g.spacing=f.pcoGeometry.spacing,g.classification=v.classification,g.uniforms.classificationLUT.value.image.data=v.uniforms.classificationLUT.value.image.data,g.classificationTexture.needsUpdate=!0,g.uniforms.uFilterReturnNumberRange.value=v.uniforms.uFilterReturnNumberRange.value,g.uniforms.uFilterNumberOfReturnsRange.value=v.uniforms.uFilterNumberOfReturnsRange.value,g.uniforms.uFilterGPSTimeClipRange.value=v.uniforms.uFilterGPSTimeClipRange.value,g.uniforms.uFilterPointSourceIDClipRange.value=v.uniforms.uFilterPointSourceIDClipRange.value,g.clipTask=v.clipTask,g.clipMethod=v.clipMethod,g.setClipBoxes(v.clipBoxes),g.setClipPolygons(v.clipPolygons),f.material=g}}catch(e){p.e(e)}finally{p.f()}n.pRenderer.render(n.scene.scenePointCloud,i,t.rtEDL||this.rtDepth,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof SphereVolume})});var A,y=q(r);try{for(y.s();!(A=y.n()).done;){var w=A.value,b=w.pcoGeometry.boundingBox.getSize(new Oe).x,x=s.get(w),E=this.attributeMaterials.get(w);E.size=x.size,E.minSize=x.minSize,E.maxSize=x.maxSize,E.pointSizeType=x.pointSizeType,E.activeAttributeName=x.activeAttributeName,E.visibleNodesTexture=x.visibleNodesTexture,E.weighted=!0,E.screenWidth=a,E.screenHeight=o,E.shape=PointShape.CIRCLE,E.uniforms.visibleNodes.value=x.visibleNodesTexture,E.uniforms.octreeSize.value=b,E.spacing=w.pcoGeometry.spacing,E.classification=x.classification,E.uniforms.classificationLUT.value.image.data=x.uniforms.classificationLUT.value.image.data,E.classificationTexture.needsUpdate=!0,E.uniforms.uFilterReturnNumberRange.value=x.uniforms.uFilterReturnNumberRange.value,E.uniforms.uFilterNumberOfReturnsRange.value=x.uniforms.uFilterNumberOfReturnsRange.value,E.uniforms.uFilterGPSTimeClipRange.value=x.uniforms.uFilterGPSTimeClipRange.value,E.uniforms.uFilterPointSourceIDClipRange.value=x.uniforms.uFilterPointSourceIDClipRange.value,E.elevationGradientRepeat=x.elevationGradientRepeat,E.elevationRange=x.elevationRange,E.gradient=x.gradient,E.matcap=x.matcap,E.intensityRange=x.intensityRange,E.intensityGamma=x.intensityGamma,E.intensityContrast=x.intensityContrast,E.intensityBrightness=x.intensityBrightness,E.rgbGamma=x.rgbGamma,E.rgbContrast=x.rgbContrast,E.rgbBrightness=x.rgbBrightness,E.weightRGB=x.weightRGB,E.weightIntensity=x.weightIntensity,E.weightElevation=x.weightElevation,E.weightRGB=x.weightRGB,E.weightClassification=x.weightClassification,E.weightReturnNumber=x.weightReturnNumber,E.weightSourceID=x.weightSourceID,E.color=x.color,E.clipTask=x.clipTask,E.clipMethod=x.clipMethod,E.setClipBoxes(x.clipBoxes),E.setClipPolygons(x.clipPolygons),w.material=E}}catch(e){y.e(e)}finally{y.f()}var C,r=this.gl,B=(n.pRenderer.render(n.scene.scenePointCloud,i,this.rtAttribute,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof SphereVolume}),blendFunc:[r.SRC_ALPHA,r.ONE],depthWrite:!1}),q(s));try{for(B.s();!(C=B.n()).done;){var M=U(C.value,2),S=M[0],T=M[1];S.material=T}}catch(e){B.e(e)}finally{B.f()}"skybox"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.skybox.camera.rotation.copy(n.scene.cameraP.rotation),n.skybox.camera.fov=n.scene.cameraP.fov,n.skybox.camera.aspect=n.scene.cameraP.aspect,n.skybox.parent.rotation.x=0,n.skybox.parent.updateMatrixWorld(),n.skybox.camera.updateProjectionMatrix(),n.renderer.render(n.skybox.scene,n.skybox.camera)):"gradient"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.renderer.render(n.scene.sceneBG,n.scene.cameraBG)):("black"===n.background?n.renderer.setClearColor(0,1):"white"===n.background?n.renderer.setClearColor(16777215,1):n.renderer.setClearColor(0,0),n.renderer.clear());r=this.useEDL?this.normalizationEDLMaterial:this.normalizationMaterial;this.useEDL&&(r.uniforms.edlStrength.value=n.edlStrength,r.uniforms.radius.value=n.edlRadius,r.uniforms.screenWidth.value=a,r.uniforms.screenHeight.value=o,r.uniforms.uEDLMap.value=(t.rtEDL||this.rtDepth).texture),r.uniforms.uWeightMap.value=this.rtAttribute.texture,r.uniforms.uDepthMap.value=this.rtAttribute.depthTexture,ne.screenPass.render(n.renderer,r),n.renderer.render(n.scene.scene,i),n.dispatchEvent({type:"render.pass.scene",viewer:n}),n.renderer.render(n.scene.sceneOverlay,i),n.renderer.clearDepth(),n.transformationTool.update(),t.target||(n.dispatchEvent({type:"render.pass.perspective_overlay",viewer:n,camera:i}),n.renderer.render(n.overlay,i)),n.renderer.render(n.controls.sceneControls,i),n.renderer.render(n.clippingTool.sceneVolume,i),n.renderer.render(n.transformationTool.scene,i),n.renderer.setViewport(a-n.navigationCube.width,o-n.navigationCube.width,n.navigationCube.width,n.navigationCube.width),n.renderer.render(n.navigationCube,n.navigationCube.camera),n.renderer.setViewport(0,0,a,o),n.dispatchEvent({type:"render.pass.end",viewer:n}),n.renderer.setRenderTarget(null)},ym.prototype.loadHierachyThenPoints=function(e){var E=this;if(E.level%E.pcoGeometry.hierarchyStepSize==0){var C=E.pcoGeometry.octreeDir+"/"+E.getHierarchyPath()+"/"+E.name+".hrc",B=(C+="?m="+E.pcoGeometry.timeStamp,Sf.createXMLHttpRequest());B.open("GET",C,!0),B.responseType="arraybuffer",B.overrideMimeType("text/plain; charset=x-user-defined"),B.onreadystatechange=function(){if(4===B.readyState)if(200===B.status||0===B.status){var e=B.response,t=E,n=e;performance.now();for(var i=new DataView(n),r=[],e=i.getUint8(0),a=i.getUint32(1,!0),o=(t.numPoints=a,r.push({children:e,numPoints:a,name:t.name}),[]),s=5;0<r.length;){for(var l,u,c,d=r.shift(),h=1,p=0;p<8;p++)0!=(d.children&h)&&(l=d.name+p,u=i.getUint8(s),c=i.getUint32(s+1,!0),r.push({children:u,numPoints:c,name:l}),o.push({children:u,numPoints:c,name:l}),s+=5),h*=2;if(s===n.byteLength)break}for(var f={},m=(f[t.name]=t).pcoGeometry,v=0,g=0;g<o.length;g++){var A=o[g].name,y=o[g].numPoints,w=parseInt(A.charAt(A.length-1)),b=f[A.substring(0,A.length-1)],x=A.length-1,v=Math.max(v,x),w=ne.createChildAABB(b.boundingBox,w),w=new ym(A,m,w);w.level=x,w.numPoints=y,w.hasChildren=0<o[g].children,w.spacing=m.spacing/Math.pow(2,x),b.addChild(w),f[A]=w}m.dispatchEvent({type:"updateNodeMaxLevel",level:v}),performance.now(),t.loadPoints()}else console.log("Failed to load file! HTTP status: "+B.status+", file: "+C),Potree.numNodesLoading--};try{B.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}},ym.prototype.loadPoints=function(){this.name;this.pcoGeometry.loader.load(this,function(){viewer.dispatchEvent("pointcloud_changed")})},ym.prototype.traverse=function(e,t){for(var n,i=(t=void 0===t?!0:t)?[this]:[];void 0!==(n=i.pop());){e(n);for(var r=0,a=n.children;r<a.length;r++){var o=a[r];null!==o&&i.push(o)}}},Object.assign(Am.prototype,Qn.prototype),sp.prototype.freeMemory=function(){if(!(this.elements<=1))for(var e=vf.isMobile()?2:5,t=Be.clamp(viewer.viewports.length*e*Potree.pointBudget,0,4e7);this.numPoints>t;){var n=this.getLRUItem();n&&this.disposeDescendants(n)}},Jm.prototype.update=function(){},Jm.prototype.startInsertion=function(){var t,n=this,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},r=i.type?new i.type:new Potree.BoxVolume(Object.assign(i,{clip:!0})),a=(r.highlight=!0,r.name=i.name||"Volume-"+i.clipTask,r.isNew=!0,viewer.transformObject(null),i.clipTask==Potree.ClipTask.SHOW_INSIDE&&(t=viewer.scene.volumes.filter(function(e){return e.clipTask==Potree.ClipTask.SHOW_INSIDE&&!e.highlight})).forEach(function(e){return e.highlight=!0}),function(){var e=n.viewer.scene.getActiveCamera(),e=te.getScaleForConstantSize({width2d:300,camera:e,position:r.getWorldPosition(new Oe),resolution:viewer.mainViewport.resolution}),e=(isNaN(e)||r.scale.set(e,e,e),viewer.mainViewport.view.direction.setZ(0));r.quaternion.copy(te.getQuaByAim(e))}),o=(this.dispatchEvent({type:"start_inserting_volume",volume:r}),a(),this.viewer.scene.addVolume(r),this.scene.add(r),function(e){"mapViewport"!=e.hoverViewport.name&&(e=(e=ne.getMousePointCloudIntersection(viewer.mainViewport,viewer.inputHandler.mouse,viewer.inputHandler.pointer,n.viewer.scene.getActiveCamera(),n.viewer,n.viewer.scene.pointclouds,{pickClipped:i.clipTask==Potree.ClipTask.SHOW_OUTSIDE}))&&e.location)&&(r.position.copy(e),a())}),s=function(){l("remove")},l=function(e){if("remove"!=(e=e.button==oe.RIGHT&&e.pressDistance<=Potree.config.clickMaxDragDis?"remove":e)&&(!e.isAtDomElement||e.pressDistance>Potree.config.clickMaxDragDis))return u();r.removeEventListener("drag",o),r.removeEventListener("drop",l),n.viewer.removeEventListener("cancel_insertions",s),r.isNew=!1,viewer.removeEventListener("camera_changed",a),"remove"==e?viewer.scene.removeVolume(r):(viewer.transformObject(r),r.highlight=!1),r.dispatchEvent({type:"createFinish",success:"remove"!=e}),t&&t.forEach(function(e){return e.highlight=!1})},u=function(){return setTimeout(function(){r.parent&&r.isNew&&viewer.inputHandler.startDragging(r,{notPressMouse:!0})},1)};return r.addEventListener("drag",o),r.addEventListener("drop",l),this.viewer.addEventListener("cancel_insertions",s),viewer.addEventListener("camera_changed",a),this.viewer.inputHandler.startDragging(r,{notPressMouse:!0}),r},Kf.prototype.setPositions=function(e){e=new Float32Array(e);return Lf.prototype.setPositions.call(this,e),this},Object.assign(ff.prototype,Qn.prototype),Object.assign(mv.prototype,Qn.prototype);function Av(){for(var e=document.createElement("textarea"),t=(e.id="consoleLog",e.style.width="160px",e.style.height="200px",e.style.position="fixed",e.style.left=0,e.style.bottom="50px",e.style["z-index"]=9999,e.style.color="black",e.style.opacity=.9,e.style["font-size"]="12px",e.style.backgroundColor="#ffffff",document.getElementsByTagName("body")[0].appendChild(e),["log","error","warn","debug","info","time","timeEnd"]),n=0;n<t.length;n++)!function(i){console["old"+i]=console[i],console[i]=function(){var e=Array.from(arguments),t=(console["old"+i].apply(this,arguments),document.getElementById("consoleLog").innerHTML),n="";e.forEach(function(e){n+=e+" "}),document.getElementById("consoleLog").innerHTML=n+"\n\n"+t}}(t[n])}var yv={displayMode:{showPointCloud:{atPano:{showPoint:!0,showSkybox:!1,pointUsePanoTex:!1},transition:{showPoint:!0,showSkybox:!1,pointUsePanoTex:!1},canLeavePano:!0},showPanos:{atPano:{showPoint:!1,showSkybox:!0,pointUsePanoTex:!1},transition:{showSkybox:!0},canLeavePano:!1},showBoth:{atPano:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!1},transition:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!0},canLeavePano:!0},pointUsePanoTex:{atPano:{showPoint:!0,showSkybox:!1,pointUsePanoTex:!0},transition:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!0},canLeavePano:!1}},urls:{prefix1:"https://laser-oss.4dkankan.com",prefix2:"https://testlaser.4dkankan.com",prefix3:"https://4dkk.4dage.com",prefix4:"https://uat-laser.4dkankan.com",prefix5:"https://laser.4dkankan.com/backend",prefix6:"https://mix3d.4dkankan.com/backend",prefix7:"https://xfhd.4dkankan.com/backend"},transitionsTime:{flyMinTime:650,flytimeDistanceMultiplier:120},view:{fov:70,near:.1,far:1e4},map:{mapHeight:-1e3,cameraHeight:1e3},minNodeSize:30,tiles3DMaxMemory:100,pointDensity:{magnifier:{maxLevelPercent:1,pointBudget:1e6,minNodeSize:5},panorama:{maxLevelPercent:.6,pointBudget:vf.isMobile()?2e5:4e5,minNodeSize:100},fourViewports:{maxLevelPercent:.9,pointBudget:3e6,minNodeSize:70},fourViewportsMain:{maxLevelPercent:.9,pointBudget:3e6,minNodeSize:70},panoEdit:{maxLevelPercent:1,pointBudget:4e6,percentByUser:!0,minNodeSize:80},low:{maxLevelPercent:.4,percentByUser:!0,pointBudget:vf.isMobile()?1e6:2e6,minNodeSize:40/window.devicePixelRatio},middle:{maxLevelPercent:.7,percentByUser:!0,pointBudget:vf.isMobile()?15e5:35e5,minNodeSize:30/window.devicePixelRatio},high:{maxLevelPercent:1,percentByUser:!0,pointBudget:vf.isMobile()?3e6:6e6,minNodeSize:20/window.devicePixelRatio},screenshot:{maxLevelPercent:1,pointBudget:vf.isMobile()?4e6:1e7,minNodeSize:40/window.devicePixelRatio},screenshot2:{maxLevelPercent:1,pointBudget:vf.isMobile()?8e6:15e6,minNodeSize:20/window.devicePixelRatio},ultraHigh:{maxLevelPercent:1,pointBudget:2e7,minNodeSize:10/window.devicePixelRatio}},clip:{color:"#FFC266"},measure:{color:"#00C8AF",default:{color:"#64C8BB",opacity:.7},highlight:{color:"#00C8AF",opacity:1,labelOpacity:.7},guide:{color:"#FFFFFF",opacity:.8},backColor:"#333333",lineWidth:3,textColor:"#000000",mulLabelHideFaraway:!1,adsorptMinDis:30},material:{pointSize:.1,realPointSize:.1,minSize:.1,maxSize:1e4,pointSizeType:"ATTENUATED",absolutePanoramaSize:1.3,pointColor:"#ffffff"},skyboxBgWidth:100,renderLayers:{bg:20,bg2:21,skybox:1,pointcloud:11,sceneObjects:0,model:2,light:15,measure:4,magnifier:5,magnifierContent:16,volume:6,transformationTool:7,map:8,mapObjects:9,bothMapAndScene:3,siteModeOnlyMapVisi:12,siteModelMapUnvisi:13,siteModeSideVisi:14,layer1:18,layer2:17},renderOrders:Y(Y({model:10,reticule:5,measureMarker:6,measureLabelSub:7,measureLabel:8,sorptionSign:10},"model",10),"magnifier",50),siteModel:{names:{building:"建筑",floor:"楼层",room:"房间"},floorHeightDefault:5},panosEdit:{},tiling:{panoPreRenderRepeatDelay:2500,panoPreRenderDelay:500,preRenderTourPanos:vf.valueFromHash("tileprerender",0),tilingFlagNames:["usetiles","tiles"],maxNavPanoQuality:vf.valueFromHash("maxtileq",null),maxZoomPanoQuality:vf.valueFromHash("maxztileq",null),overlayStyle:vf.valueFromHash("tileoverlay",0),uploadIntervalDelay:vf.valueFromHash("tileupdelay",10),initialIntervalDelay:vf.valueFromHash("itiledelay",0),maxNonBaseUploadsPerFrame:vf.valueFromHash("maxnbtpf",1),maxBaseUploadsPerFrame:vf.valueFromHash("maxbtpf",6),customCompression:vf.valueFromHash("tilecustcomp",0),mobileHighQualityOverride:!1,allowUltraHighResolution:!0},navigation:{panoScores:!1,mouseDirection:!0,filterStrictness:.75,angleFactor:-30,directionFactor:10,distanceFactor:-1,optionalityFactor:3},axis:{x:{color:"#ea3f3f"},y:{color:"#86c215"},z:{color:"#3396f8"},xyz:{color:"#ccc"}},shelterMargin:.15,highQualityMaxZoom:2,ultraHighQualityMaxZoom:3,panoFieldRadius:10,clickMaxDragDis:3,clickMaxPressTime:200,doubleClickTime:300,testNodeCount1:vf.isMobile()?6:4,background:"#232323",mapBG:"#F5F5F5",pickFrontPointRatio:50,colors:{red:[213,0,0],pink:[197,17,98],purple:[170,0,255],"deep purple":[98,0,234],blue:[41,98,255],"light blue":[0,145,234],cyan:[0,184,212],teal:[0,191,165],green:[0,200,83],"light green":[100,221,23],lime:[174,234,0],yellow:[255,214,0],amber:[255,171,0],orange:[255,109,0],"deep orange":[255,61,0]},depthTexUVyLimit:.141};yv.OrthoCameraLimit={standard:{zoom:{min:4e-4,max:500},latPad:20,xBound:[-4e6,4e6]},expand:{zoom:{min:4e-4,max:500},latPad:20,xBound:[-6e6,6e6]}},window.testLevelSteps=function(e){e||(e=[(t=Potree.config.pointDensity).low.maxLevelPercent,t.middle.maxLevelPercent,t.high.maxLevelPercent]);for(var t,n=1;++n<=12;){var i=e.map(function(e){return e*n}),r=e.map(function(e){return Math.round(e*n)});console.log("当nodeMaxLevel为".concat(n,"时,每一级的level分别为").concat(r,", (小数:").concat(i,")"))}console.log("请检查每一层的三个level是否有重复")};var yp=vf.urlHasValue("test"),zh={editType:"",number:"",originDatasetId:"",isOfficial:!1,webSite:"testdata",isLocal:!1,libsUrl:"../libs/",displayMode:"",isTest:yp,prefix:window.location.href.split("//")[1].split("/")[0],pointDensity:"",UserPointDensity:"",UserDensityPercent:null,ifShowMarker:!0,floorplanType:{},floorplanEnable:!1,floorplanEnables:{},floorplanRequests:{},mapEnable:!0,cameraFar:yv.view.far,showPanoMesh:!1,dblToFocusPoint:!1,unableNavigate:!1,sizeFitToLevel:!1,zoom:{enabled:!0,min:1,max:yv.highQualityMaxZoom},navConstantly:!0,navTileClass:"2k",tileClass:"4k",drawEntityData:!1,zoomFromPointert:{whenPanos:!0,whenPointCloud:!0,map:!0},rotAroundPoint:!0,tourTestCameraMove:!1,cameraAniSmoothRatio:20,urls:$.extend({},yv.urls,{prefix:yv.urls.prefix4}),useDepthTex:!0,datasetsPanos:{},boundAddObjs:!1,intersectOnObjs:!1,intersectWhenHover:!0,depTexLocBindDataset:!0,notAdditiveBlending:!1,precision:2,unit:"m",useV4url:!0,useRTskybox:!0,useRTPoint:!0,pointEnableRT:!1,cloudSameMat:!0,showCompass:!1,showAxis:yp,tiles3DMaxMemory:yv.tiles3DMaxMemory,adsorption:!1,pickFrontPointRatio:yv.pickFrontPointRatio,dragPolyBeyondPoint:vf.urlHasValue("dragPolyBeyondPoint"),panoZoomByPointer:!1,areaAtNotPlane:!1,fastTran:yp},wv=(Potree.config=yv,(Potree.settings=zh).isLocalhost=zh.prefix.includes("localhost:")||zh.prefix.includes("localhost:"),zh.isFormal=vf.urlHasValue("formal"),zh.isFormal&&(zh.urls.prefix=zh.urls.prefix5,zh.webSite="datav1"),new Gc),bv=(wv.crossOrigin="anonymous",new Oe),xv=new br(0,1,2),Ev=new br(2,3,0),Cv=((Nh=new R({transparent:!0,depthWrite:!1,depthTest:!0,opacity:1,side:ve})).color=new Se(3355443),Nh),Iu=new Re(0,0),Ru=new Re(0,1),Dd=new Re(1,0),Fu=new Re(1,1),Bv=[Iu,Dd,Fu],Mv=[Fu,Ru,Iu];function Sv(e,t){e.map.mapLayer.loadingInProgress--,e.map.loadingInProgress--,e.loading=!1;var n=e.map.mapLayer.waitQueue[0];n?Iv(n):0==e.map.mapLayer.loadingInProgress&&e.map.mapLayer.dispatchEvent("loadDone"),e.mesh&&(e.mesh.material.needsUpdate=!0)}Tv=0;var Tv,_v=function(){return Tv++},Pv=function(){function i(e,t){ue(this,i),(n=le(this,i)).sceneGroup=new Z,n.sceneGroup.name="MapLayer",n.waitQueue=[],n.loadingInProgress=0,n.maps=[],n.frustum=new Ma,n.frustumMatrix=new Me,n.tileColor=new Se(16777215),n.viewport=t,n.changeViewer(e);var n,t=new $v(n,n.tileColor);return n.addMap(t),n.sceneGroup.addEventListener("isVisible",function(){n.viewer.mapChanged=!0}),n}return v(i,Qn),A(i,[{key:"addMapEntity",value:function(e,t){if(e&&e[0])return e[0].datasetId=t,(e=new eg(this,this.tileColor,e[0]))&&(e.name+="_"+t,this.addMap(e),e.updateProjection(),e.updateObjectGroup(),(t in Potree.settings.floorplanEnables?Potree.settings.floorplanEnables[t]:Potree.settings.floorplanEnable)?this.needUpdate=!0:e.setEnable(!1),this.dispatchEvent({type:"floorplanLoaded",floorplan:e})),e;Potree.Log("平面图无数据",{font:"red"})}},{key:"getFloorplan",value:function(t){return this.maps.find(function(e){return e.name=="floorplan_"+t})}},{key:"addMap",value:function(e){this.maps.push(e),this.needUpdate=!0,this.viewer.mapChanged=!0}},{key:"removeMap",value:function(e){var t=this.maps.indexOf(e);0<=t&&(e.removeFromSceneGroup(this.sceneGroup),this.maps.splice(t,1)),this.needUpdate=!0,this.viewer.mapChanged=!0}},{key:"changeViewer",value:function(e){this.viewer=e}},{key:"initProjection",value:function(){this.maps.forEach(function(e){e.updateProjection(),e.updateObjectGroup()})}},{key:"visibilityChanged",value:function(){if(!this.visible)for(var e=0,t=this.maps;e<t.length;e++)t[e].removeFromSceneGroup(this.sceneGroup)}},{key:"update",value:function(){if(this.needUpdate=!1,!this.disabled&&this.maps.find(function(e){return!e.disabled})&&this.maps.find(function(e){return e.objectGroup.visible})){var e,t,n;this.viewer.mapChanged=!0,this.updateTimer=void 0;for((t=(e=this.viewport.camera).projectionMatrix.clone()).elements[0]/=1.3,t.elements[5]/=1.3,this.frustumMatrix.multiplyMatrices(t,e.matrixWorldInverse),this.frustum.setFromProjectionMatrix(this.frustumMatrix),this.frustum.planes[4].setComponents(0,0,0,0),this.frustum.planes[5].setComponents(0,0,0,0),i=!0,n=0;n<this.maps.length;n++)var i=this.maps[n].update(this.frustum,this.sceneGroup)&&i;return[2,i]}}},{key:"updateProjection",value:function(){for(var e=0,t=this.maps;e<t.length;e++){var n=t[e];n.clearProjection(),n.updateObjectGroup()}}}])}(),Dv=function(){function a(e,t,n,i){var r;return ue(this,a),(r=le(this,a)).name=e,r.mapLayer=t,r.tileColor=n,r.bias=0,r.zIndex=-1,r.objectGroup=new Z,r.objectGroup.name=e,r.objectGroupAdded=!1,r.baseTile=new Zv(r,r.objectGroup,r.tileColor,null,"0"),r.isTileVisibleBox=new K,r.isTileVisibleVec=new Oe,r.projection=i,r._zoomLevel=0,r.objectGroup.addEventListener("isVisible",function(){r.mapLayer.viewer.mapChanged=!0}),r.computeCount=0,r.maxLoading=3,r.loadFailCount=0,r.loadingInProgress=0,r}return v(a,Qn),A(a,[{key:"zoomLevel",get:function(){return this._zoomLevel},set:function(e){this._zoomLevel!=e&&(this._zoomLevel=e,this.dispatchEvent({type:"zoomLevelChange",zoomLevel:e}))}},{key:"updateObjectGroup",value:function(){this.position&&this.objectGroup.position.copy(this.position).setZ(0),this.quaternion&&this.objectGroup.quaternion.copy(this.quaternion),this.objectGroup.updateMatrixWorld(!0)}},{key:"updateProjection",value:function(){this.transformMapToLocal||(this.transformMapToLocal=proj4(this.projection,"LOCAL_MAP"))}},{key:"clearProjection",value:function(){this.transformMapToLocal=void 0,"LOCAL_MAP"!==this.projection&&this.baseTile.remove()}},{key:"setEnable",value:function(e){!this.disabled!=e&&(this.disabled=!e,Potree.Utils.updateVisible(this.objectGroup,"setEnable",e),e?this.mapLayer.needUpdate=!0:this.baseTile.remove())}},{key:"update",value:function(e,t){this.computeCount=0;var n=this.disabled||!this.objectGroup.visible;if(("map"==this.name||!n)&&(this.updateProjection(),this.transformMapToLocal)){if(!this.isTileVisible(new Oe(0,0,0),this.mapSizeM,e))return this.removeFromSceneGroup(t),!0;var i=this.mapLayer.viewport,r=new Oe(-.5*this.mapSizeM,0,0),a=(r.applyMatrix4(this.objectGroup.matrixWorld),r.project(i.camera),new Oe(.5*this.mapSizeM,0,0)),o=(a.applyMatrix4(this.objectGroup.matrixWorld),a.project(i.camera),i.resolution.x),s=i.resolution.y;if(o<=0||s<=0||isNaN(r.x)||isNaN(a.x))return!1;r.sub(a),r.x*=o/2,r.y*=s/2,i="map"==this.name?(a=viewer.transform.lonlatToLocal.inverse(i.camera.position.clone()),o=Math.cos(Be.degToRad(a.y)),o=Be.clamp(o,0,1),s=Math.abs(viewer.mapViewer.camera.position.x/this.mapSizeM*16),s=Be.clamp(s,0,Math.PI),.5*o*(1+(s=(1-Math.sin(.5*s+Math.PI/2))*Math.PI))+.5*Math.pow(o,s)):1;a=this.tileSizePx/r.length()/i,o=Math.ceil(-Math.log(a)/Math.log(2)-this.bias),o=Math.max(o,0);return o=Math.min(o,void 0===this.maxDepth?1/0:this.maxDepth),this.zoomLevel=o,n?void 0:(this.addToSceneGroup(t),this.baseTile.update(this,e,o,this.mapSizeM,0,0,""))}}},{key:"isTileVisible",value:function(e,t,n){return 21e6<t||(t=.5*t,this.transformMapToLocal.forward(e),this.isTileVisibleBox.makeEmpty(),this.isTileVisibleVec.set(e.x-t,e.y-t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x-t,e.y+t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x+t,e.y-t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x+t,e.y+t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),n.intersectsBox(this.isTileVisibleBox))}},{key:"addToSceneGroup",value:function(e){this.objectGroupAdded||(e.add(this.objectGroup),this.objectGroupAdded=!0)}},{key:"removeFromSceneGroup",value:function(e){this.baseTile.remove(),this.objectGroupAdded&&(e.remove(this.objectGroup),this.objectGroupAdded=!1)}}])}();function Iv(t){var e;t.map.loadingInProgress<t.map.maxLoading?t.mesh&&(t.map.mapLayer.loadingInProgress++,t.map.loadingInProgress++,t.map.mapLayer.dispatchEvent("startLoad"),t.loading=!0,-1<(e=t.map.mapLayer.waitQueue.indexOf(t))&&t.map.mapLayer.waitQueue.splice(e,1),(e=t.mesh.material.map=wv.load(t.texURL,function(e){t.mesh?(t.textureLoaded=!0,t.mesh.material.opacity=1,t.map.mapLayer.viewer.mapChanged=!0,t.map.mapLayer.needUpdate=!0,t.map instanceof $v&&(t.map.maxLoading=vf.isMobile()?5:10)):e.dispose(),Sv(t)},void 0,function(){t.textureLoaded=!0,t.mesh&&(t.mesh.material.dispose(),t.mesh.material=Cv,t.map.mapLayer.viewer.mapChanged=!0),Sv(t),t.map.loadFailCount++,t.map instanceof $v&&"google"==Potree.settings.mapCompany&&3<t.map.loadFailCount&&(t.map.maxLoading=2)})).anisotropy=0,e.generateMipmaps=!1,e.minFilter=N,e.magFilter=N):t.map.mapLayer.waitQueue.includes(t)||t.map.mapLayer.waitQueue.push(t)}function kv(e){var t;e.loading||-1<(t=e.map.mapLayer.waitQueue.indexOf(e))&&e.map.mapLayer.waitQueue.splice(t,1)}var Rv,Lv,Fv,Ov,Uv,Nv,zv,Gv,Hv,Vv,Qv,jv,Wv,Jv,qv,Yv,Xv,Kv,Zv=function(){function f(e,t,n,i,r){ue(this,f),this.map=e,this.name=r,this.parent=i,this.objectGroup=t,this.tileColor=n,this.meshAdded=!1,this.textureLoaded=!1,this.children=[],this.id=_v()}return A(f,[{key:"update",value:function(e,t,n,i,r,a,o){return!!this.doesNotContainTilesToBeDisplayed(e)||(0===n?this.updateTile(e,i,r,a):this.updateSubTiles(e,t,n,i,r,a,o))}},{key:"doesNotContainTilesToBeDisplayed",value:function(e){return e.tilePresenceMap&&e.tilePresenceMap.empty}},{key:"updateTile",value:function(e,t,n,i){return this.mesh||this.createTileObject(e,t,n,i),this.meshAdded||(this.objectGroup.add(this.mesh),this.meshAdded=!0),this.textureLoaded?this.removeChildren():this.cancelChildren(),this.textureLoaded}},{key:"updateSubTiles",value:function(e,t,n,i,r,a,o){for(var s=!0,l=[-.25*i,.25*i,-.25*i,.25*i],u=[.25*i,.25*i,-.25*i,-.25*i],c=0;c<4;++c){var d,h,p=o+c.toString(10);e.tilePresenceMap&&!e.tilePresenceMap[p]||(bv.set(h=r+l[c],d=a+u[c],0),this.map.computeCount++,e.isTileVisible(bv,.5*i,t)?(this.children[c]||(this.children[c]=new f(this.map,this.objectGroup,this.tileColor,this,this.name+c)),h=this.children[c].update(e,t,n-1,.5*i,h,d,p),s=s&&h):this.children[c]&&(this.children[c].remove(),delete this.children[c]))}return s&&this.removeObject3D(),s}},{key:"createTileObject",value:function(e,t,n,i){this.mesh=this.createMesh(e.transformMapToLocal,t,n,i),this.textureLoaded=!1;var r=e.mapSizeM/t,a=Math.log(r)/Math.log(2),n=n/t+.5*(r-1),i=-i/t+.5*(r-1),t=e.getTileUrl(Math.round(a),Math.round(n),Math.round(i));Potree.Utils.setObjectLayers(this.mesh,"map"),this.mesh.renderOrder=-(1e6-a-100*(e.zIndex||0)),this.mesh.name=this.name,this.texURL=t,Iv(this)}},{key:"createMesh",value:function(e,t,n,i){var r=new Wl;return bv.set(n-t/2,i-t/2,0),r.vertices.push((new Oe).copy(e.forward(bv))),bv.set(n+t/2,i-t/2,0),r.vertices.push((new Oe).copy(e.forward(bv))),bv.set(n+t/2,i+t/2,0),r.vertices.push((new Oe).copy(e.forward(bv))),bv.set(n-t/2,i+t/2,0),r.vertices.push((new Oe).copy(e.forward(bv))),r.faces.push(xv),r.faces.push(Ev),r.faceVertexUvs[0].push(Bv),r.faceVertexUvs[0].push(Mv),new Q(r,this.createMaterial())}},{key:"createMaterial",value:function(){var e,t=new R({transparent:!0,depthWrite:!1,depthTest:!0,opacity:0,side:ve});return Potree.settings.isTest?(e=Math.random(),t.color=(new Se).setHSL(e,.6,.92)):t.color=this.tileColor||new Se(16777215),t}},{key:"traverse",value:function(e){return Q.prototype.traverse.call(this,e)}},{key:"remove",value:function(){this.removeObject3D(),this.removeChildren()}},{key:"removeObject3D",value:function(){var e;this.mesh;this.mesh&&(this.objectGroup.remove(this.mesh),this.textureLoaded?(e=this.mesh.material.map)&&e.dispose():kv(this),this.mesh.material.dispose(),this.mesh.geometry.dispose(),this.mesh=void 0),this.meshAdded=!1,this.textureLoaded=!1}},{key:"removeChildren",value:function(){for(var e=0,t=this.children;e<t.length;e++){var n=t[e];n&&(n.removeObject3D(),n.removeChildren())}this.children.length=0}},{key:"cancelChildren",value:function(){for(var e=0,t=this.children;e<t.length;e++){var n=t[e];n&&(kv(n),n.cancelChildren())}}}])}(),$v=(proj4.defs("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),function(){function n(e,t){return ue(this,n),(e=le(this,n,["map",e,t])).switchStyle(),e.tileSizePx=256,e.mapSizeM=40075017,e.bias=.5,"google"==Potree.settings.mapCompany?(e.attribution="© PopSmart, © 谷歌地图",e.projection="EPSG:900913"):(e.attribution="© PopSmart, © 高德地图",e.projection="EPSG:3857"),e}return v(n,Dv),A(n,[{key:"getTileUrl",value:function(e,t,n){return this.baseUrl.replace(/\${z}/,e.toString(10)).replace(/\${x}/,t.toString(10)).replace(/\${y}/,n.toString(10))}},{key:"switchStyle",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"standard";e!=this.style&&("google"==Potree.settings.mapCompany?(this.baseUrl="satellite"==e?"https://mt2.google.com/vt/lyrs=y@159000000&hl=zh-CN&gl=cn&x=${x}&y=${y}&z=${z}&s=mt1":"https://mt2.google.com/vt/lyrs=m@159000000&hl=zh-CN&gl=cn&x=${x}&y=${y}&z=${z}&s=mt1",this.maxDepth=22):Potree.settings.isJiangMen?"satellite"==e?(this.maxDepth=18,this.baseUrl="http://a.map.jms.gd/tile/weixing/${z}/${x}/${y}.png"):(this.maxDepth=19,this.baseUrl="http://a.map.jms.gd/tile/gd_xiangtu/${z}/${x}/${y}.png"):"satellite"==e?(this.maxDepth=18,this.baseUrl="https://webst01.is.autonavi.com/appmaptile?lang=zh_cn&style=6&yrs=m&x=${x}&y=${y}&z=${z}"):(this.maxDepth=19,this.baseUrl="https://wprd04.is.autonavi.com/appmaptile?lang=zh_cn&style=7&yrs=m&x=${x}&y=${y}&z=${z}"),this.style=e,this.setEnable(!1),this.setEnable(!0),viewer.dispatchEvent("content_changed"))}}])}()),eg=function(){function i(e,t,n){ue(this,i);t=(e=le(this,i,["floorplan",e,t,"LOCAL"])).tiledMapEntity=e.fillFromData(n),n=t.updateTime||t.createTime;return e.tileSizePx=t.tileSizePx,e.mapSizeM=t.mapSizeM,e.maxDepth=t.maxDepth,e.postStamp=n?n.replace(/[^0-9]/gi,""):(new Date).getTime(),e.zIndex=0,e.tilePresenceMap=e.decodeBitStream(e.tiledMapEntity.quadtree),e.maxLoading=5,e.bias=.5,2<=window.devicePixelRatio&&window.innerHeight*window.innerWidth<786432&&(e.bias=0),e}return v(i,Dv),A(i,[{key:"fillFromData",value:function(t){var e={},n=(e.id=t.id,e.globalLocation=Potree.Utils.VectorFactory.fromArray3(t.location),e.orientation=Potree.Utils.QuaternionFactory.fromArray(t.orientation),viewer.scene.pointclouds.find(function(e){return e.dataset_id==t.datasetId}));return n.datasetData.mapping?e.filePath="".concat(Potree.settings.urls.prefix1,"/").concat(n.datasetData.mapping).concat(t.file_path):e.filePath="".concat(Potree.settings.urls.prefix1).concat(t.file_path),e.fileName="$DEPTH/$X/$Y.png",e.type=t.type,e.mapSizeM=t.map_size_m,e.tileSizePx=t.tile_size_px,e.maxDepth=t.max_depth,e.quadtree=t.quadtree,e.floorId=t.floor_id,e.bundleId=t.bundle_id,e}},{key:"computeLocalCoordinates",value:function(){var e;proj4.defs("LOCAL_MAP")&&(e=this.tiledMapEntity.globalLocation,e=viewer.transform.lonlatToLocal.forward(e),this.tiledMapEntity.location=(new Oe).copy(e))}},{key:"updateProjection",value:function(){I(i,"updateProjection",this,3)([]),this.position||this.computeLocalCoordinates()}},{key:"position",get:function(){return this.tiledMapEntity.location}},{key:"quaternion",get:function(){return this.tiledMapEntity.orientation}},{key:"getTileUrl",value:function(e,t,n){return(this.tiledMapEntity.filePath+"/"+this.tiledMapEntity.fileName).replace(/\$DEPTH/g,e.toString(10)).replace(/\$X/g,t.toString(10)).replace(/\$Y/g,n.toString(10))+("?t="+this.postStamp)}},{key:"decodeBitStream",value:function(e){if(!e)return{empty:!0};for(var t={},n=[t],i=0;i<e.length;i++){var r,a=n.shift(),o=parseInt(e.substr(i,1),16);1&o&&(a[0]=r={},n.push(r)),2&o&&(a[1]=r={},n.push(r)),4&o&&(a[2]=r={},n.push(r)),8&o&&(a[3]=r={},n.push(r))}var s={empty:!0};return this.computeHashes(s,t,""),s}},{key:"computeHashes",value:function(e,t,n){for(var i=0;i<4;i++)t[i]&&(e[n+i.toString(10)]=!0,e.empty=!1,this.computeHashes(e,t[i],n+i.toString(10)))}}])}(),tg=Potree.defines.Buttons,ng=function(){function e(c,a){function t(e){d.dollyStart.subVectors(e.touches[0].pointer,e.touches[1].pointer),e.drag.camDisToPointStart=null}function n(e){var t,n,i,r;d.pointerDragStart=e.pointer.clone(),"mainViewer"==e.viewer.name&&(t=e.intersect||e.dragViewport.lastIntersect,(n=Potree.settings.rotAroundPoint&&"OrthographicCamera"!=e.dragViewport.camera.type&&(0==c.atDatasets.length||t)&&d.canMovePos(a)&&!c.images360.isAtPano()&&!d.viewer.inputHandler.pressedKeys[32])&&((r="target"==(r=d.target?"target":0<c.atDatasets.length?"intersect":c.inputHandler.selection.length?"selection":d.target2?"target2":"boundCenter")?d.target:"intersect"==r?t.location:"selection"==r?c.inputHandler.selection[0].position:"target2"==r?d.target2:c.bound&&c.bound.center)?i=r.clone().project(e.dragViewport.camera):n=!1),d.rotateStartInfo={rotAroundPoint:n,rotCenter:r,rotCenter2d:i})}function i(e){d.pointerDragStart=e.pointer.clone(),e.drag.z=void 0,r(e)}ue(this,e),(d=le(this,e)).viewer=c,d.renderer=c.renderer,d.scene=c.scene,d.rotationSpeed=200,d.moveSpeed=10,d.setCurrentViewport({hoverViewport:a,force:!0}),d.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["Q".charCodeAt(0)],DOWN:["E".charCodeAt(0)],ALT:[18],SPACE:[32],Rotate_LEFT:["L".charCodeAt(0)],Rotate_RIGHT:["J".charCodeAt(0)],Rotate_UP:["K".charCodeAt(0)],Rotate_DOWN:["I".charCodeAt(0)]},d.fadeFactor=20,d.yawDelta=0,d.pitchDelta=0,d.translationDelta=new Oe(0,0,0),d.translationWorldDelta=new Oe(0,0,0),d.tweens=[],d.dollyStart=new Re,d.dollyEnd=new Re,d.viewer.addEventListener("camera_changed",function(e){("mapViewer"==d.viewer.name||e.changeInfo&&e.changeInfo.positionChanged&&!c.mainViewport.view.isFlying())&&d.setFPCMoveSpeed(e.viewport)});var d,r=function(e){if(d.enabled){var t=e.dragViewport;if(t){var n=t.camera,i=e.isTouch?1==e.touches.length?e.dragViewport&&"MainView"!=e.dragViewport.name?"pan":"rotate":2==e.touches.length?"showPanos"==Potree.settings.displayMode?"scale":"pan-scale":e.dragViewport&&"MainView"!=e.dragViewport.name?"scale":"pan":e.buttons===tg.LEFT&&"OrthographicCamera"!=n.type?"rotate":"pan";d.currentViewport.getMoveSpeed();if(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,d.dispatchEvent({type:"start"})),i.includes("rotate")){if(!d.pointerDragStart)return d.pointerDragStart=e.pointer.clone();var r=d.scene.view;d.rotateStartInfo.rotAroundPoint?(u=n.position.distanceTo(d.rotateStartInfo.rotCenter),(new Oe).subVectors(d.rotateStartInfo.rotCenter,r.position).dot(r.direction)<0&&(u*=-1),d.yawDelta-=2*e.drag.pointerDelta.x,d.pitchDelta+=2*e.drag.pointerDelta.y,d.update(),r.applyToCamera(n),u=c.inputHandler.getMouseDirection(d.rotateStartInfo.rotCenter2d).direction.clone().multiplyScalar(u),u=(new Oe).addVectors(n.position,u),u=(new Oe).subVectors(u,d.rotateStartInfo.rotCenter),d.translationWorldDelta.copy(u.negate()),d.update(),r.applyToCamera(n)):(u=n.matrixWorld,n.matrixWorld=new Me,r=new Oe(d.pointerDragStart.x,d.pointerDragStart.y,-1).unproject(n),o=new Oe(e.pointer.x,e.pointer.y,-1).unproject(n),s=Math.sqrt(r.x*r.x+r.z*r.z),l=Math.sqrt(o.x*o.x+o.z*o.z),s=Math.atan2(r.y,s),l=Math.atan2(o.y,l),d.pitchDelta+=s-l,r.y=0,o.y=0,s=Math.acos(r.dot(o)/r.length()/o.length()),isNaN(s)||(l=s,d.pointerDragStart.x>e.pointer.x&&(l*=-1),d.yawDelta+=l),d.pointerDragStart.copy(e.pointer),n.matrixWorld=u)}if(i.includes("pan")){if(!d.canMovePos(t))return;if("OrthographicCamera"==n.type){var a,r=ne.getOrthoCameraMoveVec(e.drag.pointerDelta,n),o=window.viewer.modules.Alignment,s=window.viewer.modules.MergeEditor,l=o.handleState,u=e.buttons===tg.LEFT&&t.alignment&&l&&t.alignment[l];if("pano"==Potree.settings.editType){var o=window.viewer.modules.PanoEditor;if(u&&o.selectedPano&&(o.checkIfAllLinked({group:o.selectedGroup})?(o.dispatchEvent("needToDisConnect"),console.warn("选中的漫游点连通了整个数据集,不允许移动")):("translate"==l&&(e.drag.intersectStart.pointclouds&&j.getMixedSet(o.selectedClouds,e.drag.intersectStart.pointclouds).length||o.selectedPano.hovered)||"rotate"==l)&&(a=o.selectedClouds)),!a&&e.buttons===tg.LEFT&&t.rotateSide)return o.rotateSideCamera(-e.drag.pointerDelta.x)}else if("merge"==Potree.settings.editType){if(e.buttons===tg.LEFT&&t.rotateSide)return s.rotateSideCamera(-e.drag.pointerDelta.x)}else u&&e.drag.intersectStart.pointcloud&&(a=[e.drag.intersectStart.pointcloud],e.drag.intersectStart.pointcloud.dataset_id==Potree.settings.originDatasetId)&&(o=e.drag.intersectStart.pointclouds.find(function(e){return e.dataset_id!=Potree.settings.originDatasetId}))&&(a=[o]);a?("translate"==l&&t.alignment.translateVec&&r.projectOnVector(t.alignment.translateVec),d.dispatchEvent({type:"transformPointcloud",intersect:e.intersect.orthoIntersect,intersectStart:e.drag.intersectStart.orthoIntersect,moveVec:r,pointclouds:a,camera:n})):d.translationWorldDelta.add(r.negate())}else e.drag.intersectStart?(s=null==e.drag.z,u=e.drag.intersectStart.location.clone().project(n),e.drag.z=u.z,s&&(e.drag.projectionMatrixInverse=n.projectionMatrixInverse.clone(),o=new Oe(d.pointerDragStart.x,d.pointerDragStart.y,e.drag.z),e.drag.translateStartPos=o.clone().unproject(n)),l=n.projectionMatrixInverse,n.projectionMatrixInverse=e.drag.projectionMatrixInverse,a=new Oe(e.pointer.x,e.pointer.y,e.drag.z).clone().unproject(n).clone().sub(e.drag.translateStartPos),n.projectionMatrixInverse=l,d.translationWorldDelta.copy(a.negate())):((r=d.target||t.lastIntersect&&(t.lastIntersect.location||t.lastIntersect))&&r instanceof Oe||(r=c.bound.center),u=n.position.distanceTo(r),s=Mf.getHFOVForCamera(n,!0),o=u*Math.tan(s/2),d.translationDelta.x-=e.drag.pointerDelta.x*o,d.translationDelta.z-=e.drag.pointerDelta.y*o);d.useAttenuation=!1}i.includes("scale")&&(d.dollyEnd.subVectors(e.touches[0].pointer,e.touches[1].pointer),l=d.dollyEnd.length()/d.dollyStart.length(),a=(new Re).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5),h({pointer:a,scale:l,camera:n,drag:e.drag}),d.dollyStart.copy(d.dollyEnd))}}},h=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if("showPanos"!=Potree.settings.displayMode||d.currentViewport!=c.mainViewport){var t=e.camera;if("OrthographicCamera"==t.type){if(null!=e.delta){if(0==e.delta)return;e.delta<0?n=.9:0<e.delta&&(n=1.12)}else n=e.scale;var n=t.zoom*n,i=t.zoomLimit,i=(i&&(n=Be.clamp(n,i.min,i.max)),new Oe(e.pointer.x,e.pointer.y,.5)),r=i.clone().unproject(t),n=(t.zoom!=n&&(t.zoom=n,t.updateProjectionMatrix()),i.clone().unproject(t)),i=(new Oe).subVectors(n,r);d.translationWorldDelta.add(i.negate()),d.useAttenuation=!1}else{n=7*d.currentViewport.getMoveSpeed();if(null!=e.delta){if(0==e.delta)return;var a=d.viewer.inputHandler.getMouseDirection().direction;e.intersect&&e.intersect.location&&(r=t.position.distanceTo(e.intersect.location),n=Be.clamp(.1*r,.3,n)),e.delta<0&&(n*=-1),d.keys.ALT.some(function(e){return d.viewer.inputHandler.pressedKeys[e]})&&(n*=.2),d.useAttenuation=!0}else a=d.viewer.inputHandler.getMouseDirection(e.pointer).direction,n=e.drag.intersectStart?(i=t.position.distanceTo(e.drag.intersectStart.location),r=1-1/e.scale,t=.1,te.closeTo(e.scale,1,.03)&&(t=0),t=te.linearClamp(i,[2,5],[t,.001]),Math.sign(r)*Be.clamp(i*Math.abs(r),t,n)):(d.useAttenuation=!0,i=40,te.closeTo(e.scale,1,.02)&&(i*=Math.min(40*Math.abs(e.scale-1),.8)),r=d.currentViewport.getMoveSpeed()*i,(e.scale-1)*r);t=a.multiplyScalar(n);d.translationWorldDelta.add(t)}return!0}d.dispatchEvent({type:"dollyStopCauseUnable",delta:e.delta,scale:e.scale})};d.viewer.addEventListener("global_drag",r),d.viewer.addEventListener("global_drop",function(e){d.enabled&&d.dispatchEvent({type:"end"})}),d.viewer.addEventListener("global_mousewheel",function(e){d.enabled&&e.hoverViewport&&(d.setCurrentViewport(e),e.camera=e.hoverViewport.camera,h(e))}),d.viewer.addEventListener("global_dblclick",function(e){d.enabled&&Potree.settings.dblToFocusPoint&&"showPointCloud"==Potree.settings.displayMode&&d.zoomToLocation(e.mouse)});return d.viewer.addEventListener("global_mousedown",function(e){d.enabled&&(d.setCurrentViewport(e),n(e))}),d.viewer.addEventListener("global_touchstart",function(e){d.enabled&&(2==e.touches.length?(t(e),i(e)):3<=e.touches.length&&i(e))}),d.viewer.addEventListener("global_touchend",function(e){d.enabled&&(2==e.touches.length?(t(e),i(e)):1==e.touches.length?n(e):3<=e.touches.length&&i(e))}),d}return v(e,Qn),A(e,[{key:"canMovePos",value:function(e){return e!=viewer.mainViewport||"showPanos"!=Potree.settings.displayMode&&!viewer.images360.bumping&&!viewer.images360.latestToPano}},{key:"setEnable",value:function(e){this.enabled=e}},{key:"setTarget",value:function(e,t){2==t?this.target2=e:this.target=e}},{key:"setFPCMoveSpeed",value:function(e){if("OrthographicCamera"==e.camera.type){var t=1/e.camera.zoom;e.setMoveSpeed(t)}else if(e==viewer.mainViewport&&viewer.images360){t=viewer.mainViewport.view.position,e=viewer.images360.findNearestPano();if(e)var e=e.position.distanceTo(t),n=e<=3?.05:.05+.005*(e-3);else{if(!viewer.bound||0==viewer.bound.boundSize.x)return;t=viewer.bound.boundingBox.clone();t.max.z=t.min.z,n=t.distanceToPoint(viewer.mainViewport.view.position),n=Math.sqrt(n)/50}viewer.setMoveSpeed(2*n)}}},{key:"setCurrentViewport",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};(this.enabled||e.force)&&(e.hoverViewport&&this.currentViewport!=e.hoverViewport&&(this.currentViewport=e.hoverViewport,this.setFPCMoveSpeed(this.currentViewport)),"OrthographicCamera"==this.currentViewport.camera.type?(this.lockElevationOri=!0,this.lockRotation=!0):(this.lockElevationOri=!1,this.lockRotation=!1))}},{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.translationDelta.set(0,0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u,c,d,h,p=this;this.enabled&&(r=this.scene.getActiveCamera(),t=this.viewer.inputHandler.intersect)&&(i=0,this.renderer.domElement,r=ne.mouseToRay(this.viewer.inputHandler.pointer,r),o=(n=this.viewer.inputHandler.getMouseDirection()).origin,n=n.direction,(a=new bh).ray.set(o,n),o=t.pointcloud.nodesOnRay(t.pointcloud.visibleNodes,r),t.pointcloud.nodesOnRay(t.pointcloud.visibleNodes,a.ray),n=o[o.length-1].getBoundingSphere(new bi).radius,i=Math.min(this.scene.view.radius,n),i=Math.max(.2,i),r=this.scene.view.direction.multiplyScalar(-1),a=(new Oe).addVectors(t.location,r.multiplyScalar(i)),o=TWEEN.Easing.Quartic.Out,s={x:0},(l=new TWEEN.Tween(s).to({x:1},600)).easing(o),this.tweens.push(l),u=this.scene.view.position.clone(),c=a.clone(),d=this.scene.view.radius,h=a.distanceTo(t.location),l.onUpdate(function(){var e=s.x;p.scene.view.position.x=(1-e)*u.x+e*c.x,p.scene.view.position.y=(1-e)*u.y+e*c.y,p.scene.view.position.z=(1-e)*u.z+e*c.z,p.scene.view.radius=(1-e)*d+e*h,p.viewer.setMoveSpeed(p.scene.view.radius/2.5)}),l.onComplete(function(){p.tweens=p.tweens.filter(function(e){return e!==l})}),l.start())}},{key:"update",value:function(){var e,t,n,i,r,a,o,s,l,u,c,d,h,p=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;this.enabled&&(e=this.currentViewport.view,[this.yawDelta,this.pitchDelta,this.translationDelta.length(),this.translationWorldDelta.length()].some(function(e){return.001<Math.abs(e)})&&0<this.tweens.length&&(this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]),t=this.viewer.inputHandler,n=this.keys.FORWARD.some(function(e){return t.pressedKeys[e]}),i=this.keys.BACKWARD.some(function(e){return t.pressedKeys[e]}),r=this.keys.LEFT.some(function(e){return t.pressedKeys[e]}),a=this.keys.RIGHT.some(function(e){return t.pressedKeys[e]}),o=this.keys.UP.some(function(e){return t.pressedKeys[e]}),s=this.keys.DOWN.some(function(e){return t.pressedKeys[e]}),u=this.keys.Rotate_LEFT.some(function(e){return t.pressedKeys[e]}),c=this.keys.Rotate_RIGHT.some(function(e){return t.pressedKeys[e]}),d=this.keys.Rotate_UP.some(function(e){return t.pressedKeys[e]}),h=this.keys.Rotate_DOWN.some(function(e){return t.pressedKeys[e]}),this.lockElevation=this.lockElevationOri||this.keys.SPACE.some(function(e){return t.pressedKeys[e]}),l=this.keys.ALT.some(function(e){return t.pressedKeys[e]}),this.lockRotation||(u?this.yawDelta-=.01:c&&(this.yawDelta+=.01),d?this.pitchDelta-=.01:h&&(this.pitchDelta+=.01)),this.canMovePos(this.currentViewport)&&!this.lockKey&&(this.lockElevation?((u=e.direction).z=0,u.normalize(),n&&i?this.translationWorldDelta.set(0,0,0):n?this.translationWorldDelta.copy(u.multiplyScalar(this.currentViewport.getMoveSpeed())):i&&this.translationWorldDelta.copy(u.multiplyScalar(-this.currentViewport.getMoveSpeed()))):n&&i?this.translationDelta.y=0:n?this.translationDelta.y=this.currentViewport.getMoveSpeed()*(l?.2:1):i&&(this.translationDelta.y=-this.currentViewport.getMoveSpeed()*(l?.2:1)),r&&a?this.translationDelta.x=0:r?this.translationDelta.x=-this.currentViewport.getMoveSpeed():a&&(this.translationDelta.x=this.currentViewport.getMoveSpeed()),o&&s?this.translationWorldDelta.z=0:o?this.translationWorldDelta.z=this.currentViewport.getMoveSpeed():s&&(this.translationWorldDelta.z=-this.currentViewport.getMoveSpeed()),o||s||n||i)&&(this.useAttenuation=!1),c=e.yaw,d=e.pitch,c+=this.yawDelta,d+=this.pitchDelta,e.yaw=c,e.pitch=d,(this.yawDelta||this.pitchDelta)&&e.cancelFlying("rotate"),this.yawDelta=0,this.pitchDelta=0,e.translate(this.translationDelta.x,this.translationDelta.y,this.translationDelta.z),this.translationDelta.set(0,0,0),e.translateWorld(this.translationWorldDelta.x,this.translationWorldDelta.y,this.translationWorldDelta.z),this.useAttenuation?(h=Math.max(0,1-this.fadeFactor*p),this.translationWorldDelta.multiplyScalar(h)):this.translationWorldDelta.set(0,0,0))}}])}(),ig=Potree.defines.Buttons,rg=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).viewer=e,n.renderer=e.renderer,n.domElement=n.renderer.domElement,n.enabled=!0,n.scene=t,n.interactiveScenes=[],n.interactiveObjects=new Set,n.inputListeners=[],n.blacklist=new Set,n.drag=null,n.mouse=new Re(0,0),n.pointer=new Re(0,0),n.mouseDownMouse=new Re(0,0),n.selection=[],n.hoveredElements=[],n.pressedKeys={},n.wheelDelta=0,n.speed=1,n.logMessages=!1,-1===n.domElement.tabIndex&&(n.domElement.tabIndex=2222),n.lastPointerUpTime=0,n.touches=[],n.interactHistory={move:0},n.hoverViewport=e.viewports[0],n.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),n.domElement.addEventListener("click",n.onMouseClick.bind(n),!1),n.domElement.addEventListener("mousedown",n.onMouseDown.bind(n),!1),window.addEventListener("mouseup",n.onMouseUp.bind(n),!1),Potree.isIframeChild&&window.addEventListener("mouseout",n.onMouseUp.bind(n),!1),n.domElement.addEventListener("mouseout",function(){n.containsMouse=!1},!1),n.domElement.addEventListener("mousemove",n.onMouseMove.bind(n),!1),n.domElement.addEventListener("mousewheel",n.onMouseWheel.bind(n),!1),n.domElement.addEventListener("DOMMouseScroll",n.onMouseWheel.bind(n),!1),window.addEventListener("keydown",n.onKeyDown.bind(n)),window.addEventListener("keyup",n.onKeyUp.bind(n)),window.addEventListener("blur",n.onKeyUp.bind(n)),n.domElement.addEventListener("touchstart",n.onTouchStart.bind(n)),n.domElement.addEventListener("touchend",n.onTouchEnd.bind(n)),n.domElement.addEventListener("touchmove",n.onTouchMove.bind(n)),n.measuring=[],n.addEventListener("measuring",function(e){e.v?n.measuring.includes(e.object)||n.measuring.push(e.object):-1<(e=n.measuring.indexOf(e.object))&&n.measuring.splice(e,1),0==n.measuring.length&&0<n.measuring.length&&n.viewer.viewports.forEach(function(e){n.collectClosePoints(e,!0)})}),window.viewer.addEventListener("loopStart",function(){n.interactHistory={}}),n}return v(i,Qn),A(i,[{key:"updateTouchesInfo",value:function(e){var i,r,a=this,n=this.touches,o=Array.from(e.changedTouches),t=Array.from(e.touches);if(this.touches=t.map(function(t){var e=n.find(function(e){return e.touch.identifier==t.identifier}),e=e&&e.pointer;return{touch:t,pointer:e}}),0<e.touches.length)return 0<(t=t.filter(function(t){return!n.some(function(e){return e.touch.identifier==t.identifier})&&!o.some(function(e){return e.identifier==t.identifier})})).length&&console.warn("has new",t.map(function(e){return e.identifier})),t.concat(o).forEach(function(t){var e,n=a.touches.find(function(e){return e.touch.identifier==t.identifier});n&&(e=a.getPointerInViewport(t.pageX,t.pageY,a.dragViewport||i,new Re),n.pointer=e.pointer.clone(),i=e.viewport,r=e.camera)}),1<e.touches.length?(t=j.average(e.touches,"pageX"),e=j.average(e.touches,"pageY"),t=this.getPointerInViewport(t,e,i,new Re),this.pointer.copy(t.pointer)):this.pointer=this.touches[0].pointer.clone(),{viewport:i,camera:r}}},{key:"onTouchStart",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchStart"),e.preventDefault(),this.dealPointerDown(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type,changedTouches:e.changedTouches}))}},{key:"onTouchMove",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchMove"),e.preventDefault(),this.dealPointerMove(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type,changedTouches:e.changedTouches}))}},{key:"onTouchEnd",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchEnd"),e.preventDefault(),this.updateTouchesInfo(e),this.dealPointerUp(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type}))}},{key:"onKeyDown",value:function(e){this.logMessages&&console.log(this.constructor.name+": onKeyDown"),"INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName&&this.containsMouse&&(this.dispatchEvent({type:"keydown",keyCode:e.keyCode,event:e}),this.pressedKeys[e.keyCode]=!0)}},{key:"onKeyUp",value:function(e){this.logMessages&&console.log(this.constructor.name+": onKeyUp"),null!=e.keyCode?delete this.pressedKeys[e.keyCode]:this.pressedKeys={},e.preventDefault()}},{key:"onDoubleClick",value:function(e){this.logMessages&&console.log(this.constructor.name+": onDoubleClick");var t,n=!1,i=q(this.hoveredElements);try{for(i.s();!(t=i.n()).done;){var r=t.value;if(r._listeners&&r._listeners.dblclick){r.object.dispatchEvent({type:"dblclick",mouse:this.mouse,object:r.object}),n=!0;break}}}catch(e){i.e(e)}finally{i.f()}n||this.viewer.dispatchEvent({type:"global_dblclick",mouse:this.mouse,object:null}),this.needSingleClick=!1,e.preventDefault()}},{key:"onMouseClick",value:function(e){this.logMessages&&console.log(this.constructor.name+": onMouseClick"),e.preventDefault()}},{key:"dealPointerDown",value:function(e,t){var n,i;if(e.preventDefault(),t?((n=this.updateTouchesInfo(e)).camera,n=n.viewport,this.drag&&(this.drag.end=this.pointer.clone())):((i=this.getPointerInViewport(e.clientX,e.clientY)).camera,n=i.viewport),this.dragViewport=this.hoverViewport=n,(t||!this.dragViewport.view.isFlying()&&Potree.settings.intersectWhenHover&&"pano"!=Potree.settings.editType)&&(this.hoveredElements=this.getHoveredElements(),this.intersect=this.getIntersect({viewport:n,dontIntersect:!1,clientX:e.clientX,clientY:e.clientY})),n){if(this.drag||((i=(t||e.button==oe.LEFT)&&this.hoveredElements.find(function(e){return e.object._listeners&&e.object._listeners.drag&&0<e.object._listeners.drag.length}))?this.startDragging(i.object,{location:i.point}):this.startDragging(null)),this.drag.intersectStart=this.intersect,!t||1==e.touches.length){var r,a=!1,o=function(){return a=!0},s=(this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mousedown"})),q(this.hoveredElements));try{for(s.s();!(r=s.n()).done;)if(r.value.object.dispatchEvent({type:"mousedown",viewer:this.viewer,consume:o}),a)break}catch(e){s.e(e)}finally{s.f()}}this.mouseDownMouse=this.mouse.clone(),this.pointerDownTime=Date.now()}}},{key:"onMouseDown",value:function(e){this.logMessages&&console.log(this.constructor.name+": onMouseDown"),this.dealPointerDown(e)}},{key:"getEventDesc",value:function(e,t){var n={viewer:this.viewer,mouse:this.mouse,pointer:this.pointer,drag:this.drag,isTouch:t,dragViewport:this.dragViewport,hoverViewport:this.hoverViewport,hoveredElement:this.hoveredElements[0],intersect:this.intersect};return e&&(n.isAtDomElement=e.target==this.domElement),t?n.touches=this.touches:e&&(n.button=e.button,n.buttons=e.buttons),n}},{key:"dealPointerUp",value:function(e,t){var n,i,r,a,o,s,l,u,c,d=this;this.drag&&(this.drag.end.copy(this.pointer),t&&1<=e.touches.length||(n=Date.now(),this.logMessages&&console.log(this.constructor.name+": onMouseUp"),e.preventDefault(),i=this.mouseDownMouse.distanceTo(this.mouse),r=n-this.pointerDownTime,this.drag.pointerDelta.length(),a=function(){return!0},this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mouseup",pressDistance:i,consume:a})),0<this.hoveredElements.length&&(u=this.hoveredElements.map(function(e){return e.object}).find(function(e){return e._listeners&&e._listeners.mouseup}))&&u.dispatchEvent({type:"mouseup",viewer:this.viewer,consume:a}),this.drag&&(this.drag.object?(this.logMessages&&console.log("".concat(this.constructor.name,": drop ").concat(this.drag.object.name)),this.drag.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"drop",pressDistance:i}))):this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_drop",pressDistance:i})),i<Potree.config.clickMaxDragDis&&r<Potree.config.clickMaxPressTime&&!e.unableClick&&(o=!1,this.hoveredElements&&(l=this.hoveredElements.find(function(e){return e.object._listeners.click}))&&(this.logMessages&&console.log("".concat(this.constructor.name,": click ").concat(l.name)),l.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"click",pressDistance:i,cancel:function(){return s=!0}})),s)&&(l=null),this.fixSelection||(e.button===oe.LEFT?(u=this.hoveredElements.find(function(e){return e.object._listeners&&e.object._listeners.select}))?(u=u.object,this.isSelected(u)?this.deselectAll():(this.deselectAll(),this.toggleSelection(u)),o=!0):(0<this.selection.length&&(o=!0),this.deselectAll()):e.button===oe.RIGHT&&this.deselectAll()),c=this.getEventDesc(e,t),o||this.viewer.dispatchEvent($.extend(c,{type:"global_click",pressDistance:i,clickElement:l,consume:function(){return o=!0}})),this.needSingleClick=!0,o||setTimeout(function(){d.needSingleClick&&d.viewer.dispatchEvent($.extend(c,{type:"global_single_click",pressDistance:i,clickElement:l}))},Potree.config.doubleClickTime+1),n-this.lastClickTime<Potree.config.doubleClickTime&&this.onDoubleClick(e),this.lastClickTime=n),this.drag=null),this.dragViewport=null))}},{key:"onMouseUp",value:function(e){this.dealPointerUp(e)}},{key:"getPointerInViewport",value:function(e,t,n,o){function i(e){var t=Math.ceil(u.domElement.clientWidth*e.left),n=Math.ceil(u.domElement.clientHeight*e.bottom),i=Math.ceil(u.domElement.clientWidth*e.width),e=Math.ceil(u.domElement.clientHeight*e.height);return{left:t,bottom:n,width:i,height:e,top:u.domElement.clientHeight-n-e}}function r(e,t,n,i,r,a){u.mouse.set(c-t,d-a),ne.convertScreenPositionToNDC(o,u.mouse,i,r),s=e.camera,l=e}var s,l,u=this,a=this.domElement.getBoundingClientRect(),c=e-a.left,d=t-a.top;o=o||this.pointer;if(n){e=i(n),t=e.left;e.bottom;r(n,t,0,e.width,e.height,e.top)}else for(var h=this.viewer.viewports.length,p=0;p<h;p++){var f=this.viewer.viewports[p];if(f.active){var m=i(f),v=m.left,g=(m.bottom,m.width),A=m.height,m=m.top;if(v<=c&&c<=v+g&&m<=d&&d<=m+A){r(f,v,0,g,A,m);break}}}return{camera:s,viewport:l,pointer:o}}},{key:"ifBlockedByIntersect",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.point,n=e.margin,n=void 0===n?0:n,i=e.cameraPos,r=e.pickWindowSize,a=e.pano,o=e.useDepthTex,e=e.viewport||this.hoverViewport||viewer.mainViewport,r=this.getIntersect({viewport:e,onlyGetIntersect:!0,pickWindowSize:r,useDepthTex:o,point:t,cameraPos:i,pano:a}),o=!i&&a?a.position:i||e.view.position;if(r&&r.distance+n<=t.distanceTo(o))return r}},{key:"collectClosePoints",value:function(t,n){var i,r=this;if(Potree.settings.adsorption)return i=[],viewer.scene.measurements.forEach(function(e){r.measuring.includes(e)||i.push.apply(i,Fe(e.getPointsPos2d(t,n)))}),i}},{key:"getIntersect",value:function(){var e,t,n,i,r,a,o,s,l,u,c=this,d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},h=d.viewport,p=d.onlyGetIntersect,f=d.pickWindowSize,m=d.dontIntersect,v=d.usePointcloud,g=d.useDepthTex,A=d.cameraPos,y=d.point,w=d.pano,d=(d.clientX,d.clientY,h.camera);viewer.addTimeMark("getIntersect","start");return this.measuring.length&&Potree.settings.adsorption&&(a=(n=this.collectClosePoints(h)).filter(function(e){return e.trueSide&&e.inSight&&te.closeTo(c.mouse,e.posInViewport,Potree.config.measure.adsorptMinDis)}),i=a.map(function(e){return e.pos.distanceToSquared(c.mouse)}),(a=a.slice().sort(function(e,t){return i[n.indexOf(e)]-i[n.indexOf(t)]}))[0])&&(u={location:a[0].pos3d,object:a[0].object,adsorption:!0},console.log("找到吸附点",a[0].pos3d,a[0].object.uuid)),u||(("showPanos"==Potree.settings.displayMode||g)&&viewer.images360.currentPano.pointcloud.hasDepthTex&&h==viewer.mainViewport&&!v?(l=y?(l=(w||d).position,{dir:(new Oe).subVectors(y,l).normalize()}):ne.getIntersect(d,[viewer.images360.cube],c.pointer,r),(l=viewer.images360.depthSampler.sample(l,w,!!y))&&Potree.settings.depTexLocBindDataset&&(l.pointcloud=(w||viewer.images360.currentPano).pointcloud)):(y&&(A&&d.position.copy(A),d.lookAt(y),d.updateMatrixWorld(),o=c.pointer.clone(),s=c.mouse.clone(),c.pointer.set(0,0),c.mouse.set(Math.round(h.resolution.x/2),Math.round(h.resolution.y/2))),l=h.noPointcloud||m?null:ne.getMousePointCloudIntersection(h,c.mouse,c.pointer,d,c.viewer,c.viewer.scene.pointclouds,{pickClipped:!0,measuring:0<c.measuring.length,pickWindowSize:f,cameraChanged:!!y}),y&&(h.view.applyToCamera(d),c.pointer.copy(o),c.mouse.copy(s))),Potree.settings.intersectOnObjs&&!m&&(y&&(r=new bh,a=(new Oe).subVectors(y,d.position).normalize(),r.set(d.position,a)),(t=this.getHoveredElements(viewer.objs.children,!0,r))[0])&&(g=new ii,(v=t[0].face&&t[0].face.normal)&&t[0].oriObject.matrixWorld.decompose(new Oe,g,new Oe),e={hoveredElement:t[0],location:t[0].point,normal:v&&v.applyQuaternion(g),distance:t[0].distance,object:t[0].object}),u=l&&e?l.distance<e.distance?l:e:e||l),"OrthographicCamera"==h.camera.type&&(w=new Oe(this.pointer.x,this.pointer.y,-1).unproject(h.camera),(u=u||{}).orthoIntersect=w.clone()),u&&(u.allElements=t,u.pointclouds=l?l.pointclouds:[]),viewer.addTimeMark("getIntersect","end"),!p&&(u&&viewer.showCoordType&&(A=u.point.position.toArray(),"local"!=viewer.showCoordType&&(A="lonlat"==viewer.showCoordType?viewer.transform.lonlatToLocal.inverse(A):(A=viewer.transform.lonlatToLocal.inverse(A),viewer.transform.lonlatTo4550.forward(A))),viewer.dispatchEvent({type:"coordinateChange",pos:A})),this.intersect=u)&&(this.hoverViewport.lastIntersect=u),u}},{key:"onMouseMove",value:function(e){return this.dealPointerMove(e)}},{key:"dealPointerMove",value:function(e,t){if(!this.interactHistory.move&&(this.interactHistory.move=1,r=(t?((r=this.updateTouchesInfo(e)).camera,r):((r=this.getPointerInViewport(e.clientX,e.clientY,this.dragViewport)).camera,r)).viewport,this.hoverViewport=r)){var n,i,r,a,o=this.viewer.viewports.some(function(e){return e.view.isFlying()})||viewer.scene.cameraAnimations.some(function(e){return e.onUpdate});if((e.onlyGetIntersect||!this.drag||this.drag.object||r.alignment)&&(i=this.drag&&r.alignment||o||!Potree.settings.intersectWhenHover,i=this.getIntersect(Object.assign({},e,{viewport:r,dontIntersect:i,clientX:e.clientX,clientY:e.clientY}))),e.onlyGetIntersect)return i;e.preventDefault(),this.drag&&(this.drag.mouse=t?1:e.buttons,this.drag.pointerDelta.subVectors(this.pointer,this.drag.end),this.drag.end.copy(this.pointer),r=!1,!this.drag.object||e.buttons!=ig.NONE&&this.drag.notPressMouse||(this.logMessages&&console.log(this.constructor.name+": drag: "+this.drag.object.name),this.drag.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"drag",refuse:function(){n=!0}})),n||(r=!0),viewer.dispatchEvent("content_changed")),r||(this.logMessages&&console.log(this.constructor.name+": drag: "),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_drag"})))),t&&1!=e.touches.length||((!this.drag||this.drag.notPressMouse||Potree.settings.intersectOnObjs&&this.drag.object)&&!o&&(0<(i=this.getHoveredElements()).length&&(r=i.map(function(e){return e.object.name}).join(", "),this.logMessages)&&console.log("".concat(this.constructor.name,": onMouseMove; hovered: '").concat(r,"'")),(r=(o=i.find(function(e){return e.object}))&&o.object)!==(a=this.lastMouseoverElement)&&(r&&(this.logMessages&&console.log("".concat(this.constructor.name,": mouseover: ").concat(r.name)),r.dispatchEvent({type:"mouseover",object:r,hoveredElement:o})),a&&(this.logMessages&&console.log("".concat(this.constructor.name,": mouseleave: ").concat(a.name)),a.dispatchEvent({type:"mouseleave",object:a})),this.lastMouseoverElement=r,viewer.dispatchEvent("content_changed")),0<i.length&&(o=i.map(function(e){return e.object}).find(function(e){return e._listeners&&e._listeners.mousemove}))&&o.dispatchEvent({type:"mousemove",object:o}),this.hoveredElements=i),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mousemove"})),this.containsMouse=!0)}}},{key:"onMouseWheel",value:function(e){var t,n,i=this;this.enabled&&(this.logMessages&&console.log(this.constructor.name+": onMouseWheel"),e.preventDefault(),void(t=0)!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t=Math.sign(t),this.hoverViewport||(n=this.getPointerInViewport(e.clientX,e.clientY).viewport,this.hoverViewport=n),this.hoveredElement?this.hoveredElement.object.dispatchEvent($.extend(this.getEventDesc(e,isTouch),{type:"mousewheel",delta:t,object:this.hoveredElement.object})):this.viewer.dispatchEvent($.extend(this.getEventDesc(e),{type:"global_mousewheel",delta:t})),setTimeout(function(){i.dealPointerMove(e)},1))}},{key:"startDragging",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=e?e.name:"no name";if(this.logMessages&&console.log("".concat(this.constructor.name,": startDragging: '").concat(n,"'")),this.drag={start:this.pointer.clone(),end:this.pointer.clone(),pointerDelta:new Re(0,0),object:e,hoverViewport:this.hoverViewport,dragViewport:this.hoverViewport},t)for(var i=0,r=Object.keys(t);i<r.length;i++){var a=r[i];this.drag[a]=t[a]}e&&e.dispatchEvent($.extend(this.getEventDesc(),{type:"startDragging"}))}},{key:"toggleSelection",value:function(e){var t=this.selection,n=this.selection.indexOf(e);-1===n?(this.selection.push(e),e.dispatchEvent({type:"select"})):(this.selection.splice(n,1),e.dispatchEvent({type:"deselect"})),this.dispatchEvent({type:"selection_changed",oldSelection:t,selection:this.selection}),viewer.dispatchEvent("content_changed")}},{key:"deselect",value:function(e){var t=this.selection,n=this.selection.indexOf(e);0<=n&&(this.selection.splice(n,1),e.dispatchEvent({type:"deselect"}),this.dispatchEvent({type:"selection_changed",oldSelection:t,selection:this.selection})),viewer.dispatchEvent("content_changed")}},{key:"deselectAll",value:function(){var e,t=q(this.selection);try{for(t.s();!(e=t.n()).done;)e.value.dispatchEvent({type:"deselect"})}catch(e){t.e(e)}finally{t.f()}var n=this.selection;0<this.selection.length&&(this.selection=[],this.dispatchEvent({type:"selection_changed",oldSelection:n,selection:this.selection})),viewer.dispatchEvent("content_changed")}},{key:"isSelected",value:function(e){return-1!==this.selection.indexOf(e)}},{key:"registerInteractiveObject",value:function(e){this.interactiveObjects.add(e)}},{key:"removeInteractiveObject",value:function(e){this.interactiveObjects.delete(e)}},{key:"registerInteractiveScene",value:function(e){-1===this.interactiveScenes.indexOf(e)&&this.interactiveScenes.push(e)}},{key:"unregisterInteractiveScene",value:function(e){e=this.interactiveScenes.indexOf(e);-1<e&&this.interactiveScenes.splice(e,1)}},{key:"getHoveredElement",value:function(){var e=this.getHoveredElements();return 0<e.length?e[0]:null}},{key:"getHoveredElements",value:function(n,e,t){var i=this;if(n)n=n.filter(function(e){return e.visible});else{var r,a=this.hoverViewport.interactiveScenes||this.interactiveScenes.concat(this.scene),o=["mouseup","mousemove","mouseover","mouseleave","drag","drop","click","select","deselect"],s=(n=[],q(a));try{for(s.s();!(r=s.n()).done;)r.value.traverseVisible(function(t){t._listeners&&t.visible&&!i.blacklist.has(t)&&0<o.filter(function(e){return void 0!==t._listeners[e]}).length&&n.push(t)})}catch(e){s.e(e)}finally{s.f()}}var a=this.hoverViewport.camera,l=(t||(l=ne.mouseToRay(this.pointer,a),(t=new bh).ray.set(l.origin,l.direction),t.camera=a),"OrthographicCamera"==a.type?t.params.Line.threshold=20/a.zoom:t.params.Line.threshold=.04,t.params.Line2={threshold:vf.isMobile()?100:20},Potree.Utils.setCameraLayers(t,["sceneObjects","mapObjects","measure","transformationTool","model","bothMapAndScene"],this.hoverViewport&&this.hoverViewport.extraEnableLayers),viewer.dispatchEvent({type:"raycaster",viewport:this.hoverViewport,raycaster:t,viewer:this.viewer,interactables:n}),t.intersectObjects(n,!0,null,!0));l.slice();return l=(l=(l=this.intersect&&null!=this.intersect.distance&&!e?l.filter(function(e){var t;return!(!i.intersect.hoveredElement||i.intersect.hoveredElement.oriObject!=e.object)||(t=e.object.material,e.object.pickDontCheckDis)||(0==t.depthTest||0==t.depthWrite)&&!t.realUseDepth||(t.useDepth?e.distance<=i.intersect.distance+t.uniforms.clipDistance.value:e.distance<=i.intersect.distance)}):l).map(function(e){var t=e.object;do{if(n.includes(t)){e.oriObject=e.object,e.object=t;break}}while(t=t.parent);return e})).sort(function(e,t){return(t.object.pickOrder||0)-(e.object.pickOrder||0)})}},{key:"update",value:function(e){}},{key:"getMouseDirection",value:function(e){e=e||this.pointer;var t=this.hoverViewport.camera,n=new Oe(e.x,e.y,-1).unproject(t);return{origin:n,direction:new Oe(e.x,e.y,1).unproject(t).clone().sub(n).normalize()}}}])}(),ag=function(){function i(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return ue(this,i),(t=le(this,i)).name=n.name,t.renderArea=e,t.oldResolution=new Re,t.oldResolution2=new Re,t.screenSizeInfo={W:0,H:0,pixelRatio:1,windowWidth:0,windowHeight:0},t.initContext(n),t.addEventListener("content_changed",function(){t.needRender=!0}),t}return v(i,Qn),A(i,[{key:"initContext",value:function(e){var t=this,n=(this.renderArea.clientWidth,this.renderArea.clientHeight,{alpha:!0,depth:!0,stencil:!1,antialias:!!e.antialias,preserveDrawingBuffer:e.preserveDrawingBuffer||!1,powerPreference:"high-performance"}),i=document.createElement("canvas"),n=i.getContext("webgl2",n),i=(n&&(Potree.settings.isWebgl2=!0),this.renderer=new Is({premultipliedAlpha:!1,canvas:i,context:n}),this.renderer.sortObjects=!0,this.renderer.autoClear=e.autoClear||!1,e.clearColor&&this.renderer.setClearColor(e.clearColor),this.renderArea.appendChild(this.renderer.domElement),this.renderer.domElement.tabIndex="2222",this.renderer.domElement.style.position="absolute",this.renderer.domElement.addEventListener("mousedown",function(){t.renderer.domElement.focus()}),this.renderer.getContext());if(i.getExtension("EXT_frag_depth"),i.getExtension("WEBGL_depth_texture"),i.getExtension("WEBGL_color_buffer_float"),null==i.createVertexArray){n=i.getExtension("OES_vertex_array_object");if(!n)throw new Error("OES_vertex_array_object extension not supported");i.createVertexArray=n.createVertexArrayOES.bind(n),i.bindVertexArray=n.bindVertexArrayOES.bind(n)}}},{key:"updateScreenSize",value:function(){var e,t,n,i,r=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.screenshoting&&!r.forceUpdateSize||(e=!1,null!=r.width&&null!=r.height?(n=r.width,i=r.height,e=!0,t=1):(n=this.renderArea.clientWidth,i=this.renderArea.clientHeight,n===this.screenSizeInfo.W&&i===this.screenSizeInfo.H&&!r.forceUpdateSize&&this.screenSizeInfo.pixelRatio==window.devicePixelRatio||(this.screenSizeInfo.W=n,this.screenSizeInfo.H=i,e=!0,this.screenSizeInfo.pixelRatio=window.devicePixelRatio,t=window.devicePixelRatio)),e&&this.setSize(n,i,t,r.forTarget))}},{key:"setSize",value:function(r,a,t,e){var n=this;e||(this.renderer.setPixelRatio(t),this.renderer.setSize(r,a)),this.viewports&&this.viewports.forEach(function(e,t){var n=r*e.width,i=a*e.height;e.setResolution(Math.ceil(n),Math.ceil(i),r,a),0!=i&&(e.camera.aspect=n/i,"OrthographicCamera"==e.camera.type&&(e.camera.left=-n/2,e.camera.right=n/2,e.camera.bottom=-i/2,e.camera.top=i/2),e.camera.updateProjectionMatrix())}),e||(this.dispatchEvent("viewerResize"),this.viewports.forEach(function(e){n.ifEmitResize({viewport:e,deviceRatio:t})}))}},{key:"ifEmitResize",value:function(e){e.viewport.resolution.equals(this.oldResolution)&&e.viewport.resolution2.equals(this.oldResolution2)||(this.dispatchEvent($.extend(e,{type:"resize"})),this.oldResolution.copy(e.viewport.resolution),this.oldResolution2.copy(e.viewport.resolution2))}},{key:"cameraChanged",value:function(){for(var e=!1,t=0,n=this.viewports.length;t<n;t++){var i=this.viewports[t],r=i.cameraChanged();r.changed&&(e=!0,this.dispatchEvent({type:"camera_changed",camera:i.camera,viewport:i,changeInfo:r}),i.needRender=!0,r.resolutionChanged)&&this.ifEmitResize({viewport:i})}return e}},{key:"makeScreenshot",value:function(e,t,n){var i=e.width,e=e.height,r=new ti(i,e,{format:It}),t=(this.setSize(i,e,1,!0),this.render({target:r,viewports:t||this.viewports,screenshot:!0,width:i,height:e,resize:!0}),Potree.Utils.renderTargetToDataUrl(r,i,e,this.renderer,n));return r.dispose(),{width:i,height:e,dataUrl:t}}},{key:"dispose",value:function(){(0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.scene).clear(),this.renderer.dispose(),this.renderer.forceContextLoss();var e=this.renderer.getContext();e.getExtension("WEBGL_lose_context")&&e.getExtension("WEBGL_lose_context").loseContext(),this.renderArea.removeChild(this.renderer.domElement),this.dispatchEvent("dispose")}}])}(),og=function(){function r(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return ue(this,r),(n=le(this,r)).left=i.left,n.bottom=i.bottom,n.width=i.width,n.height=i.height,n.name=i.name,n.view=e,n.camera=t,n.active=!0,n.unableChangePos=!1,n.noPointcloud,n.resolution=new Re,n.resolution2=new Re,n.offset=new Re,n.extraEnableLayers=i.extraEnableLayers||[],n.cameraLayers=i.cameraLayers,n.pixelRatio=i.pixelRatio,n}return v(r,Qn),A(r,[{key:"clone",value:function(){return j.CloneClassObject(this)}},{key:"getMoveSpeed",value:function(){return this.moveSpeed}},{key:"setMoveSpeed",value:function(e){this.moveSpeed=e}},{key:"layersAdd",value:function(e){this.extraEnableLayers.includes(e)||this.extraEnableLayers.push(e)}},{key:"layersRemove",value:function(e){e=this.extraEnableLayers.indexOf(e);-1<e&&this.extraEnableLayers.splice(e,1)}},{key:"cameraChanged",value:function(){var e=this,t=!0,n=!0,i=!0,r=!0,a=!0;return this.previousState&&(t=!this.camera.projectionMatrix.equals(this.previousState.projectionMatrix),n=!this.camera.position.equals(this.previousState.position),i=!this.camera.quaternion.equals(this.previousState.quaternion),r=this.active!=this.previousState.active,a=!this.resolution.equals(this.previousState.resolution)||!this.resolution2.equals(this.previousState.resolution2)),e.previousState={projectionMatrix:e.camera.projectionMatrix.clone(),position:e.camera.position.clone(),quaternion:e.camera.quaternion.clone(),active:e.active,resolution:e.resolution.clone(),resolution2:e.resolution2.clone()},{projectionChanged:t,positionChanged:n,quaternionChanged:i,activeChanged:r,resolutionChanged:a,changed:t||n||i||r||a}}},{key:"setResolution",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0;this.resolution.set(e,t),this.resolution2.copy(this.resolution).multiplyScalar(this.pixelRatio||window.devicePixelRatio),this.offset.set(n,i).multiply(new Re(this.left,this.bottom)),this.dispatchEvent({type:"resize"})}}])}(),sg={uniforms:{opacity:{type:"f"},progress:{type:"f",value:0},pano0Map:{type:"t",value:null},pano1Map:{type:"t",value:null},depthMap0:{type:"t",value:null},depthMap1:{type:"t",value:null},pano0Position:{type:"v3",value:new Oe},pano0Matrix:{type:"m4",value:new Me},pano1Position:{type:"v3",value:new Oe},pano1Matrix:{type:"m4",value:new Me},inverseProjectionMatrix:{value:new Me},viewport:{value:new ei},cameraHeight0:{type:"f",value:1},cameraHeight1:{type:"f",value:1},ceilHeight0:{type:"f",value:2},ceilHeight1:{type:"f",value:2}},vertexShader:"precision highp float;\nprecision highp int;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\n attribute vec3 position;\n attribute vec3 normal;\n attribute vec2 uv;\n\n\n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix;\n \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix; \n\n \n varying vec2 vUv; \n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n varying vec3 vWorldPosition12;\n \n vec3 transformAxis( vec3 direction ) //navvis->4dkk\n {\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n }\n \n \n void main() {\n \n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n \n \n \n vec3 positionLocalToPanoCenter0 = worldPosition.xyz - pano0Position;\n vWorldPosition0 = (vec4(positionLocalToPanoCenter0, 1.0) * pano0Matrix).xyz;\n vWorldPosition0.x *= -1.0;\n vWorldPosition0 = transformAxis(vWorldPosition0);\n \n vec3 positionLocalToPanoCenter1 = worldPosition.xyz - pano1Position;\n vWorldPosition1 = (vec4(positionLocalToPanoCenter1, 1.0) * pano1Matrix).xyz;\n vWorldPosition1.x *= -1.0;\n vWorldPosition1 = transformAxis(vWorldPosition1);\n \n /* \n vec3 positionLocalToPanoCenter12 = worldPosition.xyz - pano1Position;\n vWorldPosition12 = (vec4(positionLocalToPanoCenter12, 1.0) * pano1Matrix2).xyz;\n vWorldPosition12.x *= -1.0;\n vWorldPosition12 = transformAxis(vWorldPosition12);\n */\n \n \n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n \n }\n\n ",fragmentShader:"precision highp float;\nprecision highp int;\n\nuniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n\n #extension GL_EXT_frag_depth : enable // otherwise error: 'GL_EXT_frag_depth' : extension is disabled\n \n #define PI 3.141592653 \n \n \n uniform float modelAlpha;\n uniform float opacity;\n uniform float progress;\n uniform int tranType;\n uniform vec3 pano0Position;\n uniform vec3 pano1Position;\n uniform float maxDistance;\n uniform float minDistance;\n uniform float minOpa;\n \n \n \n uniform samplerCube pano0Map;\n uniform samplerCube pano1Map;\n \n \n varying vec2 vUv; \n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1; \n \n \n /* vec2 getSamplerCoord( vec3 direction ) \n {\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n } */\n\n vec2 getSamplerCoord2( vec3 direction ) \n { \n direction = normalize(direction);\n float tx=atan(direction.x,direction.z)/(PI*2.0)+0.5;\n float ty=acos(direction.y)/PI;\n\n return vec2(tx,ty); \n }\n \n \n #if defined(GL_EXT_frag_depth) && defined(hasDepthTex) \n uniform sampler2D depthMap0;\n uniform sampler2D depthMap1;\n uniform mat4 inverseProjectionMatrix;\n uniform mat4 projectionMatrix;\n uniform vec4 viewport; \n uniform float cameraHeight0;\n uniform float cameraHeight1;\n uniform float ceilHeight0;\n uniform float ceilHeight1;\n \n \n vec2 getDepth(vec3 dir, sampler2D depthMap, float heightDown, float heightUp, vec4 eyePos){\n vec2 depthValue = vec2(0.0, 0.0);\n vec2 uv2 = getSamplerCoord2( dir.xyz); //暂时只用基于目标漫游点的方向\n uv2.x -= 0.25; //全景图和Cube的水平采样起始坐标相差90度,这里矫正 0.25 个采样偏移\n vec4 depth = texture2D(depthMap, uv2);\n //float distance = depth.r + 256. * (depth.g + 256. * depth.b);\n //distance *= 255. * .001; // distance is now in meters\n \n //更改\n float distance = (depth.g + depth.r / 256.) * 255.; \n \n if(distance == 0.0){//漫游点底部识别不到的区域,给一个地板高度 \n if(uv2.y < depthTexUVyLimit) distance = heightUp / dir.y; \n else if(uv2.y > 1.0 - depthTexUVyLimit) distance = heightDown / -dir.y; \n else distance = 100000.0;//给个超级远的值\n } \n \n if(distance == 0.0)distance = 100000.0;//给个超级远的值\n \n depthValue.x = distance;\n \n distance += .1; // add a safety margin\n\n vec4 eyePos2 = vec4(normalize(eyePos.xyz) * distance, 1.);\n vec4 clipPos2 = projectionMatrix * eyePos2;\n vec4 ndcPos2 = clipPos2 * 1. / clipPos2.w;\n\n \n depthValue.y = 0.5 * ((gl_DepthRange.far - gl_DepthRange.near) * ndcPos2.z\n + gl_DepthRange.near + gl_DepthRange.far); \n return depthValue; \n }\n //注:未加载好的话,depth为0,导致第一次漫游过去的时候许多mesh会立刻被遮挡,所以要确保加载完\n #endif\n \n void main()\n {\n vec3 vWorldPosition0N = normalize(vWorldPosition0);\n vec3 vWorldPosition1N = normalize(vWorldPosition1);\n float progress_ = progress;\n \n vec4 colorFromPano0 = vec4(0.0,0.0,0.0,0.0);\n #if defined(usePanoMap0)\n //即progress < 1.0 通常是1\n colorFromPano0=textureCube(pano0Map,vWorldPosition0N.xyz);\n #else \n progress_ = 1.0;\n #endif\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1N.xyz);\n \n gl_FragColor = mix(colorFromPano0,colorFromPano1,progress_);\n \n \n \n \n //深度图修改深度\n \n #if defined(GL_EXT_frag_depth) && defined(hasDepthTex) \n vec4 ndcPos;\n ndcPos.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * viewport.xy)) / (viewport.zw) - 1.;\n ndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /\n (gl_DepthRange.far - gl_DepthRange.near);\n ndcPos.w = 1.0;\n\n vec4 clipPos = ndcPos / gl_FragCoord.w;\n vec4 eyePos = inverseProjectionMatrix * clipPos;\n vec2 depth0 = vec2(0.0,0.0); \n #if defined(usePanoMap0)\n depth0 = getDepth(vWorldPosition0N, depthMap0, cameraHeight0, ceilHeight0, eyePos);\n #endif\n vec2 depth1 = getDepth(vWorldPosition1N, depthMap1, cameraHeight1, ceilHeight1, eyePos);\n \n \n gl_FragDepthEXT = mix(depth0.y,depth1.y,progress_); \n gl_FragDepthEXT = clamp(gl_FragDepthEXT, 0.0, 1.0); //防止部分手机出现黑块。ios 16 。 因为我给的超远值超出范围\n \n\n #endif\n\n \n }\n "},lg=function(){function o(){function t(e){e=e.viewport.resolution2,r.uniforms.viewport.value.set(0,0,e.x,e.y)}ue(this,o);var e={depthTexUVyLimit:Potree.config.depthTexUVyLimit},n=j.changeShaderToWebgl2(sg.vertexShader,sg.fragmentShader,"RawShaderMaterial"),i=n.vs,r=le(this,o,[{fragmentShader:n.fs,vertexShader:i,uniforms:fa.clone(sg.uniforms),side:ve,name:"ModelTextureMaterial",defines:e}]),n=(r.glslVersion=Potree.settings.isWebgl2&&"300 es",viewer.mainViewport),a=(t({viewport:n}),viewer.addEventListener("resize",function(e){"MainView"==e.viewport.name&&t(e)}),viewer.addEventListener("camera_changed",function(e){"MainView"==e.viewport.name&&e.camera&&r.uniforms.inverseProjectionMatrix.value.copy(e.camera.projectionMatrixInverse)}),0);return Object.defineProperty(r.uniforms.progress,"value",{get:function(){return a},set:function(e){e<1&&!Potree.settings.fastTran?"usePanoMap0"in r.defines||(r.defines.usePanoMap0="",r.needsUpdate=!0):"usePanoMap0"in r.defines&&(delete r.defines.usePanoMap0,r.needsUpdate=!0),a=e}}),r}return v(o,ac),A(o,[{key:"setProjectedPanos",value:function(e,t,n){null!=n&&(this.uniforms.progress.value=n),e&&(this.uniforms.pano0Map.value=e.getSkyboxTexture(),this.uniforms.pano0Position.value.copy(e.position),this.uniforms.pano0Matrix.value.copy(e.panoMatrix)),this.uniforms.pano1Map.value=t.getSkyboxTexture(),this.uniforms.pano1Position.value.copy(t.position),this.uniforms.pano1Matrix.value.copy(t.panoMatrix),this.pano0=e,this.pano1=t,this.updateDepthTex(e),this.updateDepthTex(t),this.needsUpdate=!0}},{key:"updateDepthTex",value:function(e,t){Potree.settings.useDepthTex&&e&&e.depthTex&&(e==this.pano0||e==this.pano1)&&(this.pano0&&(this.uniforms.depthMap0.value=this.pano0.entered?this.pano0.depthTex:null,this.uniforms.cameraHeight0.value=this.pano0.floorPosition.distanceTo(this.pano0.position),this.uniforms.ceilHeight0.value=this.pano0.getCeilHeight()-this.pano0.position.z),this.pano1&&(this.uniforms.depthMap1.value=this.pano1.depthTex,this.uniforms.cameraHeight1.value=this.pano1.floorPosition.distanceTo(this.pano1.position),this.uniforms.ceilHeight1.value=this.pano1.getCeilHeight()-this.pano1.position.z),this.updateDepthTexEnable())}},{key:"updateDepthTexEnable",value:function(){var e=this.pano0&&this.pano1&&this.pano0.pointcloud.hasDepthTex&&this.pano1.pointcloud.hasDepthTex;Potree.Utils.addOrRemoveDefine(this,"hasDepthTex",e?"add":"remove")}}])}(),ug=function(){return A(function e(t){ue(this,e),this.renderer=t,this.coverRenderTarget=new ti(100,100,{minFilter:N,magFilter:N,format:It}),this.coverTex=this.coverRenderTarget.texture,this.enabled=!1,this.material=this.getMaskMaterial()},[{key:"setSize",value:function(e,t){this.coverRenderTarget.setSize(e,t)}},{key:"start",value:function(){this.enabled=!0;var e=viewer.mainViewport.resolution2,t=e.x,e=e.y,t=(this.setSize(t,e),this.renderer.getRenderTarget()),e=(this.renderer.setRenderTarget(this.coverRenderTarget),viewer.mainViewport.camera.layers.mask);Potree.Utils.setCameraLayers(viewer.mainViewport.camera,["skybox"]),this.renderer.render(viewer.scene.scene,viewer.mainViewport.camera),this.renderer.setRenderTarget(t),viewer.mainViewport.camera.layers.mask=e,this.material.uniforms.progress.value=1,console.log("start111")}},{key:"render",value:function(e,t,n,i,r,a){var o=viewer.mainViewport.resolution2,s=o.x,o=o.y,l=this.material.uniforms;l.coverTex.value=this.coverTex,l.progress.value=viewer.images360.cube.material.uniforms.progress.value,l.screenRatio.value=s/o,l.screenRatio.value*=l.screenRatio.value,Potree.Utils.screenPass.render(viewer.renderer,viewer.images360.fastTranMaskPass.material)}},{key:"stop",value:function(){this.enabled=!1,console.log("stop111")}},{key:"getMaskMaterial",value:function(){return new ga({uniforms:{coverTex:{type:"t",value:null},progress:{type:"f",value:0},screenRatio:{type:"f",value:1}},vertexShader:" \n varying vec2 vUv;\n \n void main() \n {\n vUv = uv;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n } \n \n ",fragmentShader:" \n uniform sampler2D coverTex; \n uniform float progress; \n uniform float screenRatio;\n varying vec2 vUv;\n \n void main() {\n \n const float maxRadius = 0.708; // sqrt(0.5^2+0.5^2)\n const float minRadius = 0.0 ;\n \n float radius = screenRatio>1.0 ? sqrt((vUv.x - 0.5)*(vUv.x - 0.5) + (vUv.y - 0.5)*(vUv.y - 0.5)/screenRatio) : sqrt((vUv.x - 0.5)*(vUv.x - 0.5)*screenRatio+ (vUv.y - 0.5)*(vUv.y - 0.5));\n float diff = 0.292; //1.0-maxRadius;\n float radiusIn = maxRadius * progress + minRadius * (1.0-progress);\n float radiusOut = radiusIn + diff;\n if(radius < radiusIn) {\n \n discard;\n \n }else if(radius>radiusOut){\n gl_FragColor = texture2D(coverTex, vUv) ;\n //gl_FragColor = vec4(1.0,1.0,0.0,1.0);//\n \n }else{\n \n /* vec4 color1 = texture2D(bgTex, vUv);\n vec4 color2 = texture2D(coverTex, vUv);\n float rotio = smoothstep(radiusIn ,radiusOut,radius);\n \n gl_FragColor = mix(color1, color2, rotio); */\n \n float rotio = smoothstep(radiusIn ,radiusOut, radius);\n \n vec4 color2 = texture2D(coverTex, vUv);\n color2.a = rotio;\n \n \n }\n }\n "})}}])}(),cg=Potree.defines.GLCubeFaces,b={TILE_SIZE:512,FACES_PER_PANO:6,LocationOnTile:{Center:0,UpperLeft:1,UpperRight:2,LowerRight:3,LowerLeft:4},getTileVector:function(e,t,n,i,r,a,o,s){var l=e/t,u=2*(t/e),c=u/2,d=2*(i/l)-1+c,h=2*((r=l-1-r)/l)-1+c;switch(a=a||b.LocationOnTile.Center){case b.LocationOnTile.UpperLeft:h+=c,d=d-c+o*u;break;case b.LocationOnTile.UpperRight:d+=c,h=h+c-o*u;break;case b.LocationOnTile.LowerRight:h-=c,d=d+c-o*u;break;case b.LocationOnTile.LowerLeft:d-=c,h=h-c+o*u;break;case b.LocationOnTile.Center:}switch(n){case cg.GL_TEXTURE_CUBE_MAP_POSITIVE_X:Bf.setVector(s,-1,h,-d);break;case cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:Bf.setVector(s,1,h,d);break;case cg.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:Bf.setVector(s,-d,1,-h);break;case cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:Bf.setVector(s,-d,-1,h);break;case cg.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:Bf.setVector(s,-d,h,1);break;case cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:Bf.setVector(s,d,h,-1)}Bf.normalize(s)},getFaceForTile:function(e,t){var n=b.TILE_SIZE,e=(e<b.TILE_SIZE&&(n=e),Math.floor(e/n));return Math.floor(t/(e*e))},getTileLocation:function(e,t,n){var i=b.TILE_SIZE,r=(e<b.TILE_SIZE&&(i=e),b.getFaceForTile(e,t)),e=Math.floor(e/i),i=t-r*(e*e);return n.tileX=i%e,n.tileY=Math.floor(i/e),n.face=r,n.faceTileIndex=i,n},getTileCountForSize:function(e){return e<=b.TILE_SIZE?b.FACES_PER_PANO:(e=Math.floor(e/b.TILE_SIZE))*e*b.FACES_PER_PANO}},pp=(b.getRelativeDirection=(Wv=new Bf.Matrix4,Jv=new Bf.Quaternion,function(e,t){Jv.copy(e),Jv.inverse(),Wv.makeRotationFromQuaternion(Jv),Wv.applyToVector3(t),Bf.normalize(t)}),b.matchingTilesInDirection=(Hv=new Bf.Vector3,Vv=new Bf.Vector3(0,0,-1),Qv=new Bf.Quaternion,Gv={face:-1,faceTileIndex:-1,tileX:-1,tileY:-1},jv=function(e,t,n){for(var i=b.getTileCountForSize(e),r=0,a=0;a<i;a++)b.getTileLocation(e,a,Gv),t&&!t(Gv)||(r++,n&&n.push({face:Gv.face,faceTileIndex:Gv.faceTileIndex,tileX:Gv.tileX,tileY:Gv.tileY}));return r},function(e,t,n,i,r,a){var o,s=t<b.TILE_SIZE?t:b.TILE_SIZE;return i||r?(o=!!r,r=r||i,r=Math.max(0,Math.min(r,360)),i=Math.max(0,Math.min(i,360)),Bf.copyVector(n,Hv),b.getRelativeDirection(e.quaternion4dkk,Hv),o?(Qv.setFromUnitVectors(Hv,Vv),jv(t,function(e){return b.isTileWithinFrustum(t,s,e.face,e.tileX,e.tileY,Qv,i,r)},a)):jv(t,function(e){return b.isTileWithinFOV(t,s,e.face,e.tileX,e.tileY,Hv,i)},a)):jv(t,null,a)}),b.isTileWithinFrustum=(zv=new Bf.Vector3,function(e,t,n,i,r,a,o,s){for(var l,u,c=Math.tan(.5*s*Bf.RADIANS_PER_DEGREE),d=-c,h=Math.tan(.5*o*Bf.RADIANS_PER_DEGREE),p=-h,f=b.mapFaceToCubemapFace(n),m=0,v=0,g=0,A=0,y=0,w=b.LocationOnTile.Center;w<=b.LocationOnTile.LowerLeft;w++)b.getTileVector(e,t,f,i,r,w,0,zv),Bf.applyQuaternionToVector(a,zv),-1e-5<=zv.z?0:(u=-1/zv.z,l=zv.x*u,c<(u=zv.y*u)?m++:u<d&&v++,h<l?g++:l<p&&A++,y++);return v!==y&&m!==y&&g!==y&&A!==y}),b.isTileWithinFOV=(Ov=new Bf.Vector3,Uv=new Bf.Vector3(0,1,0),Nv=new Bf.Vector3(1,0,0),function(e,t,n,i,r,a,o){var s=b.mapFaceToCubemapFace(n);if(Bf.cross(a,Uv,Nv),b.getTileVector(e,t,s,i,r,b.LocationOnTile.Center,0,Ov),b.isWithinFOV(Ov,a,o,null))return!0;for(var l=o/360,u=Math.floor(1/l),c=0,d=0;d<u;d++){for(var h=b.LocationOnTile.UpperLeft;h<=b.LocationOnTile.LowerLeft;h++)if(b.getTileVector(e,t,s,i,r,h,c,Ov),b.isWithinFOV(Ov,a,o,null))return!0;c+=l}return!1}),b.isWithinFOV=(Lv=new Bf.Vector3,Fv=new Bf.Vector3,function(e,t,n,i){Bf.copyVector(e,Fv),i&&(Bf.copyVector(i,Lv),Bf.normalize(Lv),i=Bf.dot(Lv,e),Lv.x*=i,Lv.y*=i,Lv.z*=i,Bf.subVector(Fv,Lv));e=n/2*Bf.RADIANS_PER_DEGREE;return Math.cos(e)<=Bf.dot(Fv,t)}),b.mapFaceToCubemapFace=(Rv={0:cg.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,1:cg.GL_TEXTURE_CUBE_MAP_POSITIVE_Z,2:cg.GL_TEXTURE_CUBE_MAP_POSITIVE_X,3:cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,4:cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,5:cg.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y},function(e){return Rv[e]}),Potree.defines),dg=pp.PanoRendererEvents,hg=pp.PanoramaEvents,pg=pp.PanoSizeClass,fg=new Gc,mg=.4,vg=1,gg={sizeInfo:{minSize:200,maxSize:250,nearBound:.8,farBound:10},backgroundColor:{r:255,g:255,b:255,a:.4},textColor:{r:0,g:0,b:0,a:1},borderRadius:15,renderOrder:10,useDepth:!0,clipDistance:30,maxClipFactor:.3,occlusionDistance:3},Ag={backgroundColor:{r:255,g:255,b:255,a:0},textColor:{r:255,g:255,b:255,a:1},textBorderColor:{r:30,g:30,b:30,a:1},textBorderThick:3,dontFixOrient:!0,renderOrder:10,fontsize:30},yg=new _a(.2,.2),wg=(new ju(.1,8,8),new R({color:16711680}),new R({}),(new ii).setFromAxisAngle(new Oe(0,0,1),Math.PI/2)),bg=null,xg=function(){function r(t,e){var n,i;return ue(this,r),(n=le(this,r)).id=t.id,n.images360=e,n.visible=!0,n.enabled=!0,n.addEventListener("isVisible",function(e){Potree.Utils.updateVisible(n.marker,"panoVisi",e.visible),Potree.settings.showPanoMesh&&(n.mesh.visible=e.visible),("screenshot"==e.reason||e.visible)&&n.label&&(n.label.visible=e.visible),n.label2&&Potree.Utils.updateVisible(n.label2,"panoVisi",e.visible)}),"pano"==Potree.settings.editType?(n.uuid=t.uuid,n.index=n.originID=t.index,n.pointcloud=viewer.scene.pointclouds.find(function(e){return e.panoUuid==t.uuid}),n.pointcloud.panos.push(n),n.sid=n.pointcloud.dataset_id+"|"+n.uuid,n.panosData=t,n.dataPosition=(new Oe).copy(t.pose.translation),n.dataQuaternion=(new ii).copy(t.pose.rotation),n.dataRotation=(new Oi).setFromQuaternion(n.dataQuaternion),n.originPosition=new Oe,n.quaternion=new ii,n.visibles=t.visibles,n.rtkState=t.has_rtk?t.use_rtk:null,n.originFloorPosition=n.originPosition.clone(),n.originFloorPosition.z-=1.4):(n.originPosition=(new Oe).fromArray(t.dataset_location),n.originFloorPosition=(new Oe).fromArray(t.dataset_floor_location),n.originID=parseInt(t.file_id),n.pointcloud=viewer.scene.pointclouds.find(function(e){return e.dataset_id==t.dataset_id})||viewer.scene.pointclouds[0],n.pointcloud.panos.push(n),n.sid=n.pointcloud.dataset_id+"|"+n.originID,i=[(i=t.dataset_orientation)[1],i[2],i[3],i[0]],n.quaternion=(new ii).fromArray(i),n.quaternion4dkk=te.convertVisionQuaternion(n.quaternion),n.quaternion2=n.quaternion.clone(),n.quaternion=(new ii).multiplyQuaternions(n.quaternion,wg),n.rotation4dkk=(new Oi).setFromQuaternion(n.quaternion4dkk),n.neighbours=[]),n.rotation=(new Oi).setFromQuaternion(n.quaternion),n.build(),n.transformByPointcloud(),n.minimumTiledPanoLoaded=!1,n.highestPartialTileRenderOpCompleted=0,n.highestFullTileRenderOpCompleted=0,n.shouldRedrawOnBaseLoaded=!1,n.resolutionPromise={},n.tiledPanoRenderTarget=null,n.zoomed=!1,e.panoRenderer.addEventListener(dg.TileRenderSuccess,n.onTileRendered.bind(n)),e.panoRenderer.addEventListener(dg.PanoRenderComplete,n.onPanoRendered.bind(n)),e.panoRenderer.addEventListener(dg.TileRenderFailure,n.onTileRenderFail.bind(n)),e.panoRenderer.addEventListener(dg.UploadAttemptedForAllTiles,n.onUploadAttemptedForAllTiles.bind(n)),n.addEventListener("hoverOn",function(e){e.byMainView||n.hoverOn(e)}),n.addEventListener("hoverOff",function(e){e.byMainView||n.hoverOff(e)}),n}return v(r,Qn),A(r,[{key:"noNeighbour",get:function(){for(var e=0,t=this.images360.panos.length;e<t;e++)if(!1!==this.images360.neighbourMap[this.id][e])return!1;return!0}},{key:"setEnable",value:function(e){Potree.Utils.updateVisible(this,"isEnabled",e),this.enabled=e}},{key:"loadDepthImg",value:function(){var e,t,n=this;!this.pointcloud.hasDepthTex||this.depthTex||this.depthTexLoading||(this.depthTexLoading=!0,e=Potree.settings.isLocal2?"":this.pointcloud.datasetData.mapping,e="".concat(Potree.settings.urls.prefix1,"/").concat(e?e+"/":"").concat(Potree.settings.webSite,"/").concat(this.pointcloud.sceneCode,"/data/").concat(this.pointcloud.sceneCode,"/depthmap/").concat(this.originID,".png"),(t=fg.load(e,function(){n.depthTex=t,n.dispatchEvent({type:"loadedDepthImg",loaded:!0}),n.images360.dispatchEvent({type:"loadedDepthImg",pano:n}),n.depthTexLoading=!1,n.images360.updateDepthTex(n)},null,function(e){console.error("loadDepthImg失败, 数据集sceneCode"+n.pointcloud.sceneCode,n.id),n.pointcloud.hasDepthTex=!1,n.dispatchEvent({type:"loadedDepthImg"})})).wrapS=ut,t.flipY=!1,t.magFilter=N,t.minFilter=N,t.generateMipmaps=!1)}},{key:"build",value:function(){this.panoMatrix=(new Me).makeRotationFromQuaternion(this.quaternion),this.oriPanoMatrix=this.panoMatrix.clone(),this.quaternion2&&(this.oriPanoMatrix2=(new Me).makeRotationFromQuaternion(this.quaternion2));var t=new Q(yg,this.getMarkerMat());t.scale.set(2,2,2),t.name="marker_"+this.id,t.up.set(0,0,1),this.addEventListener("changeMarkerTex",function(e){t.material.map=qv[e.name]}),((this.marker=t).pano=this).images360.node.add(t),Potree.settings.isTest&&this.addLabel(),t.addEventListener("mouseover",this.hoverOn.bind(this)),t.addEventListener("mouseleave",this.hoverOff.bind(this))}},{key:"transformByPointcloud",value:function(){var e=this.originPosition.clone().applyMatrix4(this.pointcloud.transformMatrix),t=this.originFloorPosition.clone().applyMatrix4(this.pointcloud.transformMatrix);this.setPosition(e,t),this.panoMatrix=(new Me).multiplyMatrices(this.pointcloud.rotateMatrix,this.oriPanoMatrix),this.oriPanoMatrix2&&(this.panoMatrix2=(new Me).multiplyMatrices(this.pointcloud.rotateMatrix,this.oriPanoMatrix2),this.panoMatrix2Inverse=this.panoMatrix2.clone().invert()),this.dispatchEvent("rePos")}},{key:"setPosition",value:function(e,t){this.position=e,this.floorPosition=t,this.marker.position.copy(this.floorPosition),this.marker.position.z+=.04,this.label&&("pano"==Potree.settings.editType?this.label.position.copy(this.position):this.label.position.copy(this.floorPosition),this.label.position.z+=.14,this.label.update())}},{key:"getMarkerMat",value:function(){return qv||((qv={default:fg.load(Potree.resourcePath+"/textures/marker.png"),ring:fg.load(Potree.resourcePath+"/textures/marker2.png")}).default.anisotropy=4,qv.ring.anisotropy=4),new sv({opacity:mg,side:ve,map:qv.default,transparent:!0,clipDistance:2,occlusionDistance:1,useDepth:!(!Potree.settings.useDepthTex||!this.pointcloud.hasDepthTex),autoDepthTest:!0})}},{key:"hoverOn",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};df.start(uf(this.marker.material,"opacity",vg,function(){viewer.dispatchEvent("content_changed")}),this.marker.visible?250:0),e.byMap||this.dispatchEvent({type:"hoverOn",byMainView:!0}),e.byImages360||this.images360.dispatchEvent({type:"markerHover",hovered:!0,pano:this})}},{key:"hoverOff",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};df.start(uf(this.marker.material,"opacity",mg,function(){viewer.dispatchEvent("content_changed")}),this.marker.visible?250:0),e.byMap||this.dispatchEvent({type:"hoverOff",byMainView:!0}),e.byImages360||this.images360.dispatchEvent({type:"markerHover",hovered:!1,pano:this})}},{key:"setZoomed",value:function(e){this.zoomed=e,"showPanos"==Potree.settings.displayMode&&this.updateSkyboxForZoomLevel(),viewer.dispatchEvent({type:"panoSetZoom",zoomed:e})}},{key:"enter",value:function(){this.entered=!0,this.setZoomed(!1),viewer.dispatchEvent({type:hg.Enter,oldPano:bg,newPano:this}),bg=this}},{key:"exit",value:function(){this.clearWaitDeferreds(),this.minimumTiledPanoLoaded=!1,this.tiledPanoRenderTarget=null,this.setZoomed(!1),this.images360.panoRenderer.deactivateTiledPano(this),this.highestPartialTileRenderOpCompleted=0,this.highestFullTileRenderOpCompleted=0,this.depthTex&&this.depthTex.dispose(),this.entered=!1,viewer.dispatchEvent({type:hg.Exit,pano:this})}},{key:"updateSkyboxForZoomLevel",value:function(){this.minimumTiledPanoLoaded&&this.images360.updateProjectedPanos()}},{key:"getSkyboxTexture",value:function(){return this.minimumTiledPanoLoaded?(this.zoomed&&this.images360.qualityManager.maxRenderTargetSize>this.images360.qualityManager.maxNavPanoSize?this.images360.panoRenderer.zoomRenderTarget:(this.tiledPanoRenderTarget.texture.mapping=300,this.tiledPanoRenderTarget)).texture:null}},{key:"isLoaded",value:function(e){return e&&"string"==typeof e&&console.error("Wrong panoSize given to Panorama.isLoaded(); a tiled pano uses PanoSizeClass"),!!this.minimumTiledPanoLoaded&&(!e||this.highestFullTileRenderOpCompleted>=e)}},{key:"getWaitDeferred",value:function(e){var t=this.resolutionPromise[this.id],n=(t||(this.resolutionPromise[this.id]=t={}),t[e]);return n||(n={deferred:$.Deferred(),active:!1},t[e]=n),n}},{key:"clearWaitDeferreds",value:function(){var e,t,n=this.resolutionPromise[this.id];for(e in n||(this.resolutionPromise[this.id]=n={}),n)n.hasOwnProperty(e)&&((t=n[e]).active=!1,t.deferred=$.Deferred())}},{key:"resetWaitDeferred",value:function(e){e=this.getWaitDeferred(e);e.active=!1,e.deferred=$.Deferred()}},{key:"onTileRendered",value:function(e){e.id===this.id&&this.dispatchEvent({type:hg.TileLoaded,size:e.panoSize,index:e.tileIndex,count:e.totalTiles})}},{key:"onPanoRendered",value:function(e){e.id===this.id&&(this.minimumTiledPanoLoaded=!0,this.updateSkyboxForZoomLevel(),e.panoSize>this.highestPartialTileRenderOpCompleted&&(this.highestPartialTileRenderOpCompleted=e.panoSize),e.updateFullComplete&&e.panoSize>this.highestFullTileRenderOpCompleted&&(this.highestFullTileRenderOpCompleted=e.panoSize),viewer.ifAllLoaded(this),this.dispatchEvent({type:hg.LoadComplete,size:e.panoSize,count:e.totalTiles}))}},{key:"onTileRenderFail",value:function(e){e.id===this.id&&this.dispatchEvent({type:hg.LoadFailed})}},{key:"onUploadAttemptedForAllTiles",value:function(e){var t;e.id===this.id&&(t=this.images360.qualityManager.getPanoSize(pg.BASE),e.panoSize===t)&&this.shouldRedrawOnBaseLoaded&&(this.shouldRedrawOnBaseLoaded=!1,this.panoRenderer.resetRenderStatus(this.id,!0,!1),this.panoRenderer.renderPanoTiles(this.id,null,!0,!0))}},{key:"addLabel",value:function(){this.removeTextLabel(),this.label=new cv(Object.assign({},gg,{text:this.id+"("+this.originID+")"})),this.images360.node.add(this.label),this.floorPosition&&this.label.position.copy(this.floorPosition)}},{key:"addLabel2",value:function(){this.label2||(this.label2=new cv(Object.assign({},Ag,{text:parseInt(this.id)+1})),this.marker.add(this.label2),this.label2.scale.set(.2,.2,.2),Potree.Utils.updateVisible(this.label2,"notDisplay",!1),Potree.Utils.updateVisible(this.label2,"panoVisi",this.visible))}},{key:"removeTextLabel",value:function(){this.label&&this.label.parent.remove(this.label)}},{key:"dispose",value:function(){var e=viewer.images360.panos.indexOf(this);-1!=e&&(this.marker.parent.remove(this.marker),this.removeTextLabel(),this.depthTex&&this.depthTex.dispose(),viewer.images360.panos.splice(e,1),this.dispatchEvent("dispose"))}},{key:"getCeilHeight",value:function(){var e,t=this;return null==this.ceilZ&&(e=(new Me).makeRotationX((Potree.config.depthTexUVyLimit+.01)*Math.PI),(e=[e=new Oe(0,0,1).applyMatrix4(e),e.clone().applyMatrix4((new Me).makeRotationZ(2*Math.PI/3)),e.clone().applyMatrix4((new Me).makeRotationZ(2*-Math.PI/3))].map(function(e){e=e.clone().applyMatrix4(t.panoMatrix2),e=viewer.images360.getIntersect(t,e);return e?e.location.z:1/0})).sort(function(e,t){return t-e}),this.ceilZ=e[0],e=this.position.z+1,this.ceilZ=Math.max(e,this.ceilZ)),this.ceilZ}}])}(),Lh=(xg.prototype.loadTiledPano=(Yv={},Xv={},Kv={},function(t,n,i,r,a,o){var s,l=this,u=n.datasetsLocal.find(function(e){return e.datasetId==l.pointcloud.dataset_id}).direction,c=(null==r&&(r=!0),null==a&&(a=!0),this.getWaitDeferred(t)),d=c.deferred,h=null,p=null;return i&&("number"==typeof i?h=i:(h=i.hFov,p=i.vFov)),this.isLoaded(t)?d.resolve(t):(c.active||(c.active=!0,s=this.id+":"+t,Yv[s]=Yv[s]||[],Kv[s]=null,i&&(b.matchingTilesInDirection(this,t,u,h,p,c=[]),Kv[s]=c,Yv[s].forEach(function(t){var e=Kv[s].find(function(e){return t.faceTileIndex==e.faceTileIndex&&t.face==e.face});e&&(e.loaded=!0)}),Kv[s].some(function(e){return!e.loaded})||(d.resolve(t),this.resetWaitDeferred(t),Kv[s]=null)),Xv[this.id])||(Xv[this.id]=!0,this.addEventListener(hg.LoadComplete,function(e){var t=this.getWaitDeferred(e.size).deferred;t&&"pending"===t.state()&&this.highestPartialTileRenderOpCompleted>=e.size&&(t.resolve(e.size,e.count),this.resetWaitDeferred(e.size))}.bind(this)),this.addEventListener(hg.LoadFailed,function(t){var n=this.getWaitDeferred(e).deferred;n&&"pending"===n.state()&&this.highestPartialTileRenderOpCompleted>=t.t&&(n.reject(t.t),this.resetWaitDeferred(t.t))}.bind(this)),this.addEventListener(hg.TileLoaded,function(e){var t=e.index,n=e.count,e=e.size,i=this.id+":"+e,r=(Yv[i]=Yv[i]||[],b.getTileLocation(e,t,{})),a=r.faceTileIndex,o=r.face,r=(Yv[i].push({faceTileIndex:a,face:o}),this.getWaitDeferred(e).deferred);r&&"pending"===r.state()&&(r.notify(e,t,n),Kv[i])&&((t=Kv[i].find(function(e){return e.faceTileIndex==a&&e.face==o}))&&(t.loaded=!0),Kv[i].some(function(e){return!e.loaded})||(this.onPanoRendered(this.id,e,n,!0),r.resolve(e,n),this.resetWaitDeferred(e),Kv[i]=null)),viewer.dispatchEvent("content_changed")}.bind(this))),this.images360.tileDownloader.clearForceQueue(),this.images360.tileDownloader.forceQueueTilesForPano(this,t,u,h,p,o),this.tiledPanoRenderTarget=this.images360.panoRenderer.activateTiledPano(this,this.images360.qualityManager.getMaxNavPanoSize(),r),this.images360.panoRenderer.renderPanoTiles(this.id,n,a)),d.promise()}),Potree.defines),Eg=(Lh.ModelManagerEvents,Lh.PanoSizeClass),Cg=function(){return A(function e(t,n,i){ue(this,e),this.maxNavPanoSize=-1,this.maxZoomPanoSize=-1,this.devicePixelDensity=t,this.deviceScreenSize=n,this.clientBandwidth=i,this.panoSizeClassMap={},this.useHighResolutionPanos=!0,this.useUltraHighResolutionPanos=!1,this.modelHasUltraHighPanos=!1,(this.qualityManager=this).maxRenderTargetSize=vf.isMobile()?2048:4096,this.init()},[{key:"init",value:function(e){this.buildPanoSizeClassMap(this.devicePixelDensity,this.deviceScreenSize,this.clientBandwidth),this.ultraHighSize=this.getPanoSize(Eg.ULTRAHIGH),this.highSize=this.getPanoSize(Eg.HIGH),this.standardSize=this.getPanoSize(Eg.STANDARD),this.baseSize=this.getPanoSize(Eg.BASE),yv.tiling.maxZoomPanoQuality&&this.ultraHighSize<=yv.tiling.maxZoomPanoQuality&&(yv.tiling.allowUltraHighResolution=!0),this.highQualityThreshold=vf.valueFromHash("threshold2k",yv.windowHeightHighQualityThreshold),this.updateMaximums()}},{key:"updateFromModel",value:function(e){this.updateUltraHighResolutionSettings(e)}},{key:"updateUltraHighResolutionSettings",value:function(e){yv.tiling.allowUltraHighResolution&&this.modelHasUltraHighPanos?this.useUltraHighResolutionPanos=!0:this.useUltraHighResolutionPanos=!1,this.updateMaximums()}},{key:"enableUltraHighQualityMode",value:function(){this.modelHasUltraHighPanos=!0,this.updateUltraHighResolutionSettings(null)}},{key:"ultraHighQualityModeEnabled",value:function(){return this.modelHasUltraHighPanos}},{key:"onModelChanged",value:function(e){this.updateFromModel(e.model),this.updateMaximums()}},{key:"updateMaximums",value:function(){this.maxNavPanoSize=yv.tiling.maxNavPanoQuality||this.detectMaxNavPanoSize(),this.maxZoomPanoSize=yv.tiling.maxZoomPanoQuality||this.detectMaxZoomPanoSize(),this.maxZoomPanoSize<this.maxNavPanoSize&&(this.maxNavPanoSize=this.maxZoomPanoSize)}},{key:"buildPanoSizeClassMap",value:function(){this.panoSizeClassMap[Eg.BASE]=512,this.panoSizeClassMap[Eg.STANDARD]=1024,this.panoSizeClassMap[Eg.HIGH]=2048,this.panoSizeClassMap[Eg.ULTRAHIGH]=4096}},{key:"getPanoSize",value:function(e){return this.panoSizeClassMap[e]}},{key:"getMaxPossiblePanoSize",value:function(){return this.getPanoSize(Eg.ULTRAHIGH)}},{key:"getMaxPanoSize",value:function(){return this.maxZoomPanoSize}},{key:"getMaxNavPanoSize",value:function(){return this.maxNavPanoSize}},{key:"getMaxZoomPanoSize",value:function(){return this.maxZoomPanoSize}},{key:"detectMaxNavPanoSizeClass",value:function(){return"1k"!==Potree.settings.navTileClass?Eg.HIGH:Eg.STANDARD}},{key:"detectMaxNavPanoSize",value:function(){var e=this.detectMaxNavPanoSizeClass();return this.getPanoSize(e)}},{key:"detectMaxZoomPanoSize",value:function(){return this.zoomLevelResolution?"4k"==this.zoomLevelResolution&&this.useUltraHighResolutionPanos?this.getPanoSize(Eg.ULTRAHIGH):"1k"!=this.zoomLevelResolution&&this.useHighResolutionPanos?this.getPanoSize(Eg.HIGH):this.getPanoSize(Eg.STANDARD):this.useHighResolutionPanos?this.useUltraHighResolutionPanos?this.getPanoSize(Eg.ULTRAHIGH):this.getPanoSize(Eg.HIGH):this.getPanoSize(Eg.STANDARD)}}])}(),Bg=Potree.defines.DownloadStatus,Mg=Object.freeze({None:0,DirectionalFOV:1}),Sg=(Tg._panoSpaceDir=new Oe,Tg._fovThreshold=-1,Tg._fovThresholdNarrow=-1,Tg);function Tg(e,t){var n=Tg._panoSpaceDir,i=Tg._fovThreshold,r=Tg._fovThresholdNarrow,a=Math.max(Math.min(n.dot(e.direction),1),-1),n=Math.max(Math.min(n.dot(t.direction),1),-1);return e._dot=a,t._dot=n,i<=a&&n<i?-1:a<i&&i<=n?1:r<=a&&n<r?-1:a<r&&r<=n||e.panoSize>t.panoSize?1:t.panoSize>e.panoSize?-1:-(a-n)}function _g(e){for(var t=(e=e.split(","))[0].match(/:(.*?);/)[1],n=atob(e[1]),i=n.length,r=new Uint8Array(i);i--;)r[i]=n.charCodeAt(i);return new Blob([r],{type:t})}function Pg(){}var Dg,Ig,kg,Rg,Lg,Fg,Og,Ug=function(){function d(e,t,n,i,r){ue(this,d),this.qualityManager=e,this.maxNavQuality=this.qualityManager.getMaxNavPanoSize(),this.maxZoomQuality=this.qualityManager.getMaxZoomPanoSize(),this.baseSize=t,this.standardSize=n,this.highSize=i,this.ultraHighSize=r,this.priorityCriteria=new d.PriorityCriteria(null,new Oe(0,0,0),new Oe(0,0,-1),new Oe(0,0,-1))}return A(d,[{key:"updateCriteria",value:function(e,t,n,i){this.priorityCriteria.pano=e,this.priorityCriteria.cameraPosition.copy(t),this.priorityCriteria.cameraDirs=n,this.priorityCriteria.upcomingPanos=i,this.maxNavQuality=this.qualityManager.getMaxNavPanoSize(),this.maxZoomQuality=this.qualityManager.getMaxZoomPanoSize()}},{key:"canDownloadSize",value:function(e){return this.maxNavQuality>=e||this.maxZoomQuality>=e&&this.zoomingActive}},{key:"populateScoredPanos",value:function(e,t,n,i,r,a){(n=n||[]).length=0;var o=[W0.filters.not(e)],s=[W0.scoreFunctions.distanceSquared(e),W0.scoreFunctions.direction(e.position,i)],l=j.sortByScore(t,o,s);if(a||o.push(W0.filters.inPanoDirection(e.position,i,d.DIRECTION_SCORE_STRICTNESS)),l)for(var u=0;u<l.length&&u<r;u++){var c=l[u].item;n.push(c)}return n}},{key:"queueTilesForPanos",value:function(e,t,n,i,r){for(var a=0,o=0;o<t.length;o++){var s=t[o];if(a+=0<this.queueTilesForPano(e,n,s,i)?1:0,r&&r<=a)break}return a}},{key:"canIncludeDescriptor",value:function(e){return e.status!==Bg.Downloading&&e.status!==Bg.Downloaded}},{key:"canIncludePano",value:function(e,t){return!e.isLoaded(t)}},{key:"getFOVDotThreshold",value:function(e){return Math.cos(Be.degToRad(e/2))}},{key:"setZoomingActive",value:function(e){e!==this.zoomingActive&&(this.zoomingActive=e)}}])}(),Ng=(Ug.PriorityCriteria=function(e,t,n,i,r){this.pano=e,this.cameraPosition=(new Oe).copy(t),this.cameraDirs=[],this.panoSpaceDir=(new Oe).copy(i),this.upcomingPanos=r,this.copy=function(e){this.pano=e.pano,this.cameraPosition.copy(e.cameraPosition),this.cameraDirs=e.cameraDirs,this.panoSpaceDir.copy(e.panoSpaceDir),this.upcomingPanos=r},this.zoomingActive=!1},Ug.DIRECTIONAL_FOV=180,Ug.DIRECTIONAL_FOV_NARROW=120,Ug.MAX_SCORED_PANOS_TOCONSIDER=6,Ug.MAX_SCORED_PANOS_TOADD=2,Ug.MAX_UPCOMING_PANOS_TOADD=3,Ug.DIRECTION_SCORE_STRICTNESS=.75,Ug.appendQueue=function(e,t){if(e&&t)for(var n=0;n<t.length;n++)e.push(t[n])},Ug.sortPanoTiles=function(e,t,n){n.datasetsLocal&&(n=n.datasetsLocal.find(function(e){return e.datasetId==t.pointcloud.dataset_id}).direction),Sg._panoSpaceDir.copy(n),b.getRelativeDirection(t.quaternion4dkk,Sg._panoSpaceDir),Sg._fovThresholdNarrow=te.getFOVDotThreshold(Ug.DIRECTIONAL_FOV_NARROW),Sg._fovThreshold=te.getFOVDotThreshold(Ug.DIRECTIONAL_FOV),e.sort(Sg)},Ug.insertSortedPanoTile=function(e,t,n,i){i.datasetsLocal&&(i=i.datasetsLocal.find(function(e){return e.datasetId==n.pointcloud.dataset_id}).direction),Sg._panoSpaceDir.copy(i),b.getRelativeDirection(n.quaternion4dkk,Sg._panoSpaceDir),Sg._fovThresholdNarrow=te.getFOVDotThreshold(Ug.DIRECTIONAL_FOV_NARROW),Sg._fovThreshold=te.getFOVDotThreshold(Ug.DIRECTIONAL_FOV);for(var r=-1,a=0;a<e.length;a++)if(Sg(t,e[a])<=0){r=a;break}if(-1===r)e[e.length]=t;else{for(var o=e.length;r<o;o--)e[o]=e[o-1];e[r]=t}},Ug.prototype.filterDepthTex=function(e){var t,n,i;Potree.settings.useDepthTex&&this.priorityCriteria.pano&&!viewer.mainViewport.view.isFlying()&&(n=this.priorityCriteria.cameraDirs.vectorForward,this.populateScoredPanos(this.priorityCriteria.pano,e,t=[],n,1/0,!0),n=vf.isMobile()?1:2,e=e.filter(function(e){return e.depthTexLoading}).length,viewer.mapViewer&&(e+=1.5*(i=viewer.mapViewer.mapLayer).loadingInProgress+i.waitQueue.length),e<n&&t.filter(function(e){return!e.depthTex}).slice(0,n-e).forEach(function(e){return e.loadDepthImg()}),this.nearPanos=t)},Ug.prototype.filterAndPrioritize=(Dg=[],Ig=[],kg=[],function(e,t,n){var i=this.priorityCriteria.cameraDirs.vectorForward,t=(this.populateScoredPanos(this.priorityCriteria.pano,t,Ig,i,Ug.MAX_SCORED_PANOS_TOCONSIDER),this.baseSize),i=this.standardSize,r=this.highSize,a=this.ultraHighSize;this.queueTilesForPano(e,n,this.priorityCriteria.pano,t),this.priorityCriteria.upcomingPanos&&this.queueTilesForPanos(e,this.priorityCriteria.upcomingPanos,n,t,Ug.MAX_UPCOMING_PANOS_TOADD),kg.length=0,this.canDownloadSize(i)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,i,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV_NARROW),Ug.sortPanoTiles(kg,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),Ug.appendQueue(e,kg),this.queueTilesForPanos(e,Ig,n,t,Ug.MAX_SCORED_PANOS_TOADD),kg.length=0,this.canDownloadSize(r)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,r,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV_NARROW),this.canDownloadSize(a)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,a,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV_NARROW),Ug.sortPanoTiles(kg,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),Ug.appendQueue(e,kg),kg.length=0,this.canDownloadSize(i)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,i,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV),this.canDownloadSize(r)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,r,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV),this.canDownloadSize(a)&&this.queueTilesInDirectionForPano(kg,n,this.priorityCriteria.pano,a,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,Ug.DIRECTIONAL_FOV),Ug.sortPanoTiles(kg,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),Ug.appendQueue(e,kg),this.queueTilesForPanos(e,Dg,n,t)}),Ug.prototype.queueTilesInDirectionForPano=(Rg={filter:Mg.DirectionalFOV,direction:new Oe,fov:60},Lg=new Oe,function(e,t,n,i,r,a,o){a=a.datasetsLocal.find(function(e){return e.datasetId==n.pointcloud.dataset_id}).direction;return Lg.copy(a),b.getRelativeDirection(n.quaternion4dkk,Lg),Rg.direction.copy(Lg),Rg.fov=o,this.filterAndQueueTileDownloadDescriptors(e,t,n,i,Rg)}),Ug.prototype.filterAndQueueTileDownloadDescriptors=(Fg=[],function(e,t,n,i,r){t=t.getTileDownloadDescriptors(n,i);Fg.length=0,this.filterTileDownloadDescriptors(n,t,Fg,r);for(var a=0,o=0;o<Fg.length;o++){var s=Fg[o];s&&(e.push(s),a++)}return a}),Ug.prototype.filterTileDownloadDescriptors=(new Oe,function(e,t,n,i){var r,a;if(i.filter===Mg.DirectionalFOV)for(r=0;r<t.length;r++)a=t[r],b.isTileWithinFOV(a.panoSize,a.tileSize,a.face,a.tileX,a.tileY,i.direction,i.fov)&&n.push(a);else for(r=0;r<t.length;r++)a=t[r],n.push(a);for(r=0;r<n.length;r++)a=n[r],this.canIncludeDescriptor(a)||(n[r]=null)}),Ug.prototype.queueTilesForPano=(Og={filter:Mg.None},function(e,t,n,i){return this.filterAndQueueTileDownloadDescriptors(e,t,n,i,Og)}),[]),zg={NEXT:-999,SUCCESS:0,EXCEPTION:-1,FAILURE_CODE_3001:3001,FAILURE_CODE_3002:3002,FAILURE_CODE_3003:3003,FAILURE_CODE_3004:3004,FAILURE_CODE_3005:3005,FAILURE_CODE_3006:3006,FAILURE_CODE_3007:3007,FAILURE_CODE_3008:3008,FAILURE_CODE_3009:3009,FAILURE_CODE_3010:3010,FAILURE_CODE_3011:3011,FAILURE_CODE_3012:3012,FAILURE_CODE_3013:3013,FAILURE_CODE_3014:3014,FAILURE_CODE_3015:3015,FAILURE_CODE_3016:3016,FAILURE_CODE_3017:3017,FAILURE_CODE_3018:3018,FAILURE_CODE_5010:5010,FAILURE_CODE_5012:5012,FAILURE_CODE_5014:5014,FAILURE_CODE_5005:5005};$.ajaxSetup({headers:{},beforeSend:function(e){(t=vf.urlHasValue("token",!0))&&localStorage.setItem("token",t);var t=t||localStorage.getItem("token")||"";t?e.setRequestHeader("token",t):-1!=this.url.indexOf("isLogin")&&showLoginTips()},error:function(e,t,n){return-1!=this.url.indexOf("/scene.json")&&404==e.status?$alert({content:i18n.t("tips.scene_notfound")}):"POST"===this.type?$alert({content:i18n.t("tips.network_error")}):void 0},success:function(e){},complete:function(){"POST"===this.type&&Wg.__loading&&$waiting.hide(),Wg.__loading=!0}});var Gg,Hg,Vg,Qg,jg,Wg={statusCode:zg,__loading:!0,__request:function(e,i,r,a,o,s){return"function"!=typeof o&&(o=Pg),"function"!=typeof s&&(s=Pg),e.done(function(e){var t,n;void 0!==e.code?(t=e.code,n=function(e){e!=zg.FAILURE_CODE_3001&&e!=zg.FAILURE_CODE_3002&&e!=zg.FAILURE_CODE_3003&&e!=zg.FAILURE_CODE_3004||-1==r.indexOf("isLogin")&&-1==r.indexOf("openSceneBykey")&&Ng.push(function(){Wg[i](r,a,o,s)}),s()},(t==zg.EXCEPTION?$alert({content:i18n.t("tips.exception")}):t==zg.FAILURE_CODE_3002||t==zg.FAILURE_CODE_3003||t==zg.FAILURE_CODE_3004?(n(t),showLoginTips()):t==zg.FAILURE_CODE_3001?(n(t),$alert({content:i18n.t("tips.params_notfound")})):t==zg.FAILURE_CODE_3017?(n(t),$alert({content:i18n.t("tips.file_notfound")})):t==zg.FAILURE_CODE_5005?(n(t),$alert({content:i18n.t("tips.scene_notfound")})):t==zg.FAILURE_CODE_5010?(n(t),$alert({content:i18n.t("tips.camera_notfound")})):t==zg.FAILURE_CODE_5012?(n(t),$alert({content:i18n.t("tips.data_error")})):t==zg.FAILURE_CODE_5014?(n(t),$alert({content:i18n.t("tips.auth_deny")})):zg.NEXT)===zg.NEXT&&o(e,0==e.code)):o(e)}),e.fail(s),e.always(function(){return e=null}),e},get:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return/\.json/.test(e)?this.getJson(e,t,n,i):this.__request($.get(e,t),"get",e,t,n,i)},getText:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"text"}),"getText",e,t,n,i)},getJson:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.getJSON(e,t),"get",e,t,n,i)},getBlob:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"blob"}),"getBlob",e,t,n,i)},getArraybuffer:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"arraybuffer"}),"getArraybuffer",e,t,n,i)},post:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return-1==e.indexOf("isLogin")&&Wg.__loading&&$waiting.show(),this.__request($.post(e,t),"post",e,t,n,i)},postJson:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return Wg.__loading&&$waiting.show(),this.__request($.ajax({type:"POST",url:e,contentType:"application/json",data:JSON.stringify(t)}),"postJson",e,t,n,i)},postForm:function(e,t,n,i,r){return"function"==typeof r?this.__request($.ajax({type:"POST",url:e,processData:!1,contentType:!1,data:t,xhr:function(){var e;return(e=new XMLHttpRequest).upload.addEventListener("progress",function(e){r(e.loaded/e.total*100+"%")}),e}}),"postForm",e,t,n,i):(Wg.__loading&&$waiting.show(),this.__request($.ajax({type:"POST",url:e,processData:!1,contentType:!1,data:t}),"postForm",e,t,n,i))},loadImage:function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:3,i=$.Deferred(),r=new Image;return r.onerror=function(){0<n?setTimeout(function(){console.warn("Retrying load image: "+e),t.loadImage(e,n-1).done(i.resolve.bind(i)).progress(i.notify.bind(i)).fail(i.reject.bind(i))},1e3):i.reject("[".concat(e,"]加载失败"))},r.onload=function(){i.resolve(r)},r.crossOrigin="anonymous",r.src=e,i},uploadFile:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length?arguments[2]:void 0,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0,o=new FormData;for(t in n)"file"==t?o.append("file",n[t],n.filename||n[t].name):"filename"!=t&&o.append(t,n[t]);return this.postForm(e,o,i,r,a)},uploadBlobFile:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length?arguments[2]:void 0,r=3<arguments.length?arguments[3]:void 0,a=new FormData;for(t in n)"file"===t?a.append("file",_g(n.file),n.filename):"filename"!=t&&a.append(t,n[t]);return this.postForm(e,a,i,r)}},Gh=Potree.defines,Jg=Gh.TileDownloaderEvents,qg=Gh.DownloadStatus,Yg=(window.downloaded={},window.startdownloads=[],function(){function n(){var e;return ue(this,n),(e=le(this,n)).panos=null,e.retryMinimumTime=1e4,e.panoLoadCallbacks={},e.downloadDescriptors={},e.priorityQueue=[],e.forceQueue=[],e.activeDownloads=[],e.tilePrioritizer=null,e.refreshInterval=null,e.processPriorityQueue=!1,e.concurrentDownloads=6,e.downloadTestResults={},e.freeze=Object.freeze({Testing:1,Success:2,Fail:3}),e}return v(n,Qn),A(n,[{key:"setPanoData",value:function(e,t){this.panos=e,this.imagePanos=t}},{key:"start",value:function(){this.downloadCubeTex=!0}},{key:"stop",value:function(){this.downloadCubeTex=!1}},{key:"update",value:function(){var e=this;this.downloadCubeTex&&(this.forceQueue.length,this.processQueueForDownloading(this.forceQueue),this.processPriorityQueue)&&(Potree.Common.intervalTool.isWaiting("processPriorityQueue",function(){e.queuePrioritizedTilesForPanos(e.panos)},66),this.priorityQueue.length,this.processQueueForDownloading(this.priorityQueue)),Potree.Common.intervalTool.isWaiting("filterDepthTex",function(){e.tilePrioritizer.filterDepthTex(e.panos)},77)}},{key:"queuePrioritizedTilesForPanos",value:function(e){this.tilePrioritizer&&(this.clearQueue(this.priorityQueue),this.tilePrioritizer.filterAndPrioritize(this.priorityQueue,e,this),this.clearFromQueue(this.priorityQueue,qg.None,!0),this.setStatusOrRemoveForAllDescriptors(this.priorityQueue,qg.Queued))}},{key:"clearQueue",value:function(e){this.setStatusForAllDescriptors(e,qg.None),e.length=0}},{key:"clearForceQueue",value:function(){this.clearQueue(this.forceQueue)}},{key:"clearFromQueue",value:function(e,t,n){for(var i=0;i<e.length;i++){var r=e[i];r&&(t===r.status&&!n||t!==r.status&&n)&&(e[i]=null)}}},{key:"setStatusForAllDescriptors",value:function(e,t){for(var n=0;n<e.length;n++){var i=e[n];i&&(i.status=t)}}},{key:"setStatusOrRemoveForAllDescriptors",value:function(e,t){for(var n=0;n<e.length;n++){var i=e[n];i&&(i.status!==t?i.status=t:e[n]=null)}}},{key:"getTileDownloadDescriptors",value:function(e,t){var n=this.getAllTileDownloadDescriptorsForPano(e),i=n[t];return i||(i=this.buildDownloadDescriptorArray(t),n[t]=i,this.initTileDownloadDescriptors(i,e,t)),i}},{key:"getAllTileDownloadDescriptorsForPano",value:function(e){var t=this.downloadDescriptors[e.id];return t||(this.downloadDescriptors[e.id]=t={}),t}},{key:"processQueueForDownloading",value:function(e,t){if(this.cleanupActiveDownloads(),e.length){var n=Potree.Common.getBestCount("concurrentDownloads",1,6,1.8,14);if(this.activeDownloads.length<n||t)for(var i=t?e.length:n-this.activeDownloads.length,r=0;r<i&&0<e.length;0){var a=e.shift();if(a){if(512<a.panoSize&&!this.isPanoDownloaded(a.pano,512)){e.push(a);break}this.startDownload(a),r++}}}}},{key:"testDownload",value:function(t,e,n){var i,r=this.downloadTestResults[t];r?r===this.freeze.Success?n(!0):r===this.freeze.Fail&&n(!1):(this.downloadTestResults[t]=this.freeze.Testing,r=this.panos[0],r=this.getTileUrl({pano:r,panoSize:t,tileSize:e,tileIndex:0}),e=function(e){this.downloadTestResults[t]=this.freeze.Success,n(!0)}.bind(this),i=function(){this.downloadTestResults[t]=this.freeze.Fail,n(!1)}.bind(this),this.loadImage(r,0,e,i))}},{key:"startDownload",value:function(e){startdownloads.push(e),e.local2SrcFailed=this.local2SrcFailed,e.status=qg.Downloading;var t=this.getTileUrl(e);t&&(this.activeDownloads.push(e),this.loadImage(t,n.DOWNLOAD_RETRIES,this.downloadComplete.bind(this,e),this.downloadFailed.bind(this,e)))}},{key:"downloadFailed",value:function(e,t){Potree.settings.isLocal2&&!e.local2SrcFailed&&(e.local2SrcFailed=this.local2SrcFailed=!0,t=this.getTileUrl(e),this.loadImage(t,n.DOWNLOAD_RETRIES,this.downloadComplete.bind(this,e),this.downloadFailed.bind(this,e)))}},{key:"downloadComplete",value:function(e,t){var n=this.getPanoLoadCallbacks(e.pano,e.panoSize),i=(e.status=qg.Downloaded,n&&n.onProgress&&n.onProgress(e.pano,e.panoSize),{panoId:e.pano.id,image:t,tileSize:e.tileSize,panoSize:e.panoSize,tileIndex:e.tileIndex,faceTileIndex:e.faceTileIndex,totalTiles:e.totalTiles,face:e.face,tileX:e.tileX,tileY:e.tileY,direction:e.direction});downloaded[e.pano.id]||(downloaded[e.pano.id]={512:[],1024:[],2048:[]}),downloaded[e.pano.id][e.panoSize]||(downloaded[e.pano.id][e.panoSize]=[]),downloaded[e.pano.id][e.panoSize].push(e),512!=e.panoSize&&downloaded[e.pano.id][512].length<6&&console.warn("没下完"),e.image=t,this.dispatchEvent({type:Jg.TileDownloadSuccess,desc:i}),this.isPanoDownloaded(e.pano,e.panoSize)&&(i={panoId:e.pano.id,tileSize:e.tileSize,panoSize:e.panoSize},this.dispatchEvent({type:Jg.PanoDownloadComplete,desc:i}),n)&&n.onLoad&&n.onLoad(e.pano,e.panoSize)}},{key:"isPanoDownloaded",value:function(e,t){var n=this.getTileDownloadDescriptors(e,t);if(n.length<=0)return!1;for(var i=0;i<n.length;i++)if(n[i].status!==qg.Downloaded)return!1;return!0}},{key:"setPanoLoadCallbacks",value:function(e,t,n,i,r){e=e.id+":"+this.qualityManager.getPanoSize(t);this.panoLoadCallbacks[e]={onLoad:n,onFail:i,onProgress:r}}},{key:"getPanoLoadCallbacks",value:function(e,t){e=e.id+":"+t;return this.panoLoadCallbacks[e]}},{key:"buildDownloadDescriptorArray",value:function(e){for(var t=b.getTileCountForSize(e),n=[],i=0;i<t;i++){var r=this.buildDownloadDescriptor();n.push(r)}return n}},{key:"buildDownloadDescriptor",value:function(){return{panoGroupId:null,pano:null,panoSize:-1,tileSize:-1,tileIndex:-1,totalTiles:-1,faceTileIndex:-1,status:qg.None,url:null,image:null,direction:new Oe,face:-1,cubeFace:-1,tileX:-1,tileY:-1}}},{key:"initTileDownloadDescriptors",value:function(e,t,n){for(var i=0;i<e.length;i++){var r=e[i];this.initTileDownloadDescriptor(r,t,n,i)}}},{key:"initTileDownloadDescriptor",value:function(e,t,n,i){var r=b.TILE_SIZE<=n?b.TILE_SIZE:n;e.face=b.getFaceForTile(n,i),e.cubeFace=b.mapFaceToCubemapFace(e.face),e.pano=t,e.panoSize=n,e.tileSize=r,e.tileIndex=i,e.totalTiles=b.getTileCountForSize(n),e.status=qg.None,e.image=null,b.getTileLocation(e.panoSize,e.tileIndex,e),b.getTileVector(e.panoSize,e.tileSize,e.cubeFace,e.tileX,e.tileY,b.LocationOnTile.Center,0,e.direction)}},{key:"getTiles",value:function(e,t,n,i){n=n?"/scene_view_data/".concat(t,"/images/"):"/images/images".concat(t,"/");return(Potree.settings.isLocal&&!this.local2SrcFailed&&i.datasetData.mapping&&!Potree.settings.isLocal2?"".concat(Potree.settings.urls.prefix3,"/").concat(i.datasetData.mapping):"".concat(Potree.settings.urls.prefix3)).concat(n).concat(e)}},{key:"loadImage",value:function(e,t,n,i){Wg.loadImage(e,t).then(function(e){n(e)}).fail(i)}}])}());function Xg(e,t){this.tree=e,this.parent=t,this.children=[],this.id=++$g}function Kg(e){e.root=function e(t,n,i){if(i>t.levels)return null;var r=new Xg(t,n);t.allNodes.push(r);for(var a=0;a<Zg;a++)r.children[a]=e(t,r,i+1);return r}(e,null,0)}Yg.prototype.forceQueueTilesForPano=(Gg=[],Hg=[],function(e,t,n,i,r,a){Gg.length=0;for(var o=this.getTileDownloadDescriptors(e,t),s=0;s<o.length;s++){var l=o[s];l.status!==qg.None&&l.status!==qg.Queued||Gg.push(l)}if(n&&0<Gg.length){Ug.sortPanoTiles(Gg,e,n),Hg.length=0,b.matchingTilesInDirection(e,t,n,i,r,Hg);for(var u=0,c=function(e){return e.face===d.face&&e.faceTileIndex===d.faceTileIndex};u<Gg.length;){var d=Gg[u];Hg.findIndex(c)<0?Gg.splice(u,1):u++}}for(var h=0;h<Gg.length;h++)this.forceQueue.push(Gg[h]);this.setStatusForAllDescriptors(this.forceQueue,qg.ForceQueued),this.clearFromQueue(this.priorityQueue,qg.ForceQueued,!1),a&&this.processQueueForDownloading(this.forceQueue,!0)}),Yg.prototype.cleanupActiveDownloads=(Vg=[],function(){for(var e=Vg.length=0;e<this.activeDownloads.length;e++){var t=this.activeDownloads[e];t.status!==qg.Downloaded&&t.status!==qg.Failed&&Vg.push(t)}this.activeDownloads.length=0,this.activeDownloads.push.apply(this.activeDownloads,Vg)}),Yg.prototype.getTileUrl=(Qg={256:"256",512:"512",1024:"1k",2048:"2k",4096:"4k"},jg={face:-1,faceTileIndex:-1,tileX:-1,tileY:-1},function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.pano.originID,n=e.panoSize,i=e.tileSize,r=e.tileIndex,a=e.pano.pointcloud.sceneCode,o=Potree.settings.useV4url&&"V4"==e.pano.pointcloud.datasetData.sceneVersion,i=(b.getTileLocation(n,r,jg),Math.floor(n/i)),r=Math.floor(r/(i*i)),i="",s="",s=Potree.settings.tileOriginUrl?(i=this.getTiles(i="tiles/"+t+"/"+Qg[n]+"_face"+r+"_"+jg.tileX+"_"+jg.tileY+".jpg",a,o,e.pano.pointcloud),"?"):(i="tiles/4k/"+t+"_skybox"+r+".jpg?x-oss-process=","512"==Qg[n]?i+="image/resize,h_512":("1k"==Qg[n]||"2k"==Qg[n]?i+="image/resize,m_lfit,w_"+n+"/crop,w_512,h_512,":i="tiles/4k/"+t+"_skybox"+r+".jpg?x-oss-process=image/crop,w_512,h_512,",i=i+(0==jg.tileX?"x_0,":"x_"+512*jg.tileX+",")+(0==jg.tileY?"y_0":"y_"+512*jg.tileY)),i=this.getTiles(i,a,o,e.pano.pointcloud),"&");return i+=s+(Potree.settings.panoVersion?"version="+Potree.settings.panoVersion:"time="+e.pano.pointcloud.timeStamp)}),Yg.tilegen=!0,Yg.IDLE_REFRESH_DELAY=500,Yg.ACTIVE_REFRESH_DELAY=16,Yg.DOWNLOAD_RETRIES=4;var Zg=4,$g=0,e0=function(){function i(e,t){ue(this,i),this.levels=t,this.tileSize=e,this.root=null,this.allNodes=[],Kg(this)}return A(i,[{key:"getSubNode",value:function(e,t,n){(!t||e<this.tileSize)&&(t=0),(!n||e<this.tileSize)&&(n=0),e<this.tileSize&&(e=this.tileSize);e=i.getLevelCountForSize(this.tileSize,e);return function e(t,n,i,r,a){var o,s,l;return t?0===i?t:t.children&&0!==t.children.length?(s=r%(o=Math.pow(2,i)/2),l=a%o,a=Math.floor(a/o),r=Math.floor(r/o),e(t.children[2*a+r],n+1,i-1,s,l)):null:null}(this.root,0,e,t,n)}},{key:"breadthFirst",value:function(e){var t=!!(e=e||{}).nullLevelEnd,n=e.maxLevel,i=e.minLevel,r=e.callback,a=e.saveVisited,o=[],s={},l=0;for(o.push(this.root),o.push(s);0<o.length&&!(n&&n<l);){var u=o.shift();if(u===s)(!i||i<=l)&&(r&&t&&r(null),a)&&t&&a.push(null),0<o.length&&o.push(s),l++,0;else{if(u.children)for(var c=0;c<u.children.length;c++)u.children[c]&&o.push(u.children[c]);var d=this.getFaceIndexFromNode(u);(!i||i<=l)&&(r&&r(u,l,d),a)&&a.push(u),0}}}},{key:"getFaceIndexFromNode",value:function(e){if(!e)return-1;for(var t=1,n=e,i=0,r=0;;){var a=n.parent;if(!a)break;for(var o=-1,s=0;s<a.children.length;s++)a.children[s]===n&&(o=s);i=o%2*t+i,r=Math.floor(o/2)*t+r;t*=2,n=a}return r*t+i}},{key:"depthFirst",value:function(e,t,n){!function e(t,n,i,r,a,o,s,l){if(t){var u=2*r+i;if((s=s||e0.TraversalType.PreOrder)===e0.TraversalType.PreOrder&&(a&&a(t,n,u,i,r),o)&&o.push(t),t.children&&0!==t.children.length){for(var c=2*r,d=2*i,h=0;h<2;h++)for(var p=0;p<2;p++)e(t.children[2*p+h],n+1,d+h,c+p,a,o,s,l);s===e0.TraversalType.PostOrder&&(a&&a(t,n,u,i,r),o)&&o.push(t)}}}(this.root,0,0,0,e,t,n,this.tileSize)}}])}(),t0=(e0.TraversalType=Object.freeze({PreOrder:0,PostOrder:1}),e0.getLevelCountForSize=function(e,t){var n=0;for(t<e&&(t=e);!((t/=2)<e);)n++;return n},e0.getSizeForLevel=function(e,t){return Math.pow(2,t)*e},function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,t),le(this,t,[Object.assign({},{uniforms:{color:{type:"v3",value:e.color||new Se("#FFF")},map:{type:"t",value:e.map},opacity:{type:"f",value:null==e.opacity?1:e.opacity}},vertexShader:bm["basicTextured.vs"],fragmentShader:bm["basicTextured.fs"],defines:{HasColor:""}},e)])}return v(t,ga),A(t,[{key:"copy",value:function(e){return I(t,"copy",this,3)([e]),this.map=e.map,this}},{key:"opacity",get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms&&(this.uniforms.opacity.value=e)}},{key:"map",get:function(){return this.uniforms.map.value},set:function(e){(this.uniforms.map.value=e)?this.defines.HasMap="":delete this.defines.HasMap}}])}()),zu=Potree.defines,n0=zu.PanoSizeClass,i0=zu.PanoRendererEvents,r0=zu.Vectors,a0=(zu.SceneRendererEvents,zu.TileDownloaderEvents),o0=zu.GLCubeFaces;yv.tiling.uploadIntervalDelay,yv.tiling.initialIntervalDelay;var s0,l0,u0,c0,d0,h0,p0,f0,m0,v0,g0,A0,y0,w0,b0,x0,E0,C0,B0=yv.tiling.maxNonBaseUploadsPerFrame,M0=yv.tiling.maxBaseUploadsPerFrame,S0=0,T0=1,_0=function(){function r(e,t,n){var i;return ue(this,r),(i=le(this,r)).tileDirectory={},i.activeRenderTargetDescriptors={},i.activePanos=[],i.panoLODDescriptors={},i.panoDescriptors={},i.tileTrees={},i.forceQueue=[],i.uploadQueues={},i.uploadInterval=null,i.uploadIntervalCancelled=!0,i.usingTileOverlay=!1,i.overlayTilesLoaded=!1,i.overlayTileBase=null,i.overlayTilesBasic={},i.overlayTilesEnhanced={},i.zoomRenderTarget=null,i.zoomPano=null,i.zoomingActive=!1,i.zoomPanoId=null,i.zoomPanoRenderingDisabled=!1,i.direction=[],i.maxBaseUploadsPerFrame=M0,i.maxNonBaseUploadsPerFrame=B0,i.M=[],i.viewer=e,i.tileDownloader=t,i.qualityManager=n,i.initTime=performance.now(),i.bindEvents(),i}return v(r,Qn),A(r,[{key:"getActivePanoTextures",value:function(e){e=e||[];for(var t=0;t<M.length;t++){var n=M[t];n.renderTarget&&n.renderTarget.texture&&e.push(n.renderTarget.texture)}}},{key:"hasQueuedTiles",value:function(){var e=this.peekNextFromUploadQueue();return null!=e}},{key:"getActiveRenderTargetDescriptor",value:function(e){return this.activeRenderTargetDescriptors[e]}},{key:"setActiveRenderTargetDescriptor",value:function(e,t){this.activeRenderTargetDescriptors[e]=t}},{key:"bindEvents",value:function(){this.tileDownloader.addEventListener(a0.TileDownloadSuccess,this.onTileDownloaded.bind(this))}},{key:"enableUltraHighQualityMode",value:function(t){if("2k"==yv.tileClass||"1k"==yv.tileClass)return this.enableHighQuality(t);var e;this.qualityManager.ultraHighQualityModeEnabled()||(e=this.qualityManager.getPanoSize(n0.ULTRAHIGH),this.tileDownloader.testDownload(e,b.TILE_SIZE,function(e){e&&(this.qualityManager.enableUltraHighQualityMode(),this.setupZoomRenderTarget(),t())}.bind(this)))}},{key:"activateTiledPano",value:function(e,t,n){n&&this.clearAllQueuedUploads();for(var i=0;i<b.FACES_PER_PANO;i++)this.initTileTree(e.id,i,this.qualityManager.getMaxPossiblePanoSize());this.linkAllTilesAndNodes(e);var r=this.getActiveRenderTargetDescriptor(e.id),t=(t>this.qualityManager.getMaxNavPanoSize()&&(t=this.qualityManager.getMaxNavPanoSize()),r&&t===r.size||(r&&this.deactiveDescripor(r.renderTarget),(r=this.activeDescripor(t))||(t=this.initTiledPano(t,!Potree.settings.disableAATarget&&!vf.isMobile()),(r=this.initDescriptor(t.width)).renderTarget=t),r.pano=e,this.resetPanoDescriptor(e.id),this.resetPanoLODDescriptors(e.id),this.resetRenderStatus(e.id,!0,!0)),this.setActiveRenderTargetDescriptor(e.id,r),n?0:1);return this.updateActivePanos(e,t),r.renderTarget}},{key:"deactivateTiledPano",value:function(e){var t=this.getActiveRenderTargetDescriptor(e.id),t=(this.isRenderTargetDescriptorValid(t)&&(this.deactiveDescripor(t.renderTarget),this.setActiveRenderTargetDescriptor(e.id,null)),this.getUploadQueueForPano(e.id));this.clearUploadQueue(t),this.updateActivePanos(),viewer.cancelLoad(e)}},{key:"getActivePanoCount",value:function(){return this.activePanos.length}},{key:"resetRenderStatus",value:function(e,r,a,t){var n=null;t&&(n=e0.getLevelCountForSize(b.TILE_SIZE,t)+1);for(var i=function(e,t,n,i){a&&(t.tile.zoomUploaded=!1),r&&(t.tile.uploaded=!1)},o=0;o<b.FACES_PER_PANO;o++)this.getTileTree(e,o).breadthFirst({callback:i.bind(this,o),minLevel:n})}},{key:"copyBaseRenderStatusToZoomed",value:function(e){for(var t=e0.getLevelCountForSize(b.TILE_SIZE,this.qualityManager.getMaxNavPanoSize()),n=function(e,t,n,i){t.tile.zoomUploaded=t.tile.uploaded,t.zoomCovered=t.covered},i=0;i<b.FACES_PER_PANO;i++)this.getTileTree(e,i).breadthFirst({callback:n.bind(this,i),maxLevel:t})}},{key:"isRenderTargetDescriptorValid",value:function(e){return e&&e.renderTarget}},{key:"isPanoActive",value:function(e){e=this.getActiveRenderTargetDescriptor(e);return this.isRenderTargetDescriptorValid(e)}},{key:"isPanoZoomed",value:function(e){return this.zoomingActive&&this.zoomPanoId===e}},{key:"initTileTree",value:function(e,t,n){var i=this.tileTrees[e],e=(i||(this.tileTrees[e]=i=[]),i[t]);e||(n=e0.getLevelCountForSize(b.TILE_SIZE,n),e=new e0(b.TILE_SIZE,n),i[t]=e)}},{key:"getTileTree",value:function(e,t){e=this.tileTrees[e],e||console.error("PanoRenderer.getTileTree() -> Tree array not yet initialized!"),e=e[t];return e||console.error("PanoRenderer.getTileTree() -> Tree not yet initialized!"),e}},{key:"initTiledPano",value:function(e,t){var n=this.viewer.renderer,e=new xa(e,{stencilBuffer:!1}),i=new ba([]),t=(i.image=[null,null,null,null,null,null],i.flipY=!0,i.format=It,t?(i.generateMipmaps=!0,i.magFilter=N,i.minFilter=gt):(i.generateMipmaps=!1,i.magFilter=N,i.minFilter=N),e.texture=i,n.setRenderTarget(e),n.setRenderTarget(null),n.properties.get(i));return t.__image__webglTextureCube=t.__webglTexture,e}},{key:"getUploadQueueForPano",value:function(e){var t=this.uploadQueues[e];return t||(this.uploadQueues[e]=t=[]),t}},{key:"isTileUploaded",value:function(e){return this.isPanoZoomed(e.panoId)?e.zoomUploaded:e.uploaded}},{key:"setUploaded",value:function(e,t){this.isPanoZoomed(e.panoId)?e.zoomUploaded=t:e.uploaded=t}},{key:"queueTileUpload",value:function(e,t,n){var i,r=this.getActiveRenderTargetDescriptor(e.panoId);!this.isRenderTargetDescriptorValid(r)||!e.downloaded||this.isTileUploaded(e)||e.uploadQueued&&!n||e.panoSize>this.qualityManager.getMaxNavPanoSize()&&!this.zoomingActive||(i=this.getUploadQueueForPano(e.panoId),n?this.uploadTile(e,!1):(this.shoulPushToFrontOfQueue(e)?this.forceQueue.push(e):t&&this.direction?Ug.insertSortedPanoTile(i,e,r.pano,this.direction):i.push(e),e.uploadQueued=!0,this.uploadInterval||this.uploadIntervalCancelled||this.refreshUploadInterval(0)))}},{key:"shoulPushToFrontOfQueue",value:function(e){return 0===e0.getLevelCountForSize(b.TILE_SIZE,e.panoSize)}},{key:"getTopUploadQueue",value:function(){for(var e,t,n=S0;n<=T0;n++)for(var i=0;i<this.activePanos.length;i++)if(e=this.activePanos[i],0<(t=this.getUploadQueueForPano(e.id)).length)switch(n){case S0:if(0===t[0].level)return t;break;case T0:return t}return null}},{key:"peekNextFromUploadQueue",value:function(){var e;return 0<this.forceQueue.length?this.forceQueue[0]:(e=this.getTopUploadQueue())&&0<e.length?e[0]:null}},{key:"clearAllQueuedUploads",value:function(){this.clearAllUploadQueues(null,0)}},{key:"clearAllQueuedUploadsForPano",value:function(e){this.clearAllUploadQueues(e,0)}},{key:"clearAllUploadQueues",value:function(e,t){if(e)this.clearUploadQueue(this.getUploadQueueForPano(e),t),this.clearUploadQueue(this.forceQueue,t,e);else{for(var n=0;n<this.activePanos.length;n++){var i=this.activePanos[n];this.clearUploadQueue(this.getUploadQueueForPano(i.id),t)}this.clearUploadQueue(this.forceQueue,t)}}},{key:"clearUploadQueue",value:function(e,t,n){null==t&&(t=0);for(var i=0;i<e.length;){var r=e[i];(!n||n===r.tile.panoId)&&r.level>=t?(r.uploadQueued=!1,e.splice(i,1)):i++}}},{key:"updateUploadQueue",value:function(e,t){for(var n=0,i=0;!(t<=i||e<=n);){var r,a=this.getNextFromUploadQueue();if(!a)break;0!==a.level?n++:i++,a.panoSize>this.qualityManager.getMaxNavPanoSize()&&!this.zoomingActive||(r=this.getActiveRenderTargetDescriptor(a.panoId),this.isRenderTargetDescriptorValid(r)&&this.uploadTile(a,a.forceUpload))}}},{key:"updateDirection",value:function(e){if(e=e||this.direction){this.direction=e;for(var t=0;t<this.activePanos.length;t++){var n=this.activePanos[t],i=this.getUploadQueueForPano(n.id);Ug.sortPanoTiles(i,n,this.direction)}}}},{key:"anyUploaded",value:function(e){if(e){if(e.tile&&this.isTileUploaded(e.tile))return!0;if(e.children)for(var t=0;t<e.children.length;t++){var n=e.children[t];if(this.anyUploaded(n))return!0}}return!1}},{key:"setNodeCovered",value:function(e,t){this.isPanoZoomed(e.tile.panoId)?e.zoomCovered=t:e.covered=t}},{key:"isNodeCovered",value:function(e){return!!e&&(this.isPanoZoomed(e.tile.panoId)?e.zoomCovered:e.covered)}},{key:"addCoverageForNode",value:function(e){this.setNodeCovered(e,!0),e.parent&&e.covered&&(e=e.parent,this.nodeSubcovered(e))&&this.addCoverageForNode(e,!0)}},{key:"calcFullCoverage",value:function(e){var t=!1;if(e.children)for(var n=0;n<e.children.length;n++)var i=e.children[n],t=t||this.calcFullCoverage(i);e.covered=e.tile.uploaded||t}},{key:"nodeSubcovered",value:function(e){if(!e.children)return!1;for(var t=0;t<e.children.length;t++)if(!e.children[t]||!this.isNodeCovered(e.children[t]))return!1;return!0}},{key:"resetPanoDescriptor",value:function(e){this.getPanoDescriptor(e)}},{key:"getPanoDescriptor",value:function(e){var t=this.panoDescriptors[e];return t||(this.panoDescriptors[e]=t={}),t}},{key:"resetPanoLODDescriptors",value:function(e){var t,n,i=this.getPanoLODDescriptors(e);for(t in i)i.hasOwnProperty(t)&&((n=i[t]).uploadCount=0,n.uploadAttempts=0,n.uploaded=[])}},{key:"getPanoLODDescriptor",value:function(e,t){var e=this.getPanoLODDescriptors(e),n=e[t];return n||(e[t]=n={uploadCount:0,uploadAttempts:0,uploaded:[]}),n}},{key:"getPanoLODDescriptors",value:function(e){var t=this.panoLODDescriptors[e];return t||(this.panoLODDescriptors[e]=t={}),t}},{key:"onTileDownloaded",value:function(e){var e=e.desc,t=e0.getLevelCountForSize(b.TILE_SIZE,e.panoSize),t=this.getTileDirectoryEntry(e.panoId,e.face,t,e.faceTileIndex);t.downloaded=!0,t.image=e.image,t.panoSize=e.panoSize,t.tileX=e.tileX,t.tileY=e.tileY,t.totalTiles=e.totalTiles,t.tileIndex=e.tileIndex,t.faceTileIndex=e.faceTileIndex,t.face=e.face,t.cubeFace=b.mapFaceToCubemapFace(e.face),t.panoId=e.panoId,t.tileSize=e.tileSize,t.direction=(new Oe).copy(e.direction),t.node=null,t.level=e0.getLevelCountForSize(b.TILE_SIZE,t.panoSize),this.isPanoActive(t.panoId)&&(e=this.getTileTree(t.panoId,t.face).getSubNode(t.panoSize,t.tileX,t.tileY),this.linkTileAndNode(t,e),this.queueTileUpload(t,!0))}},{key:"getTileDirectoryEntry",value:function(e,t,n,i){var r=this.tileDirectory[e],a=(r||(this.tileDirectory[e]=r={}),16384*t+1024*n+i),o=r[a];return o||(r[a]=o={downloaded:!1,uploaded:!1,zoomUploaded:!1}),o._key=e+":"+t+":"+n+":"+i,o._tileKey=a,o}},{key:"setZoomingActive",value:function(e,t,n){this.zoomPanoRenderingDisabled||e===this.zoomingActive&&this.zoomPanoId===t.id||(this.zoomingActive=e,this.zoomPanoId=t.id,this.zoomingActive&&(this.zoomPanoId!==t.id||n)&&this.updateZoomedPanoFromBase(t))}},{key:"updateZoomedPanoFromBase",value:function(e){var t,n,i;this.zoomPanoRenderingDisabled||(i=this.getActiveRenderTargetDescriptor(e.id))&&i.renderTarget&&(this.zoomRenderTarget&&(t=Math.min(this.qualityManager.maxRenderTargetSize,this.qualityManager.getMaxZoomPanoSize()),n=i.renderTarget,i=i.size,this.copyCubeMap(n.texture,this.zoomRenderTarget,i,i,t,t)),this.copyBaseRenderStatusToZoomed(e.id))}},{key:"add",value:function(e){this.M.push(e)}},{key:"initDescriptor",value:function(e){var t={renderTarget:null,inUse:!1,size:-1,pano:null};return t.inUse=!0,t.size=e,this.add(t),t}},{key:"activeDescripor",value:function(e){for(var t=0;t<this.M.length;t++){var n=this.M[t];if(!n.inUse&&n.size===e)return n.inUse=!0,n}return null}},{key:"deactiveDescripor",value:function(e){for(var t=0;t<this.M.length;t++){var n=this.M[t];if(n.renderTarget===e)return!(n.inUse=!1)}return!1}},{key:"enableHighQuality",value:function(e){this.qualityManager.highQualityModeStarted||(this.setupZoomRenderTarget(),e(),this.qualityManager.highQualityModeStarted=!0)}},{key:"linkTileAndNode",value:function(e,t){(t.tile=e).node=t}},{key:"linkAllTilesAndNodes",value:function(a){for(var e=function(e,t,n,i,r){t=this.getTileDirectoryEntry(a.id,t,i,r);this.linkTileAndNode(t,n)},t=0;t<b.FACES_PER_PANO;t++){var n=this.getTileTree(a.id,t);n.breadthFirst({callback:e.bind(this,n,t)})}}},{key:"initSizedTexture2D",value:function(e,t,n){var i=this.viewer.renderer,r=i.getContext(),a=i.state,o=new Zn(null),s=(o.flipY=!1,o.generateMipmaps=n=!0!==n?!1:n,i.paramThreeToGL(o.format)),l=i.paramThreeToGL(o.type),u=i.properties.get(o),c=r.createTexture(),e=(a.bindTexture(r.TEXTURE_2D,c),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,o.flipY),r.texImage2D(r.TEXTURE_2D,0,s,e,e,0,s,l,null),o.wrapS=t,o.wrapT=t,i.paramThreeToGL(t));return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,e),n?(o.magFilter=N,o.minFilter=gt,r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR_MIPMAP_NEAREST),r.generateMipmap(r.TEXTURE_2D)):(o.magFilter=N,o.minFilter=N,r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR)),a.bindTexture(r.TEXTURE_2D,null),u.__webglTexture=c,o}},{key:"deallocateCubeTexture",value:function(e){var t=this.viewer.renderer,n=t.getContext(),t=t.properties.get(e);n.deleteTexture(t.__image__webglTextureCube)}},{key:"uploadTexture2D",value:function(e,t,n,i,r,a){var o=this.viewer.renderer,s=o.getContext(),l=o.state,u=o.properties.get(t);l.bindTexture(s.TEXTURE_2D,u.__webglTexture),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,t.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,t.unpackAlignment),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,o.paramThreeToGL(t.wrapS)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,o.paramThreeToGL(t.wrapT)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,o.paramThreeToGL(t.magFilter)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,o.paramThreeToGL(t.minFilter)),s.texSubImage2D(s.TEXTURE_2D,0,n,i,s.RGBA,s.UNSIGNED_BYTE,e),t.generateMipmaps&&s.generateMipmap(s.TEXTURE_2D),l.bindTexture(s.TEXTURE_2D,null)}},{key:"getCubeOrientationForCubeFace",value:function(e,t){switch(e){case o0.GL_TEXTURE_CUBE_MAP_POSITIVE_X:t.set(0,-Math.PI/2,0);break;case o0.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:t.set(0,Math.PI/2,0);break;case o0.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:t.set(Math.PI/2,Math.PI,0);break;case o0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:t.set(-Math.PI/2,Math.PI,0);break;case o0.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:t.set(0,-Math.PI,0);break;case o0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:t.set(0,0,0)}}},{key:"disposeIdelTargets",value:function(){for(var e=0;e<this.M.length;e++){var t=this.M[e];t.inUse||t.renderTarget.dispose()}}}])}();function P0(e){return(e=e.shift()).uploadQueued=!1,e}_0.prototype.setupZoomRenderTarget=(s0={},function(){var e,t,n;2048==this.qualityManager.maxRenderTargetSize&&2048==this.qualityManager.getMaxNavPanoSize()||(this.qualityManager.getMaxZoomPanoSize()>=this.qualityManager.getMaxNavPanoSize()?this.zoomRenderTarget&&this.zoomRenderTarget.width===this.qualityManager.getMaxZoomPanoSize()||(e=this.zoomRenderTarget,(t=this.qualityManager.getMaxZoomPanoSize())>this.qualityManager.maxRenderTargetSize)||(s0[t]?this.zoomRenderTarget=s0[t]:(this.zoomRenderTarget=this.initTiledPano(t,!1),s0[t]=this.zoomRenderTarget),e&&(t=e.width,n=this.zoomRenderTarget.width,this.copyCubeMap(e.texture,this.zoomRenderTarget,t,t,n,n),e.texture.dispose(),e.texture.loaded=!1,e.texture.version=0,this.deallocateCubeTexture(e.texture),e.texture=null),this.zoomPanoRenderingDisabled=!1):this.zoomPanoRenderingDisabled=!0)}),_0.prototype.updateActivePanos=(l0=[],function(e,t){for(var n=l0.length=0;n<this.activePanos.length;n++){e&&l0.length===t&&l0.push(e);var i=this.activePanos[n],r=this.getActiveRenderTargetDescriptor(i.id);e&&i.id===e.id||!this.isRenderTargetDescriptorValid(r)||l0.push(i)}e&&l0.length<=t&&l0.push(e),this.activePanos.length=0,this.activePanos.push.apply(this.activePanos,l0)}),_0.prototype.renderPanoTiles=(u0=[],function(e,t,n,i){this.zoomRenderTarget&&this.zoomRenderTarget.width===this.qualityManager.getMaxZoomPanoSize()||this.zoomPanoRenderingDisabled||this.setupZoomRenderTarget(),t=t||this.direction||r0.FORWARD;var r=this.getActiveRenderTargetDescriptor(e);this.isRenderTargetDescriptorValid(r)||console.error("PanoRenderer.renderPanoTiles() -> Cannot render to a pano that is not activated.");for(var a=0;a<b.FACES_PER_PANO;a++){var o=this.getTileTree(e,a);u0.length=0,o.breadthFirst({saveVisited:u0});for(var s=0;s<u0.length;s++)this.queueTileUpload(u0[s].tile,!1,i||0===s&&n)}this.updateDirection(t)}),_0.prototype.getNextFromUploadQueue=function(){var e;return 0<this.forceQueue.length?P0(this.forceQueue):(e=this.getTopUploadQueue())&&0<e.length?P0(e):null},_0.prototype.update=function(){var e,t;"showPanos"==viewer.images360.latestRequestMode&&(e=viewer.lastFrameChanged?j.getBestCount("maxStandard",0,2,1,10):2,t=viewer.lastFrameChanged?j.getBestCount("maxBase",1,6,1,14):6,this.updateUploadQueue(e,t))},_0.prototype.uploadTile=(c0={},d0=yv.tiling.overlayStyle,function(e,t){function n(){m.uploaded.includes(l)||(m.uploaded.push(l),m.uploadCount++),i.dispatchEvent({type:i0.TileRenderSuccess,id:r,panoSize:s,tileIndex:l,totalTiles:u}),m.uploadCount===u&&i.dispatchEvent({type:i0.PanoRenderComplete,id:r,panoSize:s,totalTiles:u,updateFullComplete:!0}),i.setUploaded(e,!0),i.addCoverageForNode(e.node)}var i=this,r=e.panoId,a=e.image,o=e.tileSize,s=e.panoSize,l=e.tileIndex,u=e.totalTiles,c=e.tileX,d=e.tileY,h=!0,p=!1,f=!1,m=(this.getPanoDescriptor(r),this.getPanoLODDescriptor(r,s)),v=this.getActiveRenderTargetDescriptor(r),g=v.renderTarget,A=v.size;this.isPanoZoomed(r)&&this.zoomRenderTarget&&(g=this.zoomRenderTarget,A=this.zoomRenderTarget.width);return this.isRenderTargetDescriptorValid(v)||(p=h=!1),t||(this.anyUploaded(e.node)&&(f=p=!(h=!1)),this.isTileUploaded(e)&&(f=!(p=h=!1))),h?(v=o/s*A,t=c*o/s*A,h=d*o/s*A,s>this.qualityManager.maxRenderTargetSize?this.viewer.images360.getHighImage(a,e.cubeFace,c,d):(c0[o]||(c0[o]=this.initSizedTexture2D(o,ct)),this.uploadTexture2D(a,A=c0[o],0,0,o,o),s>this.qualityManager.maxRenderTargetSize?loaded||this.viewer.images360.updateHighMap(A,e.cubeFace,c,d):1===d0||2===d0?(a=1===d0?this.overlayTilesBasic:this.overlayTilesEnhanced,this.renderToCubeMap(A,g,o,o,0,0,o,o,t,h,v,v,e.cubeFace),this.renderToCubeMap(a[s],g,o,o,0,0,o,o,t,h,v,v,e.cubeFace,Ae,!0,.5)):this.renderToCubeMap(A,g,o,o,0,0,o,o,t,h,v,v,e.cubeFace)),n()):f?n():(r+":"+s+":"+l,this.setUploaded(e,!1)),e.uploadAttempted||(m.uploadAttempts++,this.dispatchEvent({type:i0.TileUploadAttempted,id:r,panoSize:s,tileIndex:l,totalTiles:u})),e.uploadAttempted=!0,m.uploadAttempts===u&&this.dispatchEvent({type:i0.UploadAttemptedForAllTiles,id:r,panoSize:s,totalTiles:u}),p}),_0.prototype.renderToCubeMap=(h0=!1,g0=v0=m0=f0=p0=null,function(e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m){var v=this.viewer.renderer,g=(h0||((f0=new Ad(-.5,.5,.5,-.5,-200,200)).position.z=150,(p0=new Fs).add(f0),m0=new t0({depthWrite:!1,depthTest:!1,side:0}),v0=new _a(1,1),(g0=new Q(v0,m0)).position.z=0,p0.add(g0),h0=!0),v0.getAttribute("uv")),g=(g.setDynamic(!0),g.needsUpdate=!0,g.array),r=r/n,a=a/i,o=o/n,n=s/i,s=(g[0]=r,g[1]=a+n,g[2]=r+o,g[3]=a+n,g[4]=r,g[5]=a,g[6]=r+o,g[7]=a,v0.getAttribute("position")),i=(s.setDynamic(!0),s.needsUpdate=!0,s.array),n=l/t.width-.5,r=u/t.height-.5,o=c/t.width,g=d/t.height,a=(i[0]=n,i[1]=r+g,i[3]=n+o,i[4]=r+g,i[6]=n,i[7]=r,i[9]=n+o,i[10]=r,m0.map=e,m0.blending=p||ge,m0.transparent=!!f,m0.uniforms.opacity.value=m=null==m?1:m,t.viewport.set(0,0,t.width,t.height),v.autoClear),s=v.getRenderTarget();v.autoClear=!1,v.setRenderTarget(t,h),v.render(p0,f0),v.setRenderTarget(s),v.autoClear=a}),_0.prototype.copyCubeMap=(y0=!1,E0=x0=b0=w0=null,C0=new Oi,function(e,t,n,i,r,a,o,s,l){if(!(r>this.qualityManager.maxRenderTargetSize)){y0||((b0=new Ad(-1,1,1,-1,0,200)).position.set(0,0,0),(w0=new Fs).add(b0),x0=new ga({uniforms:{tDiffuse:{type:"t",value:null},alpha:{type:"f",value:1}},vertexShader:bm["copyCubeMap.vs"],fragmentShader:bm["copyCubeMap.fs"],depthWrite:!1,depthTest:!1,side:ve}),A0=new Jl(2,2,2),E0=new Q(A0,x0),w0.add(E0),y0=!0);var u=this.viewer.renderer.autoClear,c=this.viewer.renderer.getRenderTarget();this.viewer.renderer.autoClear=!1,x0.uniforms.tDiffuse.value=e,x0.blending=o||ge,x0.transparent=!!s,x0.uniforms.alpha.value=l=null==l?1:l,x0.needUpdate=!0;for(var d=0;d<6;d++)this.getCubeOrientationForCubeFace(d,C0),E0.rotation.copy(C0),E0.matrixWorldNeedsUpdate=!0,E0.updateMatrixWorld(),t.viewport.set(0,0,r,a),this.viewer.renderer.setRenderTarget(t,d),this.viewer.renderer.render(w0,b0);this.viewer.renderer.autoClear=u,this.viewer.renderer.setRenderTarget(c)}});function D0(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}function I0(e,t){D0.call(this),this.textureID=void 0!==t?t:"tDiffuse",e instanceof ga?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=fa.clone(e.uniforms),this.material=new ga({defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader,transparent:!0})),this.camera=new Ad(-1,1,1,-1,0,1),this.scene=new Fs,this.quad=new Q(new _a(2,2),null),this.quad.frustumCulled=!1,this.scene.add(this.quad)}var k0,R0,L0,F0,O0,U0,N0,z0=function(){function n(){ue(this,n),e=le(this,n);var e,t=document.createElement("canvas");return e.canvas=t,e.context=t.getContext("2d",{willReadFrequently:!0}),e.imgDatas=[],e.maxDataCount=vf.isMobile()?6:20,e.maxNeighCount=vf.isMobile()?3:14,e.nearPanos=[],e}return v(n,Qn),A(n,[{key:"updateNearPanos",value:function(e){this.nearPanos=e.slice(0,this.maxNeighCount)}},{key:"changeImg",value:function(e,t){var n,i=this,r=(this.pano=t,this.imgDatas.find(function(e){return e.pano==t}));if(r)n=this.imgDatas.indexOf(r),this.imgDatas.splice(n,1),this.imgDatas.push(r);else{Potree.timeCollect.depthSamChangeImg.start=!0;try{viewer.addTimeMark("depthSamChangeImg","start"),this.canvas.width=e.width,this.canvas.height=e.height,this.context.drawImage(e,0,0);var a,o=this.context.getImageData(0,0,e.width,e.height),s=o&&o.data;if(!s)return console.error("getImageData 得不到?!why!"),!1;this.imgDatas.length>=this.maxDataCount&&(a=this.imgDatas.find(function(e){return!i.nearPanos.includes(e.pano)}),this.imgDatas.splice(this.imgDatas.indexOf(a),1)),this.imgDatas.push({pano:t,data:s}),this.dispatchEvent({type:"changeImg",pano:t}),viewer.addTimeMark("depthSamChangeImg","end")}catch(e){return console.error(e),!1}}}},{key:"clearTexData",value:function(){this.imgDatas.length=0}},{key:"getDepth",value:function(e,t,n){function i(e,t){if(!(e<0||t<0||e>=r.canvas.width||t>=r.canvas.height))return t=r.canvas.width*t+e,(e=s.data.slice(4*t,4*(t+1)))[1]+e[0]/256}var r=this,a=Math.round(e*(this.canvas.width-1)),o=Math.round(t*(this.canvas.height-1)),s=this.imgDatas.find(function(e){return e.pano==r.pano}),e=i(a,o);if(!e&&n){for(var l=[],u=0;u++<1;)for(var c=-u;c<=u;c++)for(var d,h=-u;h<=u;h++)c!=-u&&c!=u&&h!=-u&&h!=u||0!=(d=i(a+c,o+h))&&l.push(d);l.length&&(e=l.reduce(function(e,t){return e+t},0)/l.length)}return e}},{key:"sample",value:function(e,t,n,i){if(e){var r=new Oe;if((t=t||viewer.images360.currentPano)!=this.currentPano||!this.imgDatas.find(function(e){return e.pano==t})){if(!t.depthTex)return;if(!1===this.changeImg(t.depthTex.image,t))return console.log("失败",t.id),!1;this.currentPano=t}var a,o,s,l=t.position,e=e.dir||(new Oe).subVectors(e.point,l).normalize(),u=e.clone().applyMatrix4(t.panoMatrix2Inverse).normalize(),u=te.getUVfromDir(u),i=this.getDepth(u.x,u.y,i);return i?(r.copy(e).multiplyScalar(i).add(l),n||(n=this.getNearbyPoint(l,u,-1,0),s=this.getNearbyPoint(l,u,1,0),a=this.getNearbyPoint(l,u,0,-1),o=this.getNearbyPoint(l,u,0,1),s=this.planeFit(e,r,n,s,a,o)),{location:r,normal:s,distance:i}):u.y>1-Potree.config.depthTexUVyLimit?(i=(t.floorPosition.z-l.z-.1)/e.z,r.copy(e).multiplyScalar(i).add(l),{location:r,normal:new Oe(0,0,1),distance:i}):u.y<Potree.config.depthTexUVyLimit&&(n=t.getCeilHeight())!=1/0&&(i=(n-l.z-.1)/e.z,r.copy(e).multiplyScalar(i).add(l),{location:r,normal:new Oe(0,0,-1),distance:i})}}},{key:"getNearbyPoint",value:function(e,t,n,i){t=t.clone(),t.x+=n/(this.canvas.width-1),t.x=this.clampUV(t.x),t.y+=i/(this.canvas.height-1),t.y=this.clampUV(t.y),n=te.getDirFromUV(t),n.applyMatrix4(viewer.images360.currentPano.panoMatrix2),i=this.getDepth(t.x,t.y);return(new Oe).copy(n).multiplyScalar(i).add(e)}},{key:"clampUV",value:function(e){return(e+1)%1}},{key:"planeFit",value:function(n,i,e,t,r,a){var o=new Oe,s=new ir;function l(e,t){e&&t&&(s.setFromCoplanarPoints(i,e,t),o.addScaledVector(s.normal,n.dot(s.normal)<0?1:-1))}if(l(e,r),l(e,a),l(t,r),l(t,a),0!==o.x||0!==o.y||0!==o.z)return o.normalize(),o}}])}(),rh=Potree.defines,G0=rh.PanoSizeClass,H0=rh.Vectors,V0=rh.GLCubeFaces,Q0=rh.PanoramaEvents,j0=((new ii).setFromAxisAngle(new Oe(0,0,1),Math.PI/2),new bh,new Gc,[]),W0=function(){function d(s){ue(this,d),(l=le(this,d)).viewer=s,l.panos=[],l.neighbourMap={},l.node=new Z,l.node.name="ImagesNode",l.cubePanos=[],l.fastTranMaskPass=new ug(s.renderer),l.cube=new Q(new da(1,1,1,1),new lg),Potree.Utils.updateVisible(l.cube,"showSkybox",!1),l.cube.layers.set(Potree.config.renderLayers.skybox),l.cube.name="skyboxCube",s.scene.scene.add(l.cube),Potree.settings.testCube&&(l.cubeTest=l.cube.clone(),l.cubeTest.material=new R({wireframe:!0,color:"#FF3377",transparent:!0,opacity:.7,depthWrite:!1,depthTest:!1}),s.scene.scene.add(l.cubeTest),l.cubeTest.visible=!0),l.flying_=!1,l.currentPano=null,l.mouseLastMoveTime=Date.now(),l.scrollZoomSpeed=.06,l.zoomLevel=1,l.tileDownloader=new Yg,l.qualityManager=new Cg,l.panoRenderer=new _0(s,l.tileDownloader,l.qualityManager),l.basePanoSize=l.qualityManager.getPanoSize(G0.BASE),l.standardPanoSize=l.qualityManager.getPanoSize(G0.STANDARD),l.highPanoSize=l.qualityManager.getPanoSize(G0.HIGH),l.ultraHighPanoSize=l.qualityManager.getPanoSize(G0.ULTRAHIGH),l.tileDownloader.processPriorityQueue=!1,l.tileDownloader.tilePrioritizer=new Ug(l.qualityManager,l.basePanoSize,l.standardPanoSize,l.highPanoSize,l.ultraHighPanoSize),l.addHighMapCube(),s.addEventListener(Q0.Enter,function(e){l.setHighMap(e.newPano)}),s.addEventListener("panoSetZoom",function(e){"showPanos"==Potree.settings.displayMode&&(e.zoomed?l.showHighMap():l.hideHighMap())}),l.depthSampler=new z0,s.fpControls.addEventListener("dollyStopCauseUnable",function(e){var t;Potree.settings.zoom.enabled&&(null!=e.scale?l.zoomBy(e.scale,e.pointer):(t=0<e.delta?1+l.scrollZoomSpeed:1-l.scrollZoomSpeed,0!=e.delta&&l.zoomBy(t)))});s.addEventListener("global_click",function(e){if(!(e.clickElement||Potree.settings.unableNavigate||l.flying||!e.isTouch&&e.button!=oe.LEFT||e.drag&&e.drag.object||"pano"==Potree.settings.editType&&"mainView"!=s.modules.PanoEditor.activeViewName||"merge"==Potree.settings.editType&&!e.intersectPoint||s.inputHandler.hoveredElements[0]&&s.inputHandler.hoveredElements[0].isModel&&e.intersectPoint.distance>s.inputHandler.hoveredElements[0].distance)){if("pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType){if(e.hoverViewport==s.mapViewer.viewports[0])return s.mapViewer.dispatchEvent(e);if(e.hoverViewport!=s.mainViewport)return}Potree.settings.dblToFocusPoint||l.flyToPanoClosestToMouse()}}),s.addEventListener("global_mousemove",function(e){!Potree.settings.unableNavigate&&Potree.settings.ifShowMarker&&e.hoverViewport==s.mainViewport&&l.updateClosestPano(e.intersect)}),l.addEventListener("markerHover",function(e){l.updateClosestPano(e.pano,e.hovered)}),Potree.settings.isOfficial||(l.domRoot=s.renderer.domElement.parentElement,(e=$("<input type='button' value='unfocus'></input>")).css({position:"absolute",right:"25%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",display:"none",background:"rgba(255,255,255,0.8)"}),e.on("click",function(){return l.unfocus()}),l.elUnfocus=e,l.domRoot.appendChild(e[0]),"merge"!=Potree.settings.editType&&((n=$("<input type='button' value='隐藏点云'></input>")).css({position:"absolute",right:"40%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",width:"100px",background:"rgba(255,255,255,0.8)"}),l.domRoot.appendChild(n[0]),n.on("click",function(e){var t=Potree.Utils.getObjVisiByReason(s.scene.pointclouds[0],"force");s.scene.pointclouds.forEach(function(e){Potree.Utils.updateVisible(e,"force",!t)}),n.val(t?"显示点云":"隐藏点云")})),(e=$("<input type='button' value='>>全景'></input>")).css({position:"absolute",right:"65%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",width:"100px",background:"rgba(255,255,255,0.8)"}),l.domRoot.appendChild(e[0]),e.on("click",function(e){"showPointCloud"==Potree.settings.displayMode&&0==l.panos.length||(Potree.settings.displayMode="showPointCloud"==Potree.settings.displayMode?"showPanos":"showPointCloud")}),l.elDisplayModel=e,s.mapViewer&&((t=$("<input type='button' value='普通'></input>")).css({position:"absolute",right:"50%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",width:"100px",background:"rgba(255,255,255,0.8)"}),l.domRoot.appendChild(t[0]),i=s.mapViewer.mapLayer.maps.find(function(e){return"map"==e.name}),t.on("click",function(e){i.switchStyle("satellite"==i.style?"standard":"satellite"),t.val("satellite"==i.style?"卫星":"普通")})));var l,n,e,t,i,u="",r=(l.latestRequestMode="",Object.defineProperty(Potree.settings,"displayMode",{get:function(){return u},set:function(t){function e(){o.showSkybox||o.showPoint&&o.pointUsePanoTex?(l.tileDownloader.start(),l.currentPano&&l.currentPano.enter()):(l.tileDownloader.stop(),l.currentPano&&l.currentPano.exit(),l.nextPano&&s.cancelLoad(l.nextPano))}l.latestRequestMode=t,console.warn("Request setMode: "+t),l.dispatchEvent({type:"requestMode",mode:t});var n=Potree.config.displayMode[t];o=l.isAtPano()&&!l.latestToPano?n.atPano:n.transition;if(t!=u){var i,r=s.scene.getActiveCamera();if("showPanos"==t&&s.mainViewport.view.isFlying())i=function(){l.latestRequestMode==t&&(Potree.settings.displayMode=t),s.mainViewport.view.removeEventListener("flyingDone",i)},s.mainViewport.view.addEventListener("flyingDone",i);else{if(l.isAtPano()&&!l.latestToPano)o=n.atPano;else{var a,o=n.transition;if("showPanos"==t)return 0==l.panos.length?void 0:(a=function(e){console.log("flyToPanoDone"),l.removeEventListener("flyToPanoDone",a),setTimeout(function(){l.latestRequestMode==t&&(Potree.settings.displayMode=t)},e.makeIt?1:50)},l.addEventListener("flyToPanoDone",a),void l.flyToPano({pano:l.findNearestPano()}))}if(e(),o.showSkybox||o.pointUsePanoTex)if(l.checkAndWaitForPanoLoad(l.currentPano,l.basePanoSize,function(){setTimeout(function(){l.latestRequestMode==t&&(Potree.settings.displayMode=t)},1)}))return;s.scene.pointclouds.forEach(function(e){Potree.Utils.updateVisible(e,"displayMode",o.showPoint,2)}),o.pointUsePanoTex?s.scene.pointclouds.forEach(function(e){e.material.setProjectedPanos(l.currentPano,l.currentPano,1)}):s.scene.pointclouds.forEach(function(e){e.material.stopProjectedPanos()}),Potree.Utils.updateVisible(l.cube,"showSkybox",o.showSkybox),l.cube.visible?l.setProjectedPanos({progress:1,ifSkybox:!0,ifPointcloud:!1,easeInOutRatio:0,pano0:l.currentPano,pano1:l.currentPano}):(l.smoothZoomTo(1),l.resetHighMap(),l.hideHighMap()),"showPanos"==(u=t)?(r.far=s.farWhenShowPano,Potree.settings.pointDensity="panorama",Potree.config.displayMode.showPanos.transition.pointUsePanoTex&&s.scene.pointclouds.forEach(function(e){e.material.pointSizeType="FIXED"}),l.updateCube(l.currentPano)):(r.limitFar&&(r.far=Potree.settings.cameraFar),Potree.settings.pointDensity=Potree.settings.UserPointDensity,Potree.config.displayMode.showPanos.transition.pointUsePanoTex&&s.scene.pointclouds.forEach(function(e){e.material.pointSizeType=Potree.config.material.pointSizeType})),r.updateProjectionMatrix(),l.elDisplayModel&&l.elDisplayModel.val("showPointCloud"==t?">>全景":">>点云"),l.dispatchEvent({type:"endChangeMode",mode:t}),console.log("setModeSuccess: "+t)}}else e()}}),Potree.settings.displayMode="showPointCloud",null),a=(Object.defineProperty(l,"currentPano",{get:function(){return r},set:function(e){e!=r&&(r&&r.exit(),e&&e.enter(),r=e)}}),!0),o=(Object.defineProperty(Potree.settings,"ifShowMarker",{get:function(){return a},set:function(t){(t=!!t)!=a&&(l.panos.forEach(function(e){Potree.Utils.updateVisible(e,"ifShowMarker",t,1)}),a=t,s.dispatchEvent("showMarkerChanged"),s.dispatchEvent("content_changed"))}}),s.addEventListener("update",function(){l.update(s)}),{FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39]});return s.inputHandler.addEventListener("keydown",function(t){if("showPanos"==Potree.settings.displayMode)for(var e in o)if(o[e].some(function(e){return e==t.keyCode})){switch(e){case"FORWARD":l.flyLocalDirection(H0.FORWARD.clone());break;case"BACKWARD":l.flyLocalDirection(H0.BACK.clone());break;case"LEFT":l.flyLocalDirection(H0.LEFT.clone());break;case"RIGHT":l.flyLocalDirection(H0.RIGHT.clone())}break}}),l}return v(d,Qn),A(d,[{key:"updateDepthTex",value:function(e){this.currentPano==e&&e.depthTex&&this.cube.material.updateDepthTex(e)}},{key:"findNearestPano",value:function(t){t=t?(new Oe).copy(t):this.position;var e=j.sortByScore(this.panos,[d.filters.isEnabled()],[function(e){return-e.position.distanceTo(t)}]);return e[0]&&e[0].item}},{key:"flyLocalDirection",value:function(e){var t=this.getDirection(e),n=1===e.y?.4:.75,e=1===Math.abs(e.x);return this.flyDirection(t,n,e,!0)}},{key:"getDirection",value:function(e){return e?(e=e||(new Oe).copy(H0.FORWARD)).applyQuaternion(viewer.mainViewport.camera.quaternion):viewer.scene.view.direction}},{key:"position",get:function(){return this.viewer.scene.view.position.clone()}},{key:"isAtPano",value:function(e){return e?this.currentPano&&te.closeTo(viewer.scene.view.position,this.currentPano.position,e):this.currentPano&&viewer.scene.view.position.equals(this.currentPano.position)}},{key:"updateProjectedPanos",value:function(){this.projectedPano0&&this.projectedPano1&&this.setProjectedPanos({pano0:this.projectedPano0,pano1:this.projectedPano1})}},{key:"setProjectedPanos",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.cube.material.setProjectedPanos(t.pano0,t.pano1,t.progress),t.ifPointcloud&&viewer.scene.pointclouds.forEach(function(e){e.material.setProjectedPanos(t.pano0,t.pano1,t.progress,t.easeInOutRatio)}),this.projectedPano0=t.pano0,this.projectedPano1=t.pano1}},{key:"cancelFlyToPano",value:function(e){viewer.mainViewport.view.isFlying()||e&&this.latestToPano!=e||(this.nextPano=null,this.latestToPano=null)}},{key:"flyToPano",value:function(a){var e,t,n,o,s,l,u,i,c,d,h=this;if(a)return(a="number"==typeof a?this.panos[a]:a)instanceof xg&&(a={pano:a}),e=function(e,t){(e||t)&&(a.callback&&a.callback(e),h.cancelFlyToPano(a),h.updateClosestPano(h.closestPano,!1)),h.dispatchEvent({type:"flyToPanoDone",makeIt:e,disturb:t}),h.fastTranMaskPass.stop(),a.deferred&&a.deferred.resolve(e)},a.pano.enabled?!this.latestToPano||this.latestToPano==a||this.latestToPano.pano==this.currentPano&&this.isAtPano()?this.currentPano!=a.pano||!this.isAtPano()||a.target||a.quaternion?(t=a.target,s=Potree.config.displayMode[Potree.settings.displayMode],n=a.pano,o=n.position.distanceTo(this.position),this.nextPano=n,this.latestToPano=a,i=function(e){if(!h.latestToPano||n==h.latestToPano.pano)return h.latestToPano!=a?Potree.Log("已经取消",n.id):void setTimeout(function(){h.latestToPano==a&&h.flyToPano(a)},1)},!n.depthTex&&n.pointcloud.hasDepthTex?(console.log("等待加载depthtex",n.id),n.addEventListener("loadedDepthImg",i,{once:!0}),n.loadDepthImg()):void((s.atPano.showSkybox||s.atPano.pointUsePanoTex)&&("useBound"==this.updateCube(this.currentPano,a.pano)&&(a.useBound=!0),this.checkAndWaitForPanoLoad(n,a.basePanoSize||this.basePanoSize,i))||(l=(s=Potree.config.displayMode[Potree.settings.displayMode]).atPano.showPoint,Potree.Utils.updateVisible(this.cube,"showSkybox",s.atPano.showSkybox),s.transition.showPoint&&viewer.scene.pointclouds.forEach(function(e){Potree.Utils.updateVisible(e,"displayMode",!0)}),u=n.position.clone(),i=Potree.config.transitionsTime,i=null==a.duration?Math.min(o,7)*i.flytimeDistanceMultiplier+i.flyMinTime:a.duration,(s.transition.showSkybox||s.transition.pointUsePanoTex)&&(Potree.settings.fastTran&&(this.fastTranMaskPass.start(),viewer.scene.view.position.copy(u)),this.setProjectedPanos({progress:0,ifSkybox:this.cube.visible,ifPointcloud:s.transition.pointUsePanoTex,easeInOutRatio:l?.3:0,pano0:this.currentPano,pano1:n})),a.useBound?(i=Math.min(1500,i),a.easeName="easeInOutQuad"):u.equals(this.position)&&(a.easeName="easeOutSine"),a.easeName=a.easeName||"linearTween",a.duration=i,this.beforeFlyToPano(a),c=function(t){h.cube.material.uniforms.progress.value=t,viewer.scene.pointclouds.forEach(function(e){e.material.uniforms.progress.value=t})},d=function(){var i=a.progress=a.progress||0,r=Be.clamp(1-2.5/o,.3,.8);h.dispatchEvent({type:"flyToPano",toPano:a}),viewer.scene.view.setView({position:u,target:t,quaternion:a.quaternion,duration:a.duration,onUpdate:function(e,t){var n=i+e*(1-i),e=1!=e&&0!=e?(n-a.progress)*o/t:a.currentSpeed||0;a.currentSpeed=e,a.progress=n,r<n&&"linearTween"==a.easeName&&e&&(a.easeName="easeOutSine",a.duration=Math.PI/2*((1-n)*o)/e,viewer.scene.view.cancelFlying("all",!1),a.flyCount=2,d(a)),c(n)},callback:function(){s.atPano.pointUsePanoTex||viewer.scene.pointclouds.forEach(function(e){e.material.stopProjectedPanos()}),h.lastPano=h.currentPano,h.currentPano=n,h.nextPano=null,"showPanos"==Potree.settings.displayMode&&viewer.scene.pointclouds.forEach(function(e){Potree.Utils.updateVisible(e,"displayMode",l)}),e(!0),h.updateDepthTex(h.currentPano)},cancelFun:function(){e(!1,!0)},Easing:a.easeName,ignoreFirstFrame:2!=a.flyCount})},"showPanos"==Potree.settings.displayMode?setTimeout(d,40):d()))):(this.dispatchEvent({type:"flyToPano",toPano:a}),e(!0)):e(!1):e(!1,!0)}},{key:"beforeFlyToPano",value:function(e){this.currentPano!=e.pano&&("showPanos"==Potree.settings.displayMode&&this.resetHighMap(),this.smoothZoomTo(e.zoomLevel||1,e.duration/2))}},{key:"getIntersect",value:function(e,t,n){return e&&e.pointcloud.hasDepthTex?this.depthSampler.sample({dir:t},e,!0):(n=n||e.position,viewer.inputHandler.getIntersect({viewport:viewer.inputHandler.hoverViewport,onlyGetIntersect:!0,usePointcloud:!0,point:n.clone().add(t),cameraPos:n}))}},{key:"isNeighbour",value:function(a,o){var s,e,t,d,h,n,i,r,l=this,u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=u.dontCompute,p=u.onlyUseTex,f=u.computeDirFirst,u=u.computeTwoDir;if(a&&o)return s=.1,e=this.neighbourMap[a.id],n=null==(t=this.neighbourMap[o.id])[a.id]?e[o.id]:e[o.id]&&t[a.id],d=a.position.distanceTo(o.position),te.closeTo(d,0)?t[a.id]=e[o.id]=!0:(c||((h=a.sid==(c=[])[0]&&o.sid==c[1]||a.sid==c[1]&&o.sid==c[0])&&console.log(2),c=function(e,t){for(var n=(new Oe).subVectors(t.position,e.position).normalize(),i=[20,16,12.5,10,8,6,4.5,3,1,-1,-3,-4.5,-6,-8,-10,-12.5,-16,-20],r=0,a=[],o=0;o<i.length;o++){var s=Be.degToRad(i[o]),l=(l=s,n.clone().applyAxisAngle(new Oe(0,0,1),l)),u=void 0,c=viewer.images360.depthSampler.sample({dir:l},e,!0);(!c||c.distance*Math.cos(Math.abs(s))>d)&&(r++,a.push(i[o]),u=new Se("#0f8")),h&&function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"#fff",e=av.createLine([e,e.clone().add(t.clone().multiplyScalar(n||1))],{color:i});viewer.scene.scene.add(e)}(e.position,l,d,u)}h&&console.log("ifSheltered seccess",a,"id:",e.originID,t.originID);t=r/i.length;if(.25<=t)return t},i=function(e,t){var n,i=[[t.position,e.position]];d<20&&i.push([t.floorPosition.clone().add(new Oe(0,0,.1)),e.position]),d<12&&(i.push([t.position.clone().add(new Oe(0,0,.8)),e.position]),n=te.getNormal2d({p1:t.position,p2:e.position}).multiplyScalar(.3),i.push([t.position.clone().add(new Oe(n.x,n.y,.1)),e.position]),i.push([t.position.clone().add(new Oe(-n.x,-n.y,.1)),e.position]));for(var r=0;r<i.length;r++){var a=(new Oe).subVectors(i[r][0],i[r][1]).normalize(),a=viewer.images360.depthSampler.sample({dir:a},e,!0,!0);if(!a||a.distance+s>i[r][0].distanceTo(i[r][1]))return!0}},a.pointcloud.hasDepthTex||o.pointcloud.hasDepthTex?(u?null==e[o.id]||null==t[a.id]:null==e[o.id]&&!1!==t[a.id])&&(null==e[o.id]&&a.depthTex&&(r=i(a,o),e[o.id]=!!r),u&&e[o.id]&&o.depthTex&&null==t[a.id]&&(r=i(o,a),t[a.id]=!!r),!1!==e[o.id]&&!1!==t[a.id]||(d<20?a.depthTex&&o.depthTex&&(n=!1,(u=c(a,o))&&(i=c(o,a))&&.6<=u+i&&(n=!0),e[o.id]=t[a.id]=n):(void 0===e[o.id]&&(e[o.id]=0),void 0===t[a.id]&&(t[a.id]=0))),n=null==t[a.id]?e[o.id]:e[o.id]&&t[a.id],h)&&console.log("isNeighbour",a.id+"("+a.originID+")",o.id+"("+o.originID+")",e[o.id],t[a.id]):p||n||(r=function(){var e=(new Oe).subVectors(o.position,a.position).normalize(),t=o.position.distanceTo(a.position),n=Be.degToRad(viewer.mainViewport.camera.fov),i=Mf.getHFOVForCamera(viewer.mainViewport.camera,!0),n=Math.min(n,i),i=Math.cos(Be.degToRad(10)),r=Math.cos(Be.degToRad(40));if(l.getDirection().dot(e)>Be.clamp(Math.cos(n/2)*t/10,r,i))return!0},f?r()&&(n=!viewer.inputHandler.ifBlockedByIntersect({point:o.position,margin:s,cameraPos:a.position})):(n=!viewer.inputHandler.ifBlockedByIntersect({point:o.position,margin:s,cameraPos:a.position}))&&!r()&&(n=void 0),e[o.id]=t[a.id]=n&&"byCloud"),e[o.id]&&t[a.id]&&(a.neighbours.includes(o)||a.neighbours.push(o),o.neighbours.includes(a)||o.neighbours.push(a))),n)}},{key:"bump",value:function(e){var t,n,i=this;this.bumping||this.latestToPano||(t="showPanos"==Potree.settings.displayMode?.15:.12,n=this.position.clone(),e=(new Oe).addVectors(this.position,e.clone().multiplyScalar(t)),viewer.scene.view.setView({position:e,duration:150,callback:function(){viewer.scene.view.setView({position:n,duration:750,callback:function(){i.bumping=!1},Easing:"easeInOutSine",cancelFun:function(){i.bumping=!1}}),i.bumping=!0},cancelFun:function(){i.bumping=!1},Easing:"easeInOutSine"}),this.bumping=!0)}},{key:"flyToPanoClosestToMouse",value:function(){if(Potree.settings.ifShowMarker||this.updateClosestPano(viewer.inputHandler.intersect),this.closestPano)return e=this.closestPano,this.flyToPano({pano:e,easeName:this.isAtPano()?"linearTween":"easeInOutQuad"});var e=this.viewer.inputHandler.getMouseDirection().direction;this.flyDirection(e)}},{key:"flyDirection",value:function(e,t,n,i){var r=this;if(!viewer.mainViewport.view.isFlying()){var a,o=$.Deferred(),t=this.closestPanoInDirection(e,t,n,i);if(t)this.flyToPano({pano:t,callback:o.resolve.bind(o,!0)});else{if("showPointcloud"==Potree.settings.displayMode)if(!viewer.scene.pointclouds.find(function(t){return t.visibleNodes.some(function(e){return e.getLevel()>Math.ceil(.15*t.maxLevel)})}))return this.panos.length?(this.flyToPano({pano:this.findNearestPano(),duration:500,callback:o.resolve.bind(o,!0)}),o.promise()):0==viewer.scene.pointclouds.length?void 0:(a=new Map,(n=viewer.scene.pointclouds.filter(function(e){return e.root.geometryNode})).forEach(function(e){return a.set(e,e.bound.distanceToPoint(r.position))}),n.sort(function(e,t){return a.get(e)-a.get(t)}),viewer.flyToDataset({focusOnPoint:!0,pointcloud:n[0],duration:500}),o.promise());this.bump(e),o.resolve(!1)}return o.promise()}}},{key:"closestPanoInDirection",value:function(e,t,n,i){return this.rankedPanoInDirection(0,e,t,n,i)}},{key:"rankedPanoInDirection",value:function(e,t,n,i,r){var a,o,s=this,l=(Date.now(),{pano:null,candidates:[]}),i=(e=e||0,n=void 0!==n?n:.6,i?"angle":"direction"),u=(viewer.modules.SiteModel.currentFloor,viewer.modules.SiteModel.inEntity,new Map),c=(this.panos.forEach(function(e){var t=e.position.distanceToSquared(s.position);u.set(e,t)}),[d.filters.not(this.currentPano),d.filters.isEnabled(),function(e){if(s.isNeighbour(s.currentPano,e,{onlyUseTex:!0})||e.noNeighbour&&u.get(e)<200)return!0}]),n=(r||c.push(d.filters.inPanoDirection(this.position,this.getDirection(),n)),[function(e){return-u.get(e)},d.scoreFunctions[i](this.position,t,!0),function(e){return s.isNeighbour(s.currentPano,e,{dontCompute:!0,isNeighbour:!0})?400:0}]);return!r&&viewer.inputHandler.intersect&&this.currentPano&&(a=this.currentPano.floorPosition,o=(new Oe).subVectors(viewer.inputHandler.intersect.location,a).normalize(),n.push(function(e){return 400*e.floorPosition.clone().sub(a).normalize().dot(o)*4})),this.findRankedByScore(e,c,n,l),l.pano}},{key:"findRankedByScore",value:function(e,t,n,i){i&&(i.candidates=null,i.pano=null),e=e||0;t=j.sortByScore(this.panos,t,n);return!t||0===t.length||e>=t.length?null:(i&&(i.candidates=t,i.pano=t[e].item),t[e].item)}},{key:"updateClosestPano",value:function(e,t){if(e instanceof xg)n=t?e:null;else{if(this.isAtPano()||this.bumping)return;if(!(e=e&&e.location))return;var t="pano"!=Potree.settings.editType?[d.sortFunctions.floorDisSquaredToPoint(e)]:[d.sortFunctions.disSquaredToPoint(e)],n=j.find(this.panos,[],t)}n!=this.closestPano?(n&&(this.isPanoHover=!0),this.closestPanoChanging(this.closestPano,n),this.closestPano=n):this.isPanoHover=!1}},{key:"closestPanoChanging",value:function(e,t){Potree.settings.ifShowMarker&&(e&&e.hoverOff({byImages360:!0}),t)&&t.hoverOn({byImages360:!0})}},{key:"getTileDirection",value:function(){var n=viewer.scene.view.direction.clone();return{datasetsLocal:viewer.scene.pointclouds.map(function(e){var t=(new Me).copy(e.rotateMatrix).invert(),t=n.clone().applyMatrix4(t);return{datasetId:e.dataset_id,direction:te.convertVector.ZupToYup(t)}}),vectorForward:n}}},{key:"update",value:function(){var e=this.getTileDirection();this.updateTileDownloader(j0,e),this.updatePanoRenderer(e),this.updateZoomPano()}},{key:"updateTileDownloader",value:function(e,t){var n=this.nextPano||this.currentPano;n&&(this.tileDownloader.tilePrioritizer.updateCriteria(n,viewer.scene.view.position.clone(),t,0<e.length?e:null),this.tileDownloader.processPriorityQueue=!0)}},{key:"updatePanoRenderer",value:function(e){var t=this.nextPano||this.currentPano;t&&this.panoRenderer.hasQueuedTiles()&&t&&this.panoRenderer.updateDirection(e)}},{key:"checkAndWaitForTiledPanoLoad",value:function(e,t,n,i,r,a,o,s){e||console.error("Player.checkAndWaitForTiledPanoLoad() -> Cannot load texture for null pano.");var l=this.getTileDirection();if(!e.isLoaded(t))return a&&viewer.waitForLoad(e,function(){return e.isLoaded(t)}),e.loadTiledPano(t,l,null,o,s,null).done(function(e,t){n&&n(e,t)}.bind(this)).fail(function(e){i&&i(e)}.bind(this)).progress(function(e,t,n){r&&r(e,t,n)}.bind(this)),!0}},{key:"fitPanoTowardPoint",value:function(i){var r=i.point,a=i.target||i.point,e=i.require||[],t=i.rank||[],n=(i.force,i.getAll,i.bestDistance||0),o=i.sameFloor,s=i.maxDis,l=i.dir,u=viewer.scene.getActiveCamera(),c=(a&&!l&&(l=(new Oe).subVectors(a,r).normalize()),o&&viewer.modules.SiteModel.pointInWhichEntity(r,"floor"),i.checkIntersect),d=Math.max(300,3*viewer.bound.boundSize.length()),h=(i.boundSphere&&(n=1<u.aspect?i.boundSphere.radius/Be.degToRad(u.fov/2):(o=Mf.getHFOVForCamera(u,!0),i.boundSphere.radius/(o/2))),new Map),p=n*n,f=s&&s*s,m=(this.panos.forEach(function(e){var t=e.position.distanceToSquared(a);h.set(e,t)}),this.panos.sort(function(e,t){return h.get(e)-h.get(t)}));if(f){for(var v,g=[],A=0;v=m[A],h.get(v)<f;)g.push(v),A++;if(0==g.length)return{pano:v,msg:"tooFar"};m=g}t.push(function(e){var t,n=Math.abs(e.position.distanceToSquared(r)-p);return h.set(e,n),a?(t=h.get(e),i.gotoBestView?-(n+.3*t):(e=(new Oe).subVectors(a,e.position).normalize(),(n+.3*t)*(.9*l.dot(e)-1))):-n},function(e){return e.depthTex&&c?!!viewer.ifPointBlockedByIntersect(a,e.id,!0)?0:2*d:1.5*d});u=j.sortByScore(m,e,t),o=u&&0<u.length&&u[0].item;if(o&&c&&!!viewer.ifPointBlockedByIntersect(a,o.id,!0))return{pano:o,msg:"sheltered"};return o}},{key:"zoomBy",value:function(e,t){this.zoomTo(this.zoomLevel*e,t)}},{key:"zoomTo",value:function(e,t){var n,i,r,a=Potree.settings.zoom;a.enabled&&(e=Be.clamp(e,a.min,a.max))!=this.zoomLevel&&(this.zoomLevel=e,Potree.settings.panoZoomByPointer?(a=viewer.scene.view,e=viewer.scene.view.direction,n=viewer.inputHandler.getMouseDirection(t).direction,viewer.setFOV(Potree.config.view.fov*(1/this.zoomLevel)),t=viewer.inputHandler.getMouseDirection(t).direction,a.direction=n,n=a.pitch,i=a.yaw,a.direction=t,t=a.pitch,r=a.yaw,a.direction=e,viewer.scene.view.pitch-=t-n,viewer.scene.view.yaw-=r-i):viewer.setFOV(Potree.config.view.fov*(1/this.zoomLevel)))}},{key:"zoomFovTo",value:function(e){e=Potree.config.view.fov/e;this.zoomTo(e)}},{key:"smoothZoomTo",value:function(t){var n=this,i=this.zoomLevel;i!=t&&df.start(function(e){n.zoomTo(i*(1-e)+t*e,!0)},1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,null,null,0,of.easeInOutQuad)}},{key:"updateZoomPano",value:function(){var e,t,n,i,r,a=this;this.panoRenderer.zoomPanoRenderingDisabled||"showPanos"!=Potree.settings.displayMode||(e=this.currentPano)&&(t="1k"==Potree.settings.navTileClass?1.3:1.7,n=this.zoomLevel>t,r=!(this.flying&&this.nextPano&&this.nextPano!==this.currentPano),this.tileDownloader.tilePrioritizer.setZoomingActive(r=n&&r),this.panoRenderer.setZoomingActive(r,e,!0),i=function(e,t){a.panoRenderer.resetRenderStatus(e.id,!1,!0,a.qualityManager.getMaxNavPanoSize()),a.panoRenderer.clearAllQueuedUploadsForPano(e.id),a.panoRenderer.renderPanoTiles(e.id,null,!1,!1),e.setZoomed(t)},r&&(!e.zoomed||this.qualityManager.zoomLevelResolution&&"4k"!=this.qualityManager.zoomLevelResolution)?(e.zoomed||i(e,!0),"1k"==Potree.settings.navTileClass&&"1k"!=Potree.settings.tileClass&&this.zoomLevel<2?this.panoRenderer.enableHighQuality(function(){"4k"!=Potree.settings.tileClass&&i(e,!0)}.bind(this)):this.panoRenderer.enableUltraHighQualityMode(function(){this.qualityManager.useUltraHighResolutionPanos&&(Potree.settings.zoom.max=Potree.config.ultraHighQualityMaxZoom),i(e,!0)}.bind(this))):!n&&e.zoomed&&i(e,!1),r)&&"1k"==Potree.settings.navTileClass&&"4k"==Potree.settings.tileClass&&(r=function(e){a.qualityManager.updateMaximums(),a.panoRenderer.setupZoomRenderTarget()},this.qualityManager.zoomLevelResolution=2<=this.zoomLevel?"4k":this.zoomLevel>t?"2k":"1k",this.oldZoomLevel<2&&2<=this.zoomLevel?(r(),i(e,n)):this.oldZoomLevel<=t&&this.zoomLevel>t?r():2<this.oldZoomLevel&&this.zoomLevel<=2?(r(),i(e,n)):this.oldZoomLevel>t&&this.zoomLevel<=t&&r(),this.oldZoomLevel=this.zoomLevel)}},{key:"addHighMapCube",value:function(){var t=this;if("4k"==Potree.settings.tileClass&&2048==this.qualityManager.maxRenderTargetSize){var e=new Nu(1,1,1,1),n=new Z;n.tiles=[];for(var i=0;i<6;i++){for(var r=new Z,a=0;a<8;a++)for(var o=0;o<8;o++){var s,l=new Q(e,new R({transparent:!0,opacity:.4,depthTest:!1}));l.position.set(a-3.5,o-3.5,-4),Potree.settings.isTest&&(s=Math.random(),l.material.color=(new Se).setHSL(s,.6,.7)),l.visible=!1,l.tileX=a,l.tileY=o,l.cubeFace=i,n.tiles.push(l),r.add(l)}switch(i){case V0.GL_TEXTURE_CUBE_MAP_POSITIVE_X:r.rotation.set(0,Math.PI/2,0);break;case V0.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:r.rotation.set(0,-Math.PI/2,0);break;case V0.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:var u=(new ii).setFromAxisAngle(new Oe(0,1,0),Math.PI),c=(new ii).setFromAxisAngle(new Oe(1,0,0),Math.PI/2);r.quaternion.copy(u).multiply(c);break;case V0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:u=(new ii).setFromAxisAngle(new Oe(0,1,0),Math.PI),c=(new ii).setFromAxisAngle(new Oe(1,0,0),-Math.PI/2);r.quaternion.copy(u).multiply(c);break;case V0.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:r.rotation.set(0,Math.PI,0);break;case V0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:r.rotation.set(0,0,0)}r.scale.set(1,-1,1),r.cubeFace=i,n.add(r)}n.name="highMapCube",this.highMapCube=n,viewer.scene.scene.add(n);n.scale.set(.1,.1,.1),this.highMapCube.visible=!1,Potree.Utils.setObjectLayers(this.highMapCube,"sceneObjects"),viewer.addEventListener("update",function(){t.highMapCube.visibleTiles&&t.updateTiles()}),viewer.addEventListener("camera_changed",function(e){e.viewport==viewer.mainViewport&&j.intervalTool.isWaiting("update4kTiles",function(){var e=t.getDirection();t.updateTiles(e)},500)})}}},{key:"isHighMapLoaded",value:function(e,t,n){return!!this.highMapCube.children[e].children[8*t+n].material.map}},{key:"updateTiles",value:function(r){var a,o,e,n,i,s=this;this.highMapCube&&this.highMapCube.visible&&(this.highMapCube.tiles.filter(function(e){return e.image}).length<=10||(r&&(e=viewer.mainViewport.camera,a=Mf.getHFOVForCamera(e,!0)/2,o=Be.degToRad(e.fov)/2,(e=this.highMapCube.tiles).forEach(function(e){var t=e.getWorldPosition(new Oe),t=(new Oe).subVectors(t,s.highMapCube.position).normalize(),n=t.clone().setZ(r.z).normalize().dot(r),n=Math.acos(n),i=-200;1.5<n/a?e.score=-100:(i=Math.abs(Math.acos(t.z)-Math.acos(r.z)),e.score=1.5<i/o?-100:-(n/a+i/o)),e.scores=n.toFixed(3)+", "+i.toFixed(3),-100==e.score&&s.resetTile(e)}),this.highMapCube.visibleTiles=e.filter(function(e){return-100<e.score})),(e=this.highMapCube.visibleTiles.filter(function(e){return!e.material.map})).length&&(n=j.getBestCount("4kmaxTileRecover",0,2,1.5,6,!1,2),i=0,console.log(n),e.forEach(function(e,t){n<=i||s.recoverTile(e)&&i++}))))}},{key:"getHighImage",value:function(e,t,n,i){this.highMapCube.children[t].children[8*n+i].image=e}},{key:"updateHighMap",value:function(e,t,n,i){t=this.highMapCube.children[t].children[8*n+i];e&&(t.image=e),t.material.map||this.highMapCube.visibleTiles&&!this.highMapCube.visibleTiles.includes(t)||((n=new Zn).image=e,n.flipY=!1,n.wrapS=n.wrapT=ct,n.generateMipmaps=!1,n.minFilter=N,n.needsUpdate=!0,t.material.map=n,t.material.opacity=1,t.material.transparent=!1,t.visible=!0,t.material.needsUpdate=!0)}},{key:"recoverTile",value:function(e){return!e.material.map&&e.image?(this.updateHighMap(e.image,e.cubeFace,e.tileX,e.tileY),!0):void 0}},{key:"resetTile",value:function(e,t){t&&(e.image=null);var t=e.material.map;t&&(t.dispose(),t.loaded=!1,t.version=0,t=viewer.renderer.properties.get(t),viewer.renderer.getContext().deleteTexture(t.__webglTexture),e.material.map=null,e.material.needsUpdate=!0,e.visible=!1)}},{key:"resetHighMap",value:function(){var t=this;this.highMapCube&&(this.highMapCube.children.forEach(function(e){return e.children.forEach(function(e){t.resetTile(e,!0)})}),this.highMapCube.visibleTiles=null,this.hideHighMap())}},{key:"setHighMap",value:function(e){this.highMapCube&&(this.highMapCube.position.copy(e.position),this.highMapCube.quaternion.copy(te.convertQuaternion.YupToZup(e.quaternion4dkk)),e=(new ii).setFromRotationMatrix(e.pointcloud.rotateMatrix),this.highMapCube.quaternion.premultiply(e))}},{key:"showHighMap",value:function(){this.highMapCube&&(this.highMapCube.visible=!0)}},{key:"hideHighMap",value:function(){this.highMapCube&&(this.highMapCube.visible=!1)}},{key:"addPanoData",value:function(e,n){var i=this;0==(e=e.data?e.data:e).length&&console.error(n+" 没有漫游点"),e.forEach(function(e){e.id=i.panos.length;var t=new xg(e,i);t.addEventListener("dispose",function(e){i.closestPano==t&&(i.closestPano=null)}),i.panos.push(t),"pano"==Potree.settings.editType&&Potree.settings.datasetsPanos[n].panos.push(t)})}},{key:"loadDone",value:function(){var t=this,e=(Potree.Utils.setObjectLayers(this.node,"sceneObjects"),this.panos.forEach(function(e){t.neighbourMap[e.id]={},e.label&&Potree.Utils.setObjectLayers(e.label,"bothMapAndScene"),e.label2&&Potree.Utils.setObjectLayers(e.label2,"bothMapAndScene")}),this.tileDownloader.setPanoData(this.panos,[]),new Oe(1,1,1));this.bound=te.getBoundByPoints(this.panos.map(function(e){return e.position}),e),viewer.scene.pointclouds.forEach(function(e){return e.getPanosBound()}),viewer.scene.pointclouds.some(function(e){return 0==e.panos.length})&&(viewer.hasNoPanoDataset=!0)}},{key:"getPano",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"id";return this.panos.find(function(e){return e[n]==t})}}])}(),J0=(W0.prototype.checkAndWaitForPanoLoad=(k0={},R0={},L0={},function(n,e,t,i,r,a,o,s){var l=this;if(L0[n.id]=t,function(){for(var e in k0)if(k0.hasOwnProperty(e)&&k0[e])if(performance.now()-R0[e]<5e3)return!0;return!1}())return!0;var u=function(e){"showPointCloud"==e.mode&&(console.warn("切到点云模式了,就删除loadedCallback记录",n.id),delete k0[n.id],viewer.cancelLoad(n),L0[n.id]&&L0[n.id](),i&&i(),l.removeEventListener("requestMode",u))};this.addEventListener("requestMode",u);try{return null==a&&(a=!0),k0[n.id]=this.checkAndWaitForTiledPanoLoad(n,e,function(e,t){setTimeout(function(){k0[n.id]=!1,L0[n.id]&&L0[n.id](e,t),l.removeEventListener("requestMode",u)},1)},function(e){setTimeout(function(){k0[n.id]=!1,i&&i(e)},1)},r,a,o,s),k0[n.id]&&(R0[n.id]=performance.now()),k0[n.id]}catch(e){throw k0[n.id]=!1,R0[n.id]=performance.now()-5e3,e}}),W0.prototype.getNeighbours=function(e){if(!this.currentPano||viewer.mainViewport.view.isFlying()||viewer.lastFrameChanged||viewer.inputHandler.drag)return F0=0;var t=this.tileDownloader.tilePrioritizer.nearPanos;if(t){var n=[this.currentPano].concat(Fe(t)),i=(this.depthSampler.updateNearPanos(n),vf.isMobile()?40:60),r=0,a=vf.isMobile()?1:3,o=0,t=function(){r++},s=Potree.timeCollect.depthSamChangeImg.median;this.depthSampler.addEventListener("changeImg",t);e:for(var l=F0,u=n.length;l<u;l++){var c=n[l],d=n.slice(l+1,u);if(F0=l,!c.pointcloud.hasDepthTex&&0<l)break;for(var h=j.sortByScore(d,[],[W0.scoreFunctions.distanceSquared(c.position)]),p=0,f=h.length;p<f;p++){var m=h[p];if(m.item!=c&&(null==this.neighbourMap[c.id][m.item.id]||null==this.neighbourMap[m.item.id][c.id])){var v=!c.pointcloud.hasDepthTex;if(null!=this.isNeighbour(c,m.item,{onlyUseTex:!v,computeDirFirst:!0,computeTwoDir:!0})){if(this.dispatchEvent({type:"getNeighbourAuto",panos:[c,m.item]}),v)break e;if(o++,a<=r||i<r*s+.01*o)break e}}}F0=l+1}this.depthSampler.removeEventListener("changeImg",t),O0||(O0=!0,this.addEventListener("loadedDepthImg",function(e){F0=0}))}},W0.filters={inPanoDirection:function(i,r,a,o){return function(e){var t=e.floorPosition.clone().sub(i).normalize(),n=e.position.clone().sub(i).normalize();return o&&console.log("dire",e.id,t.dot(r),n.dot(r)),t.dot(r)>a||n.dot(r)>a}},inFloorDirection:function(i,r,a,o){return function(e){var t=(new Re).subVectors(e.floorPosition,i).normalize(),n=(new Re).copy(r).normalize();return o&&console.log("dire",e.id,t.dot(n)),t.dot(n)>a}},isNotBehindNormal:function(t,n){var i=new Oe;return n=n.clone(),function(e){return 0<i.copy(e.position).sub(t).normalize().dot(n)}},isCloseEnoughTo:function(t,n){return function(e){return t.distanceTo(e.floorPosition)<n}},not:function(t){return function(e){return e!==t}},isEnabled:function(){return function(e){return e.enabled}},isVisible:function(){return function(e){return e.visible}}},W0.scoreFunctions={direction:function(t,n,e){return function(e){return 400*e.position.clone().sub(t).normalize().dot(n)}},distance:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;return t.position&&(t=t.position),function(e){e=e.position.clone();return-1*t.distanceTo(e)*n}},distanceSquared:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;return t.position&&(t=t.position),function(e){e=e.position.clone();return-1*t.distanceToSquared(e)*n}},angle:function(t,n){return function(e){return e.position.clone().sub(t).normalize().angleTo(n)*Potree.config.navigation.angleFactor}}},W0.sortFunctions={floorDisSquaredToPoint:function(n){return function(e,t){return e.floorPosition.distanceToSquared(n)-t.floorPosition.distanceToSquared(n)}},disSquaredToPoint:function(n){return function(e,t){return e.position.distanceToSquared(n)-t.position.distanceToSquared(n)}}},W0.prototype.updateCube=(t=Math.atan(.2),U0=Math.cos(t),function(i,r){var o=this;if(!("showPanos"!=Potree.settings.displayMode||i==r||this.cubePanos.includes(i)&&this.cubePanos.includes(r))){this.cubePanos=[i,r],viewer.addTimeMark("updateCube","start");var t,s,l,n,u,c,d,a,h,p,F=function(e,t){t=t||e.getSize(new Oe);e=e.getCenter(new Oe);return t.max(new Oe(1,1,1)),o.cube.geometry=new da(1,1,1,1),o.cube.scale.copy(t),o.cube.position.copy(e),Potree.settings.testCube&&(o.cubeTest.geometry=o.cube.geometry,o.cubeTest.scale.copy(t),o.cubeTest.position.copy(e)),"useBound"},e=function(e,t){var n=new K,t=(n.expandByPoint(e.position),t?Math.max(.1*t,10):10);return n.expandByVector(new Oe(t,t,t)),e.pointcloud.bound.clone().union(n)};if(this.cube.geometry.dispose(),r){var O,f=i.position.distanceTo(r.position);if(0==f)return;var m=Math.abs(i.position.z-r.position.z)/f,v=(1+20*m)*f,U=this.isNeighbour(i,r);if(U0<m||!i.pointcloud.hasDepthTex||!r.pointcloud.hasDepthTex||(U?100<v:50<v))return f=(m=e(i,f).union(e(r,f))).getSize(new Oe),b=Math.max(f.x,f.y,f.z),f.set(b,b,b),F(m,f);(U?70<v:15<v)&&(O=!0);var g=2*(vf.isMobile()?4:8),A=function(e,t){e=(new Me).makeRotationZ(e);return t.clone().applyMatrix4(e)},y=function(i,r,a,e){e=null==e?Math.min(50,r.ceilZ-r.floorPosition.z):e;var t=te.linearClamp(e,[2,40],[.5,2]),e=[15,8,3,-1,-5],n=(e=e.map(function(e){return i.clone().setZ((e=e,e=Be.clamp(e*=t,1,80),Math.tan(Be.degToRad(e)))).normalize()}),e.length),e=e.map(function(e,t){var n=o.getIntersect(r,e,a);return n&&n.distance?e.dot(i)*n.distance:50});return e.sort(function(e,t){return t-e}),e[Math.floor(n/2-.5)]},w=[0,0],b=function(i,e){var r=i.floorPosition.z,a=i.getCeilHeight();[a=a==1/0?50+i.position.z:a,r].forEach(function(e){x.push(i.position.clone().setZ(e))});for(var t=Math.PI/(g-1),n=[],o=0;o<g;o++)n.push(A(Math.PI/2-o*t,e));for(var s=n.map(function(e){return{dir:e,dis:y(e,i)}}),l=-1,u=0;u<g;u++){for(var c=u-1,d=0;l<c&&3<s[u].dis/s[c].dis;)d+=s[u].dis/s[c].dis,c--;var h=u-c-1;if(d/=h,0<h&&function(e,t){for(var n=t-(e+=1),i=0,r=e;r<t;r++)i+=s[r].dis;i/=n;e=Math.PI/(g-1)*n/2;return i*Math.tan(e)}(c,u)<.5*d/8){f=void 0;for(var h=c,p=u,f=h+=1;f<p;f++)s[f].disB=.8*s[p].dis;l=u}}s.forEach(function(e,t){var n=e.dir.clone().multiplyScalar(e.disB||e.dis);[a,r].forEach(function(e){x.push(i.position.clone().setZ(e).add(n))})})},x=[],E=[],m=(new Oe).subVectors(i.position,r.position).setZ(0).normalize();b(i,m),b(r,m.clone().negate()),c=i.ceilZ==1/0?i.position.z+50:i.ceilZ,d=r.ceilZ==1/0?r.position.z+50:r.ceilZ,a=(c+d)/2,h=(i.floorPosition.z+r.floorPosition.z)/2,p=(new Oe).addVectors(i.position,r.position).multiplyScalar(.5),O||(i.pointcloud.hasDepthTex&&i.pointcloud.hasDepthTex?(t=[i,r],s=[m.clone().negate(),m],l=(new Re).subVectors(i.position,r.position).length(),n=te.linearClamp(l,[.5,50],[1.2,.2]),u=(vf.isMobile()?[60]:[50,70]).map(function(e){e=Be.clamp(e*n,5,80);return Be.degToRad(e)}),[[-1,1],[1,-1]].forEach(function(n,e){var a=[],o=0==e?i:r;t.forEach(function(r,t){u.map(function(e){return A(n[t]*e,s[t])}).forEach(function(e,t){var n=y(e,r),i=n*Math.cos(u[t]);i<l&&(t=n*Math.sin(u[t]),r!=o&&(i=l-i),e.multiplyScalar(n),a.push({disToSide:t,disToPano2d:i,pano:r,dir_:e}))})}),a.length&&(a.sort(function(e,t){return e.disToPano2d-t.disToPano2d}),(a=1==a.length&&a[0].disToSide<.5?[]:a).forEach(function(t){var e=t.disToPano2d/l,e=o==i?1-e:e;[c*e+d*(1-e),i.floorPosition.z*e+r.floorPosition.z*(1-e)].forEach(function(e){x.push(t.pano.position.clone().setZ(e).add(t.dir_))})})),w[e]=a.length})):(w=[1,1],[A(Math.PI/2,m),A(-Math.PI/2,m)].forEach(function(t,e){var n=y(t,null,p,a-h);t.multiplyScalar(n),[a,h].forEach(function(e){x.push(p.clone().setZ(e).add(t))})}))),[a,h].forEach(function(e){x.push(p.clone().setZ(e))});for(var C=function(e,t,n){return 2+(2*g+2)*n+2*e+("top"==t?0:1)},B=function(e,t,n){return 1==n&&(e+=w[0]),C(e,t,2)-2},N=function(e,t){return C(-1,e,t)},M=x.length-2,S=x.length-1,T=0;T<2;T++){for(var _=1;_<g;_++)E.push([C(_,"top",T),C(_-1,"btm",T),C(_-1,"top",T)],[C(_,"top",T),C(_,"btm",T),C(_-1,"btm",T)]),E.push([C(_,"top",T),C(_-1,"top",T),N("top",T)]),E.push([C(_,"btm",T),C(_-1,"btm",T),N("btm",T)]);for(var P=(T+1)%2,D=0;D<=w[T];D++){var I=0==D?C(0,"top",T):B(D-1,"top",T),k=D==w[T]?C(g-1,"top",P):B(D,"top",T),R=0==D?C(0,"btm",T):B(D-1,"btm",T),L=D==w[T]?C(g-1,"btm",P):B(D,"btm",T);E.push([I,R,L],[I,L,k]),E.push([I,M,k],[R,S,L]),0==T&&(0==D&&E.push([I,C(g-1,"top",T),M],[R,C(g-1,"btm",T),S]),D==w[T])&&E.push([k,C(0,"top",P),M],[L,C(0,"btm",P),S])}}f=ov.createGeometry(x,E);this.cube.geometry=f,this.cube.scale.set(1,1,1),this.cube.position.set(0,0,0),Potree.settings.testCube&&(this.cubeTest.geometry=f,this.cubeTest.scale.set(1,1,1),this.cubeTest.position.set(0,0,0))}else F(e(i));return viewer.addTimeMark("updateCube","end"),!0}}),{uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:["varying vec2 vUv;","void main() {","vUv = uv;","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float opacity;","uniform sampler2D tDiffuse;","varying vec2 vUv;","void main() {","vec4 texel = texture2D( tDiffuse, vUv );","gl_FragColor = opacity * texel;","}"].join("\n")}),q0=(Object.assign(D0.prototype,{setSize:function(e,t){},render:function(e,t,n,i,r){console.error("THREE.Pass: .render() must be implemented in derived pass.")}}),I0.prototype=Object.assign(Object.create(D0.prototype),{constructor:I0,render:function(e,t,n,i,r,a,o,s){var l=i.getRenderTarget();this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=a.texture),this.quad.material=this.material,this.renderToScreen?i.render(this.scene,this.camera):(i.setRenderTarget(r),this.clear&&i.clear(),i.render(this.scene,this.camera),i.setRenderTarget(l))}}),yv.map.mapHeight+100),Y0=yv.map.mapHeight+105,X0=new Gc,K0=new _a(1,1),Z0=function(){function r(e){var n,t,i;return ue(this,r),(n=le(this,r,[e,{clearColor:Potree.config.mapBG,name:"mapViewer",antialias:!0}])).visible=!0,n.initScene(),n.needRender_=!1,n.mapLayer=new Pv(n,n.viewports[0]),n.scene.add(n.mapLayer.sceneGroup),n.mapLayer.sceneGroup.position.setZ(Potree.config.map.mapHeight),n.mapRatio=.5,n.splitDir="leftRight",n.renderMeasure=!1,n.copyPass=new I0(J0),n.copyBuffer=new ti(100,100,{minFilter:N,magFilter:N,format:It,stencilBuffer:!1}),viewer.addEventListener("camera_changed",function(e){var t;e.viewport==viewer.mainViewport?t=!0:e.viewport==n.viewports[0]&&(n.mapChanged=t=!0,n.updateWhenAtViewer(),e.changeInfo.projectionChanged)&&n.setViewLimit(),t&&n.updateCursor()}),n.addEventListener("camera_changed",function(e){e.changeInfo.projectionChanged&&n.setViewLimit()}),viewer.scene.addEventListener("360_images_added",n.addPanos.bind(n)),viewer.addEventListener("loadPointCloudDone",n.initProjection.bind(n)),n.addEventListener("global_click",function(e){!e.isTouch&&e.button!=oe.LEFT||n.updateClosestPano(e.intersect)}),n.addEventListener("add",function(e){n.scene.add(e.object),"route"==e.name&&(e.object.position.z=Y0),Potree.Utils.setObjectLayers(e.object,"mapObjects")}),viewer.addEventListener("allLoaded",function(){n.setViewLimit("standard")}),Potree.settings.isOfficial||(e=viewer.renderer.domElement.parentElement,(t=$("<input type='button' value='map绑定'></input>")).css({position:"absolute",right:"80%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",background:"rgba(255,255,255,0.8)"}),i=!1,t.on("click",function(){i=!i,n.attachToMainViewer(i,"measure"),t.val(i?"map分离":"map绑定")}),e.appendChild(t[0])),n}return v(r,ag),A(r,[{key:"needRender",get:function(){return this.needRender_},set:function(e){(this.needRender_=e)&&(this.viewports[0].needRender=!0)}},{key:"mapChanged",get:function(){return this.mapChanged_},set:function(e){(this.mapChanged_=e)&&(this.needRender=!0)}},{key:"waitLoadDone",value:function(e){function t(){clearTimeout(i)}function n(){clearTimeout(i),i=setTimeout(function(){r.mapLayer.removeEventListener("loadDone",n),r.mapLayer.removeEventListener("startLoad",t),e()},document.hidden?5e3:500)}var i,r=this;this.mapLayer.addEventListener("loadDone",n),this.mapLayer.addEventListener("startLoad",t),0==this.mapLayer.loadingInProgress&&n()}},{key:"addListener",value:function(e){var t=this;e.addEventListener("flyToPano",function(e){e=e.toPano;e.dontMoveMap||t.moveTo(e.pano.position.clone().setZ(Potree.config.map.cameraHeight),void 0,e.duration,null,e.easeName)})}},{key:"initProjection",value:function(){this.started=!0,this.mapLayer.initProjection()}},{key:"initScene",value:function(){var e=this,t=this.renderArea.clientWidth,n=this.renderArea.clientHeight,i=(this.camera=new Ad(-t/2,t/2,n/2,-n/2,.01,1e4),this.camera.zoom=t/50,this.camera.up.set(0,0,1),this.view=new ff,this.view.position.set(0,0,Potree.config.map.cameraHeight),this.view.lookAt(0,0,0),new og(this.view,this.camera,{left:0,bottom:0,width:1,height:1,name:"mapViewport"})),n=(i.axis=["x","y"],i.axisSign=[1,1],i.noPointcloud=!0,i.render=this.render.bind(this),i.addEventListener("resize",function(){e.copyBuffer.setSize(i.resolution2.x,i.resolution2.y)}),this.viewports=[i],this.controls=new ng(this,this.viewports[0]),this.controls.setEnable(!0),this.scene=new Fs,this.inputHandler=new rg(this,this.scene),this.inputHandler.name="mapInputHandler",this.inputHandler.registerInteractiveScene(this.scene),this.viewports[0].interactiveScenes=this.inputHandler.interactiveScenes,new Q(K0,new R({transparent:!0,opacity:.9,depthTest:!1,map:X0.load(Potree.resourcePath+"/textures/pic_location128.png")})));n.position.set(0,0,0),this.cursor=n,this.scene.add(n),Potree.Utils.setObjectLayers(this.scene,"mapObjects")}},{key:"setViewLimit",value:function(e){var t,n,i,r;(e=e||this.limitBoundState)&&(this.limitBoundState=e,(e=Potree.config.OrthoCameraLimit[e])?(this.camera.zoomLimit=$.extend({},e.zoom),n=viewer.transform.lonlatToLocal.inverse([0,0]),t=viewer.transform.lonlatToLocal.forward([n[0],-90+e.latPad])[1],n=viewer.transform.lonlatToLocal.forward([n[0],90-e.latPad])[1],i=this.viewports[0].resolution.y/2/this.camera.zoom,r=this.viewports[0].resolution.x/2/this.camera.zoom,this.view.limitBound=new K(new Oe(e.xBound[0]+r,t+i,Potree.config.map.cameraHeight),new Oe(e.xBound[1]-r,n-i,1/0))):(this.view.limitBound=null,this.camera.zoomLimit=null))}},{key:"updateCursor",value:function(){var e=te.getScaleForConstantSize({minSize:80,maxSize:200,nearBound:5,farBound:100,camera:this.camera,position:this.cursor.getWorldPosition(new Oe),resolution:this.viewports[0].resolution});this.cursor.scale.set(e,e,e),this.cursor.position.copy(viewer.mainViewport.camera.position).setZ(0),this.cursor.rotation.z=viewer.mainViewport.view.yaw,this.needRender=!0}},{key:"addPanos",value:function(e){var i=this,r=new Z;r.name="markers",N0={default:new R({transparent:!0,opacity:.5,map:X0.load(Potree.resourcePath+"/textures/map_marker.png")}),selected:new R({transparent:!0,opacity:1,map:X0.load(Potree.resourcePath+"/textures/map_marker.png")})},e.images.panos.forEach(function(t){t.mapMarker=new Q(K0,N0.default),t.mapMarker.position.copy(t.position).setZ(0),t.mapMarker.scale.set(1,1,1),t.mapMarker.name="mapMarker",r.add(t.mapMarker);function e(e){e.byMap||(t.mapMarker.material=N0.selected,e.byMainView||t.dispatchEvent({type:"hoverOn",byMap:!0}),i.needRender=!0)}function n(e){e.byMap||(t.mapMarker.material=N0.default,e.byMainView||t.dispatchEvent({type:"hoverOff",byMap:!0}),i.needRender=!0)}t.mapMarker.addEventListener("mouseover",e),t.mapMarker.addEventListener("mouseleave",n),t.addEventListener("hoverOn",e),t.addEventListener("hoverOff",n);t.mapMarker.addEventListener("click",function(e){viewer.images360.flyToPano(t)}),t.addEventListener("isVisible",function(e){Potree.Utils.updateVisible(t.mapMarker,"panoVisible",e.visible),i.needRender=!0}),t.addEventListener("rePos",function(e){t.mapMarker.position.copy(t.position).setZ(0)})}),this.scene.add(r),r.position.z=q0,this.panosGroup=r,Potree.Utils.setObjectLayers(r,"mapObjects"),this.initFitView()}},{key:"updateClosestPano",value:function(t){var e;viewer.images360.flying||(t=t&&t.orthoIntersect)&&(t=t.clone().setZ(0),e=[W0.filters.isEnabled(),W0.filters.isVisible(),function(e){return e.position.clone().setZ(0).distanceTo(t)<20}],e=j.find(viewer.images360.panos,e,[W0.sortFunctions.floorDisSquaredToPoint(t)]))&&e!=viewer.images360.currentPano&&viewer.images360.flyToPano(e)}},{key:"fitPanosToViewport",value:function(){var e=viewer.images360.bound.size.clone().multiplyScalar(1.1),t=(e.max(new Oe(4,4,4)),viewer.images360.bound.center.clone());this.moveTo(t,e,0)}},{key:"fitToPointcloud",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,n=e.bound.getSize(new Oe),e=(n.max(new Oe(4,4,4)),e.bound.getCenter(new Oe));this.moveTo(e,n,t)}},{key:"initFitView",value:function(){this.camera.zoom=14,this.moveTo(viewer.images360.position),this.camera.updateProjectionMatrix()}},{key:"fitToDatasets",value:function(e){var t=new K,e=(e.forEach(function(e){return t.union(e.bound)}),t.getCenter(new Oe)),n=t.getSize(new Oe);this.moveTo(e,n,200)}},{key:"moveTo",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length?arguments[3]:void 0,r=4<arguments.length?arguments[4]:void 0,a=5<arguments.length?arguments[5]:void 0;e=new Oe(e.x,e.y,Potree.config.map.cameraHeight),this.view.moveOrthoCamera(this.viewports[0],{endPosition:e,boundSize:t,margin:i,callback:a},n,r)}},{key:"updateWhenAtViewer",value:function(e){this.attachedToViewer&&(this.started&&this.mapLayer.update(),this.needRender=!0)}},{key:"update",value:function(e,t){(this.visible||this.attachedToViewer)&&(this.attachedToViewer?this.mapLayer.needUpdate&&this.updateWhenAtViewer():(this.updateScreenSize(),this.controls.update(e),this.view.applyToCamera(this.camera),e=this.cameraChanged(),this.started&&(e||this.mapLayer.needUpdate)&&this.mapLayer.update(),e&&(this.mapChanged=!0,this.needRender=!0,this.updateCursor()),this.render()))}},{key:"attachToMainViewer",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.5,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};if(Potree.settings.isOfficial||(this.renderArea.style.display=e?"none":"block"),e){if(this.enabledOld=this.enabled,this.enabled=!0,"dontSet"!=n){if(this.changeSplitScreenDir(i.dir,n),this.attachedToViewer)return void viewer.updateScreenSize({forceUpdateSize:!0});viewer.viewports=[viewer.mainViewport,viewer.mapViewer.viewports[0]]}"measure"==t?this.inputHandler.registerInteractiveScene(viewer.measuringTool.scene):"split4Screens"==t&&this.inputHandler.registerInteractiveScene(viewer.scene.scene)}else{if(!this.attachedToViewer)return;viewer.mainViewport.left=0,viewer.mainViewport.bottom=0,viewer.mainViewport.width=1,viewer.mainViewport.height=1,this.viewports[0].width=1,this.viewports[0].bottom=0,this.viewports[0].height=1,this.viewports[0].left=0,this.renderMeasure||this.inputHandler.unregisterInteractiveScene(viewer.measuringTool.scene),this.inputHandler.unregisterInteractiveScene(viewer.scene.scene),viewer.viewports=[viewer.mainViewport],this.updateScreenSize({forceUpdateSize:!0})}this.attachedToViewer=e,viewer.updateScreenSize({forceUpdateSize:!0}),i.moveToCurrentPos&&(n=new Re(10,10),this.moveTo(viewer.images360.position.clone(),n,1e3)),this.needRender=!0}},{key:"setDrawMeasure",value:function(e){this.renderMeasure=!!e,e?this.inputHandler.registerInteractiveScene(viewer.measuringTool.scene):this.inputHandler.unregisterInteractiveScene(viewer.measuringTool.scene)}},{key:"changeSplitScreenDir",value:function(e,t){e&&(this.splitDir=e),this.updateSplitSize(t)}},{key:"updateSplitSize",value:function(e){null!=e&&(this.mapRatio=e),"leftRight"==this.splitDir?(viewer.mainViewport.left=this.mapRatio,viewer.mainViewport.width=1-this.mapRatio,this.viewports[0].width=this.mapRatio,viewer.mainViewport.bottom=this.viewports[0].bottom=0,viewer.mainViewport.height=this.viewports[0].height=1):"upDown"==this.splitDir&&(viewer.mainViewport.bottom=this.mapRatio,viewer.mainViewport.height=1-this.mapRatio,this.viewports[0].height=this.mapRatio,viewer.mainViewport.left=this.viewports[0].left=0,viewer.mainViewport.width=this.viewports[0].width=1),this.attachedToViewer&&viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"render1",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this.visible&&!this.attachedToViewer||!this.needRender&&!t.force){if(!this.attachedToViewer)return;e=!0}var n=this.attachedToViewer&&this.needRender&&!t.force,i=t.renderer||this.renderer;return n?(this.copyBuffer.setSize(t.viewport.resolution2.x,t.viewport.resolution2.y),i.setRenderTarget(this.copyBuffer)):t.target&&i.setRenderTarget(t.target),(t.clear?t:i).clear(),e&&!n||(viewer.dispatchEvent({type:"render.begin",viewer:this,viewport:this.viewports[0],params:t}),Potree.Utils.setCameraLayers(this.camera,["map","mapObjects","bothMapAndScene"]),this.mapGradientBG&&(viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg),i.render(viewer.scene.scene,viewer.scene.cameraBG)),i.render(this.scene,this.camera),i.render(viewer.scene.scene,this.camera),i.setRenderTarget(t.target||null)),(e||n)&&this.copyPass.render(null,null,null,i,t.target||null,this.copyBuffer),!(this.needRender=!1)}},{key:"clear",value:function(e){this.transparentBG?this.renderer.setClearColor(0,0):this.renderer.setClearColor(Potree.config.mapBG,1),(e.renderer||this.renderer).clear()}},{key:"render",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if((this.visible||this.attachedToViewer)&&(this.needRender||t.force))return viewer.addTimeMark("mapRender","start"),e=t.renderer||this.renderer,this.mapChanged&&(e.setRenderTarget(this.copyBuffer),(t.clear?t:this).clear(t),this.mapGradientBG&&(viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg),e.render(viewer.scene.scene,viewer.scene.cameraBG)),Potree.Utils.setCameraLayers(this.camera,["map"]),e.render(this.scene,this.camera),t.renderBG&&t.renderBG(this.viewports[0]),this.mapChanged=!1,e.setRenderTarget(t.target||null)),(t.clear?t:this).clear(t),this.copyPass.render(null,null,null,e,t.target||null,this.copyBuffer),e.clearDepth(),Potree.Utils.setCameraLayers(this.camera,["mapObjects","bothMapAndScene"]),viewer.dispatchEvent({type:"render.begin",viewer:this,viewport:this.viewports[0],params:t}),this.attachedToViewer||e.render(viewer.scene.scene,this.camera),e.render(this.scene,this.camera),!this.attachedToViewer&&this.renderMeasure&&viewer.dispatchEvent({type:"render.pass.perspective_overlay",camera:this.camera,viewport:this.viewports[0],renderer:e}),e.setRenderTarget(null),this.needRender=!1,viewer.addTimeMark("mapRender","end"),!0}},{key:"renderOverlay",value:function(){viewer.renderOverlay({camera:this.camera,viewport:this.viewports[0],renderer:this.renderer})}}])}(),$0=function(){function t(){ue(this,t)}return A(t,null,[{key:"toVector3",value:function(e,t){return(new Oe).fromArray(e,t||0)}},{key:"toBox3",value:function(e){return new K(t.toVector3(e),t.toVector3(e,3))}},{key:"findDim",value:function(e,t){e=e.find(function(e){return e.name==t});if(e)return e;throw new Error("Failed to find "+t+" in schema")}},{key:"sphereFrom",value:function(e){return e.getBoundingSphere(new bi)}}])}(),kp=A(function e(t,n){ue(this,e);n.version;var i=n.schema,r=n.bounds,a=n.boundsConforming,o=[$0.findDim(i,"X"),$0.findDim(i,"Y"),$0.findDim(i,"Z")],s=o.map(function(e){return e.scale||1}),o=o.map(function(e){return e.offset||0});this.eptScale=$0.toVector3(s),this.eptOffset=$0.toVector3(o),this.url=t,this.info=n,this.type="ept",this.schema=i,this.span=n.span||n.ticks,this.boundingBox=$0.toBox3(r),this.tightBoundingBox=$0.toBox3(a),this.offset=$0.toVector3([0,0,0]),this.boundingSphere=$0.sphereFrom(this.boundingBox),this.tightBoundingSphere=$0.sphereFrom(this.tightBoundingBox),this.version=new Potree.Version("1.7"),this.projection=null,this.fallbackProjection=null,n.srs&&n.srs.horizontal&&(this.projection=n.srs.authority+":"+n.srs.horizontal),n.srs.wkt&&(this.projection?this.fallbackProjection=n.srs.wkt:this.projection=n.srs.wkt);try{proj4(this.projection)}catch(e){this.projection=null}s=new dm,s.add(cm.POSITION_CARTESIAN),s.add(new cm("rgba",lm.DATA_TYPE_UINT8,4)),s.add(new cm("intensity",lm.DATA_TYPE_UINT16,1)),s.add(new cm("classification",lm.DATA_TYPE_UINT8,1)),s.add(new cm("gps-time",lm.DATA_TYPE_DOUBLE,1)),s.add(new cm("returnNumber",lm.DATA_TYPE_UINT8,1)),s.add(new cm("number of returns",lm.DATA_TYPE_UINT8,1)),s.add(new cm("return number",lm.DATA_TYPE_UINT8,1)),s.add(new cm("source id",lm.DATA_TYPE_UINT16,1)),this.pointAttributes=s,this.spacing=(this.boundingBox.max.x-this.boundingBox.min.x)/this.span,n.hierarchyType,o=n.dataType;if("laszip"==o)this.loader=new Potree.EptLaszipLoader;else if("binary"==o)this.loader=new Potree.EptBinaryLoader;else{if("zstandard"!=o)throw new Error("Could not read data type: "+o);this.loader=new Potree.EptZstandardLoader}}),Rh=function(){return A(function e(t,n,i,r,a,o){ue(this,e),this.ept=t,this.b=n,this.d=i,this.x=r||0,this.y=a||0,this.z=o||0},[{key:"name",value:function(){return this.d+"-"+this.x+"-"+this.y+"-"+this.z}},{key:"step",value:function(e,t,n){var i=this.b.min.clone(),r=this.b.max.clone(),a=(new Oe).subVectors(r,i);return e?i.x+=a.x/2:r.x-=a.x/2,t?i.y+=a.y/2:r.y-=a.y/2,n?i.z+=a.z/2:r.z-=a.z/2,new Potree.EptKey(this.ept,new K(i,r),this.d+1,2*this.x+e,2*this.y+t,2*this.z+n)}},{key:"children",value:function(){for(var e=[],t=0;t<2;++t)for(var n=0;n<2;++n)for(var i=0;i<2;++i){var r=this.step(t,n,i).name();e.includes(r)||(e=e.concat(r))}return e}}])}(),sh=function(){function s(e,t,n,i,r,a){ue(this,s),(o=le(this,s)).ept=e,o.key=new Potree.EptKey(o.ept,t||o.ept.boundingBox,n||0,i,r,a),o.id=s.IDCount++,o.geometry=null,o.boundingBox=o.key.b,o.tightBoundingBox=o.boundingBox,o.spacing=o.ept.spacing/Math.pow(2,o.key.d),o.boundingSphere=$0.sphereFrom(o.boundingBox),o.hasChildren=!1,o.children={},o.numPoints=-1,o.level=o.key.d,o.loaded=!1,o.loading=!1,o.oneTimeDisposeHandlers=[];var o,e=o.key;return o.name=o.toPotreeName(e.d,e.x,e.y,e.z),o.index=parseInt(o.name.charAt(o.name.length-1)),o}return v(s,vm),A(s,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"url",value:function(){return this.ept.url+"ept-data/"+this.filename()}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"filename",value:function(){return this.key.name()}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"addChild",value:function(e){(this.children[e.index]=e).parent=this}},{key:"load",value:function(){this.loaded||this.loading||Potree.numNodesLoading>=Potree.maxNodesLoading||(this.loading=!0,++Potree.numNodesLoading,-1==this.numPoints&&this.loadHierarchy(),this.loadPoints())}},{key:"loadPoints",value:function(){this.ept.loader.load(this)}},{key:"loadHierarchy",value:(e=J(X().mark(function e(){var l,t,u,c=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return((l={})[this.filename()]=this).hasChildren=!1,t="".concat(this.ept.url,"ept-hierarchy/").concat(this.filename(),".json"),e.next=6,fetch(t);case 6:return t=e.sent,e.next=9,t.json();case 9:u=e.sent,Object.keys(u).sort(function(e,t){var e=U(e.split("-").map(function(e){return parseInt(e,10)}),4),n=e[0],i=e[1],r=e[2],e=e[3],t=U(t.split("-").map(function(e){return parseInt(e,10)}),4),a=t[0],o=t[1],s=t[2],t=t[3];return n<a?-1:a<n?1:i<o?-1:o<i?1:r<s?-1:s<r?1:e<t?-1:t<e?1:0}).forEach(function(e){var t=U(e.split("-").map(function(e){return parseInt(e,10)}),4),n=t[0],i=t[1],r=t[2],t=t[3],a=1&i,o=1&r,s=1&t,i=l[n-1+"-"+(i>>1)+"-"+(r>>1)+"-"+(t>>1)];i&&(i.hasChildren=!0,r=i.key.step(a,o,s),(t=new Potree.PointCloudEptGeometryNode(c.ept,r.b,r.d,r.x,r.y,r.z)).level=n,t.numPoints=u[e],i.addChild(t),l[r.name()]=t)});case 12:case"end":return e.stop()}},e,this)})),function(){return e.apply(this,arguments)})},{key:"doneLoading",value:function(e,t,n,i){e.boundingBox=this.boundingBox,this.geometry=e,this.tightBoundingBox=t,this.numPoints=n,this.mean=i,this.loaded=!0,this.loading=!1,--Potree.numNodesLoading}},{key:"toPotreeName",value:function(e,t,n,i){for(var r="r",a=0;a<e;++a){var o=1<<e-a-1,s=0;t&o&&(s+=4),n&o&&(s+=2),i&o&&(s+=1),r+=s}return r}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1;for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}]);var e}(),eA=(sh.IDCount=0,function(){function n(e,t){return ue(this,n),(e=le(this,n,[e,t=t||new ev])).boundingBox=e.pcoGeometry.tightBoundingBox,e.boundingSphere=e.boundingBox.getBoundingSphere(new bi),e.nodeMaxLevel=0,e.pcoGeometry.loader.version.equalOrHigher("1.5")||(e.nodeMaxLevel=1),e.maxLevel=1/0,e.temp={sizeFitToLevel:{},opacity:{}},e.panos=[],e.matrixAutoUpdate=!1,e.orientationUser=0,e.translateUser=new Oe,e.rotateMatrix=new Me,e.transformMatrix=new Me,e.transformInvMatrix=new Me,e.rotateInvMatrix=new Me,e.material.spacing=e.pcoGeometry.spacing,e.nodeMaxLevelPredict=e.predictNodeMaxLevel(),e.testMaxNodeCount=e.testMaxNodeCount2=0,e._visible=!0,e.pcoGeometry.addEventListener("updateNodeMaxLevel",e.updateNodeMaxLevel.bind(e)),e.isPointcloud=!0,e}return v(n,Lm),A(n,[{key:"updateNodeMaxLevel",value:function(e){var t=this,e=Math.max(e.level,this.nodeMaxLevel);e!=this.nodeMaxLevel&&(this.nodeMaxLevel=e,console.log("updateNodeMaxLevel "+this.dataset_id+" : "+this.nodeMaxLevel),setTimeout(function(){t.setPointLevel()},1),Potree.settings.sizeFitToLevel||this.changePointSize())}},{key:"testMaxNodeLevel",value:function(e){if(!this.testMaxNodeLevelDone){if(0==this.nodeMaxLevel)return!0;if("OrthographicCamera"==e.type||this.testMaxNodeCount<50){if(!Potree.Utils.isInsideFrustum(this.bound,e))return!0}else if(!viewer.atDatasets.includes(this))return!0;var e=this.visibleNodes.map(function(e){return e.getLevel()});return Math.max.apply(null,e)<this.maxLevel?!0:(e=this.maxLevel,this.maxLevel=12,Potree.updatePointClouds([this],viewer.scene.getActiveCamera(),viewer.mainViewport.resolution),this.visibleNodes.map(function(e){return e.getLevel()}),this.maxLevel=e,this.testMaxNodeCount++,viewer.testMaxNodeCount++,this.testMaxNodeCount==Potree.config.testNodeCount1&&this.changePointSize(),100<this.testMaxNodeCount?(console.log("testMaxNodeLevel次数超出,强制结束:",this.dataset_id,this.nodeMaxLevel,this.nodeMaxLevelPredict.min),void(this.testMaxNodeLevelDone="moreThanMaxCount")):this.nodeMaxLevel<this.nodeMaxLevelPredict.min||(this.testMaxNodeCount2++,this.testMaxNodeCount2<50)||void(this.testMaxNodeLevelDone=!0))}}},{key:"updateMatrixWorld",value:function(e){I(n,"updateMatrixWorld",this,3)([e]),this.matrixWorldInverse=this.matrixWorld.clone().invert()}},{key:"setPointLevel",value:function(){var e=Potree.settings.pointDensity,e=Potree.config.pointDensity[e];e&&(e=e.percentByUser&&null!=Potree.settings.UserDensityPercent?Potree.settings.UserDensityPercent:e.maxLevelPercent,this.maxLevel=Math.round(e*this.nodeMaxLevel),Potree.settings.sizeFitToLevel&&this.changePointSize(),this.changePointOpacity(),viewer.dealBeforeRender||viewer.dispatchEvent("content_changed"))}},{key:"predictNodeMaxLevel",value:function(){var e=.005,t=.014;return{min:Math.log2(this.material.spacing/t),max:Math.log2(this.material.spacing/e)}}},{key:"getHighestNodeSpacing",value:function(){return this.material.spacing/Math.pow(2,this.nodeMaxLevel)}},{key:"updateMaterial",value:function(e,t,n,i,r){e.fov=n.fov*(Math.PI/180),e.resolution=r,e.spacing=this.pcoGeometry.spacing,e.near=n.near,e.far=n.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.getSize(new Oe).x}},{key:"pick",value:function(e,t,o,n){function i(e,t){return null!=e?e:t}var s,l=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},r=e.renderer,a=e.pRenderer,u=(e.addTimeMark("pick","start"),l.pickWindowSize),c=(null==u&&(u="showPanos"==Potree.settings.displayMode?50:(c=0<this.nodeMaxLevel?this.maxLevel/this.nodeMaxLevel:.5,Be.clamp(Math.round(80*(1.1-c)),15,100))),"OrthographicCamera"==o.type&&(s=new Oe(0,0,-1).applyQuaternion(o.quaternion),u*=4),i(l.pickOutsideClipRegion,!1),t?t.resolution:r.getSize(new Re)),t=Math.ceil(i(l.width,c.width)),c=Math.ceil(i(l.height,c.height)),d=i(l.pointSizeType,this.material.pointSizeType),h=i(l.pointSize,this.material.size),p=this.nodesOnRay(this.visibleNodes,n);if(0===p.length)return null;this.pickState||(n=new Fs,(g=new ev).activeAttributeName="indices",v=new ti(1,1,{minFilter:N,magFilter:ht,format:It}),this.pickState={renderTarget:v,material:g,scene:n});function f(e,t,n){return Math.min(Math.max(t,e),n)}var m,v=this.pickState,g=v.material,n=(g.pointSizeType=d,g.shape=Potree.PointShape.PARABOLOID,g.uniforms.uFilterReturnNumberRange.value=this.material.uniforms.uFilterReturnNumberRange.value,g.uniforms.uFilterNumberOfReturnsRange.value=this.material.uniforms.uFilterNumberOfReturnsRange.value,g.uniforms.uFilterGPSTimeClipRange.value=this.material.uniforms.uFilterGPSTimeClipRange.value,g.uniforms.uFilterPointSourceIDClipRange.value=this.material.uniforms.uFilterPointSourceIDClipRange.value,g.size=h,g.uniforms.minSize.value=this.material.uniforms.minSize.value,g.uniforms.maxSize.value=this.material.uniforms.maxSize.value,g.classification=this.material.classification,g.recomputeClassification(),this.material),d=n.bigClipInBox,h=n.clipBoxes_in,n=n.clipBoxes_out,d=(g.setClipBoxes(d,h,n,[]),this.updateMaterial(g,p,o,r,new Re(t,c)),v.renderTarget.setSize(t,c),new Re(l.x,l.y)),h=r.getContext(),n=(v.renderTarget.scissor.set(parseInt(d.x-(u-1)/2),parseInt(d.y-(u-1)/2),parseInt(u),parseInt(u)),v.renderTarget.scissorTest=!0,r.state.buffers.depth.setTest(g.depthTest),r.state.buffers.depth.setMask(g.depthWrite),r.state.setBlending(ge),r.setRenderTarget(v.renderTarget),h.clearColor(0,0,0,0),this.material),a=(this.material=g,a.renderOctree(this,p,o,v.renderTarget),window.testScreen&&(g=Potree.Utils.renderTargetToDataUrl(v.renderTarget,t,c,r),Potree.Common.downloadFile(g,"screenshot.png"),window.testScreen=0),this.material=n,parseInt(f(d.x-(u-1)/2,0,t))),n=parseInt(f(d.y-(u-1)/2,0,c)),t=new Uint8Array(4*(u*u)),A=(h.readPixels(a,n,u,u,h.RGBA,h.UNSIGNED_BYTE,t),r.clear(!0,!0,!0),r.setRenderTarget(null),r.state.reset(),r.setScissorTest(!1),h.disable(h.SCISSOR_TEST),t),y=new Uint32Array(t.buffer),w=(Number.MAX_VALUE,[]),b=[];l.all||(m=(d=Be.clamp(Math.floor(u/2),1,40))*d);for(var x=0;x<u;x++)for(var E=0;E<u;E++){var C=x+E*u,B=Math.pow(x-(u-1)/2,2)+Math.pow(E-(u-1)/2,2),M=A[4*C+3],C=(A[4*C+3]=0,y[C]);0===M&&0===C||void 0===M||void 0===C||(C={pIndex:C,pcIndex:M,distanceToCenter:B},l.all?w.push(C):(0<w.length?B<w[0].distanceToCenter&&(w[0]=C):w.push(C),B<m&&b.push(C)))}var S,T,_=q(w=!l.all&&Potree.settings.pickFrontPointRatio&&b.length?b:w);try{for(_.s();!(S=_.n()).done;){var P=S.value,D={};if(!p[P.pcIndex])return null;var I,k=p[P.pcIndex],L=k.sceneNode,R=k.geometryNode.geometry;for(I in R.attributes)!function(){var e,t,n,i,r,a=R.attributes[I];"position"===I?(e=a.array[3*P.pIndex+0],t=a.array[3*P.pIndex+1],r=a.array[3*P.pIndex+2],(e=new Oe(e,t,r)).applyMatrix4(L.matrixWorld),D[I]=e,!l.all&&Potree.settings.pickFrontPointRatio&&("OrthographicCamera"==o.type?(t=(new Oe).subVectors(e,o.position),P.disSquare=t.projectOnVector(s).length()):P.disSquare=o.position.distanceTo(e))):"indices"!==I&&(r=a.array.slice(a.itemSize*P.pIndex,a.itemSize*(P.pIndex+1)),a.potree&&(t=a.potree,n=t.scale,i=t.offset,r=r.map(function(e){return e/n+i})),D[I]=r)}();P.point=D}}catch(e){_.e(e)}finally{_.f()}return e.addTimeMark("pick","end"),l.all?w.map(function(e){return e.point}):0===w.length?null:(0==Potree.settings.pickFrontPointRatio?w:(T=w.sort(function(e,t){return e.disSquare-t.disSquare}).slice()[0],w.forEach(function(e){var t=e.disSquare-T.disSquare;e.disDiff=t,e.score=-e.distanceToCenter-t*Potree.settings.pickFrontPointRatio}),w.sort(function(e,t){return t.score-e.score})))[0].point}},{key:"changePointSize",value:function(e,t){var n,i=viewer.dealBeforeRender;if(this.material.pointSizeType!=_m.ATTENUATED)e&&(o=e/Potree.config.material.realPointSize/1.3);else if(null==e?e=this.temp.pointSize:this.temp.pointSize=e,e/=Potree.config.material.realPointSize/Potree.config.material.pointSize,n=this.testMaxNodeCount>=Potree.config.testNodeCount1?this.nodeMaxLevel:Math.max(this.nodeMaxLevel,this.nodeMaxLevelPredict.max),t||Potree.settings.sizeFitToLevel){var t=this.temp.pointSize+":"+this.maxLevel+":"+n,r=this.temp.sizeFitToLevel[t];if(r)o=r;else{if(this.maxLevel==1/0)return;var r=this.material.spacing/Math.pow(2,this.maxLevel),a=0<n?this.maxLevel/n:.5;r*=0<n?Math.max(.1,Math.pow(a,3*a+.3)):.1,this.temp.sizeFitToLevel[t]=o=20*r*e}}else var o=20*(this.material.spacing/Math.pow(2,n))*e;o&&(Potree.settings.sortCloudMat&&(this.size=o),this.material.size=o),i||viewer.dispatchEvent("content_changed")}},{key:"changePointOpacity",value:function(e,t){null==e?e=this.temp.pointOpacity:this.temp.pointOpacity=e;var n,i,r,a,o=viewer.dealBeforeRender;if(Potree.settings.notAdditiveBlending)return this.material.opacity=e;1==e?i=1:(n=(Potree.settings.sizeFitToLevel?"sizeFit:":"")+(t?"canMoreThanOne:":"")+this.temp.pointOpacity+":"+this.maxLevel+":"+this.nodeMaxLevel,(r=this.temp.opacity[n])?i=r:(i=Potree.settings.sizeFitToLevel?(r=this.material.spacing/Math.pow(1.7,this.maxLevel),a=this.material.spacing/Math.pow(1.7,this.nodeMaxLevel),r*Math.min(1/r,1/a/3)*e):(r=this.material.spacing/Math.pow(2,this.maxLevel),a=this.material.spacing/Math.pow(2,this.nodeMaxLevel),r*Math.min(1/r,1/a/3)*e),t||(i=Be.clamp(i,0,.999)),this.temp.opacity[n]=i)),Potree.settings.sortCloudMat&&(this.opacity=i),this.material.opacity=i,o||viewer.dispatchEvent("content_changed")}},{key:"updateBound",value:function(){var e=this.pcoGeometry.tightBoundingBox.clone().applyMatrix4(this.matrixWorld);this.bound=e,this.bound2=this.getBoundWithPanos()}},{key:"getBoundWithPanos",value:function(){var n=this.bound.clone();return this.panos.forEach(function(e){var t=new K;t.expandByPoint(e.position),t.expandByVector(new Oe(1,1,1)),n.union(t)}),n}},{key:"getPanosBound",value:function(){var e;0<this.panos.length?(e=new Oe(1,1,1),this.panosBound=te.getBoundByPoints(this.panos.map(function(e){return e.position}),e)):this.panosBound=null}},{key:"getUnrotBoundPoint",value:function(e){var t=this,n=this.pcoGeometry.tightBoundingBox;return"all"==e?[new Oe(n.min.x,n.min.y,n.min.z),new Oe(n.max.x,n.min.y,n.min.z),new Oe(n.max.x,n.max.y,n.min.z),new Oe(n.min.x,n.max.y,n.min.z),new Oe(n.min.x,n.min.y,n.max.z),new Oe(n.max.x,n.min.y,n.max.z),new Oe(n.max.x,n.max.y,n.max.z),new Oe(n.min.x,n.max.y,n.max.z)].map(function(e){return e.applyMatrix4(t.matrixWorld)}):[new Oe(n.min.x,n.min.y,0),new Oe(n.max.x,n.min.y,0),new Oe(n.max.x,n.max.y,0),new Oe(n.min.x,n.max.y,0)].map(function(e){return e.applyMatrix4(t.matrixWorld)})}},{key:"getVolume",value:function(){var e=this.pcoGeometry.tightBoundingBox.clone().getSize(new Oe);return e.x*e.y*e.z}},{key:"ifContainsPoint",value:function(e){var t=this.pcoGeometry.tightBoundingBox,n=t.getCenter(new Oe),t=t.getSize(new Oe),n=(new Me).setPosition(n.x,n.y,n.z);return n.scale(t),n.premultiply(this.matrixWorld),Potree.Utils.isIntersectBox(e,n)}},{key:"intersectBox",value:function(e){e=e.clone().premultiply(this.matrixWorld.clone().invert());return Potree.Utils.isIntersectBox(this.pcoGeometry.tightBoundingBox,e)}}])}()),tA=function(){return A(function e(t){ue(this,e),this.profile=t,this.segments=[],this.boundingBox=new K;for(var n=0;n<t.points.length-1;n++){var i=t.points[n],r=t.points[n+1],a=new Oe(i.x,i.y,0),o=new Oe(r.x,r.y,0),s=(new Oe).addVectors(o,a).multiplyScalar(.5),l=a.distanceTo(o),o=(new Oe).subVectors(o,a).normalize(),u=new Oe(0,0,1),u=(new Oe).crossVectors(o,u).normalize(),i={start:i,end:r,cutPlane:(new ir).setFromNormalAndCoplanarPoint(u,a),halfPlane:(new ir).setFromNormalAndCoplanarPoint(o,s),length:l,points:new hm};this.segments.push(i)}},[{key:"size",value:function(){var e,t=0,n=q(this.segments);try{for(n.s();!(e=n.n()).done;)t+=e.value.points.numPoints}catch(e){n.e(e)}finally{n.f()}return t}}])}(),uh=function(){return A(function e(t,n,i,r){ue(this,e),this.pointcloud=t,this.profile=n,this.maxDepth=i||Number.MAX_VALUE,this.callback=r,this.temporaryResult=new tA(this.profile),this.pointsServed=0,this.highestLevelServed=0,this.priorityQueue=new BinaryHeap(function(e){return 1/e.weight}),this.initialize()},[{key:"initialize",value:function(){this.priorityQueue.push({node:this.pointcloud.pcoGeometry.root,weight:1/0})}},{key:"traverse",value:function(e){for(var t=[],n=0;n<8;n++){var i=e.children[n];i&&this.pointcloud.nodeIntersectsProfile(i,this.profile)&&t.push(i)}for(;0<t.length;){var r=t.pop(),a=r.boundingSphere.radius;if(this.priorityQueue.push({node:r,weight:a}),r.level<this.maxDepth)for(var o=0;o<8;o++){var s=r.children[o];s&&this.pointcloud.nodeIntersectsProfile(s,this.profile)&&t.push(s)}}}},{key:"update",value:function(){this.updateGeneratorInstance||(this.updateGeneratorInstance=this.updateGenerator()),this.updateGeneratorInstance.next().done&&(this.updateGeneratorInstance=null)}},{key:"updateGenerator",value:X().mark(function e(){var t,n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:performance.now(),t=1,n=[],i=0;case 4:if(i<Math.min(t,this.priorityQueue.size())){if(r=this.priorityQueue.pop(),(a=r.node).level>this.maxDepth)return e.abrupt("continue",10);e.next=9}else e.next=13;break;case 9:a.loaded?(n.push(a),W.lru.touch(a),this.highestLevelServed=Math.max(a.getLevel(),this.highestLevelServed),s=a.pcoGeometry,s=s?s.hierarchyStepSize:1,(0===a.getLevel()||a.level%s==0&&a.hasChildren)&&this.traverse(a)):(a.load(),this.priorityQueue.push(r));case 10:i++,e.next=4;break;case 13:if(!(0<n.length)){e.next=33;break}o=q(this.getPointsInsideProfile(n,this.temporaryResult)),e.prev=15,o.s();case 17:if((s=o.n()).done){e.next=24;break}if(s.value){e.next=22;break}return!(e.next=22);case 22:e.next=17;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(15),o.e(e.t0);case 29:return e.prev=29,o.f(),e.finish(29);case 32:100<this.temporaryResult.size()&&(this.pointsServed+=this.temporaryResult.size(),this.callback.onProgress({request:this,points:this.temporaryResult}),this.temporaryResult=new tA(this.profile));case 33:return 0===this.priorityQueue.size()&&(0<this.temporaryResult.size()&&(this.pointsServed+=this.temporaryResult.size(),this.callback.onProgress({request:this,points:this.temporaryResult}),this.temporaryResult=new tA(this.profile)),this.callback.onFinish({request:this}),0<=(l=this.pointcloud.profileRequests.indexOf(this)))&&this.pointcloud.profileRequests.splice(l,1),e.next=36,!0;case 36:case"end":return e.stop()}},e,this,[[15,26,29,32]])})},{key:"getAccepted",value:X().mark(function e(t,n,i,r,a,o,s){var l,u,c,d,h,p,f,m,v,g,A;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:l=performance.now(),u=new Uint32Array(t),c=new Float64Array(t),d=new Float32Array(3*t),h=0,p=new Oe,f=new Oe,m=new Float32Array(n.geometry.attributes.position.array),v=0;case 9:if(v<t){if(p.set(m[3*v+0],m[3*v+1],m[3*v+2]),p.applyMatrix4(i),A=Math.abs(r.cutPlane.distanceToPoint(p)),g=Math.abs(r.halfPlane.distanceToPoint(p)),A<this.profile.width/2&&g<r.length/2&&(f.subVectors(p,r.start),A=a.dot(f),u[h]=v,c[h]=A+s,o.boundingBox.expandByPoint(p),p.sub(this.pointcloud.position),d[3*h+0]=p.x,d[3*h+1]=p.y,d[3*h+2]=p.z,h++),v%1e3==0&&4<performance.now()-l)return!(e.next=20);e.next=21}else e.next=24;break;case 20:l=performance.now();case 21:v++,e.next=9;break;case 24:return u=u.subarray(0,h),c=c.subarray(0,h),d=d.subarray(0,3*h),e.next=29,[u,c,d];case 29:case"end":return e.stop()}},e,this)})},{key:"getPointsInsideProfile",value:X().mark(function e(O,t){var n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,R,L,F;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=performance.now(),i=0,r=q(t.segments),e.prev=4,r.s();case 6:if((a=r.n()).done){e.next=86;break}a=a.value,o=q(O),e.prev=9,o.s();case 11:if((s=o.n()).done){e.next=75;break}if(s=s.value,l=s.numPoints,u=s.geometry,l){e.next=17;break}return e.abrupt("continue",73);case 17:if(c=s.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld),c=c.getBoundingSphere(new bi),d=new Oe(a.start.x,a.start.y,c.center.z),h=new Oe(a.end.x,a.end.y,c.center.z),d=new Th(d,h).closestPointToPoint(c.center,!0,new Oe),h=d.distanceTo(c.center),h<c.radius+t.profile.width){e.next=26;break}return e.abrupt("continue",73);case 26:d=(new Oe).subVectors(a.end,a.start).setZ(0),h=d.clone().normalize(),p=new hm,g=(c=new Me).makeTranslation.apply(c,Fe(s.boundingBox.min.toArray())),g=(new Me).multiplyMatrices(this.pointcloud.matrixWorld,g),v=m=f=null,g=q(this.getAccepted(l,s,g,a,h,p,i)),e.prev=36,g.s();case 38:if((A=g.n()).done){e.next=53;break}if(A=A.value){e.next=47;break}return performance.now(),!(e.next=44);case 44:n=performance.now(),e.next=51;break;case 47:y=U(A,3),f=y[0],m=y[1],v=y[2];case 51:e.next=38;break;case 53:e.next=58;break;case 55:e.prev=55,e.t0=e.catch(36),g.e(e.t0);case 58:return e.prev=58,g.f(),e.finish(58);case 61:if(4<performance.now()-n)return!(e.next=65);e.next=66;break;case 65:n=performance.now();case 66:p.data.position=v,y=Object.keys(u.attributes).filter(function(e){return!["position","indices"].includes(e)}),w=q(y);try{for(w.s();!(b=w.n()).done;){for(x=b.value,E=u.attributes[x],C=E.array.length/l,parseInt(C),B=E.array.constructor,M=new B(C*f.length),S=E.array,T=M,_=0;_<f.length;_++)P=f[_],I=(D=P*C)+C,k=S.subarray(D,I),T.set(k,_*C);p.data[x]=M}}catch(e){w.e(e)}finally{w.f()}p.data.mileage=m,p.numPoints=f.length,a.points.add(p);case 73:e.next=11;break;case 75:e.next=80;break;case 77:e.prev=77,e.t1=e.catch(9),o.e(e.t1);case 80:return e.prev=80,o.f(),e.finish(80);case 83:i+=a.length;case 84:e.next=6;break;case 86:e.next=91;break;case 88:e.prev=88,e.t2=e.catch(4),r.e(e.t2);case 91:return e.prev=91,r.f(),e.finish(91);case 94:R=q(t.segments);try{for(R.s();!(L=R.n()).done;)F=L.value,t.boundingBox.union(F.points.boundingBox)}catch(e){R.e(e)}finally{R.f()}return e.next=98,!0;case 98:case"end":return e.stop()}},e,this,[[4,88,91,94],[9,77,80,83],[36,55,58,61]])})},{key:"finishLevelThenCancel",value:function(){this.cancelRequested||(this.maxDepth=this.highestLevelServed,this.cancelRequested=!0)}},{key:"cancel",value:function(){this.callback.onCancel(),this.priorityQueue=new BinaryHeap(function(e){return 1/e.weight});var e=this.pointcloud.profileRequests.indexOf(this);0<=e&&this.pointcloud.profileRequests.splice(e,1)}}])}(),Ju=function(){return A(function e(){ue(this,e),this.workers={}},[{key:"getWorker",value:function(e){var t;return this.workers[e]||(this.workers[e]=[]),0===this.workers[e].length&&(t=new Worker(e),this.workers[e].push(t)),this.workers[e].pop()}},{key:"returnWorker",value:function(e,t){this.workers[e].push(t)}}])}();function nA(e){var t,n=e.material,i=[],r=q(n.ranges);try{for(r.s();!(t=r.n()).done;){var a=U(t.value,2),o=a[0],s=a[1];i.push({name:o,value:s})}}catch(e){r.e(e)}finally{r.f()}"number"==typeof n.elevationRange[0]&&i.push({name:"elevationRange",value:n.elevationRange}),"number"==typeof n.intensityRange[0]&&i.push({name:"intensityRange",value:n.intensityRange});var l=Object.entries(Potree.PointSizeType).find(function(e){return e[1]===n.pointSizeType})[0],l={activeAttributeName:n.activeAttributeName,ranges:i,size:n.size,minSize:n.minSize,pointSizeType:l,matcap:n.matcap};return{name:e.name,url:e.pcoGeometry.url,position:e.position.toArray(),rotation:e.rotation.toArray(),scale:e.scale.toArray(),material:l}}function iA(e){return{uuid:e.uuid,name:e.name,points:e.points.map(function(e){return e.toArray()}),height:e.height,width:e.width}}function rA(e){return{uuid:e.uuid,type:e.constructor.name,name:e.name,position:e.position.toArray(),rotation:e.rotation.toArray(),scale:e.scale.toArray(),visible:e.visible,clip:e.clip}}function aA(e){var t=e.controlPoints.map(function(e){return{position:e.position.toArray(),target:e.target.toArray()}});return{uuid:e.uuid,name:e.name,duration:e.duration,t:e.t,curveType:e.curveType,visible:e.visible,controlPoints:t}}function oA(e){return{uuid:e.uuid,name:e.name,points:e.points.map(function(e){return e.position.toArray()}),showDistances:e.showDistances,showCoordinates:e.showCoordinates,showArea:e.showArea,closed:e.closed,showAngles:e.showAngles,showHeight:e.showHeight,showCircle:e.showCircle,showAzimuth:e.showAzimuth,showEdges:e.showEdges,color:e.color.toArray()}}function sA(e){return{cameraParamsPath:e.cameraParamsPath,imageParamsPath:e.imageParamsPath}}function lA(e){return{path:e.path}}function uA(e){var t,i=new Map,n=(e.scene.annotations.traverseDescendants(function(e){var t,n;n={uuid:(t=e).uuid,title:t.title.toString(),description:t.description,position:t.position.toArray(),offset:t.offset.toArray(),children:[]},t.cameraPosition&&(n.cameraPosition=t.cameraPosition.toArray()),t.cameraTarget&&(n.cameraTarget=t.cameraTarget.toArray()),void 0!==t.radius&&(n.radius=t.radius),i.set(e,n)}),q(i));try{for(n.s();!(t=n.n()).done;){var r,a=U(t.value,2),o=a[0],s=a[1],l=q(o.children);try{for(l.s();!(r=l.n()).done;){var u=r.value,c=i.get(u);s.children.push(c)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){n.e(e)}finally{n.f()}return e.scene.annotations.children.map(function(e){return i.get(e)})}var cA=A(function e(){ue(this,e),this.position=new Oe(0,0,0),this.target=new Oe(0,0,0),this.positionHandle=null,this.targetHandle=null}),dA=function(){function h(e){var t;return ue(this,h),(t=le(this,h)).viewer=e,t.selectedElement=null,t.controlPoints=[],t.uuid=Be.generateUUID(),t.node=new Z,t.node.name="camera animation",t.viewer.scene.scene.add(t.node),t.frustum=t.createFrustum(),t.node.add(t.frustum),t.name="Camera Animation",t.duration=5,t.t=0,t.curveType="centripetal",t.visible=!0,t.createUpdateHook(),t.createPath(),t}return v(h,mm),A(h,[{key:"createUpdateHook",value:function(){var f=this,m=this.viewer;m.addEventListener("update",function(){var e,t=m.scene.getActiveCamera(),n=m.renderer.getSize(new Re),i=n.width,r=n.height,a=(f.node.visible=f.visible,q(f.controlPoints));try{for(a.s();!(e=a.n()).done;){var o,s,l,u,c=e.value,d=c.position.clone().project(t),h=(f.visible&&d.z<1&&-1<d.z?(o=i*(.5*d.x+.5),s=r-r*(.5*d.y+.5),c.positionHandle.svg.style.left=o-c.positionHandle.svg.clientWidth/2,c.positionHandle.svg.style.top=s-c.positionHandle.svg.clientHeight/2,c.positionHandle.svg.style.display=""):c.positionHandle.svg.style.display="none",c.target.clone().project(t));f.visible&&h.z<1&&-1<h.z?(l=i*(.5*h.x+.5),u=r-r*(.5*h.y+.5),c.targetHandle.svg.style.left=l-c.targetHandle.svg.clientWidth/2,c.targetHandle.svg.style.top=u-c.targetHandle.svg.clientHeight/2,c.targetHandle.svg.style.display=""):c.targetHandle.svg.style.display="none"}}catch(e){a.e(e)}finally{a.f()}f.line.material.resolution.set(i,r),f.updatePath();var n=f.at(f.t),p=f.frustum;p.position.copy(n.position),p.lookAt.apply(p,Fe(n.target.toArray())),p.scale.set(20,20,20),p.material.resolution.set(i,r)})}},{key:"createControlPoint",value:function(e){void 0===e&&(e=this.controlPoints.length);var t,n,i,r=new cA;return 2<=this.controlPoints.length&&0===e?(i=this.controlPoints[0],n=this.controlPoints[1],t=i.position.clone().sub(n.position).multiplyScalar(.5),r.position.copy(i.position).add(t),t=i.target.clone().sub(n.target).multiplyScalar(.5),r.target.copy(i.target).add(t)):2<=this.controlPoints.length&&e===this.controlPoints.length?(n=this.controlPoints[this.controlPoints.length-2],t=(i=this.controlPoints[this.controlPoints.length-1]).position.clone().sub(n.position).multiplyScalar(.5),r.position.copy(n.position).add(t),t=i.target.clone().sub(n.target).multiplyScalar(.5),r.target.copy(i.target).add(t)):2<=this.controlPoints.length&&(n=this.controlPoints[e-1],i=this.controlPoints[e],r.position.copy(n.position.clone().add(i.position).multiplyScalar(.5)),r.target.copy(n.target.clone().add(i.target).multiplyScalar(.5))),r.positionHandle=this.createHandle(r.position),r.targetHandle=this.createHandle(r.target),this.controlPoints.splice(e,0,r),this.dispatchEvent({type:"controlpoint_added",controlpoint:r}),r}},{key:"removeControlPoint",value:function(t){this.controlPoints=this.controlPoints.filter(function(e){return e!==t}),this.dispatchEvent({type:"controlpoint_removed",controlpoint:t}),t.positionHandle.svg.remove(),t.targetHandle.svg.remove()}},{key:"createPath",value:function(){var e=new Kf,t=new Ff({color:65280,dashSize:5,gapSize:2,linewidth:2,resolution:new Re(1e3,1e3)}),e=new Zf(e,t),t=(this.line=e,this.node.add(e),new Kf),e=new Ff({color:255,dashSize:5,gapSize:2,linewidth:2,resolution:new Re(1e3,1e3)}),t=new Zf(t,e);this.targetLine=t,this.node.add(t)}},{key:"createFrustum",value:function(){var e=[0,0,0,-.3,-.3,1,0,0,0,.3,-.3,1,0,0,0,.3,.3,1,0,0,0,-.3,.3,1,-.3,-.3,1,.3,-.3,1,.3,-.3,1,.3,.3,1,.3,.3,1,-.3,.3,1,-.3,.3,1,-.3,-.3,1],t=new Kf,e=(t.setPositions(e),t.verticesNeedUpdate=!0,t.computeBoundingSphere(),new Ff({color:16711680,linewidth:2,resolution:new Re(1e3,1e3)})),t=new Zf(t,e);return t.computeLineDistances(),t}},{key:"updatePath",value:function(){for(var e=this.controlPoints.map(function(e){return e.position}),t=e[0],n=new Xc(e),i=(n.curveType=this.curveType,[]),r=0;r<=100;r++){var a=n.getPoint(r/100).sub(t);i.push(a.x,a.y,a.z)}this.line.geometry.setPositions(i),this.line.geometry.verticesNeedUpdate=!0,this.line.geometry.computeBoundingSphere(),this.line.position.copy(t),this.line.computeLineDistances(),this.cameraCurve=n;for(var e=this.controlPoints.map(function(e){return e.target}),o=e[0],s=new Xc(e),l=(s.curveType=this.curveType,[]),u=0;u<=100;u++){var c=s.getPoint(u/100).sub(o);l.push(c.x,c.y,c.z)}this.targetLine.geometry.setPositions(l),this.targetLine.geometry.verticesNeedUpdate=!0,this.targetLine.geometry.computeBoundingSphere(),this.targetLine.position.copy(o),this.targetLine.computeLineDistances(),this.targetCurve=s}},{key:"at",value:function(e){return 1<e?e=1:e<0&&(e=0),{position:this.cameraCurve.getPointAt(e),target:this.targetCurve.getPointAt(e)}}},{key:"set",value:function(e){this.t=e}},{key:"createHandle",value:function(o){var s=this,e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg"),e=(t.setAttribute("width","2em"),t.setAttribute("height","2em"),t.setAttribute("position","absolute"),t.style.left="50px",t.style.top="50px",t.style.position="absolute",t.style.zIndex="10000",document.createElementNS(e,"circle"));e.setAttributeNS(null,"cx","1em"),e.setAttributeNS(null,"cy","1em"),e.setAttributeNS(null,"r","0.5em"),e.setAttributeNS(null,"style","fill: red; stroke: black; stroke-width: 0.2em;"),t.appendChild(e);this.viewer.renderer.domElement.parentElement.appendChild(t);var n=function(e){var t,n,i,r,a;s.selectedElement&&(e.preventDefault(),n=viewer.renderer.domElement.getBoundingClientRect(),a=e.clientX-n.x,e=e.clientY-n.y,t=(n=s.viewer.renderer.getSize(new Re)).width,n=n.height,i=s.viewer.scene.getActiveCamera(),(r=o.clone().project(i)).x=(a/t-.5)/.5,r.y=(-(e-n)/n-.5)/.5,a=r.clone().unproject(i),o.set(a.x,a.y,a.z))};return t.addEventListener("mousedown",function(e){s.selectedElement=t,document.addEventListener("mousemove",n)}),t.addEventListener("mouseup",function(e){s.selectedElement=null,document.removeEventListener("mousemove",n)}),{svg:t}}},{key:"setVisible",value:function(e){var t,n=(this.node.visible=e)?"":"none",i=q(this.controlPoints);try{for(i.s();!(t=i.n()).done;){var r=t.value;r.positionHandle.svg.style.display=n,r.targetHandle.svg.style.display=n}}catch(e){i.e(e)}finally{i.f()}this.visible=e}},{key:"setDuration",value:function(e){this.duration=e}},{key:"getDuration",value:function(e){return this.duration}},{key:"play",value:function(){var i=this,r=performance.now(),a=this.duration,o=this.visible,s=(this.setVisible(!1),function(e){var t=(performance.now()-r)/1e3/a,n=(i.set(t),i.at(t));viewer.scene.view.position.copy(n.position),viewer.scene.view.lookAt(n.target),1<t&&(i.setVisible(o),i.viewer.removeEventListener("update",s))});this.viewer.addEventListener("update",s)}}],[{key:"defaultFromView",value:function(e){for(var t=new h(e),n=e.scene.getActiveCamera(),e=e.scene.view.getPivot(),i=new Oe(.3*n.position.x+.7*e.x,.3*n.position.y+.7*e.y,.3*n.position.z+.7*e.z),r=new Oe(.05*n.position.x+.95*e.x,.05*n.position.y+.95*e.y,.05*n.position.z+.95*e.z),a=.3*n.position.distanceTo(e),o=ne.computeAzimuth(n.position,e),s=0;s<5;s++){var l,u=1.5*Math.PI*(s/5)+o,c=a*Math.cos(u),u=a*Math.sin(u),d=[i.x+c,i.y+u,i.z],c=[r.x+.1*c,r.y+.1*u,r.z],u=t.createControlPoint();(l=u.position).set.apply(l,d),(l=u.target).set.apply(l,c)}return t}}])}();function hA(s,l){return new Promise(function(o){s.scene.pointclouds.map(function(e){return e.name}).includes(l.name)?o():Potree.loadPointCloud(l.url,l.name,function(e){var t,e=e.pointcloud,n=((t=e.position).set.apply(t,Fe(l.position)),(t=e.rotation).set.apply(t,Fe(l.rotation)),(t=e.scale).set.apply(t,Fe(l.scale)),e.material);if(l.material){if(null!=l.material.activeAttributeName&&(n.activeAttributeName=l.material.activeAttributeName),null!=l.material.ranges){var i,r=q(l.material.ranges);try{for(r.s();!(i=r.n()).done;){var a=i.value;"elevationRange"===a.name?n.elevationRange=a.value:"intensityRange"===a.name?n.intensityRange=a.value:n.setRange(a.name,a.value)}}catch(e){r.e(e)}finally{r.f()}}null!=l.material.size&&(n.size=l.material.size),null!=l.material.minSize&&(n.minSize=l.material.minSize),null!=l.material.pointSizeType&&(n.pointSizeType=_m[l.material.pointSizeType]),null!=l.material.matcap&&(n.matcap=l.material.matcap)}else null!=l.activeAttributeName&&(n.activeAttributeName=l.activeAttributeName);s.scene.addPointCloud(e),o(e)})})}function pA(d,e){if(e){var t,h=function(e,t){n=e,i=null,d.scene.annotations.traverse(function(e){e.uuid===n.uuid&&(i=e)});var n,i,r=i;if(!r){(o=new pv({position:(r=e).position,title:r.title,cameraPosition:r.cameraPosition,cameraTarget:r.cameraTarget})).description=r.description,o.uuid=r.uuid,r.offset&&(a=o.offset).set.apply(a,Fe(r.offset));var a,o,s,l=o,u=q(e.children);try{for(u.s();!(s=u.n()).done;){var c=s.value;h(c,l)}}catch(e){u.e(e)}finally{u.f()}t.add(l)}},n=q(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;h(i,d.scene.annotations)}}catch(e){n.e(e)}finally{n.f()}}}function fA(){return(fA=J(X().mark(function e(r,a){var o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("Potree"!==a.type)return console.error("not a valid Potree project"),e.abrupt("return");e.next=3;break;case 3:n=r,(i=a.settings)&&(n.setPointBudget(i.pointBudget),n.setFOV(i.fov),n.setEDLEnabled(i.edlEnabled),n.setEDLRadius(i.edlRadius),n.setEDLStrength(i.edlStrength),n.setBackground(i.background),n.setMinNodeSize(i.minNodeSize),n.setShowBoundingBox(i.showBoundingBoxes)),n=r,i=a.view,t=void 0,(t=n.scene.view.position).set.apply(t,Fe(i.position)),(t=n.scene.view).lookAt.apply(t,Fe(i.target)),o=[],s=q(a.pointclouds);try{for(s.s();!(l=s.n()).done;)u=l.value,c=hA(r,u),o.push(c)}catch(e){s.e(e)}finally{s.f()}d=q(a.measurements);try{for(d.s();!(h=d.n()).done;)p=h.value,!function(e,t){var n=e.scene.measurements.find(function(e){return e.uuid===t.uuid});if(!n){var i,r=new im,a=(r.uuid=t.uuid,r.name=t.name,r.showDistances=t.showDistances,r.showCoordinates=t.showCoordinates,r.showArea=t.showArea,r.closed=t.closed,r.showAngles=t.showAngles,r.showHeight=t.showHeight,r.showCircle=t.showCircle,r.showAzimuth=t.showAzimuth,r.showEdges=t.showEdges,q(t.points));try{for(a.s();!(i=a.n()).done;){var o=i.value,s=ie(Oe,Fe(o));r.addMarker(s)}}catch(e){a.e(e)}finally{a.f()}e.scene.addMeasurement(r)}}(r,p)}catch(e){d.e(e)}finally{d.f()}f=q(a.volumes);try{for(f.s();!(m=f.n()).done;)v=m.value,!function(e,t){var n,i;e.scene.volumes.find(function(e){return e.uuid===t.uuid})||((i=new Potree[t.type]).uuid=t.uuid,i.name=t.name,(n=i.position).set.apply(n,Fe(t.position)),(n=i.rotation).set.apply(n,Fe(t.rotation)),(n=i.scale).set.apply(n,Fe(t.scale)),i.visible=t.visible,i.clip=t.clip,e.scene.addVolume(i))}(r,v)}catch(e){f.e(e)}finally{f.f()}g=q(a.cameraAnimations);try{for(g.s();!(A=g.n()).done;)y=A.value,!function(e,t){var n=e.scene.cameraAnimations.find(function(e){return e.uuid===t.uuid});if(!n){var i,r=new dA(e),a=(r.uuid=t.uuid,r.name=t.name,r.duration=t.duration,r.t=t.t,r.curveType=t.curveType,r.visible=t.visible,r.controlPoints=[],q(t.controlPoints));try{for(a.s();!(i=a.n()).done;){var o,s,l=i.value,u=r.createControlPoint();(o=u.position).set.apply(o,Fe(l.position)),(s=u.target).set.apply(s,Fe(l.target))}}catch(e){a.e(e)}finally{a.f()}e.scene.addCameraAnimation(r)}}(r,y)}catch(e){g.e(e)}finally{g.f()}w=q(a.profiles);try{for(w.s();!(b=w.n()).done;)x=b.value,!function(e,t){var n=t.name,i=t.points,r=e.scene.profiles.find(function(e){return e.uuid===t.uuid});if(!r){var a,o=new Potree.Profile,s=(o.name=n,o.uuid=t.uuid,o.setWidth(t.width),q(i));try{for(s.s();!(a=s.n()).done;){var l=a.value;o.addMarker(ie(Oe,Fe(l)))}}catch(e){s.e(e)}finally{s.f()}e.scene.addProfile(o)}}(r,x)}catch(e){w.e(e)}finally{w.f()}if(a.orientedImages){E=q(a.orientedImages);try{for(E.s();!(C=E.n()).done;)B=C.value,!function(t,e){var n=e.cameraParamsPath,i=e.imageParamsPath;t.scene.orientedImages.find(function(e){return e.imageParamsPath===i})||Potree.OrientedImageLoader.load(n,i,t).then(function(e){t.scene.addOrientedImages(e)})}(r,B)}catch(e){E.e(e)}finally{E.f()}}return pA(r,a.annotations),n=r,(t=a.classification)&&n.setClassifications(t),ne.waitAny(o).then(function(){if(a.geopackages){var e,t=q(a.geopackages);try{for(t.s();!(e=t.n()).done;){var n=e.value;!function(t,e){var n=e.path;t.scene.geopackages.find(function(e){return e.path===n})||(e=t.getProjection(),proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4.defs("pointcloud",e),e=proj4("WGS84","pointcloud"),Potree.GeoPackageLoader.loadUrl(n,{transform:e}).then(function(e){t.scene.addGeopackage(e)}))}(r,n)}}catch(e){t.e(e)}finally{t.f()}}}),e.next=22,Promise.all(o);case 22:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}var mA=function(){function t(){var e;ue(this,t);return(e=le(this,t)).setValues({uniforms:{screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},edlStrength:{type:"f",value:1},uNear:{type:"f",value:1},uFar:{type:"f",value:1},radius:{type:"f",value:1},neighbours:{type:"2fv",value:[]},depthMap:{type:"t",value:null},uEDLColor:{type:"t",value:null},uEDLDepth:{type:"t",value:null},opacity:{type:"f",value:1},uProj:{type:"Matrix4fv",value:[]}},vertexShader:e.getDefines()+bm["edl.vs"],fragmentShader:e.getDefines()+bm["edl.fs"],lights:!1}),e.neighbourCount=8,e}return v(t,ac),A(t,[{key:"getDefines",value:function(){var e="";return e+="#define NEIGHBOUR_COUNT "+this.neighbourCount+"\n"}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+bm["edl.vs"],t=this.getDefines()+bm["edl.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.uniforms.neighbours.value=this.neighbours,this.needsUpdate=!0}},{key:"neighbourCount",get:function(){return this._neighbourCount},set:function(e){if(this._neighbourCount!==e){this._neighbourCount=e,this.neighbours=new Float32Array(2*this._neighbourCount);for(var t=0;t<this._neighbourCount;t++)this.neighbours[2*t+0]=Math.cos(2*t*Math.PI/this._neighbourCount),this.neighbours[2*t+1]=Math.sin(2*t*Math.PI/this._neighbourCount);this.updateShaderSource()}}}])}(),vA=function(){function h(e,t){ue(this,h),this.version="string"==typeof e?new am(e):e,this.extension=t}return A(h,[{key:"load",value:function(t,n){var i,r,a=this;t.loaded||(i=t.getURL(),this.version.equalOrHigher("1.4")&&(i+=".".concat(this.extension)),(r=Sf.createXMLHttpRequest()).open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){var e;4===r.readyState&&(200===r.status||0===r.status?(e=r.response,a.parse(t,e,n)):console.log("Failed to load file! HTTP status: "+r.status+", file: "+i))},r.send(null))}},{key:"parse",value:(i=J(X().mark(function e(t,n,i){var r,a,o,s,l,u,c,d;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new LASFile(n),a=new gA(t),e.prev=2,e.next=5,r.open();case 5:r.isOpen=!0,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.log("failed to open file. :("),e.abrupt("return");case 12:return e.next=14,r.getHeader();case 14:o=e.sent,l=0,u=(s=1)<=1?o.pointsCount:o.pointsCount/s,c=!0;case 19:if(c)return e.next=22,r.readData(1e6,0,s);e.next=29;break;case 22:d=e.sent,a.push(new LASDecoder(d.buffer,o.pointsFormatId,o.pointsStructSize,d.count,o.scale,o.offset,o.mins,o.maxs)),l+=d.count,h.progressCB(l/u),c=d.hasMoreData,e.next=19;break;case 29:return o.totalRead=l,o.versionAsString=r.versionAsString,o.isCompressed=r.isCompressed,h.progressCB(1),e.prev=33,e.next=36,r.close();case 36:r.isOpen=!1,e.next=43;break;case 39:throw e.prev=39,e.t1=e.catch(33),console.error("failed to close las/laz file!!!"),e.t1;case 43:i();case 44:case"end":return e.stop()}},e,null,[[2,8],[33,39]])})),function(e,t,n){return i.apply(this,arguments)})},{key:"handle",value:function(e,t){}}],[{key:"progressCB",value:function(){}}]);var i}(),gA=function(){return A(function e(t){ue(this,e),this.node=t},[{key:"push",value:function(h){var p=this,f=Potree.scriptPath+"/workers/LASDecoderWorker.js",m=Potree.workerPool.getWorker(f),v=this.node.pcoGeometry.pointAttributes,e=(m.onmessage=function(i){var e,t=new V,n=h.pointsCount,r=new Float32Array(i.data.position),a=new Uint8Array(i.data.color),o=new Float32Array(i.data.intensity),s=new Uint8Array(i.data.classification),l=new Uint8Array(i.data.returnNumber),u=new Uint8Array(i.data.numberOfReturns),c=new Uint16Array(i.data.pointSourceID),d=new Uint8Array(i.data.indices);t.setAttribute("position",new H(r,3)),t.setAttribute("color",new H(a,4,!0)),t.setAttribute("intensity",new H(o,1)),t.setAttribute("classification",new H(s,1)),t.setAttribute("return number",new H(l,1)),t.setAttribute("number of returns",new H(u,1)),t.setAttribute("source id",new H(c,1)),t.setAttribute("indices",new H(d,4)),t.attributes.indices.normalized=!0;for(e in i.data.ranges)!function(t){var e=i.data.ranges[t],n=v.attributes.find(function(e){return e.name===t});n.range[0]=Math.min(n.range[0],e[0]),n.range[1]=Math.max(n.range[1],e[1])}(e);r=new K((new Oe).fromArray(i.data.tightBoundingBox.min),(new Oe).fromArray(i.data.tightBoundingBox.max));t.boundingBox=p.node.boundingBox,p.node.tightBoundingBox=r,p.node.geometry=t,p.node.numPoints=n,p.node.loaded=!0,p.node.loading=!1,Potree.numNodesLoading--,p.node.mean=ie(Oe,Fe(i.data.mean)),Potree.workerPool.returnWorker(f,m)},{buffer:h.arrayb,numPoints:h.pointsCount,pointSize:h.pointSize,pointFormatID:2,scale:h.scale,offset:h.offset,mins:h.mins,maxs:h.maxs});m.postMessage(e,[e.buffer])}}])}();function AA(e){var t=new am(e.version),n={COLOR_PACKED:"rgba",RGBA:"rgba",INTENSITY:"intensity",CLASSIFICATION:"classification",GPS_TIME:"gps-time"},i=[];if(t.upTo("1.7")){var r,a=q(e.pointAttributes);try{for(a.s();!(r=a.n()).done;){var o=r.value,s=cm[o],l={name:s.name,size:s.byteSize,elements:s.numElements,elementSize:s.byteSize/s.numElements,type:s.type.name,description:""};i.push(l)}}catch(e){a.e(e)}finally{a.f()}}else i.push.apply(i,Fe(e.pointAttributes));for(var u=new dm,c={int8:lm.DATA_TYPE_INT8,int16:lm.DATA_TYPE_INT16,int32:lm.DATA_TYPE_INT32,int64:lm.DATA_TYPE_INT64,uint8:lm.DATA_TYPE_UINT8,uint16:lm.DATA_TYPE_UINT16,uint32:lm.DATA_TYPE_UINT32,uint64:lm.DATA_TYPE_UINT64,double:lm.DATA_TYPE_DOUBLE,float:lm.DATA_TYPE_FLOAT},d=0,h=i;d<h.length;d++){var p,f,m,v=h[d];null==v.name?(p=cm[v],u.add(p)):(p=v.name,f=c[v.type],m=v.elements,v.description,v=new cm(n[p]||p,f,m),u.add(v))}return void 0!==i.find(function(e){return"NormalX"===e.name})&&void 0!==i.find(function(e){return"NormalY"===e.name})&&void 0!==i.find(function(e){return"NormalZ"===e.name})&&u.addVector({name:"NORMAL",attributes:["NormalX","NormalY","NormalZ"]}),u}function yA(){var e=new dm;return e.add(cm.POSITION_CARTESIAN),e.add(new cm("rgba",lm.DATA_TYPE_UINT8,4)),e.add(new cm("intensity",lm.DATA_TYPE_UINT16,1)),e.add(new cm("classification",lm.DATA_TYPE_UINT8,1)),e.add(new cm("gps-time",lm.DATA_TYPE_DOUBLE,1)),e.add(new cm("number of returns",lm.DATA_TYPE_UINT8,1)),e.add(new cm("return number",lm.DATA_TYPE_UINT8,1)),e.add(new cm("source id",lm.DATA_TYPE_UINT16,1)),e}var wA=function(){return A(function e(){ue(this,e)},[{key:"loadPointAttributes",value:function(e){for(var t=e.pointAttributes,n=new dm,i=0;i<t.length;i++){var r=cm[t[i]];n.add(r)}return n}},{key:"createChildAABB",value:function(e,t){var n=e.min.clone(),e=e.max.clone(),i=(new Oe).subVectors(e,n);return 0<(1&t)?n.z+=i.z/2:e.z-=i.z/2,0<(2&t)?n.y+=i.y/2:e.y-=i.y/2,0<(4&t)?n.x+=i.x/2:e.x-=i.x/2,new K(n,e)}}],[{key:"load",value:function(h,e,p){try{var f=new Am,m=(f.timeStamp=e,f.url=h,Sf.createXMLHttpRequest());m.open("GET",h+"?m="+e,!0),m.onreadystatechange=function(){if(4===m.readyState&&(200===m.status||0===m.status)){var e=JSON.parse(m.responseText),t=new am(e.version),n=(0===e.octreeDir.indexOf("http")?f.octreeDir=e.octreeDir:f.octreeDir=h+"/../"+e.octreeDir,f.spacing=e.spacing,f.hierarchyStepSize=e.hierarchyStepSize,f.pointAttributes=e.pointAttributes,new Oe(e.boundingBox.lx,e.boundingBox.ly,e.boundingBox.lz)),i=new Oe(e.boundingBox.ux,e.boundingBox.uy,e.boundingBox.uz),i=new K(n,i),r=i.clone(),n=(e.tightBoundingBox&&(r.min.copy(new Oe(e.tightBoundingBox.lx,e.tightBoundingBox.ly,e.tightBoundingBox.lz)),r.max.copy(new Oe(e.tightBoundingBox.ux,e.tightBoundingBox.uy,e.tightBoundingBox.uz))),n.clone()),a=(i.min.sub(n),i.max.sub(n),r.min.sub(n),r.max.sub(n),f.boundingBox=i,f.tightBoundingBox=r,f.boundingSphere=i.getBoundingSphere(new bi),f.tightBoundingSphere=r.getBoundingSphere(new bi),f.offset=n,"LAS"===e.pointAttributes?(f.loader=new vA(e.version,"las"),f.pointAttributes=yA()):"LAZ"===e.pointAttributes?(f.loader=new vA(e.version,"laz"),f.pointAttributes=yA()):(f.loader=new om(e.version,i,e.scale),f.pointAttributes=AA(e)),{}),r=new ym("r",f,i);if(r.level=0,r.hasChildren=!0,r.spacing=f.spacing,t.upTo("1.5")?r.numPoints=e.hierarchy[0][1]:r.numPoints=0,f.root=r,f.root.load(),a.r=r,t.upTo("1.4"))for(var o=1;o<e.hierarchy.length;o++){var s=e.hierarchy[o][0],l=e.hierarchy[o][1],u=parseInt(s.charAt(s.length-1)),c=a[s.substring(0,s.length-1)],d=s.length-1,u=ne.createChildAABB(c.boundingBox,u),u=new ym(s,f,u);u.level=d,u.numPoints=l,u.spacing=f.spacing/Math.pow(2,d),c.addChild(u),a[s]=u}f.nodes=a,p(f)}},m.send(null)}catch(e){console.log("loading failed: '"+h+"'"),console.log(e),p()}}}])}(),bA=A(function e(){ue(this,e),this.url=null,this.spacing=0,this.boundingBox=null,this.root=null,this.pointAttributes=null,this.loader=null}),xA=function(){function i(e,t,n){ue(this,i),this.id=i.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.octreeGeometry=t,this.boundingBox=n,this.boundingSphere=n.getBoundingSphere(new bi),this.children={},this.numPoints=0,this.level=null,this.oneTimeDisposeHandlers=[]}return A(i,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"load",value:function(){Potree.numNodesLoading>=Potree.maxNodesLoading||this.octreeGeometry.loader.load(this)}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1;for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}])}(),EA=(xA.IDCount=0,function(){return A(function e(t){ue(this,e),this.url=t},[{key:"load",value:(n=J(X().mark(function e(o){var t,n,i,r,a,s,l,u,c,d,h,p,f,m;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(o.loaded||o.loading)return e.abrupt("return");e.next=2;break;case 2:if(o.loading=!0,Potree.numNodesLoading++,e.prev=4,2===o.nodeType)return e.next=8,this.loadHierarchy(o);e.next=8;break;case 8:n=o.byteOffset,a=o.byteSize,t="".concat(this.url,"/../octree.bin"),i=(n=n)+a-1n,0n!==a?e.next=17:(r=new ArrayBuffer(0),console.warn("loaded node with 0 bytes: ".concat(o.name)),e.next=23);break;case 17:return e.next=19,fetch(t,{headers:{"content-type":"multipart/byteranges",Range:"bytes=".concat(n,"-").concat(i)}});case 19:return a=e.sent,e.next=22,a.arrayBuffer();case 22:r=e.sent;case 23:s="BROTLI"===this.metadata.encoding?Potree.scriptPath+"/workers/2.0/DecoderWorker_brotli.js":Potree.scriptPath+"/workers/2.0/DecoderWorker.js",(l=Potree.workerPool.getWorker(s)).onmessage=function(e){var t,e=e.data,n=e.attributeBuffers,i=(Potree.workerPool.returnWorker(s,l),new V);for(t in n){var r,a=n[t].buffer;"position"===t?i.setAttribute("position",new H(new Float32Array(a),3)):"rgba"===t?i.setAttribute("rgba",new H(new Uint8Array(a),4,!0)):"NORMAL"===t?i.setAttribute("normal",new H(new Float32Array(a),3)):"INDICES"===t?((r=new H(new Uint8Array(a),4)).normalized=!0,i.setAttribute("indices",r)):(r=new H(new Float32Array(a),1),a=n[t].attribute,r.potree={offset:n[t].offset,scale:n[t].scale,preciseBuffer:n[t].preciseBuffer,range:a.range},i.setAttribute(t,r))}o.density=e.density,o.geometry=i,o.loaded=!0,o.loading=!1,Potree.numNodesLoading--},m=o.octreeGeometry.pointAttributes,u=o.octreeGeometry.scale,d=o.boundingBox,c=o.octreeGeometry.offset.clone().add(d.min),d=d.max.clone().sub(d.min),h=c.clone().add(d),p=o.numPoints,f=o.octreeGeometry.loader.offset,m={name:o.name,buffer:r,pointAttributes:m,scale:u,min:c,max:h,size:d,offset:f,numPoints:p},l.postMessage(m,[m.buffer]),e.next=46;break;case 38:e.prev=38,e.t0=e.catch(4),o.loaded=!1,o.loading=!1,Potree.numNodesLoading--,console.log("failed to load ".concat(o.name)),console.log(e.t0),console.log("trying again!");case 46:case"end":return e.stop()}},e,this,[[4,38]])})),function(e){return n.apply(this,arguments)})},{key:"parseHierarchy",value:function(e,t){for(var n=new DataView(t),i=(performance.now(),t.byteLength/22),r=e.octreeGeometry,a=new Array(i),o=(a[0]=e,1),s=0;s<i;s++){var l=a[s],u=n.getUint8(22*s+0),c=n.getUint8(22*s+1),d=n.getUint32(22*s+2,!0),h=n.getBigInt64(22*s+6,!0),p=n.getBigInt64(22*s+14,!0);if(2!==l.nodeType&&2===u?(l.hierarchyByteOffset=h,l.hierarchyByteSize=p):(l.byteOffset=h,l.byteSize=p),l.numPoints=d,0n===l.byteSize&&(l.numPoints=0),l.nodeType=u,2!==l.nodeType)for(var f,m,v=0;v<8;v++)0!=(1<<v&c)&&(f=l.name+v,m=function(e,t){var n=e.min.clone(),e=e.max.clone(),i=CA.subVectors(e,n);0<(1&t)?n.z+=i.z/2:e.z-=i.z/2;0<(2&t)?n.y+=i.y/2:e.y-=i.y/2;0<(4&t)?n.x+=i.x/2:e.x-=i.x/2;return new K(n,e)}(l.boundingBox,v),(m=new xA(f,r,m)).name=f,m.spacing=l.spacing/2,m.level=l.level+1,(l.children[v]=m).parent=l,a[o]=m,o++)}performance.now()}},{key:"loadHierarchy",value:(t=J(X().mark(function e(t){var n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.hierarchyByteOffset,n=t.hierarchyByteSize,i="".concat(this.url,"/../hierarchy.bin"),n=(r=r)+n-1n,e.next=6,fetch(i,{headers:{"content-type":"multipart/byteranges",Range:"bytes=".concat(r,"-").concat(n)}});case 6:return i=e.sent,e.next=9,i.arrayBuffer();case 9:r=e.sent,this.parseHierarchy(t,r);case 11:case"end":return e.stop()}},e,this)})),function(e){return t.apply(this,arguments)})}]);var t,n}()),CA=new Oe;var BA={double:lm.DATA_TYPE_DOUBLE,float:lm.DATA_TYPE_FLOAT,int8:lm.DATA_TYPE_INT8,uint8:lm.DATA_TYPE_UINT8,int16:lm.DATA_TYPE_INT16,uint16:lm.DATA_TYPE_UINT16,int32:lm.DATA_TYPE_INT32,uint32:lm.DATA_TYPE_UINT32,int64:lm.DATA_TYPE_INT64,uint64:lm.DATA_TYPE_UINT64},$u=function(){function s(){ue(this,s)}return A(s,null,[{key:"parseAttributes",value:function(e){var t,n=new dm,i={rgb:"rgba"},r=q(e);try{for(r.s();!(t=r.n()).done;){var a=t.value,o=a.name,s=(a.description,a.size,a.numElements),l=(a.elementSize,a.min),u=a.max,c=BA[a.type],d=new cm(i[o]||o,c,s);d.range=1===s?[l[0],u[0]]:[l,u],"gps-time"===o&&d.range[0]===d.range[1]&&(d.range[1]+=1),d.initialRange=d.range,n.add(d)}}catch(e){r.e(e)}finally{r.f()}return void 0!==n.attributes.find(function(e){return"NormalX"===e.name})&&void 0!==n.attributes.find(function(e){return"NormalY"===e.name})&&void 0!==n.attributes.find(function(e){return"NormalZ"===e.name})&&n.addVector({name:"NORMAL",attributes:["NormalX","NormalY","NormalZ"]}),n}},{key:"load",value:(t=J(X().mark(function e(t){var n,i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return n=e.sent,e.next=5,n.json();case 5:return n=e.sent,r=s.parseAttributes(n.attributes),(i=new EA(t)).metadata=n,i.attributes=r,i.scale=n.scale,i.offset=n.offset,(r=new bA).url=t,r.spacing=n.spacing,r.scale=n.scale,a=ie(Oe,Fe(n.boundingBox.min)),o=ie(Oe,Fe(n.boundingBox.max)),o=new K(a,o),a=a.clone(),o.min.sub(a),o.max.sub(a),r.projection=n.projection,r.boundingBox=o,r.tightBoundingBox=o.clone(),r.boundingSphere=o.getBoundingSphere(new bi),r.tightBoundingSphere=o.getBoundingSphere(new bi),r.offset=a,r.pointAttributes=s.parseAttributes(n.attributes),r.loader=i,(a=new xA("r",r,o)).level=0,a.nodeType=2,a.hierarchyByteOffset=0n,a.hierarchyByteSize=BigInt(n.hierarchy.firstChunkSize),a.hasChildren=!1,a.spacing=r.spacing,a.byteOffset=0,r.root=a,i.load(a),o={geometry:r},e.abrupt("return",o);case 42:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]);var t}(),MA=function(){return A(function e(){ue(this,e)},null,[{key:"load",value:(n=J(X().mark(function e(t,n){var i,r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return i=e.sent,e.next=5,i.json();case 5:i=e.sent,r=t.substr(0,t.lastIndexOf("ept.json")),r=new Potree.PointCloudEptGeometry(r,i),a=new Potree.PointCloudEptGeometryNode(r),r.root=a,r.root.load(),n(r);case 12:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})}]);var n}(),SA=function(){return A(function e(){ue(this,e)},[{key:"extension",value:function(){return".bin"}},{key:"workerPath",value:function(){return Potree.scriptPath+"/workers/EptBinaryDecoderWorker.js"}},{key:"load",value:function(t){var n=this;if(!t.loaded){var i=t.url()+this.extension(),r=Sf.createXMLHttpRequest();r.open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){var e;4===r.readyState&&(200===r.status?(e=r.response,n.parse(t,e)):console.log("Failed "+i+": "+r.status))};try{r.send(null)}catch(e){console.log("Failed request: "+e)}}}},{key:"parse",value:function(r,e){var a=this.workerPath(),o=Potree.workerPool.getWorker(a),e=(o.onmessage=function(e){var t=new V,n=e.data.numPoints,i=new Float32Array(e.data.position),i=(t.setAttribute("position",new H(i,3)),new Uint8Array(e.data.indices)),i=(t.setAttribute("indices",new H(i,4)),e.data.color&&(i=new Uint8Array(e.data.color),t.setAttribute("color",new H(i,4,!0))),e.data.intensity&&(i=new Float32Array(e.data.intensity),t.setAttribute("intensity",new H(i,1))),e.data.classification&&(i=new Uint8Array(e.data.classification),t.setAttribute("classification",new H(i,1))),e.data.returnNumber&&(i=new Uint8Array(e.data.returnNumber),t.setAttribute("return number",new H(i,1))),e.data.numberOfReturns&&(i=new Uint8Array(e.data.numberOfReturns),t.setAttribute("number of returns",new H(i,1))),e.data.pointSourceId&&(i=new Uint16Array(e.data.pointSourceId),t.setAttribute("source id",new H(i,1))),t.attributes.indices.normalized=!0,new K((new Oe).fromArray(e.data.tightBoundingBox.min),(new Oe).fromArray(e.data.tightBoundingBox.max)));r.doneLoading(t,i,n,ie(Oe,Fe(e.data.mean))),Potree.workerPool.returnWorker(a,o)},{buffer:e,schema:r.ept.schema,scale:r.ept.eptScale,offset:r.ept.eptOffset,mins:[(e=r.key.b.min).x,e.y,e.z]});o.postMessage(e,[e.buffer])}}])}(),tc=function(){return A(function e(){ue(this,e)},[{key:"load",value:function(t){var n,i,r=this;t.loaded||(n=t.url()+".laz",(i=Sf.createXMLHttpRequest()).open("GET",n,!0),i.responseType="arraybuffer",i.overrideMimeType("text/plain; charset=x-user-defined"),i.onreadystatechange=function(){var e;4===i.readyState&&(200===i.status?(e=i.response,r.parse(t,e)):console.log("Failed "+n+": "+i.status))},i.send(null))}},{key:"parse",value:(n=J(X().mark(function e(t,n){var i,r,a,o,s,l,u,c,d;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=new LASFile(n),r=new TA(t),e.prev=2,e.next=5,i.open();case 5:return i.isOpen=!0,e.next=8,i.getHeader();case 8:a=e.sent,o=0,s=(l=function(e){return[e.x,e.y,e.z]})(t.key.b.min),l=l(t.key.b.max),u=!0;case 14:if(u)return e.next=17,i.readData(1e6,0,1);e.next=26;break;case 17:c=e.sent,(d=new LASDecoder(c.buffer,a.pointsFormatId,a.pointsStructSize,c.count,a.scale,a.offset,s,l)).extraBytes=a.extraBytes,d.pointsFormatId=a.pointsFormatId,r.push(d),o+=c.count,u=c.hasMoreData,e.next=14;break;case 26:return a.totalRead=o,a.versionAsString=i.versionAsString,a.isCompressed=i.isCompressed,e.next=31,i.close();case 31:i.isOpen=!1,e.next=42;break;case 34:if(e.prev=34,e.t0=e.catch(2),console.error("Error reading LAZ:",e.t0),i.isOpen)return e.next=40,i.close();e.next=41;break;case 40:i.isOpen=!1;case 41:throw e.t0;case 42:case"end":return e.stop()}},e,null,[[2,34]])})),function(e,t){return n.apply(this,arguments)})}]);var n}(),TA=function(){return A(function e(t){ue(this,e),this.node=t},[{key:"push",value:function(h){var p=this,f=Potree.scriptPath+"/workers/EptLaszipDecoderWorker.js",m=Potree.workerPool.getWorker(f),e=(m.onmessage=function(e){var t=new V,n=h.pointsCount,i=new Float32Array(e.data.position),r=new Uint8Array(e.data.color),a=new Float32Array(e.data.intensity),o=new Uint8Array(e.data.classification),s=new Uint8Array(e.data.returnNumber),l=new Uint8Array(e.data.numberOfReturns),u=new Uint16Array(e.data.pointSourceID),c=new Uint8Array(e.data.indices),d=new Float32Array(e.data.gpsTime),i=(t.setAttribute("position",new H(i,3)),t.setAttribute("rgba",new H(r,4,!0)),t.setAttribute("intensity",new H(a,1)),t.setAttribute("classification",new H(o,1)),t.setAttribute("return number",new H(s,1)),t.setAttribute("number of returns",new H(l,1)),t.setAttribute("source id",new H(u,1)),t.setAttribute("indices",new H(c,4)),t.setAttribute("gpsTime",new H(d,1)),p.node.gpsTime=e.data.gpsMeta,t.attributes.indices.normalized=!0,new K((new Oe).fromArray(e.data.tightBoundingBox.min),(new Oe).fromArray(e.data.tightBoundingBox.max)));p.node.doneLoading(t,i,n,ie(Oe,Fe(e.data.mean))),Potree.workerPool.returnWorker(f,m)},{buffer:h.arrayb,numPoints:h.pointsCount,pointSize:h.pointSize,pointFormatID:h.pointsFormatId,scale:h.scale,offset:h.offset,mins:h.mins,maxs:h.maxs});m.postMessage(e,[e.buffer])}}])}(),ch=function(){function e(){return ue(this,e),le(this,e,arguments)}return v(e,SA),A(e,[{key:"extension",value:function(){return".zst"}},{key:"workerPath",value:function(){return Potree.scriptPath+"/workers/EptZstandardDecoderWorker.js"}}])}(),ah=function(){return A(function e(){ue(this,e),this.transform=null},[{key:"load",value:(n=J(X().mark(function e(t,n){var i,r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=new Ff({color:n||16711680,lineWidth:3,resolution:new Re(1e3,1e3),dashed:!1}),e.next=3,this.loadShapefileFeatures(t);case 3:u=e.sent,r=new Z,a=q(u);try{for(a.s();!(o=a.n()).done;)s=o.value,(l=this.featureToSceneNode(s,i))&&r.add(l)}catch(e){a.e(e)}finally{a.f()}return u={features:u,node:r,setResolution:function(e,t){i.resolution.set(e,t)}},e.abrupt("return",u);case 11:case"end":return e.stop()}},e,this)})),function(e,t){return n.apply(this,arguments)})},{key:"featureToSceneNode",value:function(e,t){var i=e.geometry,r=(new Se(1,1,1),this.transform);if(null===r&&(r={forward:function(e){return e}}),"Point"===i.type)return e=new Q(new ju(1,18,18),new cc),d=(c=U(i.coordinates,2))[0],c=c[1],d=r.forward([d,c]),(c=e.position).set.apply(c,Fe(d).concat([20])),e.scale.set(10,10,10),e;if("LineString"===i.type){for(var n=[],a=new Oe(1/0,1/0,1/0),o=0;o<i.coordinates.length;o++){var s=U(i.coordinates[o],2),l=s[0],s=s[1],l=r.forward([l,s]);a.x=Math.min(a.x,l[0]),a.y=Math.min(a.y,l[1]),a.z=Math.min(a.z,20),n.push.apply(n,Fe(l).concat([20])),0<o&&o<i.coordinates.length-1&&n.push.apply(n,Fe(l).concat([20]))}for(var u=0;u<n.length;u+=3)n[u+0]-=a.x,n[u+1]-=a.y,n[u+2]-=a.z;var c=new Kf,d=(c.setPositions(n),new Zf(c,t));return d.computeLineDistances(),d.scale.set(1,1,1),d.position.copy(a),d}if("MultiLineString"===i.type){for(var h=[],p=new Oe(1/0,1/0,1/0),f=0;f<i.coordinates.length;f++)!function(){var e=i.coordinates[f],n=[];e.forEach(function(e){var e=U(e,2),t=e[0],e=e[1],t=r.forward([t,e]);p.x=Math.min(p.x,t[0]),p.y=Math.min(p.y,t[1]),p.z=Math.min(p.z,20),n.push(new Oe(t[0],t[1],20))}),h.push(n)}();h.forEach(function(e){return e.forEach(function(e){return e.sub(p)})});e=av.createFatLine(h,{uncontinuous:!0,mat:t});return e.position.copy(p),e}if("Polygon"===i.type){var m,v=q(i.coordinates);try{for(v.s();!(m=v.n()).done;){for(var g=m.value,A=[],y=new Oe(1/0,1/0,1/0),w=0;w<g.length;w++){var b=U(g[w],2),x=b[0],E=b[1],C=r.forward([x,E]);y.x=Math.min(y.x,C[0]),y.y=Math.min(y.y,C[1]),y.z=Math.min(y.z,20),A.push.apply(A,Fe(C).concat([20])),0<w&&w<g.length-1&&A.push.apply(A,Fe(C).concat([20]))}for(var B=0;B<A.length;B+=3)A[B+0]-=y.x,A[B+1]-=y.y,A[B+2]-=y.z;var M=new Kf,S=(M.setPositions(A),new Zf(M,t));return S.computeLineDistances(),S.scale.set(1,1,1),S.position.copy(y),S}}catch(e){v.e(e)}finally{v.f()}}else console.log("unhandled feature: ",i.type)}},{key:"loadShapefileFeatures",value:(t=J(X().mark(function e(n){var t,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=[],"shp"==n.split(".").pop())return e.next=4,shapefile.open(n);e.next=17;break;case 4:i=e.sent;case 5:return e.next=8,i.read();case 8:if((r=e.sent).done)return e.abrupt("break",14);e.next=11;break;case 11:r.value&&"Feature"===r.value.type&&void 0!==r.value.geometry&&t.push(r.value),e.next=5;break;case 14:return e.abrupt("return",t);case 17:if("json"==n.split(".").pop())return e.abrupt("return",new Promise(function(t,e){Potree.loadFile(n,{},function(e){console.log(e),t(e.features)})}));e.next=19;break;case 19:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]);var t,n}(),_A={landuse:[.5,.5,.5],natural:[0,1,0],places:[1,0,1],points:[0,1,1],roads:[1,1,0],waterways:[0,0,1],default:[.9,.6,.1]};var PA,DA,IA,kA,RA,LA,FA=A(function e(){ue(this,e),this.path=null,this.node=null}),ep=function(){function C(){ue(this,C)}return A(C,null,[{key:"loadUrl",value:(i=J(X().mark(function e(t,n){var i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([ne.loadScript("".concat(Potree.scriptPath,"/lazylibs/geopackage/geopackage.js")),ne.loadScript("".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.js"))]);case 2:return e.next=4,fetch(t);case 4:return i=e.sent,e.next=7,i.arrayBuffer();case 7:return i=e.sent,(n=n||{}).source=t,e.abrupt("return",C.loadBuffer(i,n));case 11:case"end":return e.stop()}},e)})),function(e,t){return i.apply(this,arguments)})},{key:"loadBuffer",value:(n=J(X().mark(function e(x,E){var t;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([ne.loadScript("".concat(Potree.scriptPath,"/lazylibs/geopackage/geopackage.js")),ne.loadScript("".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.js"))]);case 2:return E=E||{},t=function(){var t=J(X().mark(function e(t){var n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=(n=E.transform)||{forward:function(e){return e}},i="".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.wasm"),e.next=5,initSqlJs({locateFile:function(e){return i}});case 5:return e.sent,a=new Uint8Array(x),e.next=9,geopackage.open(a);case 9:r=e.sent,window.data=r,(a=new Z).name=E.source,a.potree={source:E.source},(o=new FA).path=E.source,o.node=a,s=r.getTables(),l=q(s.features);try{for(l.s();!(u=l.n()).done;)for(d=u.value,h=r.getFeatureDao(d),p=(p=h.getBoundingBox()).projectBoundingBox(h.projection,"EPSG:4326"),f=r.queryForGeoJSONFeaturesInTable(d,p),m=new Ff({color:(c=new Se).setRGB.apply(c,Fe(_A[d]||_A.default)),linewidth:2,resolution:new Re(1e3,1e3),dashed:!1}),(v=new Z).name=d,o.node.add(v),g=0,A=Object.entries(f);g<A.length;g++)y=U(A[g],2),y[0],w=y[1],b=C.featureToSceneNode(w,m,h.projection,n),v.add(b)}catch(e){l.e(e)}finally{l.f()}t(o);case 21:case"end":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}(),e.abrupt("return",new Promise(t));case 5:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"featureToSceneNode",value:function(e,t,n,i){var r,a=e.geometry;new Se(1,1,1);if("Point"===e.geometry.type)return r=new Q(new ju(1,18,18),new cc),p=(h=U(a.coordinates,2))[0],h=h[1],p=i.forward(n.forward([p,h])),(h=r.position).set.apply(h,Fe(p).concat([20])),r.scale.set(10,10,10),r;if("LineString"===a.type){for(var o=[],s=new Oe(1/0,1/0,1/0),l=0;l<a.coordinates.length;l++){var u=U(a.coordinates[l],2),c=u[0],u=u[1],c=i.forward(n.forward([c,u]));s.x=Math.min(s.x,c[0]),s.y=Math.min(s.y,c[1]),s.z=Math.min(s.z,20),o.push.apply(o,Fe(c).concat([20])),0<l&&l<a.coordinates.length-1&&o.push.apply(o,Fe(c).concat([20]))}for(var d=0;d<o.length;d+=3)o[d+0]-=s.x,o[d+1]-=s.y,o[d+2]-=s.z;var h=new Kf,p=(h.setPositions(o),new Zf(h,t));return p.computeLineDistances(),p.scale.set(1,1,1),p.position.copy(s),p}if("Polygon"===a.type){var f,m=q(a.coordinates);try{for(m.s();!(f=m.n()).done;){for(var v=f.value,g=[],A=new Oe(1/0,1/0,1/0),y=0;y<v.length;y++){var w=U(v[y],2),b=w[0],x=w[1],E=i.forward(n.forward([b,x]));A.x=Math.min(A.x,E[0]),A.y=Math.min(A.y,E[1]),A.z=Math.min(A.z,20),g.push.apply(g,Fe(E).concat([20])),0<y&&y<v.length-1&&g.push.apply(g,Fe(E).concat([20]))}for(var C=0;C<g.length;C+=3)g[C+0]-=A.x,g[C+1]-=A.y,g[C+2]-=A.z;var B=new Kf,M=(B.setPositions(g),new Zf(B,t));return M.computeLineDistances(),M.scale.set(1,1,1),M.position.copy(A),M}}catch(e){m.e(e)}finally{m.f()}}else console.log("unhandled feature: ",e)}}]);var n,i}(),OA=function(){function a(e){function t(e,t,n){var i=new R({color:n,depthTest:!1,depthWrite:!1}),r=new Wl,n=(r.vertices.push(new Oe(0,0,0)),r.vertices.push(new Oe(0,1,0)),new wl({color:n,depthTest:!1,depthWrite:!1,transparent:!0}));return(r=new Ml(r,n)).name=e+"_shaft",(n=new Q(new Kl(0,.04,.1,10,1,!1),i)).name=e+"_head",n.position.y=1,(i=new Z).name=e,i.add(r),i.add(n),i}ue(this,a),(n=le(this,a)).constructor.counter=void 0===n.constructor.counter?0:n.constructor.counter+1,n.name="clip_volume_"+n.constructor.counter;var n,i=e.alpha||0,r=e.beta||0,e=e.gamma||0,i=(n.rotation.x=i,n.rotation.y=r,n.rotation.z=e,n.clipOffset=.001,n.clipRotOffset=1,new Jl(1,1,1)),r=(i.computeBoundingBox(),new Wl),e=(r.vertices.push(new Oe(-.5,-.5,.5)),r.vertices.push(new Oe(.5,-.5,.5)),r.vertices.push(new Oe(.5,-.5,.5)),r.vertices.push(new Oe(.5,-.5,-.5)),r.vertices.push(new Oe(.5,-.5,-.5)),r.vertices.push(new Oe(-.5,-.5,-.5)),r.vertices.push(new Oe(-.5,-.5,-.5)),r.vertices.push(new Oe(-.5,-.5,.5)),r.vertices.push(new Oe(-.5,.5,.5)),r.vertices.push(new Oe(.5,.5,.5)),r.vertices.push(new Oe(.5,.5,.5)),r.vertices.push(new Oe(.5,.5,-.5)),r.vertices.push(new Oe(.5,.5,-.5)),r.vertices.push(new Oe(-.5,.5,-.5)),r.vertices.push(new Oe(-.5,.5,-.5)),r.vertices.push(new Oe(-.5,.5,.5)),r.vertices.push(new Oe(-.5,-.5,.5)),r.vertices.push(new Oe(-.5,.5,.5)),r.vertices.push(new Oe(.5,-.5,.5)),r.vertices.push(new Oe(.5,.5,.5)),r.vertices.push(new Oe(.5,-.5,-.5)),r.vertices.push(new Oe(.5,.5,-.5)),r.vertices.push(new Oe(-.5,-.5,-.5)),r.vertices.push(new Oe(-.5,.5,-.5)),r.colors.push(new Oe(1,1,1)),new Wl);e.vertices.push(new Oe(-.5,-.5,0)),e.vertices.push(new Oe(-.5,.5,0)),e.vertices.push(new Oe(.5,.5,0)),e.vertices.push(new Oe(.5,-.5,0)),e.vertices.push(new Oe(-.5,.5,0)),e.vertices.push(new Oe(.5,.5,0)),e.vertices.push(new Oe(-.5,-.5,0)),e.vertices.push(new Oe(.5,-.5,0)),n.dimension=new Oe(1,1,1),n.material=new R({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),n.box=new Q(i,n.material),n.box.geometry.computeBoundingBox(),n.boundingBox=n.box.geometry.boundingBox,n.add(n.box),n.frame=new _l(r,new wl({color:0})),n.add(n.frame),n.planeFrame=new _l(e,new wl({color:16711680})),n.add(n.planeFrame),n.setScaleZ(.1);return n.arrowX=t("arrow_x",new Oe(1,0,0),16711680),n.arrowY=t("arrow_y",new Oe(0,1,0),65280),n.arrowZ=t("arrow_z",new Oe(0,0,1),255),n.arrowX.rotation.z=-Math.PI/2,n.arrowZ.rotation.x=Math.PI/2,n.arrowX.visible=!1,n.arrowY.visible=!1,n.arrowZ.visible=!1,n.add(n.arrowX),n.add(n.arrowY),n.add(n.arrowZ),n.addEventListener("ui_select",function(e){n.arrowX.visible=!0,n.arrowY.visible=!0,n.arrowZ.visible=!0}),n.addEventListener("ui_deselect",function(e){n.arrowX.visible=!1,n.arrowY.visible=!1,n.arrowZ.visible=!1}),n.addEventListener("select",function(e){var t=$("#"+n.name+" .scene_header");t.next().is(":visible")||t.click()}),n.addEventListener("deselect",function(e){var t=$("#"+n.name+" .scene_header");t.next().is(":visible")&&t.click()}),n.update(),n}return v(a,Z),A(a,[{key:"setClipOffset",value:function(e){this.clipOffset=e}},{key:"setClipRotOffset",value:function(e){this.clipRotOffset=e}},{key:"setScaleX",value:function(e){this.box.scale.x=e,this.frame.scale.x=e,this.planeFrame.scale.x=e}},{key:"setScaleY",value:function(e){this.box.scale.y=e,this.frame.scale.y=e,this.planeFrame.scale.y=e}},{key:"setScaleZ",value:function(e){this.box.scale.z=e,this.frame.scale.z=e,this.planeFrame.scale.z=e}},{key:"offset",value:function(e){var t=e.cs||null,n=e.axis||null,e=e.dir||null;t&&n&&e&&("x"===n?"local"===t?this.position.add(this.localX.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.x=this.position.x+e*this.clipOffset):"y"===n?"local"===t?this.position.add(this.localY.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.y=this.position.y+e*this.clipOffset):"z"===n&&("local"===t?this.position.add(this.localZ.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.z=this.position.z+e*this.clipOffset)),this.dispatchEvent({type:"clip_volume_changed",viewer:viewer,volume:this}))}},{key:"rotate",value:function(e){var t=e.cs||null,n=e.axis||null,e=e.dir||null;t&&n&&e&&("local"===t?"x"===n?this.rotateOnAxis(new Oe(1,0,0),e*this.clipRotOffset*Math.PI/180):"y"===n?this.rotateOnAxis(new Oe(0,1,0),e*this.clipRotOffset*Math.PI/180):"z"===n&&this.rotateOnAxis(new Oe(0,0,1),e*this.clipRotOffset*Math.PI/180):"global"===t&&(t=new ei(1,0,0,0),"y"===n?t=new ei(0,1,0,0):"z"===n&&(t=new ei(0,0,1,0)),this.updateMatrixWorld(),n=newthis.matrixWorld.clone().invert(),t=t.applyMatrix4(n).normalize(),t=new Oe(t.x,t.y,t.z),this.rotateOnAxis(t,e*this.clipRotOffset*Math.PI/180)),this.updateLocalSystem(),this.dispatchEvent({type:"clip_volume_changed",viewer:viewer,volume:this}))}},{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new bi),this.box.visible=!1,this.updateLocalSystem()}},{key:"updateLocalSystem",value:function(){var e=this.getWorldQuaternion();this.localX=new Oe(1,0,0).applyQuaternion(e).normalize(),this.localY=new Oe(0,1,0).applyQuaternion(e).normalize(),this.localZ=new Oe(0,0,1).applyQuaternion(e).normalize()}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}}])}(),UA=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).viewer=e,t.maxPolygonVertices=8,t.addEventListener("start_inserting_clipping_volume",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.sceneMarker=new Fs,t.sceneVolume=new Fs,t.sceneVolume.name="scene_clip_volume",t.viewer.inputHandler.registerInteractiveScene(t.sceneVolume),t.onRemove=function(e){t.sceneVolume.remove(e.volume)},t.onAdd=function(e){t.sceneVolume.add(e.volume)},t.viewer.inputHandler.addEventListener("delete",function(e){e.selection.filter(function(e){return e instanceof OA}).forEach(function(e){return t.viewer.scene.removeClipVolume(e)}),e.selection.filter(function(e){return e instanceof rm}).forEach(function(e){return t.viewer.scene.removePolygonClipVolume(e)})}),t}return v(n,mm),A(n,[{key:"setScene",value:function(e){this.scene!==e&&(this.scene&&(this.scene.removeEventListeners("clip_volume_added",this.onAdd),this.scene.removeEventListeners("clip_volume_removed",this.onRemove),this.scene.removeEventListeners("polygon_clip_volume_added",this.onAdd),this.scene.removeEventListeners("polygon_clip_volume_removed",this.onRemove)),this.scene=e,this.scene.addEventListener("clip_volume_added",this.onAdd),this.scene.addEventListener("clip_volume_removed",this.onRemove),this.scene.addEventListener("polygon_clip_volume_added",this.onAdd),this.scene.addEventListener("polygon_clip_volume_removed",this.onRemove))}},{key:"startInsertion",value:function(){var e,t,r,n,a,i,o=this;return(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).type||null?(e=this.viewer.renderer.domElement,t=this.viewer.renderer.getSize(new Re),r=$('\n\t\t<svg height="'.concat(t.height,'" width="').concat(t.width,'" style="position:absolute; pointer-events: none">\n\n\t\t\t<defs>\n\t\t\t\t <marker id="diamond" markerWidth="24" markerHeight="24" refX="12" refY="12"\n\t\t\t\t\t\tmarkerUnits="userSpaceOnUse">\n\t\t\t\t\t<circle cx="12" cy="12" r="6" fill="white" stroke="black" stroke-width="3"/>\n\t\t\t\t</marker>\n\t\t\t</defs>\n\n\t\t\t<polyline fill="none" stroke="black" \n\t\t\t\tstyle="stroke:rgb(0, 0, 0);\n\t\t\t\tstroke-width:6;"\n\t\t\t\tstroke-dasharray="9, 6"\n\t\t\t\tstroke-dashoffset="2"\n\t\t\t\t/>\n\n\t\t\t<polyline fill="none" stroke="black" \n\t\t\t\tstyle="stroke:rgb(255, 255, 255);\n\t\t\t\tstroke-width:2;"\n\t\t\t\tstroke-dasharray="5, 10"\n\t\t\t\tmarker-start="url(#diamond)" \n\t\t\t\tmarker-mid="url(#diamond)" \n\t\t\t\tmarker-end="url(#diamond)" \n\t\t\t\t/>\n\t\t</svg>')),$(e.parentElement).append(r),n=new rm(this.viewer.scene.getActiveCamera().clone()),this.dispatchEvent({type:"start_inserting_clipping_volume"}),this.viewer.scene.addPolygonClipVolume(n),this.sceneMarker.add(n),i=function(i){i.button===oe.LEFT?(n.addMarker(),r.find("polyline").each(function(e,t){var n=r[0].createSVGPoint();n.x=i.offsetX,n.y=i.offsetY,t.points.appendItem(n)}),n.markers.length>o.maxPolygonVertices&&a.callback(),o.viewer.inputHandler.startDragging(n.markers[n.markers.length-1])):i.button===oe.RIGHT&&a.callback(i)},(a={callback:null}).callback=function(e){r.remove(),3<n.markers.length?(n.removeLastMarker(),n.initialized=!0):o.viewer.scene.removePolygonClipVolume(n),o.viewer.renderer.domElement.removeEventListener("mouseup",i,!0),o.viewer.removeEventListener("cancel_insertions",a.callback),o.viewer.inputHandler.enabled=!0},this.viewer.addEventListener("cancel_insertions",a.callback),this.viewer.renderer.domElement.addEventListener("mouseup",i,!0),this.viewer.inputHandler.enabled=!1,n.addMarker(),this.viewer.inputHandler.startDragging(n.markers[n.markers.length-1]),n):null}},{key:"update",value:function(){}}])}(),NA=(Zl={},PA=new dh({LITTLE:"II",BIG:"MM"}),DA=new dh({BYTE:{value:1,bytes:1},ASCII:{value:2,bytes:1},SHORT:{value:3,bytes:2},LONG:{value:4,bytes:4},RATIONAL:{value:5,bytes:8},SBYTE:{value:6,bytes:1},UNDEFINED:{value:7,bytes:1},SSHORT:{value:8,bytes:2},SLONG:{value:9,bytes:4},SRATIONAL:{value:10,bytes:8},FLOAT:{value:11,bytes:4},DOUBLE:{value:12,bytes:8}}),IA=new dh({IMAGE_WIDTH:256,IMAGE_HEIGHT:257,BITS_PER_SAMPLE:258,COMPRESSION:259,PHOTOMETRIC_INTERPRETATION:262,STRIP_OFFSETS:273,ORIENTATION:274,SAMPLES_PER_PIXEL:277,ROWS_PER_STRIP:278,STRIP_BYTE_COUNTS:279,X_RESOLUTION:282,Y_RESOLUTION:283,PLANAR_CONFIGURATION:284,RESOLUTION_UNIT:296,SOFTWARE:305,COLOR_MAP:320,SAMPLE_FORMAT:339,MODEL_PIXEL_SCALE:33550,MODEL_TIEPOINT:33922,GEO_KEY_DIRECTORY:34735,GEO_DOUBLE_PARAMS:34736,GEO_ASCII_PARAMS:34737}),kA=new Map([[DA.BYTE,Uint8Array],[DA.ASCII,Uint8Array],[DA.SHORT,Uint16Array],[DA.LONG,Uint32Array],[DA.RATIONAL,Uint32Array],[DA.SBYTE,Int8Array],[DA.UNDEFINED,Uint8Array],[DA.SSHORT,Int16Array],[DA.SLONG,Int32Array],[DA.SRATIONAL,Int32Array],[DA.FLOAT,Float32Array],[DA.DOUBLE,Float64Array]]),RA=A(function e(t,n,i,r,a){ue(this,e),this.tag=t,this.type=n,this.count=i,this.offset=r,this.value=a}),LA=A(function e(){ue(this,e),this.width=0,this.height=0,this.buffer=null,this.metadata=[]}),Zd=function(){return A(function e(){ue(this,e)},null,[{key:"read",value:function(e){var t=String.fromCharCode.apply(String,Fe(Array.from(e.slice(0,2))));PA.fromValue(t);if(42!==e.readUInt8(2))throw new Error("not a valid tiff file");for(var t=e.readUInt32LE(4),r=(console.log("offsetToFirstIFD",t),[]),n=t,i=0;i<100;){console.log("currentIFDOffset",n);for(var a=e.readUInt16LE(n),o=e.readUInt32LE(n+2+12*a),s=(console.log("next offset: ",n+2+12*a),e.slice(n+2,n+2+12*a)),l=0;l<a;l++){var u,F=IA.fromValue(s.readUInt16LE(12*l)),c=DA.fromValue(s.readUInt16LE(12*l+2)),d=s.readUInt32LE(12*l+4),h=s.readUInt32LE(12*l+8),p=c.bytes*d,f=void 0,p=(p<=4?f=h:((u=new Uint8Array(p)).set(e.slice(h,h+p)),f=new(kA.get(c))(u.buffer),c===DA.ASCII&&(f=String.fromCharCode.apply(String,Fe(f)))),new RA(F,c,d,h,f));r.push(p)}if(console.log("nextIFDOffset",o),0===o)break;n=o,i++}for(var t=function(e){for(var t=0,n=r;t<n.length;t++){var i=n[t];if(i.tag===e)return i}return null},m=t(IA.IMAGE_WIDTH).value,v=t(IA.IMAGE_HEIGHT).value,g=(t(IA.COMPRESSION).value,t(IA.ROWS_PER_STRIP).value),A=t(IA.STRIP_OFFSETS),y=t(IA.STRIP_BYTE_COUNTS),w=Math.ceil(v/g),b=[],x=0;x<y.count;x++){var E=y.type,C=y.offset+x*E.bytes,B=void 0;E===DA.SHORT?B=e.readUInt16LE(C):E===DA.LONG&&(B=e.readUInt32LE(C)),b.push(B)}for(var M=[],S=0;S<A.count;S++){var T=A.type,_=A.offset+S*T.bytes,P=void 0;T===DA.SHORT?P=e.readUInt16LE(_):T===DA.LONG&&(P=e.readUInt32LE(_)),M.push(P)}for(var D=new Uint8Array(m*v*3),I=0,k=0;k<w;k++)for(var O=M[k],U=e.slice(O,O+b[k]),R=3*m,L=0;L<g;L++){var N=U.slice(L*R,L*R+R);if(D.set(N,I*R),N.length!==R)break;I++}console.log("width: ".concat(m)),console.log("height: ".concat(v)),console.log("numStrips: ".concat(w)),console.log("stripByteCounts",b.join(", ")),console.log("stripOffsets",M.join(", "));t=new LA;return t.width=m,t.height=v,t.buffer=D,t.metadata=r,t}}])}(),qh=function(){return A(function e(){ue(this,e)},null,[{key:"toTiffBuffer",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=new Uint8Array([73,73,42,0,8,0,0,0]),i=[e.width,e.height],r=i[0],i=i[1],a=[new RA(IA.IMAGE_WIDTH,DA.SHORT,1,null,r),new RA(IA.IMAGE_HEIGHT,DA.SHORT,1,null,i),new RA(IA.BITS_PER_SAMPLE,DA.SHORT,4,null,new Uint16Array([8,8,8,8])),new RA(IA.COMPRESSION,DA.SHORT,1,null,1),new RA(IA.PHOTOMETRIC_INTERPRETATION,DA.SHORT,1,null,2),new RA(IA.ORIENTATION,DA.SHORT,1,null,1),new RA(IA.SAMPLES_PER_PIXEL,DA.SHORT,1,null,4),new RA(IA.ROWS_PER_STRIP,DA.LONG,1,null,i),new RA(IA.STRIP_BYTE_COUNTS,DA.LONG,1,null,r*i*3),new RA(IA.PLANAR_CONFIGURATION,DA.SHORT,1,null,1),new RA(IA.RESOLUTION_UNIT,DA.SHORT,1,null,1),new RA(IA.SOFTWARE,DA.ASCII,6,null,"......"),new RA(IA.STRIP_OFFSETS,DA.LONG,1,null,null),new RA(IA.X_RESOLUTION,DA.RATIONAL,1,null,new Uint32Array([1,1])),new RA(IA.Y_RESOLUTION,DA.RATIONAL,1,null,new Uint32Array([1,1]))],o=(t.ifdEntries&&a.push.apply(a,Fe(t.ifdEntries)),10+12*a.length+4),s=new Map,l=new Map,u=0,c=a;u<c.length;u++){var d=c[u],h=new ArrayBuffer(12),p=new DataView(h);d.type.bytes,d.count;p.setUint16(0,d.tag.value,!0),p.setUint16(2,d.type.value,!0),p.setUint32(4,d.count,!0),1===d.count&&d.type.bytes<=4?p.setUint32(8,d.value,!0):(p.setUint32(8,o,!0),p=new Uint8Array(d.count*d.type.bytes),d.type===DA.ASCII?p.set(new Uint8Array(d.value.split("").map(function(e){return e.charCodeAt(0)}))):p.set(new Uint8Array(d.value.buffer)),l.set(d.tag,p),o+=p.byteLength),s.set(d.tag,h)}function f(e){var t,n=e.reduce(function(e,t){return e+t.byteLength},0),i=new Uint8Array(n),r=0,a=q(e);try{for(a.s();!(t=a.n()).done;){var o=t.value;i.set(new Uint8Array(o),r),r+=o.byteLength}}catch(e){a.e(e)}finally{a.f()}return i}t=o;new DataView(s.get(IA.STRIP_OFFSETS)).setUint32(8,t,!0);return{width:r,height:i,buffer:f([n,f([new Uint16Array([a.length])].concat(Fe(s.values()),[new Uint32Array([0])])),f(Fe(l.values())),e.buffer])}}}])}(),Zl.Tag=IA,Zl.Type=DA,Zl.IFDEntry=RA,Zl.Image=LA,Zl.Reader=Zd,Zl.Exporter=qh,function(){return A(function e(t){ue(this,e),this.content=t;var n="".concat(W.resourcePath,"/icons/close.svg");this.element=$('\n\t\t\t<div class="potree_message">\n\t\t\t\t<span name="content_container" style="flex-grow: 1; padding: 5px"></span>\n\t\t\t\t<img name="close" src="'.concat(n,'" class="button-icon" style="width: 16px; height: 16px;">\n\t\t\t</div>')),this.elClose=this.element.find("img[name=close]"),this.elContainer=this.element.find("span[name=content_container]"),"string"==typeof t?this.elContainer.append($("<span>".concat(t,"</span>"))):this.elContainer.append(t)},[{key:"setMessage",value:function(e){this.elContainer.empty(),"string"==typeof e?this.elContainer.append($("<span>".concat(e,"</span>"))):this.elContainer.append(e)}}])}()),jh=function(){return A(function e(t){ue(this,e),this.potreeRenderer=t,this.threeRenderer=this.potreeRenderer.threeRenderer,this.target=new ti(2048,2048,{minFilter:N,magFilter:N,format:It,type:Ct}),this.target.depthTexture=new Gl,this.target.depthTexture.type=Et,this.threeRenderer.setClearColor(16711680,1);t=this.threeRenderer.getRenderTarget();this.threeRenderer.setRenderTarget(this.target),this.threeRenderer.clear(!0,!0,!0),this.threeRenderer.setRenderTarget(t)},[{key:"setLight",value:function(e){var t=180*(this.light=e).angle/Math.PI,n=e.shadow.mapSize.width/e.shadow.mapSize.height,i=0===e.distance?1e4:e.distance,t=(this.camera=new ya(t,n,.1,i),this.camera.up.set(0,0,1),this.camera.position.copy(e.position),(new Oe).subVectors(e.position,e.getWorldDirection(new Oe)));this.camera.lookAt(t),this.camera.updateProjectionMatrix(),this.camera.updateMatrix(),this.camera.updateMatrixWorld(),this.camera.matrixWorldInverse.copy(this.camera.matrixWorld).invert()}},{key:"setSize",value:function(e,t){this.target.width===e&&this.target.height===t||this.target.dispose(),this.target.setSize(e,t)}},{key:"render",value:function(e,t){this.threeRenderer.setClearColor(0,1);var n=this.threeRenderer.getRenderTarget();this.threeRenderer.setRenderTarget(this.target),this.threeRenderer.clear(!0,!0,!0),this.potreeRenderer.render(e,this.camera,this.target,{}),this.threeRenderer.setRenderTarget(n)}}])}(),zA=function(){function i(){function e(e){t.update(e)}var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,i),(t=le(this,i)).position=n.pos,t.text=n.text||"",t.elem=$('<div class="hide"><a></a></div>'),n.className&&t.elem.addClass(n.className),t.elem.find("a").html(t.text),$("#potree_labels").append(t.elem),t.pos2d=new Oe,t.dom=n.dom||viewer.renderArea,t.camera=n.camera||viewer.scene.getActiveCamera();return viewer.addEventListener("camera_changed",e),t.addEventListener("dispose",function(){viewer.removeEventListener("camera_changed",e),t.dispose()}),t}return v(i,Qn),A(i,[{key:"update",value:function(){var e;this.position&&!this.elem.hasClass("unvisible")&&((e=ne.getPos2d(this.position,viewer.mainViewport,this.dom)).trueSide?(this.elem.css({left:e.pos.x+"px",top:e.pos.y+"px"}),this.elem.removeClass("hide"),this.pos2d=e.vector):this.elem.addClass("hide"))}},{key:"setVisible",value:function(e){e?(this.elem.removeClass("unvisible"),this.update()):this.elem.addClass("unvisible")}},{key:"setText",value:function(e){this.text=e||"",this.elem.find("a").html(this.text)}},{key:"setPos",value:function(e){this.position=e}},{key:"dispose",value:function(){this.elem.remove(),this.removeAllListeners()}}])}(),GA=new Th,HA=function(){function r(e,t){var n,i;for(i in ue(this,r),(n=le(this,r)).type=e,n.maxMarkers=Number.MAX_SAFE_INTEGER,n.transformData(t),t)n[i]=t[i];return(n.atPlane||n.showArea)&&n.closed&&"2d"==n.dimension&&(n.areaPlane=n.createAreaPlane(),n.add(n.areaPlane)),n.points=[],n.markers=[],n.edges=[],n.center,n}return v(r,Z),A(r,[{key:"initData",value:function(e){var n=this;if(e.dataset_points&&(this.dataset_points=e.dataset_points),e.datasetId&&(this.datasetId=e.datasetId),e.points_datasets&&(this.points_datasets=e.points_datasets),"merge"==Potree.settings.editType||"MulDistance Ring"==this.measureType)if(this.dataset_points){if(this.dataset_points=this.dataset_points.map(function(e){return e&&(new Oe).copy(e)}),e.points=this.dataset_points.map(function(e,t){return Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:n.points_datasets[t],position:e})}),e.points.some(function(e){return null==e}))return!1}else this.dataset_points=[];if(e.points){var t,i=q(e.points);try{for(i.s();!(t=i.n()).done;){var r=t.value,a=(new Oe).copy(r);this.addMarker({point:a})}}catch(e){i.e(e)}finally{i.f()}return"merge"!=Potree.settings.editType&&"MulDistance Ring"!=this.measureType&&(null!=this.datasetId?this.dataset_points&&(this.dataset_points=this.dataset_points.map(function(e){return e&&(new Oe).copy(e)}),this.transformByPointcloud()):e.dataset_points&&e.dataset_points.some(function(e){return null!=e})&&(console.error("存在测量线的datasetId为空而dataset_points有值,请检查并删除:"+this.sid),console.log(this))),this.facePlane=this.getFacePlane(),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0}),this.setSelected(!1),this.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),!0}}},{key:"addMarker",value:function(){var t,n=this,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=null==i.index?this.points.length:i.index;this.points=[].concat(Fe(this.points.slice(0,e)),[i.point.clone()],Fe(this.points.slice(e,this.points.length))),"dataset_point"in i&&(this.dataset_points=this.dataset_points?[].concat(Fe(this.dataset_points.slice(0,e)),[i.dataset_point&&i.dataset_point.clone()],Fe(this.dataset_points.slice(e,this.dataset_points.length))):null),"points_dataset"in i&&(this.points_datasets=[].concat(Fe(this.points_datasets.slice(0,e)),[i.points_dataset],Fe(this.points_datasets.slice(e,this.points_datasets.length)))),i.marker&&(this.add(i.marker),this.markers=[].concat(Fe(this.markers.slice(0,e)),[i.marker],Fe(this.markers.slice(e,this.markers.length))),this.updateMarker(i.marker,i.point),i.marker.addEventListener("drag",this.dragMarker.bind(this),{importance:2}),i.marker.addEventListener("drop",this.dropMarker.bind(this),{importance:2}),i.marker.createTime=Date.now(),t=function(e){i.marker.addEventListener("mouseover",function(e){n.setMarkerSelected(e.object,"hover","single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),i.marker.addEventListener("mouseleave",function(e){n.setMarkerSelected(e.object,"unhover","single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),i.marker.addEventListener("startDragging",function(e){n.setMarkerSelected(i.marker,"hover","single"),n.dispatchEvent("startDragging")}),i.marker.addEventListener("drop",function(e){n.setMarkerSelected(i.marker,"unhover","single")}),i.marker.removeEventListener("addHoverEvent",t)},i.marker.addEventListener("addHoverEvent",t),this.isNew||i.marker.dispatchEvent("addHoverEvent")),i.edge&&(this.add(i.edge),this.edges=[].concat(Fe(this.edges.slice(0,e)),[i.edge],Fe(this.edges.slice(e,this.edges.length))))}},{key:"dragMarker",value:function(e){var t,n,i;if(e.hoverViewport!=e.drag.dragViewport)viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"});else if(0!=e.drag.pointerDelta.length()||this.isNew){if(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),!(i="mapViewport"==e.drag.dragViewport.name)||!this.unableDragAtMap)return e.drag.object.isDragging=!0,t=e.intersect&&(!e.intersect.adsorption&&e.intersect.orthoIntersect||e.intersect.location),(viewer.inputHandler.pressedKeys[18]||Potree.settings.dragPolyBeyondPoint&&!t)&&(n=this.markers.indexOf(e.drag.object),(n=(t=this.points[n].clone()).clone().project(e.drag.dragViewport.camera)).x=e.pointer.x,n.y=e.pointer.y,n=n.clone().unproject(e.drag.dragViewport.camera),t.copy(n)),t?(-1!==(n=this.markers.indexOf(e.drag.object))&&(this.dragChange(t.clone(),n,i),this.points_datasets)&&e.intersect&&(e.intersect.pointcloud?this.points_datasets[n]=e.intersect.pointcloud.dataset_id:e.intersect.object?this.points_datasets[n]=e.intersect.object.dataset_id:"MulDistance Ring"==this.measureType?(i=viewer.findClosestDatasetOnMap(t)||viewer.scene.pointclouds[0],this.points_datasets[n]=i.dataset_id):this.points_datasets[n]=null),this.editStateChange(!0),!0):void 0;e.drag.object=null}}},{key:"dragChange",value:function(e,t,n){var i=this,r=this.markers.length,a=this.points[t],a=(n&&e.setZ(a.z),e.clone());if(this.faceDirection&&2==this.maxMarkers&&2==r){var o=this.markers[0].position;p="horizontal"==this.faceDirection?a.clone().setZ(o.z):o.clone().setZ(a.z),av.updateLine(this.guideLine,[a,p]),a=p,this.guideLine.visible=!0}else if(1<r){var s,l=this.points.map(function(e){return e.clone()});if(l[t].copy(a),"horizontal"==this.faceDirection)2==r&&a.setZ(l[0].z),this.facePlane||(this.facePlane=(new ir).setFromNormalAndCoplanarPoint(new Oe(0,0,1),this.points[0]));else if("vertical"==this.faceDirection)if(2==r)this.isRect&&(p=l[0].clone().sub(a),Math.sqrt(p.x*p.x+p.y*p.y)>Math.abs(p.z)?a.setZ(l[0].z):(a.setX(l[0].x),a.setY(l[0].y)));else{this.cannotConfirmNormal=!0;for(var u=this.isRect?1:r-2,c=0;c<u;c++){var d=l[c].clone(),h=l[c+1].clone(),d=d.sub(h);if(0!=d.x||0!=d.y){this.cannotConfirmNormal=!1;break}}this.facePlane&&!this.cannotConfirmNormal||(p=VA(l.map(function(e){return new Re(e.x,e.y)}),2))&&(p=te.getNormal2d({p1:p[0],p2:p[1]}),p=new Oe(p.x,p.y,0),this.facePlane=(new ir).setFromNormalAndCoplanarPoint(p,this.points[0]))}if(2<r){if(!this.faceDirection&&this.showArea&&(3!=r&&!this.isRect||(this.cannotConfirmNormal=!0),this.facePlane&&!this.cannotConfirmNormal||(p=VA(l,3))&&(this.facePlane=(s=new ir).setFromCoplanarPoints.apply(s,Fe(p)))),this.atPlane&&this.facePlane&&!this.cannotConfirmNormal)if(n){if(GA.set(a.clone().setZ(1e5),a.clone().setZ(-1e5)),!(a=this.facePlane.intersectLine(GA,new Oe)))return}else a=this.facePlane.projectPoint(e,new Oe);l[t].copy(a),3==r&&"horizontal"==this.faceDirection&&this.closed&&(p=(s=new ir).setFromCoplanarPoints.apply(s,Fe(l))).normal.z&&p.normal.z*this.facePlane.normal.z<0&&(this.facePlane.normal.z*=-1,this.facePlane.constant*=-1),this.isRect&&(o=l[(t-2+r)%r],n=l[(t-1+r)%r],o.equals(n)&&("vertical"==this.faceDirection?n.add(new Oe(0,0,1e-4)):n.add(new Oe(0,1e-4,0))),p=(s=te.getFootPoint(a,o,n)).clone().sub(a),n=o.clone().sub(p),l[(t-1+r)%r].copy(s),l[(t+1)%r].copy(n),this.setPosition((t-1+r)%r,s),this.setPosition((t+1)%r,n)),this.getPoint2dInfo(l);o=this.atPlane&&this.closed&&!this.isRect&&this.point2dInfo&&this.intersectSelf(this.point2dInfo.points2d);if(this.isIntersectSelf=o){if(this.isNew||"lastLine"!=o||(this.isIntersectSelf="all"),"lastLine"!=this.isIntersectSelf)return void viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_isIntersectSelf"});Potree.Utils.updateVisible(this.areaPlane,"intersectLastLine",!1),Potree.Utils.updateVisible(this.areaLabel,"intersectLastLine",!1)}this.isIntersectSelf||(this.areaPlane&&Potree.Utils.updateVisible(this.areaPlane,"intersectLastLine",!0),this.areaLabel&&Potree.Utils.updateVisible(this.areaLabel,"intersectLastLine",!0)),this.isIntersectSelf&&"lastLine"!=this.isIntersectSelf||viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_isIntersectSelf"})}1<r&&(this.faceDirection||3<r)&&this.guideLine&&(av.updateLine(this.guideLine,[e,a]),this.guideLine.visible=!0)}if(this.restrictArea){var p=this.restrictArea.holes.concat(this.restrictArea.parentHoles).filter(function(e){return e!=i&&2<e.points.length}).map(function(e){return e.points});if(!te.isPointInArea(this.restrictArea.points,p,a))return viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"}),void(this.isAtWrongPlace=!0)}viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),this.isAtWrongPlace=!1,this.setPosition(t,a),this.update({index:this.isRect?null:t}),this.dispatchEvent({type:"dragChange",index:t})}},{key:"dropMarker",value:function(e){if(this.isNew&&e.pressDistance>Potree.config.clickMaxDragDis)return this.continueDrag(null,e);if(e.hoverViewport!=e.drag.dragViewport)return this.continueDrag(null,e);if(e.isTouch){if(e.hoverViewport!=viewer.mainViewport&&this.unableDragAtMap)return viewer.dispatchEvent({type:"reticule_forbit",v:!0}),this.continueDrag(null,e);viewer.dispatchEvent({type:"reticule_forbit",v:!1}),this.isNew&&this.dragMarker(e)}var t;return e.button!=oe.RIGHT&&("all"==this.isIntersectSelf&&this.isNew||this.isAtWrongPlace&&this.isNew||!e.isAtDomElement&&this.isNew||e.hoverViewport!=viewer.mainViewport&&this.unableDragAtMap||this.isNew&&!VA(this.points,this.points.length))?this.continueDrag(null,e):(-1!==(t=this.markers.indexOf(e.drag.object))&&(this.dispatchEvent({type:"marker_dropped",index:t}),2<this.markers.length&&this.facePlane&&(this.cannotConfirmNormal=!1),this.guideLine)&&(this.guideLine.visible=!1),this.setMarkerSelected(e.drag.object,"unhover","single"),this.editStateChange(!1),e.drag.endDragFun&&e.drag.endDragFun(e),!0)}},{key:"getFacePlane",value:function(){if(!(this.points.length<3)){var e=this.facePlane;if(!this.atPlane||!e){for(var t=new Oe,n=this.points.length-2,i=0;i<n;i++){var r=(new Oe).subVectors(this.points[i+2],this.points[i+1]),a=(new Oe).subVectors(this.points[i],this.points[i+1]),r=r.cross(a).normalize();t.add(r)}t.normalize(),e=(new ir).setFromNormalAndCoplanarPoint(t,this.points[0])}return e}}},{key:"getPoint2dInfo",value:function(e){var t,n,i;this.facePlane&&(this.atPlane||Potree.settings.areaAtNotPlane)&&(i=this.getFacePlane(),t=e[0].clone(),n=te.getQuaBetween2Vector(i.normal,new Oe(0,0,1),new Oe(0,0,1)),i=e.map(function(e){return e.clone().applyQuaternion(n)}),this.point2dInfo={originPoint0:t,points2d:i,quaInverse:n.clone().invert()})}},{key:"setPosition",value:function(e,t){var n=this.points[e],t=(n.copy(t),this.markers[e]);this.updateMarker(t,n)}},{key:"updateMarker",value:function(e,t){e.position.copy(t),e.waitUpdate()}},{key:"intersectSelf",value:function(e){for(var t=e.length,n=0;n<t;n++)for(var i=n+2;i<t;i++)if(!(Math.abs(i-t-n)<2)){var r=e[n],a=e[n+1],o=e[i],s=e[(i+1)%t];if(!(r.equals(a)||o.equals(s)||r.equals(o)||a.equals(o)||r.equals(s)||a.equals(s)))if(te.isLineIntersect([r,a],[o,s],!1,.001))return n==t-1||i==t-1?"lastLine":"all"}}},{key:"removeMarker",value:function(e){this.points.splice(e,1);var t=this.markers[e],n=(this.markers.splice(e,1),t.dispose(),e),i=this.edges[n];i&&(this.remove(i),this.edges.splice(n,1),i.geometry.dispose()),this.point2dInfo&&this.point2dInfo.points2d.splice(e,1),this.dispatchEvent({type:"removeMarker",index:e,marker:t})}},{key:"createAreaPlane",value:function(e){return new Q(new Wl,e)}},{key:"updateAreaPlane",value:function(){if(this.areaPlane.geometry.dispose(),2<this.points.length){if(this.isPrism){var t=this.horizonZ||0,e=this.points.map(function(e){return e.clone().setZ(t)}),e=(this.areaPlane.geometry=ov.getShapeGeo(e),te.getCenterOfGravityPoint(e));this.areaPlaneCenter=new Oe(e.x,e.y,t),this.areaPlane.position.z=t}else if(this.point2dInfo)if(Potree.settings.areaAtNotPlane){var e=new Wl,n=[],i=Bu.triangulateShape(this.point2dInfo.points2d,[]);if(0!=i.length){for(var r=this._area=0;r<i.length;r++){n[r]=new br(i[r][0],i[r][1],i[r][2]);var a=(new Oe).crossVectors((new Oe).subVectors(this.points[i[r][0]],this.points[i[r][2]]),(new Oe).subVectors(this.points[i[r][1]],this.points[i[r][2]]));this._area+=a.length()/2,a.normalize(),n[r].normal.copy(a)}e.vertices=this.points,e.faces=n,this.areaPlane.geometry=(new V).fromGeometry(e)}}else{this.areaPlane.geometry=ov.getShapeGeo(this.point2dInfo.points2d);var e=te.getCenterOfGravityPoint(this.point2dInfo.points2d),o=this.point2dInfo.points2d[0].clone(),o=(o.z=0,o.applyQuaternion(this.point2dInfo.quaInverse),this.point2dInfo.originPoint0.clone().sub(o));(e=new Oe(e.x,e.y,0)).applyQuaternion(this.point2dInfo.quaInverse),this.areaPlane.quaternion.copy(this.point2dInfo.quaInverse),this.areaPlane.position.copy(o),e.add(o),this.center=e}}else this.areaPlane.geometry=new Wl}},{key:"getIndex",value:function(e,t){var n=this.points.length-1;return-1==t?0===e?n:e-1:1==t?n<e+1?0:e+1:void 0}},{key:"update",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(0!==this.points.length){var t=this.points.length-1;if(null!=e.index){this.updateMarker(this.markers[e.index],this.points[e.index]);var n=this.getIndex(e.index,-1),i=this.getIndex(e.index,1);!this.closed&&0==i||av.updateLine(this.edges[e.index],[this.points[e.index],this.points[i]]),!this.closed&&n==t||av.updateLine(this.edges[n],[this.points[e.index],this.points[n]])}else for(var r=0;r<=t;r++){var a=this.getIndex(r,1),o=this.getIndex(r,-1),s=this.points[r],l=this.points[a];this.points[o];if(e.ifUpdateMarkers&&this.updateMarker(this.markers[r],s),!this.closed&&0==a)break;o=this.edges[r];o&&av.updateLine(o,[s,l])}this.areaPlane&&this.updateAreaPlane(),viewer.dispatchEvent("content_changed"),viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed")}}},{key:"createPrismLines",value:function(e){this.lineMesh=av.createLine([],{color:e}),this.lineMesh.name="PrismLines",this.add(this.lineMesh)}},{key:"updatePrismLines",value:function(){var n,i,r=this;this.lineMesh&&(n=[],i=this.points.length,this.points.forEach(function(e,t){n.push(e.clone().setZ(r.zMin),e.clone().setZ(r.zMax));t=r.points[(t+1)%i];t&&(n.push(e.clone().setZ(r.zMax),t.clone().setZ(r.zMax)),n.push(e.clone().setZ(r.zMin),t.clone().setZ(r.zMin)))}),av.moveLine(this.lineMesh,n),viewer.dispatchEvent("content_changed"))}},{key:"dispose",value:function(){this.parent.remove(this),this.markers.forEach(function(e){return e.dispose()}),this.edges.forEach(function(e){return e.geometry.dispose()})}},{key:"reDraw",value:function(){for(var e=this.points.length-(0<arguments.length&&void 0!==arguments[0]?arguments[0]:0);0<e;)this.removeMarker(--e);this.point2dInfo=null,this.facePlane=null}},{key:"setMarkerSelected",value:function(){}},{key:"editStateChange",value:function(e){e||(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_isIntersectSelf"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),viewer.dispatchEvent({type:"reticule_forbit",v:!1}),this.markers.forEach(function(e){return e.isDragging=!1}))}},{key:"transformData",value:function(e){function t(e,t){return null!=e?e:t}e.showDistances=null===e.showDistances||e.showDistances,e.showArea=t(e.showArea,!1),e.showAngles=t(e.showAngles,!1),e.showCoordinates=t(e.showCoordinates,!1),e.showHeight=t(e.showHeight,!1),e.showCircle=t(e.showCircle,!1),e.showAzimuth=t(e.showAzimuth,!1),e.showEdges=t(e.showEdges,!0),e.closed=t(e.closed,!1),e.maxMarkers=t(e.maxMarkers,1/0),e.direction=e.direction,e.type=e.type,e.showGuideLine=t(e.showGuideLine,!1),e.isRect=t(e.isRect,!1)}},{key:"setSelected",value:function(){}},{key:"continueDrag",value:function(e,t){var n=this,i=e||t.drag.object;return i.isDragging=!0,this.editStateChange(!0),setTimeout(function(){n.parent&&i.parent&&i.isDragging&&viewer.inputHandler.startDragging(i,{endDragFun:t.drag.endDragFun,notPressMouse:t.drag.notPressMouse,dragViewport:t.drag.dragViewport})},1)}}])}();function VA(e,t){for(var n=[],i=0;i<e.length;i++){var r=e[i];if(!n.find(function(e){return e.equals(r)})&&(n.push(r),n.length==t))break}if(n.length==t)return n}var QA,jA,WA=new Gc,JA=(new Se(yv.measure.default.color),new Se(yv.measure.highlight.color),new Se(yv.measure.color)),nu=new Se(yv.measure.textColor),qA=te.linearClamp(window.outerWidth*window.outerHeight,[259200,2073600],[.7,1]),YA={clipDistance:15,occlusionDistance:3},XA=vf.isMobile()?.4:.8,KA={width2d:18/XA},ZA={width2d:200},$A={backgroundColor:{r:0,g:0,b:0,a:0},textColor:{r:255*nu.r,g:255*nu.g,b:255*nu.b,a:1},textBorderColor:{r:255,g:255,b:255,a:1},textBorderThick:3,fontsize:15*qA,borderRadius:12,margin:{x:20,y:4},renderOrder:Potree.config.renderOrders.measureLabel,pickOrder:Potree.config.renderOrders.measureLabel,disToLine:-.15,useDepth:!0,clipDistance:10,occlusionDistance:10,maxOcclusionFactor:.3,maxClipFactor:.8},ey={backgroundColor:{r:255,g:255,b:255,a:0},textColor:{r:255*nu.r,g:255*nu.g,b:255*nu.b,a:1},textBorderColor:{r:255,g:255,b:255,a:1},textBorderThick:3,fontsize:14*qA,renderOrder:Potree.config.renderOrders.measureLabelSub,pickOrder:Potree.config.renderOrders.measureLabelSub,disToLine:-.13},yp=Be.degToRad(5),ty=yp,ny=Math.PI/2-yp,iy=function(){function h(e){var t;return ue(this,h),e.dimension="2d",(t=le(this,h,["measure",e])).constructor.counter=void 0===t.constructor.counter?0:t.constructor.counter+1,t.name=t.measureType+t.constructor.counter,t.markerLabels=[],t.edgeLabels=[],t.angleLabels=[],t.coordinateLabels=[],t.area={value:0,string:""},t.showArea&&(t.areaLabel=t.createAreaLabel(),t.add(t.areaLabel)),(t.atPlane||t.faceDirection)&&t.createGuideLine(),"Distance"==t.measureType&&t.createHorVerGuideLine(),t.selectStates={},t.setUnitSystem(e.unit||viewer.unitConvert.UnitService.defaultSystem),Potree.Utils.setObjectLayers(t,"measure"),"MulDistance"!=t.measureType&&"Hor MulDistance"!=t.measureType&&"Ver MulDistance"!=t.measureType||(t.totalDisLabel=t.createTotalDisLabel(),t.add(t.totalDisLabel)),t.initData(e),t.pointsPos2d=new Map,t.points_datasets||(t.points_datasets=[]),t.addEventListener("marker_dropped",function(e){t.updateDatasetBelong(e.index)}),t.addEventListener("isVisible",function(){viewer.mapViewer&&viewer.mapViewer.dispatchEvent({type:"content_changed"})}),t.lastDropTime=0,t}return v(h,HA),A(h,[{key:"initData",value:function(e){I(h,"initData",this,3)([e])?this.edges.forEach(function(e){e.dispatchEvent("addHoverEvent")}):this.failBuilded=!0}},{key:"updateDatasetBelong",value:function(e){var t=this;if("merge"==Potree.settings.editType||"MulDistance Ring"==this.measureType)this.dataset_points[e]=Potree.Utils.datasetPosTransform({toDataset:!0,datasetId:this.points_datasets[e],position:this.points[e].clone()});else{this.datasetId;var n,i={id:null,count:0},r={};for(n in this.points_datasets.forEach(function(e){null!=e&&(r[e]?r[e]++:r[e]=1)}),r)r[n]>i.count&&(i={id:n,count:r[n]});this.datasetId=0<i.count?i.id:null,null==this.datasetId?this.dataset_points=null:this.dataset_points=this.points.map(function(e){return Potree.Utils.datasetPosTransform({toDataset:!0,datasetId:t.datasetId,position:e.clone()})})}}},{key:"transformByPointcloud",value:function(){var t=this;null!=this.datasetId&&(this.points=this.dataset_points.map(function(e){return Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:t.datasetId,position:e.clone()})}),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0}),this.setSelected(!1))}},{key:"update",value:function(){var a=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(-1!=e.index)if(I(h,"update",this,3)([e]),this.showCoordinates&&0<this.points.length)r=this.points[0],this.markers[0].position.copy(r),o=this.coordinateLabels[0],i=[r.toArray()],viewer.transform&&(s=viewer.transform.lonlatToLocal.inverse(r.toArray()),n=viewer.transform.lonlatTo4550.forward(s),i.push(s,n)),s=i.map(function(e){return e.map(function(e){return ne.addCommas(e.toFixed(10))}).join(", ")}).join("<br>"),o.setText(s),o.setPos(r),o.setVisible(!0);else{var t,n,i,r,o,s,l=function(e,t,n,i){a.setEdgeLabelPos(e,t,n),i=null==i?t.distanceTo(n):i;t=a.getConvertString(i,"distance");return e.setText(t),i},u=this.points.length-1,c=function(e){var t,n,i=a.getIndex(e,-1),r=a.getIndex(e,1),i=(a.points[i],a.points[e]),r=a.points[r];a.showDistances&&(t=a.edgeLabels[e],n=i.distanceTo(r),a.edges[e].distance_=n,t.shouldVisi=(e<u||a.isRect||a.closed&&!a.isNew)&&0<n,ne.updateVisible(t,"shouldVisi",t.shouldVisi,2),t.shouldVisi)&&(t.lineDir=(new Oe).subVectors(i,r).normalize(),l(t,i,r,n))};if(null!=e.index)c(e.index),c(this.getIndex(e.index,-1));else for(var d=0;d<=u;d++)c(d);Potree.config.measure.mulLabelHideFaraway&&"MulDistance"==this.measureType&&this.clearEdgeLabelVisi(),"Distance"==this.measureType&&1<this.points.length&&(n=this.points[0].z>this.points[1].z?(t=this.points[0],this.points[1]):(t=this.points[1],this.points[0]),i=new Oe(t.x,t.y,n.z),s=t.distanceTo(i)/n.distanceTo(i),r=Math.atan(s),this.shouldShowHorVerGuide=ty<r&&r<ny,av.updateLine(this.verGuideEdge,[t,i]),av.updateLine(this.horGuideEdge,[n,i]),l(this.verEdgeLabel,t,i),l(this.horEdgeLabel,n,i),this.verGuideEdge.visible=this.horGuideEdge.visible=this.shouldShowHorVerGuide,this.verEdgeLabel.visible=this.horEdgeLabel.visible=this.shouldShowHorVerGuide),this.showArea&&2<this.points.length&&(o=this.getArea().string,this.areaLabel.setPos(this.getCenter("areaPlaneCenter")),this.areaLabel.setText(o),ne.updateVisible(this.areaLabel,"setVisible",!0)),this.totalDisLabel&&(this.ifShowTotalDis(),ne.updateVisible(this.totalDisLabel,"setVisible",this.showTotalDis),this.edgeLabels.forEach(function(e){return ne.updateVisible(e,"showTotalDis",!a.showTotalDis)}),this.showTotalDis)&&(e=this.getTotalDistance(),s=this.getConvertString(e,"distance"),this.center=null,this.center=this.getCenter(),this.totalDisLabel.setPos(this.center),this.totalDisLabel.setText(s))}}},{key:"getArea",value:function(){var e=null!=this._area?this._area:this.point2dInfo?Math.abs(te.getArea(this.point2dInfo.points2d)):Math.abs(te.getArea(this.points)),t=this.getConvertString(e,"area");return this.area={value:e,string:t},this.area}},{key:"getConvertString",value:function(e,t){return viewer.unitConvert.convert(e,t,Potree.settings.precision,this.unitSystem,!0,{imperial:{minFactor:.01},metric:{minFactor:.01}})}},{key:"ifShowTotalDis",value:function(){var e=2<this.points.length;if(e)for(var t=this.points.length-1,n=0;n<t;n++)if(.15<this.edges[n].distance_){e=!1;break}this.showTotalDis=e}},{key:"clearEdgeLabelVisi",value:function(){for(var e=this.points.length-1,t=0;t<=e;t++)!this.closed&&t==e||this.edgeLabels[t].visiMap.clear()}},{key:"getEdgeLabelVisi",value:function(e){var t,n,i,r=e.camera,a=this.points.length-1,o=.02,s=.07;"OrthographicCamera"==r.type?o*=Math.pow(r.top/r.zoom,2):"showPanos"==Potree.settings.displayMode&&viewer.images360.zoomLevel==Potree.settings.zoom.max?i=!0:(n=this.points.map(function(e){return(new Oe).subVectors(e,r.position).normalize()}),t=(s/=e.resolution.y/1e3/qA)*Be.degToRad(r.fov));for(var l,u,c,d,h,p=0;p<=a;p++)!this.closed&&p==a||(l=this.edgeLabels[p],d=this.points[p],h=this.points[u=a<p+1?0:p+1],c=void 0,c=!!i||("OrthographicCamera"==r.type?(new Oe).subVectors(d,h).projectOnPlane(e.view.direction).lengthSq()>o:(d=n[p],h=n[u],Math.acos(d.dot(h))>t)),l.visiMap.set(r,c))}},{key:"setEdgeLabelPos",value:function(e,t,n){t=(new Oe).addVectors(t,n).multiplyScalar(.5);return e.setPos(t)}},{key:"cloneMarker",value:function(e,t){return this.addMarker({index:t,point:this.points[e],dataset_point:this.dataset_points&&this.dataset_points[e],points_dataset:this.points_datasets[e]})}},{key:"addMarker",value:function(){var i,r=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=null==e.index?this.points.length:e.index,n=new uv({mat:this.getMarkerMaterial("default"),sizeInfo:KA,name:"measure_point"}),a=(Potree.Utils.setObjectLayers(n,"measure"),n.pickOrder=n.renderOrder=Potree.config.renderOrders.measureMarker,n.markerSelectStates={},n.addEventListener("startDragging",function(e){var t;viewer.inputHandler.dispatchEvent({type:"measuring",v:!0,cause:"startDragging",situation:"dragging",object:r}),!r.isNew&&viewer.inputHandler.pressedKeys["M".charCodeAt(0)]&&r.points.length<r.maxMarkers&&(viewer.measuringTool.history.beforeChange(r),t=r.markers.indexOf(n),r.cloneMarker(t,t+1)),r.isNew||viewer.measuringTool.history.beforeChange(r)}),n.addEventListener("drop",function(e){e.button!=oe.LEFT||(viewer.inputHandler.dispatchEvent({type:"measuring",v:!1,cause:"stopDragging",situation:"dragging",object:r}),r.lastDropTime=Date.now(),Potree.settings.adsorption&&!r.isNew&&viewer.viewports.forEach(function(e){r.getPointsPos2d(e,!0)}),r.isNew)||viewer.measuringTool.history.afterChange(r)}),n.addEventListener("click",function(){var e;"delPoint"==viewer.measuringTool.editMode&&(viewer.measuringTool.history.beforeChange(r),e=r.markers.indexOf(n),r.removeMarker(e),viewer.measuringTool.history.afterChange(r),r.dispatchEvent("changed"))}),(i=av.createFatLine([],{mat:this.getLineMat("edgeDefault")})).pickOrder=0,Potree.Utils.setObjectLayers(i,"measure"),function(){i.addEventListener("mouseover",function(e){r.setSelected(!0,"edge")}),i.addEventListener("mouseleave",function(e){r.setSelected(!1,"edge")}),i.removeEventListener("addHoverEvent",a),i.addEventListener("click",function(e){var t,n;Date.now()-r.lastDropTime<100||("addPoint"==viewer.measuringTool.editMode&&r.points.length<r.maxMarkers?(viewer.measuringTool.history.beforeChange(r),n=(t=r.edges.indexOf(i)+1)%r.edges.length,e=te.getFootPoint(e.hoveredElement.point,r.points[t-1],r.points[n]),r.addMarker({index:t,point:e,dataset_point:r.dataset_points&&new Oe,points_dataset:r.points_datasets[t-1]}),r.updateDatasetBelong(t),viewer.measuringTool.history.afterChange(r),r.dispatchEvent("changed")):r.isNew||viewer.measuringTool.isAdding||viewer.focusOnObject(r,"measure"))})}),e=(i.addEventListener("addHoverEvent",a),this.isNew||i.dispatchEvent("addHoverEvent"),I(h,"addMarker",this,3)([Object.assign(e,{index:t,marker:n,edge:i})]),this.showEdges&&(e=this.createEdgeLabel("edgeLabel",!this.closed),this.edgeLabels=[].concat(Fe(this.edgeLabels.slice(0,t)),[e],Fe(this.edgeLabels.slice(t,this.edgeLabels.length)))),this.showCoordinates&&((e=new zA({className:"measure_pointPos",camera:viewer.scene.getActiveCamera()})).setVisible(!1),this.coordinateLabels.push(e)),{type:"marker_added",measurement:this,marker:n});return this.dispatchEvent(e),this.update({index:t}),n}},{key:"editStateChange",value:function(e){var t=this;I(h,"editStateChange",this,3)([e]),e?this.isEditing||(this.dispatchEvent({type:"editStateChange",state:!0}),this.setEdgesDisplay(!0),clearTimeout(this.editStateTimer)):this.editStateTimer=setTimeout(function(){t.isEditing||(t.dispatchEvent({type:"editStateChange",state:!1}),t.setEdgesDisplay(!1),t.areaPlane&&Potree.Utils.updateVisible(t.areaPlane,"intersectLastLine",!0),t.areaLabel&&Potree.Utils.updateVisible(t.areaLabel,"intersectLastLine",!0))},100),this.isEditing=e}},{key:"setMarkerSelected",value:function(e,t,n){e.markerSelectStates[n]=t;var i,r=!1;for(i in e.markerSelectStates)if("hover"==e.markerSelectStates[i]){r=!0;break}r?(e.material=this.getMarkerMaterial("select"),e.renderOrder=e.pickOrder=Potree.config.renderOrders.measureMarker+1):(e.material=this.getMarkerMaterial("default"),e.renderOrder=e.pickOrder=Potree.config.renderOrders.measureMarker),e.selected=r,viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed"),viewer.dispatchEvent("content_changed")}},{key:"setEdgesDisplay",value:function(t,e){this.closed&&this.edgeLabels.forEach(function(e){return ne.updateVisible(e,"hover",t)}),this.totalDisLabel&&!viewer.screenshoting&&(this.edgeLabels.forEach(function(e){return ne.updateVisible(e,"hover",t,1,t?"add":"cancel")}),ne.updateVisible(this.totalDisLabel,"hover",!t)),e||"Distance"!=this.measureType||(this.horEdgeLabel.visible=this.verEdgeLabel.visible=this.horGuideEdge.visible=this.verGuideEdge.visible=!(!t||!this.shouldShowHorVerGuide))}},{key:"setSelected",value:function(e,t){var n=this,i=!!e;if(t)for(var r in this.selectStates[t]=e,this.selectStates)if(this.selectStates[r]){i=!0;break}i?(this.markers.forEach(function(e){return n.setMarkerSelected(e,"hover","selectAll")}),this.edges.forEach(function(e){e.renderOrder=Potree.config.renderOrders.lines+1,e.material=n.getLineMat("edgeSelect")}),this.areaPlane&&(this.areaPlane.material=jA.selected),this.setEdgesDisplay(!0,"screenshot"==t),this.areaLabel&&ry(this.areaLabel,!0),this.closed||this.edgeLabels.forEach(function(e){return ry(e,!0)})):(this.markers.forEach(function(e){return n.setMarkerSelected(e,"unhover","selectAll")}),this.edges.forEach(function(e){return e.material=n.getLineMat("edgeDefault")}),this.areaPlane&&(this.areaPlane.material=jA.default),this.setEdgesDisplay(!1,"screenshot"==t),this.areaLabel&&ry(this.areaLabel,!1),this.closed||this.edgeLabels.forEach(function(e){return ry(e,!1)})),this.selected=i,"byList"!=t&&this.dispatchEvent({type:"highlight",state:this.selected}),viewer.dispatchEvent("content_changed"),viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed")}},{key:"removeMarker",value:function(e){I(h,"removeMarker",this,3)([e]),this.points_datasets.splice(e,1),this.dataset_points&&this.dataset_points.splice(e,1),this.coordinateLabels.splice(e,1);var t=e;this.edgeLabels[t]&&(this.edgeLabels[t].dispose(),this.edgeLabels.splice(t,1)),this.update({index:this.getIndex(e,-1)}),this.dispatchEvent({type:"marker_removed",measurement:this})}},{key:"setPosition",value:function(e,t){I(h,"setPosition",this,3)([e,t]);e={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(e)}},{key:"dispose",value:function(){var e=this.edgeLabels.concat(this.coordinateLabels);this.areaLabel&&e.push(this.areaLabel),e.forEach(function(e){return e.dispose()}),I(h,"dispose",this,3)([]),this.dispatchEvent("disposed")}},{key:"getTotalDistance",value:function(){if(0===this.points.length)return 0;for(var e,t=0,n=1;n<this.points.length;n++){var i=this.points[n-1],r=this.points[n];t+=i.distanceTo(r)}return this.closed&&1<this.points.length&&(e=this.points[0],t+=this.points[this.points.length-1].distanceTo(e)),t}},{key:"getAngleBetweenLines",value:function(e,t,n){t=(new Oe).subVectors(t,e),n=(new Oe).subVectors(n,e);return 0===Math.sqrt(t.lengthSq()*n.lengthSq())?0:t.angleTo(n)}},{key:"getAngle",value:function(e){var t,n;return this.points.length<3||e>=this.points.length?0:(t=0===e?this.points[this.points.length-1]:this.points[e-1],n=this.points[e],e=this.points[(e+1)%this.points.length],this.getAngleBetweenLines(n,t,e))}},{key:"getCenter",value:function(e){var t;return this.center?this.center.clone():(t=this.points.reduce(function(e,t){return e.add(t)},new Oe),this.points.length&&t.multiplyScalar(1/this.points.length),t)}},{key:"createGuideLine",value:function(){var e=av.createFatLine([],{mat:this.getLineMat("guide")});e.visible=!1,this.guideLine=e,this.add(e)}},{key:"createHorVerGuideLine",value:function(){var e=av.createFatLine([],{mat:this.getLineMat("guide")}),e=(e.visible=!1,(this.verGuideEdge=e).name="verGuideEdge",av.createFatLine([],{mat:this.getLineMat("guide")}));e.visible=!1,e.name="horGuideEdge",this.horGuideEdge=e,this.add(this.verGuideEdge),this.add(this.horGuideEdge),this.verEdgeLabel=this.createEdgeLabel("verGuideEdge"),this.horEdgeLabel=this.createEdgeLabel("horGuideEdge")}},{key:"createEdgeLabel",value:function(e,t){var n=this,i={sizeInfo:ZA,name:e||"edgeLabel"},e=(e&&e.includes("Guide")&&(i.fontsize=12),new cv($.extend({},t?$A:ey,i)));return t&&(e.addEventListener("mouseover",function(){n.setSelected(!0,"edgeLabel")}),e.addEventListener("mouseleave",function(){n.setSelected(!1,"edgeLabel")}),e.addEventListener("click",function(){n.isNew||viewer.measuringTool.isAdding||viewer.focusOnObject(n,"measure")})),e.visible=!1,e.measure=this,e.sprite.material.depthTestWhenPick=!0,Potree.Utils.setObjectLayers(e,"measure"),this.add(e),"MulDistance"==this.measureType&&(e.visiMap=new Map),e}},{key:"createAreaLabel",value:function(){return this.createCenterLabel("areaLabel")}},{key:"createTotalDisLabel",value:function(){return this.createCenterLabel("totalDisLabel")}},{key:"createCenterLabel",value:function(e){var t=this,e=new cv($.extend({},$A,{sizeInfo:ZA,name:e,disToLine:0,fontsize:16*qA}));return e.addEventListener("mouseover",function(){t.isNew||t.setSelected(!0,"centerLabel")}),e.addEventListener("mouseleave",function(){t.isNew||t.setSelected(!1,"centerLabel")}),e.addEventListener("click",function(){t.isNew||viewer.measuringTool.isAdding||viewer.focusOnObject(t,"measure")}),Potree.Utils.setObjectLayers(e,"measure"),ne.updateVisible(e,"setVisible",!1),e}},{key:"getMarkerMaterial",value:function(e){return QA||(QA={default:new sv($.extend({},YA,{transparent:!0,opacity:1,map:WA.load(Potree.resourcePath+"/textures/pic_point_s32.png"),useDepth:!0,mapScale:XA})),select:new R({transparent:!0,opacity:1,depthTest:!1,map:WA.load(Potree.resourcePath+"/textures/pic_point32.png")})},(h.markerMats=QA).select.map.repeat.set(1/XA,1/XA),QA.select.map.offset.set((XA-1)/2/XA,(XA-1)/2/XA)),QA[e]}},{key:"getLineMat",value:function(e){return(h.lineMats=h.lineMats?h.lineMats:{edgeDefault:av.createFatLineMat($.extend({},YA,{color:yv.measure.default.color,lineWidth:yv.measure.lineWidth,useDepth:!0,dashWithDepth:!0,dashed:!0,dashSize:.04,gapSize:.04,transparent:!0,opacity:yv.measure.default.opacity,depthTestWhenPick:!0})),edgeSelect:av.createFatLineMat($.extend({},YA,{color:yv.measure.highlight.color,dashSize:.5,gapSize:.2,lineWidth:yv.measure.lineWidth,transparent:!0,opacity:yv.measure.highlight.opacity})),guide:av.createFatLineMat($.extend({},YA,{color:yv.measure.guide.color,dashSize:.1,gapSize:.02,dashed:!0,lineWidth:yv.measure.lineWidth/2}))})[e]}},{key:"createAreaPlane",value:function(){return jA||(jA={default:new sv($.extend({},YA,{color:JA,side:ve,opacity:.2,transparent:!0,useDepth:!0})),selected:new R({color:JA,side:ve,opacity:.3,transparent:!0})},h.planeMats=jA),I(h,"createAreaPlane",this,3)([jA.default])}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.markers[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"getPointsPos2d",value:function(n,e){var i=this,t=this.pointsPos2d.get(n);return!e&&t||(e=this.points.map(function(e){var t=Potree.Utils.getPos2d(e,n,viewer.renderArea);return t.pos3d=e.clone(),t.object=i,t}),this.pointsPos2d.set(n,e),console.log("updatePointsPos2d",this.uuid,n.name)),this.pointsPos2d.get(n)}},{key:"transformData",value:function(e){"Point"==e.measureType?(e.showCoordinates=!0,e.closed=!0,e.maxMarkers=1,e.minMarkers=1):"Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2):"MulDistance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.minMarkers=2):"MulDistance Ring"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.showArea=!0,e.closed=!0,e.minMarkers=3):"Ver MulDistance"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.minMarkers=2,e.faceDirection="vertical",e.unableDragAtMap=!0):"Hor MulDistance"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.minMarkers=2,e.faceDirection="horizontal"):"Ver Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2,e.faceDirection="vertical",e.unableDragAtMap=!0):"Hor Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2,e.faceDirection="horizontal"):"Area"==e.measureType?(e.showDistances=!0,Potree.settings.areaAtNotPlane||(e.atPlane=!0),e.showEdges=!0,e.closed=!0,e.minMarkers=3):"Hor Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=3,e.faceDirection="horizontal"):"Ver Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=3,e.faceDirection="vertical",e.unableDragAtMap=!0):"Rect Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4):"Hor Rect Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4,e.isRect=!0,e.faceDirection="horizontal"):"Ver Rect Area"==e.measureType&&(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4,e.isRect=!0,e.faceDirection="vertical",e.unableDragAtMap=!0),e.atPlane&&e.closed&&(e.showArea=!0),I(h,"transformData",this,3)([e])}},{key:"setUnitSystem",value:function(e){e!=this.unitSystem&&(this.unitSystem=e,this.update())}},{key:"reDraw",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;I(h,"reDraw",this,3)([e]),"Distance"==this.measureType&&(this.shouldShowHorVerGuide=!1,this.setEdgesDisplay(!1)),this.showArea&&(this.area={value:0},this.areaLabel)&&ne.updateVisible(this.areaLabel,"setVisible",!1),this.totalDisLabel&&this.showTotalDis&&ne.updateVisible(this.totalDisLabel,"setVisible",!1),viewer.inputHandler.dispatchEvent({type:"measuring",v:!0,cause:"reDraw",object:this,situation:"dragging"})}}])}();function ry(e,t){t?(new Se(Potree.config.measure.highlight.color),e.sprite.material.useDepth=!1):e.sprite.material.useDepth=!0,e.updateTexture()}var ay=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).undoList=[],t.redoList=[],t.applyData=e.applyData,t.getData=e.getData,t.dataBefore,(e.viewer||viewer).inputHandler.addEventListener("keydown",function(e){90==e.keyCode&&e.event.ctrlKey?t.undo():89==e.keyCode&&e.event.ctrlKey&&t.redo()}),t}return v(n,Qn),A(n,[{key:"undo",value:function(){var e,t;0<this.undoList.length&&(t=this.undoList.pop(),(e=this.applyData?!this.applyData(t.before):e)||this.redoList.push(t),e&&this.undo(),this.dispatchEvent("undo"))}},{key:"redo",value:function(){this.undoList.length;var e=this.redoList.pop();e&&(this.undoList.push(e),this.applyData&&this.applyData(e.after),this.dispatchEvent("redo"))}},{key:"beforeChange",value:function(e){this.dataBefore||(e=this.getData(e))&&(this.dataBefore=e)}},{key:"afterChange",value:function(e){this.dataBefore&&(this.writeIn({before:this.dataBefore,after:this.getData(e)}),this.dataBefore=null)}},{key:"writeIn",value:function(e){this.redoList.length=0,this.undoList.push(e)}},{key:"clear",value:function(){this.redoList.length=0,this.undoList.length=0,this.dataBefore=null}}])}(),oy={},sy=function(){function i(e){function t(){n.setHorizonHeight(n.horizonType,!0),n.needsCompute=!0,n.getBound(),n.dispatchEvent("updated")}var n;ue(this,i),(n=le(this,i,[e])).isPrism=!0,n.volumeInfo={},n.needsCompute=!0,n.setClipBox(),n.setTopOrBtm("zMin"),n.setTopOrBtm("zMax"),n.setHorizonHeight("btm");return n.addEventListener("marker_dropped",t),n.addEventListener("changeByHistory",t),n.addEventListener("changed",t),n.updateAreaPlane(),n.getBound(),n.addEventListener("needsCompute",function(){n.needsCompute=!0},10),n}return v(i,iy),A(i,[{key:"needsCompute",get:function(){return this.needsCompute_},set:function(e){this.needsCompute_="byVolume"==e?null==this.volumeInfo.Vupper:!!e}},{key:"setHorizonHeight",value:function(e){var t=this.horizonZ;if("number"==typeof e)this.horizonType="number",this.horizonZ=e;else{if(e&&(this.horizonType=e),this.horizonType||(this.horizonType="btm"),"number"==this.horizonType)return;e=this.points.map(function(e){return e.z}).sort(function(e,t){return e-t});this.horizonZ="btm"==this.horizonType?e[0]:e[this.points.length-1]}this.horizonZ!=t&&(this.needsCompute=!0,this.update(),this.dispatchEvent("horizonZChanged"))}},{key:"setBaseModel",value:function(e,t){this.baseModel=e,this.modelHaventLoad=t,Potree.Utils.updateVisible(this.areaPlane,"unuseHorizonH",!e&&!t)}},{key:"setClipBox",value:function(e){this.clipBoxes=e||[]}},{key:"setTopOrBtm",value:function(e,t){null!=t?(this[e]=t,this.updatePrismLines()):this[e]=viewer.bound.boundingBox["zMin"==e?"min":"max"].z,this.getBound(),this.needsCompute=!0}},{key:"getBound",value:function(){var e=Potree.math.getBound(this.points);e.min.z=this.zMin,e.max.z=this.zMax,this.prismBound=e}},{key:"setVolumeInfo",value:function(e){this.volumeInfo=e,this.getVolumeString(),this.needsCompute=!1}},{key:"getVolumeString",value:function(){this.volumeInfo&&null!=this.volumeInfo.Vupper&&(this.VupperString=this.getConvertString(this.volumeInfo.Vupper,"volume",!0),this.VlowerString=this.getConvertString(this.volumeInfo.Vlower,"volume",!0),this.highestString=this.getConvertString(this.volumeInfo.highest,"distance",!0),this.lowestString=this.getConvertString(this.volumeInfo.lowest,"distance",!0))}},{key:"getConvertString",value:function(e,t,n){return n?viewer.unitConvert.convert(e,t,Potree.settings.precision,this.unitSystem,null,{imperial:{restrictUnit:"Foot"},metric:{restrictUnit:"Meter"}}):I(i,"getConvertString",this,3)([e,t])}},{key:"setUnitSystem",value:function(e){var t=this.unitSystem;I(i,"setUnitSystem",this,3)([e]),e!=t&&this.getVolumeString()}},{key:"getCenter",value:function(e){return"areaPlaneCenter"==e?this.areaPlaneCenter:I(i,"getCenter",this,3)([])}},{key:"update",value:function(){I(i,"update",this,1).apply(this,arguments),this.updatePrismLines()}},{key:"getTransformationMatrix",value:function(e){var t=new Me,n=this.zMin,i=1/(this.zMax-n),n=new Oe(0,0,-.5-n*i),i=new Oe(1,1,i);return t.compose(n,new ii,i),(new Me).multiplyMatrices(t,e.transformMatrix).transpose()}},{key:"changeStyleForScreenshot",value:function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=n.hideLabel,r=n.showName,a=Potree.settings.prismHeightColor;if(.01<this.volumeInfo.Vupper&&.01<this.volumeInfo.Vlower)l=a.every.color;else if(this.volumeInfo.Vupper>this.volumeInfo.Vlower){for(var o=a.dig.length-1;0<=o;o--)if(this.volumeInfo.Vupper>=a.dig[o].min){l=a.dig[o].color;break}}else for(var s=a.fill.length-1;0<=s;s--)if(this.volumeInfo.Vlower>=a.fill[s].min){l=a.fill[s].color;break}var l,n=(l=new Se(l[0]/255,l[1]/255,l[2]/255)).getHexString();e?(Potree.Utils.updateVisible(this.areaPlane,"screenshot",!0,2,"add"),(e=oy[n])||(e=new R({color:l,transparent:!0,opacity:.6,side:ve}),oy[n]=e),this.oldAreaPlaneMat=this.areaPlane.material,this.areaPlane.material=e,i&&Potree.Utils.updateVisible(this.areaLabel,"screenshot-single",!1),r&&this.areaLabel.setText([this.name,this.area.string]),this.markers.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot-Prism",!1)}),this.edges.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot-Prism",!1)}),this.styleRecover=function(){t.areaPlane.material=t.oldAreaPlaneMat,i&&Potree.Utils.updateVisible(t.areaLabel,"screenshot-single",!0),r&&t.areaLabel.setText(t.area.string),t.markers.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot-Prism",!0)}),t.edges.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot-Prism",!0)}),t.styleRecover=null}):(this.styleRecover&&this.styleRecover(),Potree.Utils.updateVisible(this.areaPlane,"screenshot",!1,2,"cancel"))}},{key:"dispose",value:function(){I(i,"dispose",this,3)([]),this.clipBoxes.forEach(function(e){return viewer.scene.removeVolume(e)})}},{key:"setEditState",value:function(t){t=!!t,this.editing=t,this.dontHighlight=!t,this.clipBoxes.forEach(function(e){Potree.Utils.updateVisible(e,"hidden",t),e.clip=t})}}])}(),ly=function(){function a(e){ue(this,a),(t=le(this,a)).viewer=e,t.renderer=e.renderer,t.viewer.addEventListener("start_inserting_measurement",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.showLabels=!0,t.scene=new Fs,t.scene.name="scene_measurement",t.viewer.inputHandler.registerInteractiveScene(t.scene),t.history=new ay({applyData:function(e){if(e.measure.parent&&e.measure.visible)return(e=Potree.Common.CloneObject(e)).measure.reDraw(),e.measure.initData(e),e.measure.isNew=e.isNew,e.measure.dispatchEvent("changeByHistory"),e.measure.facePlane=e.facePlane&&e.facePlane.clone(),e.measure.cannotConfirmNormal=e.cannotConfirmNormal,!0},getData:function(e){return{measure:e,points:e.points.map(function(e){return e.clone()}),dataset_points:e.dataset_points?e.dataset_points.map(function(e){return e&&e.clone()}):null,points_datasets:e.points_datasets.slice(),datasetId:e.datasetId,isNew:e.isNew,facePlane:e.facePlane&&e.facePlane.clone(),cannotConfirmNormal:e.cannotConfirmNormal}}}),t.onRemove=function(e){e.measurement.dispose()},t.onAdd=function(e){t.scene.add(e.measurement)};var t,n,i=q(e.scene.measurements);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.onAdd({measurement:r})}}catch(e){i.e(e)}finally{i.f()}return e.addEventListener("camera_changed",t.update.bind(t),{importance:10}),Potree.config.measure.mulLabelHideFaraway&&(e.addEventListener("raycaster",t.beforeDraw.bind(t),{importance:10}),e.addEventListener("render.begin",t.beforeDraw.bind(t),{importance:10}),e.addEventListener("render.begin2",t.beforeDraw.bind(t),{importance:10})),e.addEventListener("render.pass.perspective_overlay",t.render.bind(t)),e.addEventListener("scene_changed",t.onSceneChange.bind(t)),e.scene.addEventListener("measurement_added",t.onAdd),e.scene.addEventListener("measurement_removed",t.onRemove),e.addEventListener("resize",t.setSize.bind(t)),t}return v(a,Qn),A(a,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListener("measurement_added",this.onAdd),e.oldScene.removeEventListener("measurement_removed",this.onRemove)),e.scene.addEventListener("measurement_added",this.onAdd),e.scene.addEventListener("measurement_removed",this.onRemove)}},{key:"createMeasureFromData",value:function(e){e=new("MulDistance Ring"==e.measureType?sy:iy)(e);if(!e.failBuilded)return viewer.scene.addMeasurement(e),e.guideLine&&(e.guideLine.visible=!1),e}},{key:"beforeDraw",value:function(a){"mapViewport"==a.viewport.name&&!viewer.mapViewer.attachedToViewer||viewer.scene.measurements.forEach(function(e){if("MulDistance"==e.measureType&&!(e.isNew?e.points.length<4:e.points.length<3))for(var t=e.points.length-1,n=0;n<=t;n++)if(e.closed||n!=t){var i=e.edgeLabels[n],r=i.visiMap.get(a.viewport.camera);if(null==r)return e.getEdgeLabelVisi(a.viewport);Potree.Utils.updateVisible(i,"tooFar",!1!==r)}})}},{key:"update",value:function(t){viewer.inputHandler.measuring&&Potree.settings.adsorption&&viewer.scene.measurements.forEach(function(e){e.getPointsPos2d(t.viewport,!0)}),Potree.config.measure.mulLabelHideFaraway&&(t.changeInfo.projectionChanged||"PerspectiveCamera"==t.viewport.camera.type&&t.changeInfo.positionChanged)&&viewer.scene.measurements.forEach(function(e){"MulDistance"!=e.measureType||(e.isNew?e.points.length<4:e.points.length<3)||e.getEdgeLabelVisi(t.viewport)})}},{key:"setSize",value:function(e){}},{key:"updateLabelZIndex",value:function(t){t.forEach(function(n,e){n.base=t[e-1]?t[e-1].base+t[e-1].labels.length:0,n.labels.sort(function(e,t){return t.pos2d.z-e.pos2d.z}).forEach(function(e,t){$(e.elem).css("z-index",n.base+t)})})}},{key:"changeEditMode",value:function(e){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"addPoint"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"delPoint"}),e&&("addPoint"==e?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"addPoint"}):viewer.dispatchEvent({type:"CursorChange",action:"add",name:"delPoint"})),this.editMode=e}},{key:"editStateChange",value:function(e){e.state||viewer.scene.measurements.some(function(e){return e.isEditing})?viewer.dispatchEvent({type:"measureMovePoint"}):viewer.dispatchEvent({type:"endMeasureMove"})}},{key:"startInsertion",value:function(){var n,i=this,r=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},a=1<arguments.length?arguments[1]:void 0,o=2<arguments.length?arguments[2]:void 0,s=(this.viewer.renderer.domElement,new("MulDistance Ring"==r.measureType?sy:iy)(r)),l=(this.scene.add(s),s.isNew=!0,this.viewer.dispatchEvent({type:"start_inserting_measurement",measure:s}),s.addEventListener("editStateChange",this.editStateChange.bind(this)),s.editStateChange(!0),this.isAdding=!0,function(e){var t,n=s.points.length;e.button==oe.LEFT||e.isTouch?n>=s.maxMarkers?u({finish:!0}):(i.history.beforeChange(s),t=s.cloneMarker(n-1,n),r.isRect&&3==s.markers.length?s.cloneMarker(0,3):(s.markers[n].visible=!1,s.edges[n].visible=!1),s.edges[n-1].visible=!0,s.markers[n-1].visible=!0,t.isDragging=!0,i.history.afterChange(s),s.continueDrag(t,e)):e.button===oe.RIGHT&&(!(e.pressDistance<Potree.config.clickMaxDragDis)||s.atPlane&&s.closed&&!s.isRect&&s.point2dInfo&&s.intersectSelf(s.point2dInfo.points2d.slice(0,s.point2dInfo.points2d.length-1))?s.continueDrag(null,e):u(e))}),u=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(s.isNew)if(null!=r.minMarkers&&!e.finish&&s.markers.length<=r.minMarkers)0<s.markers.length&&(s.markers[0].removeEventListener("mousedown",u),s.reDraw(),i.viewer.addEventListener("global_click",p,{importance:10}),s.editStateChange(!0));else{var t=s.markers[s.markers.length-1],t=(s.markers.length>r.minMarkers&&(s.removeMarker(s.points.length-1),s.markers[0].removeEventListener("mouseover",d),s.markers[0].removeEventListener("mouseleave",h),s.markers[0].removeEventListener("click",c),e.byClickMarker)&&s.markers.length>r.minMarkers&&Date.now()-t.createTime<10&&s.removeMarker(s.points.length-1),s.isNew=!1,s.points.length);if(t&&(s.markers[t-1].visible=!0,s.edges[t-1].visible=!!s.closed,s.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),s.edges.forEach(function(e){e.dispatchEvent("addHoverEvent")}),s.update()),clearTimeout(n),i.viewer.removeEventListener("cancel_insertions",c),i.viewer.removeEventListener("global_click",p),i.viewer.removeEventListener("global_mousemove",f),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),viewer.inputHandler.dispatchEvent({type:"measuring",v:!1,cause:"stopInsertion",situation:"adding",object:s}),s.atPlane&&s.closed&&!s.isRect&&s.point2dInfo&&s.intersectSelf(s.point2dInfo.points2d))return o&&o();e.remove||a&&a(),i.isAdding=!1,s.dispatchEvent("createDone")}},c=(s.addEventListener("finish",u),function(e){e.measure&&e.measure!=s||!viewer.scene.measurements.includes(s)||!s.isNew||(!e.remove&&"cancel_insertions"!=e.type||viewer.scene.removeMeasurement(s),s.editStateChange(!1),s.cannotConfirmNormal=!1,s.guideLine&&(s.guideLine.visible=!1),u({finish:!0,remove:e.remove,byClickMarker:"click"==e.type}),i.viewer.inputHandler.drag&&(i.viewer.inputHandler.drag.object=null))}),d=(this.viewer.addEventListener("cancel_insertions",c),function(e){s.setMarkerSelected(e.object,"hover","single")}),h=function(e){s.setMarkerSelected(e.object,"unhover","single")},p=function(e){var t;if(!f(e)&&(!e.clickElement&&e.button!==oe.RIGHT))return(t=e.intersect&&(e.intersect.orthoIntersect||e.intersect.location))?("mapViewport"==e.drag.dragViewport.name&&(t=t.clone().setZ(viewer.mainViewport.camera.position.z)),(t=s.addMarker({point:t})).isDragging=!0,i.viewer.inputHandler.startDragging(t,{endDragFun:l,notPressMouse:!0}),e.drag=i.viewer.inputHandler.drag,s.dragMarker(e),s.dropMarker(e),1<s.maxMarkers&&(s.markers[1].visible=!1,s.edges[1].visible=!1),s.closed&&!s.isRect&&(s.markers[0].addEventListener("mouseover",d),s.markers[0].addEventListener("mouseleave",h),s.markers[0].addEventListener("click",c)),i.viewer.removeEventListener("global_click",p),e.consume&&e.consume(),{stopContinue:!0}):s.dispatchEvent("intersectNoPointcloud")},f=(viewer.inputHandler.dispatchEvent({type:"measuring",v:!0,cause:"startInsertion",situation:"adding",object:s}),this.viewer.addEventListener("global_click",p,{importance:10}),function(e){if(s.unableDragAtMap&&"mapViewport"==e.hoverViewport.name)return e.isTouch?viewer.dispatchEvent({type:"reticule_forbit",v:!0}):viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"}),!0;e.isTouch?viewer.dispatchEvent({type:"reticule_forbit",v:!1}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"})});s.unableDragAtMap&&this.viewer.addEventListener("global_mousemove",f);return s.addEventListener("changeByHistory",function(e){var t;s.isNew&&(t=s.markers[s.points.length-1],i.viewer.inputHandler.startDragging(t,{endDragFun:l,notPressMouse:!0}),(t=viewer.inputHandler.intersect&&(viewer.inputHandler.intersect.orthoIntersect||viewer.inputHandler.intersect.location))&&s.dragChange(t.clone(),s.points.length-1),r.isRect||(s.edges[s.points.length-1].visible=!1))}),this.viewer.scene.addMeasurement(s),s}},{key:"render",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};0!=this.scene.children.filter(function(e){return e.visible}).length&&(e=t.renderer||this.viewer.renderer,Potree.Utils.setCameraLayers(t.camera,["measure"]),viewer.dispatchEvent({type:"render.begin2",name:"measure",viewport:t.viewport,renderer:t.renderer}),e.render(this.scene,t.camera))}}])}();function uy(e,d){var h=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],t=new AbortController,n=t.signal,p=!1,i=null;return new Yy(function(u,c){i=c,fetch(e,{signal:n}).then(function(){var t=J(X().mark(function e(t){var n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.body.getReader(),i=0,r=t.headers.get("Content-Length"),r=r?parseInt(r):void 0,a=[];case 5:if(p){e.next=30;break}return e.prev=6,e.next=9,n.read();case 9:if(s=e.sent,o=s.value,s.done)return d&&d(100,"100%",o,r),h?(s=new Blob(a).arrayBuffer(),u(s)):u(),e.abrupt("break",30);e.next=16;break;case 16:i+=o.length,(l=s=void 0)!==r&&(s=i/r*100,l="".concat(s.toFixed(2),"%")),h&&a.push(o),d&&d(s,l,o,r)&&(h=!1),e.next=28;break;case 24:return e.prev=24,e.t0=e.catch(6),c(e.t0),e.abrupt("break",30);case 28:e.next=5;break;case 30:case"end":return e.stop()}},e,null,[[6,24]])}));return function(e){return t.apply(this,arguments)}}())},function(){t.abort(),i(new Xy("Fetch aborted.")),p=!0})}function cy(e,t,n){return Math.max(Math.min(e,n),t)}function dy(){return performance.now()/1e3}function hy(e){if(e.geometry&&(e.geometry.dispose(),e.geometry=null),e.material&&(e.material.dispose(),e.material=null),e.children){var t,n=q(e.children);try{for(n.s();!(t=n.n()).done;){var i=t.value;hy(i)}}catch(e){n.e(e)}finally{n.f()}}}function py(t,n){return new Promise(function(e){window.setTimeout(function(){e(t())},n?1:50)})}function fy(){switch(0<arguments.length&&void 0!==arguments[0]?arguments[0]:0){case 1:return 9;case 2:return 24}return 0}function my(e){return Math.floor(128*e)+128}function vy(e){return Math.floor(128*ew(e))+128}function gy(e,t){return 0===t?e:1===t||2===t&&!(2<arguments.length&&void 0!==arguments[2]&&arguments[2])?Le.DataUtils.fromHalfFloat(e):2===t?$y(e):void 0}function Ay(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]&&arguments[3];return 0===n?e.getFloat32(4*t,!0):1===n||2===n&&!i?e.getUint16(2*t,!0):e.getUint8(t,!0)}function yy(e,t){return(e&(t=(1<<t)-1))/t}function wy(e,t){e.x=yy(t>>>21,11),e.y=yy(t>>>11,10),e.z=yy(t,11)}function by(e,t,n){return e*(1-n)+t*n}function xy(e,t){return null==(e=e.properties.find(function(e){return e.name===t&&e.storage}))?void 0:e.storage}var Ey,Cy,By,My,Sy,Ty,_y,Py,Dy,Iy,ky,Ry,Ly,Fy,Oy,Uy,Nh=function(){function a(e){ue(this,a),(t=le(this,a)).viewer=e,t.renderer=e.renderer,t.addEventListener("start_inserting_profile",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.scene=new Fs,t.scene.name="scene_profile",t.light=new gd(16777215,1),t.scene.add(t.light),t.viewer.inputHandler.registerInteractiveScene(t.scene),t.onRemove=function(e){return t.scene.remove(e.profile)},t.onAdd=function(e){return t.scene.add(e.profile)};var t,n,i=q(e.scene.profiles);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.onAdd({profile:r})}}catch(e){i.e(e)}finally{i.f()}return e.addEventListener("update",t.update.bind(t)),e.addEventListener("render.pass.perspective_overlay",t.render.bind(t)),e.addEventListener("scene_changed",t.onSceneChange.bind(t)),e.scene.addEventListener("profile_added",t.onAdd),e.scene.addEventListener("profile_removed",t.onRemove),t}return v(a,mm),A(a,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListeners("profile_added",this.onAdd),e.oldScene.removeEventListeners("profile_removed",this.onRemove)),e.scene.addEventListener("profile_added",this.onAdd),e.scene.addEventListener("profile_removed",this.onRemove)}},{key:"startInsertion",value:function(){function t(e){var t,n,i;e.button===oe.LEFT?(a.points.length<=1&&(t=(i=r.viewer.scene.getActiveCamera()).position.distanceTo(a.points[0]),n=r.viewer.renderer.getSize(new Re),i=ne.projectedRadius(1,i,t,n.width,n.height),a.setWidth(10/i)),a.addMarker(a.points[a.points.length-1].clone()),r.viewer.inputHandler.startDragging(a.spheres[a.spheres.length-1])):e.button===oe.RIGHT&&o.callback()}var r=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=this.viewer.renderer.domElement,a=new If,o=(a.name=e.name||"Profile",this.dispatchEvent({type:"start_inserting_profile",profile:a}),this.scene.add(a),{callback:null});return o.callback=function(e){a.removeMarker(a.points.length-1),n.removeEventListener("mouseup",t,!1),r.viewer.removeEventListener("cancel_insertions",o.callback)},this.viewer.addEventListener("cancel_insertions",o.callback),n.addEventListener("mouseup",t,!1),a.addMarker(new Oe(0,0,0)),this.viewer.inputHandler.startDragging(a.spheres[a.spheres.length-1]),this.viewer.scene.addProfile(a),a}},{key:"update",value:function(){var e,t=this.viewer.scene.getActiveCamera(),n=this.viewer.scene.profiles,i=this.viewer.renderer.getSize(new Re),r=i.width,a=i.height,o=(this.light.position.copy(t.position),q(n));try{for(o.s();!(e=o.n()).done;){var s,l=q(e.value.spheres);try{for(l.s();!(s=l.n()).done;){var u=s.value,c=t.position.distanceTo(u.getWorldPosition(new Oe)),d=15/ne.projectedRadius(1,t,c,r,a);u.scale.set(d,d,d)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){o.e(e)}finally{o.f()}}},{key:"render",value:function(){this.viewer.renderer.render(this.scene,this.viewer.scene.getActiveCamera())}}])}(),Ny=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).viewer=e,t.scene=new Fs,e.addEventListener("update",t.update.bind(t)),e.addEventListener("render.pass.perspective_overlay",t.render.bind(t)),e.addEventListener("scene_changed",t.onSceneChange.bind(t)),t}return v(n,mm),A(n,[{key:"onSceneChange",value:function(e){console.log("scene changed")}},{key:"startInsertion",value:function(){var g=this,e=this.viewer.renderer.domElement,A=new Pf,y=(A.position.set(12345,12345,12345),A.showVolumeLabel=!1,A.visible=!1,A.update(),this.viewer.scene.addVolume(A),this.importance=10,$('<div style="position: absolute; border: 2px solid white; pointer-events: none; border-style:dashed"></div>')),w=($(e.parentElement).append(y),y.css("right","10px"),y.css("bottom","10px"),function(e){A.visible=!0;var t=e.drag.start,n=e.drag.end,i=new Bh,t=(i.expandByPoint(t),i.expandByPoint(n),y.css("left","".concat(i.min.x,"px")),y.css("top","".concat(i.min.y,"px")),y.css("width","".concat(i.max.x-i.min.x,"px")),y.css("height","".concat(i.max.y-i.min.y,"px")),e.viewer.scene.getActiveCamera()),n=e.viewer.renderer.getSize(new Re),i=new Re(t.right-t.left,t.top-t.bottom),r=(new Re).addVectors(e.drag.end,e.drag.start).multiplyScalar(.5),r=ne.mouseToRay(r,t,n.width,n.height),a=(new Re).subVectors(e.drag.end,e.drag.start);a.divide(n).multiply(i),A.position.copy(r.origin),A.up.copy(t.up),A.rotation.copy(t.rotation),A.scale.set(a.x,a.y,1e5),e.consume()}),b=function(e){g.importance=0,$(y).remove(),g.viewer.inputHandler.deselectAll(),g.viewer.inputHandler.toggleSelection(A);var t,n,i,r=e.viewer.scene.getActiveCamera(),a=e.viewer.renderer.getSize(new Re),e=(new Re).addVectors(e.drag.end,e.drag.start).multiplyScalar(.5),o=ne.mouseToRay(e,r,a.width,a.height),s=(new Th(o.origin,(new Oe).addVectors(o.origin,o.direction)),g.removeEventListener("drag",w),g.removeEventListener("drop",b),[]),l=[],u=q(g.viewer.scene.pointclouds);try{for(u.s();!(t=u.n()).done;){var c,d,h,p,f,m,v=t.value;v.visible&&((c=r.clone()).left=-A.scale.x/2,c.right=+A.scale.x/2,c.top=+A.scale.y/2,c.bottom=-A.scale.y/2,c.near=-A.scale.z/2,c.far=+A.scale.z/2,c.rotation.copy(A.rotation),c.position.copy(A.position),c.updateMatrix(),c.updateMatrixWorld(),c.updateProjectionMatrix(),c.matrixWorldInverse.copy(c.matrixWorld).invert(),d=new _i(c.getWorldPosition(new Oe),c.getWorldDirection(new Oe)),h=new _i(d.origin.clone().add(d.direction.clone().multiplyScalar(A.scale.z)),d.direction.clone().multiplyScalar(-1)),p={width:8,height:8,pickWindowSize:8,all:!0,pickClipped:!0,pointSizeType:_m.FIXED,pointSize:1},f=v.pick(viewer,c,d,p),c.rotateX(Math.PI),c.updateMatrix(),c.updateMatrixWorld(),c.updateProjectionMatrix(),c.matrixWorldInverse.copy(c.matrixWorld).invert(),m=v.pick(viewer,c,h,p),s.push.apply(s,Fe(f)),l.push.apply(l,Fe(m)))}}catch(e){u.e(e)}finally{u.f()}0<s.length&&0<l.length&&(n=new Th(o.origin,(new Oe).addVectors(o.origin,o.direction)),e=s.map(function(e){return n.closestPointToPoint(e.position,!1,new Oe)}).sort(function(e,t){return o.origin.distanceTo(e)-o.origin.distanceTo(t)})[0],a=l.map(function(e){return n.closestPointToPoint(e.position,!1,new Oe)}).sort(function(e,t){return o.origin.distanceTo(t)-o.origin.distanceTo(e)})[0],i=e.distanceTo(a),e=(new Oe).addVectors(e,a).multiplyScalar(.5),A.scale.z=1.1*i,A.position.copy(e)),A.clip=!0};return this.addEventListener("drag",w),this.addEventListener("drop",b),viewer.inputHandler.addInputListener(this),A}},{key:"update",value:function(e){}},{key:"render",value:function(){this.viewer.renderer.render(this.scene,this.viewer.scene.getActiveCamera())}}])}(),Dd=function(){function i(e,t){ue(this,i),(n=le(this,i)).light=e,n.color=t,n.updateMatrix(),n.updateMatrixWorld();var n,e=new ju(1,32,32),t=new cc,e=(n.sphere=new Q(e,t),n.sphere.scale.set(.5,.5,.5),n.add(n.sphere),new Float32Array([0,0,0,0,0,-1,0,0,0,-1,-1,-1,0,0,0,1,-1,-1,0,0,0,1,1,-1,0,0,0,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1])),t=new V,e=(t.setAttribute("position",new H(e,3)),new wl);return n.frustum=new _l(t,e),n.add(n.frustum),n.update(),n}return v(i,Z),A(i,[{key:"update",value:function(){this.light.updateMatrix(),this.light.updateMatrixWorld();var e=this.light.position,t=(new Oe).addVectors(this.light.position,this.light.getWorldDirection(new Oe).multiplyScalar(-1)),t=(new ii).setFromRotationMatrix((new Me).lookAt(e,t,new Oe(0,0,1))),t=(this.setRotationFromQuaternion(t),this.position.copy(e),0<this.light.distance?this.light.distance:1e3),e=t*Math.tan(.5*this.light.angle);this.frustum.scale.set(e,e,t)}}])}(),zy=function(){function o(n){ue(this,o),(i=le(this,o)).viewer=n,i.modesEnabled={},i.style="singleMode",i.scene=new Fs,i.selection=[],i.pivot=new Oe,i.dragging=!1,i.showPickVolumes=!1,i.viewer.inputHandler.registerInteractiveScene(i.scene),i.viewer.inputHandler.addEventListener("selection_changed",function(e){i.selection=e.selection}),i.viewer.addEventListener("global_touchstart",function(e){i.update()}),i.viewer.addEventListener("global_mousemove",function(e){i.onPointerMove()});var i,e=Potree.config.axis.x.color,t=Potree.config.axis.y.color,r=Potree.config.axis.z.color,a=Potree.config.axis.xyz.color,a=(i.activeHandle=null,i.scaleHandles={"scale.x+":{name:"scale.x+",node:new Z,color:e,alignment:[1,0,0]},"scale.x-":{name:"scale.x-",node:new Z,color:e,alignment:[-1,0,0]},"scale.y+":{name:"scale.y+",node:new Z,color:t,alignment:[0,1,0]},"scale.y-":{name:"scale.y-",node:new Z,color:t,alignment:[0,-1,0]},"scale.z+":{name:"scale.z+",node:new Z,color:r,alignment:[0,0,1]},"scale.z-":{name:"scale.z-",node:new Z,color:r,alignment:[0,0,-1]},lines:{name:"lines",node:new Z,dontScale:!0}},i.focusHandles={"focus.x+":{name:"focus.x+",node:new Z,color:e,alignment:[1,0,0]},"focus.x-":{name:"focus.x-",node:new Z,color:e,alignment:[-1,0,0]},"focus.y+":{name:"focus.y+",node:new Z,color:t,alignment:[0,1,0]},"focus.y-":{name:"focus.y-",node:new Z,color:t,alignment:[0,-1,0]},"focus.z+":{name:"focus.z+",node:new Z,color:r,alignment:[0,0,1]},"focus.z-":{name:"focus.z-",node:new Z,color:r,alignment:[0,0,-1]}},i.translationHandles={"translation.x":{name:"translation.x",node:new Z,color:e,alignment:[1,0,0]},"translation.y":{name:"translation.y",node:new Z,color:t,alignment:[0,1,0]},"translation.z":{name:"translation.z",node:new Z,color:r,alignment:[0,0,1]},"translation.xyz":{name:"translation.xyz",node:new Z,color:a,alignment:[0,0,0],alignment2:[1,1,1]},"translation.plane.xy":{name:"translation.plane.xy",node:new Z,color:r,alignment:[0,0,1],alignment2:[1,1,0]},"translation.plane.yz":{name:"translation.plane.yz",node:new Z,color:e,alignment:[1,0,0],alignment2:[0,1,1]},"translation.plane.xz":{name:"translation.plane.xz",node:new Z,color:t,alignment:[0,1,0],alignment2:[1,0,1]}},i.rotationHandles={"rotation.x":{name:"rotation.x",node:new Z,color:e,alignment:[1,0,0]},"rotation.y":{name:"rotation.y",node:new Z,color:t,alignment:[0,1,0]},"rotation.z":{name:"rotation.z",node:new Z,color:r,alignment:[0,0,1]}},i.handles=Object.assign({},i.scaleHandles,{},i.translationHandles,i.rotationHandles),i.pickVolumes=[],i.initializeScaleHandles(),i.initializeFocusHandles(),i.initializeTranslationHandles(),i.initializeRotationHandles(),new Wl);a.vertices.push(new Oe(-.5,-.5,.5)),a.vertices.push(new Oe(.5,-.5,.5)),a.vertices.push(new Oe(.5,-.5,.5)),a.vertices.push(new Oe(.5,-.5,-.5)),a.vertices.push(new Oe(.5,-.5,-.5)),a.vertices.push(new Oe(-.5,-.5,-.5)),a.vertices.push(new Oe(-.5,-.5,-.5)),a.vertices.push(new Oe(-.5,-.5,.5)),a.vertices.push(new Oe(-.5,.5,.5)),a.vertices.push(new Oe(.5,.5,.5)),a.vertices.push(new Oe(.5,.5,.5)),a.vertices.push(new Oe(.5,.5,-.5)),a.vertices.push(new Oe(.5,.5,-.5)),a.vertices.push(new Oe(-.5,.5,-.5)),a.vertices.push(new Oe(-.5,.5,-.5)),a.vertices.push(new Oe(-.5,.5,.5)),a.vertices.push(new Oe(-.5,-.5,.5)),a.vertices.push(new Oe(-.5,.5,.5)),a.vertices.push(new Oe(.5,-.5,.5)),a.vertices.push(new Oe(.5,.5,.5)),a.vertices.push(new Oe(.5,-.5,-.5)),a.vertices.push(new Oe(.5,.5,-.5)),a.vertices.push(new Oe(-.5,-.5,-.5)),a.vertices.push(new Oe(-.5,.5,-.5)),i.frame=new _l(a,new wl({color:16776960})),i.scene.add(i.frame),i.setModeEnable(["scale","translation","rotation"]),Potree.Utils.setObjectLayers(i.scene,"transformationTool"),i.scene.traverse(function(e){e.pickDontCheckDis=!0});return i.history=new ay({applyData:function(e){if(function(e){for(;e.parent;)e=e.parent;if(e instanceof Fs)return!0}(e.object))return e.matrix.decompose(e.object.position,e.object.quaternion,e.object.scale),i.dispatchEvent("changeByHistory"),n.dispatchEvent("content_changed"),!0},getData:function(e){return e}}),i.addEventListener("transformed",function(e){var t=n.transformationTool.selection[0];i.history.beforeChange({object:t,matrix:e.matrixBefore.clone()}),i.viewer.dispatchEvent("content_changed")}),i.addEventListener("stopDrag",function(e){var t=n.transformationTool.selection[0];t&&i.history.afterChange({object:t,matrix:t.matrix.clone()})}),i}return v(o,Qn),A(o,[{key:"setModeEnable",value:function(){var r=this,a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],o=0;["translation","scale","rotation"].forEach(function(e){var t,n=r[e+"Handles"],i=a.includes(e);for(t in n)Potree.Utils.updateVisible(n[t].node,"modeForce",!!i);r.modesEnabled[e]=!!i,i&&o++}),"singleMode"==this.style&&1<o?this.changeStyle("mixedModes"):"mixedModes"==this.style&&1==o&&this.changeStyle("singleMode")}},{key:"changeStyle",value:function(t){var n=this,i="singleMode"==t?30:25,r="singleMode"==t?15:10;["x","y","z"].forEach(function(e){n.translationHandles["translation."+e].node.children.forEach(function(e){e.name.includes("arrow")?Potree.Utils.updateVisible(e,"modeStyle","singleMode"==t):e.name.includes("handle")&&(e.material.lineWidth="singleMode"==t?5:7)}),n.rotationHandles["rotation."+e].translateNode.scale.set(i,i,i)}),["xy","yz","xz"].forEach(function(e){e=n.translationHandles["translation.plane."+e];e.node.children[0].scale.set(r,r,r),e.node.children[0].position.fromArray(e.alignment2).multiplyScalar(1.5*r)}),Potree.Utils.updateVisible(this.scaleHandles.lines.node,"modeStyle","singleMode"==t),this.style=t}},{key:"initializeTranslationHandles",value:function(){for(var m=this,v=new Jl(1,1,1),g=100,A=10,y=new Xl(0,4,A,12,1,!1),w=(new ii).setFromAxisAngle(new Oe(1,0,0),-Math.PI/2),b=new Lu(5,0),x=new _a(1,1),E=0,C=Object.keys(this.translationHandles);E<C.length;E++)!function(){var n,e,t,i,r,a,o,s=C[E],l=m.handles[s],u=l.node,c=(m.scene.add(u),u.name=s,ie(Oe,Fe(l.alignment))),d=!1,h={color:l.color,opacity:.6,transparent:!0,side:s.includes("plane")?ve:fe},p=new R(h),f=new cc({opacity:.2,transparent:!0,visible:m.showPickVolumes});s.includes("xyz")?(t=b,d=!0,a=12):s.includes("plane")?(t=x,d=!0,e=ie(Oe,Fe(l.alignment2)),r=c,s.includes("xy")||s.includes("yz")||s.includes("xz")):(t=v,o=new Oe(0,0,g/2),i=av.createFatLine([o,o.clone().negate()],{lineWidth:6,mat:new av.createFatLineMat(h)}),r=c,a=10,o=new Oe(4,4,g+2*A),(h=new Q(y,p)).name="".concat(s,".arrow"),h.renderOrder=11,(c=h.position).set.apply(c,Fe(l.alignment)).multiplyScalar(g/2+A/2),h.lookAt(0,0,0),u.add(h),(c=h.clone()).position.negate(),c.lookAt(0,0,0),u.add(c),h.quaternion.multiply(w),c.quaternion.multiply(w)),(i=i||new Q(t,p)).name="".concat(s,".handle"),u.add(i),a&&(i.renderOrder=a),r&&i.lookAt(r),e&&i.position.copy(e),d?n=i:(n=new Q(t,f),o&&n.scale.copy(o)),n&&(i!=n?(i.add(n),n.name="".concat(s,".pick_volume")):n.name+=" & pick_volume",n.handle=s,m.pickVolumes.push(n)),u.setOpacity=function(e){s.includes("plane")&&(e=1-1.5*(1-e));var t={x:p.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){i.visible=0<t.x,n&&(n.visible=0<t.x),p.opacity=t.x,i.material.opacity=t.x,f.opacity=.5*t.x}),e.start()},n.addEventListener("drag",function(e){m.dragTranslationHandle(e)}),n.addEventListener("drop",function(e){m.dropTranslationHandle(e)})}()}},{key:"initializeScaleHandles",value:function(){for(var l=this,u=new ju(1,32,32),c=new ju(1,16,16),d=0,h=Object.keys(this.scaleHandles);d<h.length;d++)!function(){var e=h[d],t=l.scaleHandles[e],n=t.node;if(n.name=e,l.scene.add(n),"lines"==e)return["x","y","z"].forEach(function(e){var t=l.scaleHandles["scale."+e+"+"],e=l.scaleHandles["scale."+e+"-"],e=av.createFatLine([(new Oe).fromArray(t.alignment).multiplyScalar(.5),(new Oe).fromArray(e.alignment).multiplyScalar(.5)],{color:t.color,lineWidth:4});n.add(e)}),n.setOpacity=function(t){t*=.6,n.children.forEach(function(e){return e.material.opacity=t})};(a=n.position).set.apply(a,Fe(t.alignment)).multiplyScalar(.5);var i=new R({color:t.color,side:ve,opacity:.6,transparent:!0}),r=new R({color:6710886,side:me,opacity:.6,transparent:!0}),a=new cc({opacity:.2,transparent:!0,side:ve,visible:l.showPickVolumes}),o=new Q(u,i),s=(o.scale.set(5,5,5),o.name="".concat(e,".handle"),n.add(o),o.renderOrder=10,new Q(c,a));s.name="".concat(e,".pick_volume"),s.scale.set(1.5,1.5,1.5),o.add(s),s.handle=e,l.pickVolumes.push(s),n.setOpacity=function(e){var t={x:i.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){o.visible=0<t.x,s.visible=0<t.x,i.opacity=t.x,r.opacity=t.x,s.material.opacity=.5*t.x}),e.start()},s.addEventListener("drag",function(e){return l.dragScaleHandle(e)}),s.addEventListener("drop",function(e){return l.dropScaleHandle(e)}),s.addEventListener("mouseover",function(e){}),s.addEventListener("click",function(e){}),s.addEventListener("mouseleave",function(e){})}()}},{key:"initializeRotationHandles",value:function(){for(var s=this,l=new Ku(1.3,2.3*.015,8,64,Math.PI/2),u=new Ku(1.3,2.3*.06,6,4,Math.PI/2),c=0,d=Object.keys(this.rotationHandles);c<d.length;c++)!function(){var e=d[c],t=s.handles[e],n=t.node,i=(s.scene.add(n),n.name=e,new R({color:t.color,opacity:.6,transparent:!0})),r=new cc({opacity:.2,transparent:!0,visible:s.showPickVolumes}),a=new Q(l,i),o=(a.name="".concat(e,".handle"),a.scale.set(30,30,30),a.lookAt(ie(Oe,Fe(t.alignment))),n.add(a),t.translateNode=a,new Q(u,r));o.name="".concat(e,".pick_volume"),o.scale.set(1,1,1),o.handle=e,a.add(o),s.pickVolumes.push(o),n.setOpacity=function(e){var t={x:i.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){a.visible=0<t.x,o.visible=0<t.x,i.opacity=t.x,r.opacity=.5*t.x}),e.start()},o.addEventListener("drag",function(e){s.dragRotationHandle(e)}),o.addEventListener("drop",function(e){s.dropRotationHandle(e)})}()}},{key:"initializeFocusHandles",value:function(){}},{key:"dragRotationHandle",value:function(e){var e=e.drag,t=this.activeHandle,n=this.viewer.mainViewport.camera;if(t&&t.name.includes("rotation")){var i=ie(Oe,Fe(t.alignment)),r=new Oe;if(r.copy(ie(ei,Fe(i.toArray()).concat([0])).applyMatrix4(t.node.matrixWorld)),r.normalize(),e.intersectionStart?t=e.handle:(e.intersectionStart=e.location,e.objectStart=e.object.getWorldPosition(new Oe),e.handle=t,i=(new ir).setFromNormalAndCoplanarPoint(r,e.intersectionStart),e.dragPlane=i,e.pivot=e.intersectionStart),e.dragPlane){this.dragging=!0;var i=this.viewer.inputHandler.pointer,a=this.viewer.renderer.domElement,i=ne.mouseToRay(i,n,a.clientWidth,a.clientHeight).intersectPlane(e.dragPlane,new Oe);if(i){var o=this.scene.getWorldPosition(new Oe),n=i,a=e.pivot.clone().sub(o).normalize(),n=n.clone().sub(o).normalize(),s=Math.acos(a.dot(n)),a=Math.sign(a.cross(n).dot(r));if(s*=a,!Number.isNaN(s)){var l,n=this.selection[0].matrix.clone(),u=ie(Oe,Fe(t.alignment)),c=q(this.selection);try{for(c.s();!(l=c.n()).done;){var d=l.value,h=d.quaternion.clone(),p=(new ii).setFromAxisAngle(u,s),f=(new Me).setPosition(o.clone().negate()),m=(new Me).makeRotationFromQuaternion(h.clone().inverse().premultiply(p).premultiply(h)),v=(new Me).setPosition(o.clone());d.matrix.premultiply(f).premultiply(m).premultiply(v),d.matrix.decompose(d.position,d.quaternion,d.scale),d.updateMatrixWorld(),d.dispatchEvent({type:"orientation_changed",object:d}),d.dispatchEvent({type:"position_changed",object:d})}}catch(e){c.e(e)}finally{c.f()}this.dispatchEvent({type:"transformed",changeType:["orientation"],matrixBefore:n}),e.pivot=i}}}}}},{key:"dropRotationHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"rotation"})}},{key:"dragTranslationHandle",value:function(e){var e=e.drag,t=this.activeHandle,n=this.viewer.mainViewport.camera;if(t&&t.name.includes("translation")&&this.selection[0]){var i=this.scene.getWorldPosition(new Oe);if(e.intersectionStart||(e.intersectionStart=e.location,e.worldPositionStart=this.selection[0].getWorldPosition(new Oe),e.objectQua=this.selection[0].quaternion.clone(),e.objectQuaInv=e.objectQua.clone().invert(),this.dragging=!0),e.intersectionStart){var r=this.viewer.inputHandler.pointer,r=ne.mouseToRay(r,n),n=t.name.split(".").pop();if("xyz"==n)o=viewer.mainViewport.view.direction;else{var a=new Oe,o=new Oe,s=new Oe(1,0,0).applyQuaternion(e.objectQua),l=new Oe(0,1,0).applyQuaternion(e.objectQua),u=new Oe(0,0,1).applyQuaternion(e.objectQua);switch(n){case"x":a.copy(viewer.mainViewport.view.direction).cross(s),o.copy(s).cross(a);break;case"y":a.copy(viewer.mainViewport.view.direction).cross(l),o.copy(l).cross(a);break;case"z":a.copy(viewer.mainViewport.view.direction).cross(u),o.copy(u).cross(a);break;case"xy":o.copy(u);break;case"yz":o.copy(s);break;case"xz":o.copy(l)}}e.dragPlane=(new ir).setFromNormalAndCoplanarPoint(o,i);n=r.intersectPlane(e.dragPlane,new Oe);if(n){i=(new Oe).subVectors(n,e.worldPositionStart);if(e.pointStart){e.pointEnd=i;var c,r=(new Oe).subVectors(e.pointEnd,e.pointStart),n=(r.applyQuaternion(e.objectQuaInv),t.name.includes("x")||(r.x=0),t.name.includes("y")||(r.y=0),t.name.includes("z")||(r.z=0),r.applyQuaternion(e.objectQua),this.selection[0].matrix.clone()),d=(this.selection[0].position.copy(r).add(e.worldPositionStart),q(this.selection));try{for(d.s();!(c=d.n()).done;){var h=c.value;h.updateMatrixWorld(),h.dispatchEvent({type:"position_changed",object:h})}}catch(e){d.e(e)}finally{d.f()}this.dispatchEvent({type:"transformed",changeType:["position"],matrixBefore:n})}else e.pointStart=i}}}}},{key:"dropTranslationHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"translation"})}},{key:"dropScaleHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"scale"})}},{key:"dragScaleHandle",value:function(e){var e=e.drag,t=this.activeHandle;if(t&&t.name.includes("scale")){var n=this.viewer.mainViewport.camera;if(e.intersectionStart?t=e.handle:(e.intersectionStart=e.location,e.objectStart=e.object.getWorldPosition(new Oe),e.handle=t,i=e.intersectionStart,r=ie(ei,Fe(t.alignment).concat([0])).applyMatrix4(this.scene.matrixWorld),r=(new Oe).addVectors(i,r),i=new Th(i.clone(),r.clone()),e.line=i,i="OrthographicCamera"==n.type?new Oe(0,0,-1).applyQuaternion(n.quaternion):(r=i.closestPointToPoint(n.position,!1,new Oe),(new Oe).subVectors(n.position,r)),r=(new ir).setFromNormalAndCoplanarPoint(i,e.intersectionStart),e.dragPlane=r,e.pivot=e.intersectionStart),this.dragging=!0,e.dragPlane){var i=this.viewer.inputHandler.pointer,r=this.viewer.renderer.domElement,i=ne.mouseToRay(i,n,r.clientWidth,r.clientHeight).intersectPlane(e.dragPlane,new Oe);if(i){var a,n=e.line.closestPointToPoint(i,!1,new Oe),r=t.alignment.reduce(function(e,t){return e+t},0),i=this.selection[0].matrixWorld.clone().invert(),o=n.clone().applyMatrix4(i),i=e.pivot.clone().applyMatrix4(i),o=(new Oe).subVectors(o,i).clone().normalize(),i=(0===n.distanceTo(e.pivot)&&o.set(0,0,0),o.dot(ie(Oe,Fe(t.alignment)))),s=ie(Oe,Fe(t.alignment)),o=(new Oe).subVectors(n,e.pivot),l=s.clone().multiplyScalar(o.length()*r*i),t=this.selection[0].matrix.clone(),u=q(this.selection);try{for(u.s();!(a=u.n()).done;){var c=a.value,d=c.boundingBox,h=d.min,p=d.max,f=0!=s.x?(0<s.x?h:p).clone().setY(0).setZ(0):0!=s.y?(0<s.y?h:p).clone().setX(0).setZ(0):(0<s.z?h:p).clone().setX(0).setY(0),m=f.clone().applyMatrix4(c.matrixWorld),v=c.boundingBox.getSize(new Oe),g=l.clone().divide(v),A=(0==v.x&&(g.x=0),0==v.y&&(g.y=0),0==v.z&&(g.z=0),c.scale.add(g),c.scale.max(new Oe(.1,.1,.1)),c.updateMatrixWorld(),f.clone().applyMatrix4(this.selection[0].matrixWorld));c.position.sub((new Oe).subVectors(A,m)),c.updateMatrixWorld(),c.dispatchEvent({type:"position_changed",object:c}),c.dispatchEvent({type:"scale_changed",object:c})}}catch(e){u.e(e)}finally{u.f()}this.dispatchEvent({type:"transformed",changeType:["position","scale"],matrixBefore:t}),e.pivot.copy(n)}}}}},{key:"setActiveHandle",value:function(e){if(!this.dragging&&this.activeHandle!==e){if(null===(this.activeHandle=e))for(var t=0,n=Object.keys(this.handles);t<n.length;t++){var i=n[t];this.handles[i].node.setOpacity(0)}viewer.dispatchEvent({type:"CursorChange",action:this.activeHandle?"add":"remove",name:"hoverTranHandle"});for(var r=0,a=Object.keys(this.translationHandles);r<a.length;r++){var o=a[r],o=this.translationHandles[o];this.activeHandle===o?o.node.setOpacity(1):o.node.setOpacity(.6)}for(var s=0,l=Object.keys(this.rotationHandles);s<l.length;s++){var u=l[s];this.rotationHandles[u].node.setOpacity(.6)}for(var c=0,d=Object.keys(this.scaleHandles);c<d.length;c++){var h=d[c],h=this.scaleHandles[h];if(this.activeHandle===h){h.node.setOpacity(1);for(var p=0,f=Object.keys(this.translationHandles);p<f.length;p++){var m=f[p];this.translationHandles[m].node.setOpacity(.6)}}else h.node.setOpacity(.6)}e&&e.node.setOpacity(1),viewer.dispatchEvent("content_changed")}}},{key:"update",value:function(){var t=this;if(1===this.selection.length){this.scene.visible=!0,this.scene.updateMatrix(),this.scene.updateMatrixWorld();var n,e,i,r,a,o=this.selection[0],s=(o.matrixWorld,this.viewer.mainViewport.camera),l=this.viewer.renderer.domElement,u=o.boundingBox.getCenter(new Oe).clone().applyMatrix4(o.matrixWorld),c=o.boundingBox.getSize(new Oe).multiply(o.scale);c.max(new Oe(.1,.1,.1)),this.scene.scale.copy(c),this.scene.position.copy(u),this.scene.rotation.copy(o.rotation),this.scene.updateMatrixWorld(),this.dragging||(this.modesEnabled.rotation||this.modesEnabled.translation)&&(c=this.scene.matrixWorld.clone().invert(),n=s.getWorldPosition(new Oe).applyMatrix4(c),this.modesEnabled.translation&&["xy","yz","xz"].forEach(function(e){e=t.translationHandles["translation.plane."+e].node.children[0].position;n.x&&(e.x=Math.sign(n.x)*Math.abs(e.x)),n.y&&(e.y=Math.sign(n.y)*Math.abs(e.y)),n.z&&(e.z=Math.sign(n.z)*Math.abs(e.z))}),this.modesEnabled.rotation)&&(c=!(o=0<n.z),e=Math.PI/2,i=this.rotationHandles["rotation.x"].node.rotation,r=this.rotationHandles["rotation.y"].node.rotation,a=this.rotationHandles["rotation.z"].node.rotation,i.order="ZYX",r.order="ZYX",o?0<n.x&&0<n.y?(i.x=e,r.y=3*e,a.z=0*e):n.x<0&&0<n.y?(i.x=e,r.y=2*e,a.z=e):n.x<0&&n.y<0?(i.x=2*e,r.y=2*e,a.z=2*e):0<n.x&&n.y<0&&(i.x=2*e,r.y=3*e,a.z=3*e):c&&(0<n.x&&0<n.y?(i.x=0*e,r.y=0*e,a.z=0*e):n.x<0&&0<n.y?(i.x=0*e,r.y=e,a.z=e):n.x<0&&n.y<0?(i.x=3*e,r.y=e,a.z=2*e):0<n.x&&n.y<0&&(i.x=3*e,r.y=0*e,a.z=3*e)));for(var d=0,h=Object.keys(this.handles);d<h.length;d++){var p,f,m,v=h[d],g=this.handles[v],A=g.node;Potree.Utils.getObjVisiByReason(A,"modeForce")&&(!(p=g.alignment)||v.includes("rotation")&&"OrthographicCamera"!=s.type?Potree.Utils.updateVisible(A,"faceToCamHide",!0):(f=void 0,p=ie(Oe,Fe(p)).applyQuaternion(this.scene.quaternion),f="OrthographicCamera"==s.type?new Oe(0,0,-1).applyQuaternion(s.quaternion):(new Oe).subVectors(u,s.position).normalize(),m=void 0,m=v.includes("rotation")||v.includes("plane")?Math.abs(p.dot(f))<.1:.995<Math.abs(p.dot(f)),Potree.Utils.updateVisible(A,"faceToCamHide",!m)),A.visible)&&!g.dontScale&&(v=A.getWorldPosition(new Oe).distanceTo(s.position),p=ne.projectedRadius(1,s,v,l.clientWidth,l.clientHeight),f=A.parent.getWorldScale(new Oe),g=new Oe(m=3/p,m,m).divide(f),v=(new Me).makeRotationFromEuler(A.rotation).clone().invert(),g.applyMatrix4(v),g.x=Math.abs(g.x),g.y=Math.abs(g.y),g.z=Math.abs(g.z),A.scale.copy(g))}}else this.scene.visible=!1}},{key:"onPointerMove",value:function(){var n=this,e=this.viewer.inputHandler.pointer,t=this.viewer.mainViewport.camera;1!==this.selection.length||this.dragging||((t=new bh((e=ne.mouseToRay(e,t)).origin,e.direction)).layers.enableAll(),e=this.pickVolumes.filter(function(e){var t=e.handle.split(".")[0];if(n.modesEnabled[t])return e.parent.parent.visible}),0<(t=(t=t.intersectObjects(e,!0)).sort(function(e,t){return(t.object.renderOrder||0)-(e.object.renderOrder||0)})).length?(e=t[0].object.handle,this.setActiveHandle(this.handles[e])):this.setActiveHandle(null))}}])}(),Gy=.1,Hy=.2,Vy=.6,Qy=1,jy={2:3073230,3:16761403,4:16777215},Wy=function(){function n(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,n),"Volume"===(t=le(this,n)).constructor.name&&console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."),t._clip=e.clip||!1,t._visible=!0,t._modifiable=e.modifiable||!0,t.addEventListener("select",function(e){t.setSelected(!0)}),t.addEventListener("deselect",function(e){t.setSelected(!1)}),t.addEventListener("mouseover",function(e){t.hovered=!0,t.update()}),t.addEventListener("mouseleave",function(e){t.hovered=!1,t.update()}),t}return v(n,Z),A(n,[{key:"setSelected",value:function(e){this.selected=!!e,this.update()}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",object:this}))}},{key:"getVolume",value:function(){console.warn("override this in subclass")}},{key:"update",value:function(){}},{key:"raycast",value:function(e,t){}},{key:"clip",get:function(){return this._clip},set:function(e){this._clip!==e&&(this._clip=e,this.update(),this.dispatchEvent({type:"clip_changed",object:this}))}},{key:"modifieable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}])}(),Jy=function(){function r(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,r),(e=le(this,r,[t])).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="box_"+e.constructor.counter,e.clipTask=t.clipTask||Potree.ClipTask.SHOW_INSIDE,e.showBox=!0,new Jl(1,1,1)),n=(t.computeBoundingBox(),new Wl),i=Oe;return n.vertices.push(new i(-.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,-.5),new i(.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,-.5),new i(.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,-.5,.5),new i(.5,.5,.5),new i(.5,-.5,-.5),new i(.5,.5,-.5),new i(-.5,-.5,-.5),new i(-.5,.5,-.5)),e.material=new sv({color:jy[e.clipTask],side:ve,transparent:!0,opacity:Gy,depthTest:!0,depthWrite:!1,useDepth:!0,clipDistance:2,occlusionDistance:.1,maxClipFactor:.9}),e.box=new Q(t,e.material),e.box.geometry.computeBoundingBox(),e.boundingBox=e.box.geometry.boundingBox,e.add(e.box),e.frame=av.createFatLine(n.vertices,{color:jy[e.clipTask],opacity:Vy,lineWidth:1,dontAlwaysSeen:!0}),e.add(e.frame),e.update(),e}return v(r,Wy),A(r,[{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new bi),Potree.Utils.updateVisible(this.box,"selected",(this.selected||this.hovered)&&this.showBox),this.box.material.opacity=this.selected?Hy:Gy,this.box.material.color.set(jy[this.clipTask]),this.frame.material.color.set(jy[this.clipTask]),this.frame.material.opacity=this.selected?Qy:Vy,this.frame.material.lineWidth=this.selected?2:1}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)}}])}(),qy=function(){function x(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(ue(this,x),(e=le(this,x,[e])).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="sphere_"+e.constructor.counter,new ju(1,32,32)),n=(t.computeBoundingBox(),e.material=new R({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.sphere=new Q(t,e.material),e.sphere.visible=!1,e.sphere.geometry.computeBoundingBox(),e.boundingBox=e.sphere.geometry.boundingBox,e.add(e.sphere),e.label.visible=!1,new Wl),i=0;i<8;i++)for(var r=i/8*Math.PI*2,a=Math.cos(r),o=Math.sin(r),s=0;s<=64;s++){var l=s/64*Math.PI*2,u=l+2*Math.PI/64,c=Math.sin(l),l=Math.cos(l),d=Math.sin(u),u=Math.cos(u),l=new Oe(a*l,o*l,c),c=(n.vertices.push(l),new Oe(a*u,o*u,d));n.vertices.push(c)}for(var h=0;h<=6;h++){var p=(1-(p=h/6))*(-Math.PI/2)+p*(Math.PI/2),f=Math.sin(p);console.log(p,f);for(var m=0;m<=64;m++){var v=m/64*Math.PI*2,g=v+2*Math.PI/64,A=Math.cos(v),v=Math.sin(v),y=Math.cos(g),g=Math.sin(g),w=Math.sqrt(1-f*f),A=new Oe(A*w,v*w,f),v=(n.vertices.push(A),new Oe(y*w,g*w,f));n.vertices.push(v)}}e.frame=new _l(n,new wl({color:0})),e.add(e.frame);var b=new R({wireframe:!0,color:0});return e.frame=new Q(t,b),e.update(),e}return v(x,Wy),A(x,[{key:"update",value:function(){this.boundingBox=this.sphere.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new bi)}},{key:"raycast",value:function(e,t){var n=[];this.sphere.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return 4/3*Math.PI*this.scale.x*this.scale.y*this.scale.z}}])}(),Yy=function(){function a(e,t){var n,i,r=this;ue(this,a),this.promise=new Promise(function(e,t){n=e.bind(r),i=t.bind(r)});e(function(){n.apply(void 0,arguments)}.bind(this),function(e){i(e)}.bind(this)),this.abortHandler=t,this.id=a.idGen++}return A(a,[{key:"then",value:function(i){var e=this;return new a(function(t,n){e.promise=e.promise.then(function(){var e=i.apply(void 0,arguments);e instanceof Promise||e instanceof a?e.then(function(){t.apply(void 0,arguments)}):t(e)}).catch(function(e){n(e)})},this.abortHandler)}},{key:"catch",value:function(t){var n=this;return new a(function(e){n.promise=n.promise.then(function(){e.apply(void 0,arguments)}).catch(t)},this.abortHandler)}},{key:"abort",value:function(){this.abortHandler&&this.abortHandler()}}])}(),Xy=(Y(Yy,"idGen",0),function(){function t(e){return ue(this,t),le(this,t,[e])}return v(t,ae(Error)),A(t)}()),Ky=(Fu=new Float32Array(1),new Int32Array(Fu.buffer),Ey=new Float32Array(1),Cy=new Int32Array(Ey.buffer),function(e){return Ey[0]=e,Cy[0]}),Ue=function(){function a(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;ue(this,a),this.sphericalHarmonicsDegree=e,this.sphericalHarmonicsCount=fy(this.sphericalHarmonicsDegree),this.componentCount=this.sphericalHarmonicsCount+14,this.defaultSphericalHarmonics=new Array(this.sphericalHarmonicsCount).fill(0),this.splats=[],this.splatCount=0}return A(a,[{key:"addSplat",value:function(e){this.splats.push(e),this.splatCount++}},{key:"getSplat",value:function(e){return this.splats[e]}},{key:"addDefaultSplat",value:function(){var e=a.createSplat(this.sphericalHarmonicsDegree);return this.addSplat(e),e}},{key:"addSplatFromComonents",value:function(e,t,n,i,r,a,o,s,l,u,c,d,h,p){for(var f=[e,t,n,i,r,a,o,s,l,u,c,d,h,p].concat(Fe(this.defaultSphericalHarmonics)),m=0;m<(arguments.length<=14?0:arguments.length-14)&&m<this.sphericalHarmonicsCount;m++)f[m]=m+14<14||arguments.length<=m+14?void 0:arguments[m+14];return this.addSplat(f),f}},{key:"addSplatFromArray",value:function(e,t){for(var n=e.splats[t],i=a.createSplat(this.sphericalHarmonicsDegree),r=0;r<this.componentCount&&r<n.length;r++)i[r]=n[r];this.addSplat(i)}}],[{key:"createSplat",value:function(){for(var e=[0,0,0,1,1,1,1,0,0,0,0,0,0,0],t=fy(0<arguments.length&&void 0!==arguments[0]?arguments[0]:0),n=0;n<t;n++)e.push(0);return e}}])}(),Zy=(Y(Ue,"OFFSET",{X:0,Y:1,Z:2,SCALE0:3,SCALE1:4,SCALE2:5,ROTATION0:6,ROTATION1:7,ROTATION2:8,ROTATION3:9,FDC0:10,FDC1:11,FDC2:12,OPACITY:13,FRC0:14,FRC1:15,FRC2:16,FRC3:17,FRC4:18,FRC5:19,FRC6:20,FRC7:21,FRC8:22,FRC9:23,FRC10:24,FRC11:25,FRC12:26,FRC13:27,FRC14:28,FRC15:29,FRC16:30,FRC17:31,FRC18:32,FRC19:33,FRC20:34,FRC21:35,FRC22:36,FRC23:37}),Le.DataUtils.toHalfFloat.bind(Le.DataUtils)),$y=function(e){return e/255*2-1},ew=function(){},F=function(){function Re(e){var a,o,s,l,u,c,t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];ue(this,Re),Y(this,"getSplatScaleAndRotation",(a=new Le.Matrix4,o=new Le.Matrix4,s=new Le.Matrix4,l=new Le.Vector3,u=new Le.Vector3,c=new Le.Quaternion,function(e,t,n,i){var r=this.globalSplatIndexToSectionMap[e],r=this.sections[r],e=e-r.splatCountOffset,e=r.bytesPerSplat*e+Re.CompressionLevels[this.compressionLevel].ScaleOffsetBytes,r=new DataView(this.bufferData,r.dataBase+e);u.set(gy(Ay(r,0,this.compressionLevel),this.compressionLevel),gy(Ay(r,1,this.compressionLevel),this.compressionLevel),gy(Ay(r,2,this.compressionLevel),this.compressionLevel)),c.set(gy(Ay(r,4,this.compressionLevel),this.compressionLevel),gy(Ay(r,5,this.compressionLevel),this.compressionLevel),gy(Ay(r,6,this.compressionLevel),this.compressionLevel),gy(Ay(r,3,this.compressionLevel),this.compressionLevel)),i?(a.makeScale(u.x,u.y,u.z),o.makeRotationFromQuaternion(c),s.copy(a).multiply(o).multiply(i),s.decompose(l,n,t)):(t.copy(u),n.copy(c))})),Y(this,"fillSphericalHarmonicsArray",function(){for(var e=0;e<15;e++)e,new Le.Vector3;function p(e){return e}function f(e,t,n,i){e[0]=t,e[1]=n,e[2]=i}function m(e,t,n,i,r){e[0]=Ay(t,i,r,!0),e[1]=Ay(t,i+n,r,!0),e[2]=Ay(t,i+n+n,r,!0)}function v(e,t){t[0]=e[0],t[1]=e[1],t[2]=e[2]}function g(e,t,n,i){t[n]=i(e[0]),t[n+1]=i(e[1]),t[n+2]=i(e[2])}function A(e,t,n){t[0]=gy(e[0],n,!0),t[1]=gy(e[1],n,!0),t[2]=gy(e[2],n,!0)}var y=new Le.Matrix3,w=[],b=[],x=[],E=[],C=[],B=[],M=[],S=[],T=[],_=[],P=[],D=[],I=[],k=[],R=[],L=[],F=[],O=[];return function(e,t,n,i,r,a,o){var s=this.splatCount;i=i||0,r=r||s-1,void 0===a&&(a=i),n&&1<=t&&(y.setFromMatrix4(n),f(w,y.elements[4],-y.elements[7],y.elements[1]),f(b,-y.elements[5],y.elements[8],-y.elements[2]),f(x,y.elements[3],-y.elements[6],y.elements[0]));for(var l=i;l<=r;l++){var u=this.globalSplatIndexToSectionMap[l],u=this.sections[u],c=(t=Math.min(t,u.sphericalHarmonicsDegree),fy(t)),d=l-u.splatCountOffset,d=u.bytesPerSplat*d+Re.CompressionLevels[this.compressionLevel].SphericalHarmonicsOffsetBytes,u=new DataView(this.bufferData,u.dataBase+d),d=(l-i+a)*c,c=n?0:this.compressionLevel,h=p;c!==o&&(1===c?0===o?h=ew:2==o&&(h=vy):0===c&&(1===o?h=Zy:2==o&&(h=my))),1<=t&&(m(T,u,3,0,this.compressionLevel),m(_,u,3,1,this.compressionLevel),m(P,u,3,2,this.compressionLevel),n?(A(T,T,this.compressionLevel),A(_,_,this.compressionLevel),A(P,P,this.compressionLevel),Re.rotateSphericalHarmonics3(T,_,P,w,b,x,k,R,L)):(v(T,k),v(_,R),v(P,L)),g(k,e,d,h),g(R,e,3+d,h),g(L,e,6+d,h),2<=t)&&(m(T,u,5,9,this.compressionLevel),m(_,u,5,10,this.compressionLevel),m(P,u,5,11,this.compressionLevel),m(D,u,5,12,this.compressionLevel),m(I,u,5,13,this.compressionLevel),n?(A(T,T,this.compressionLevel),A(_,_,this.compressionLevel),A(P,P,this.compressionLevel),A(D,D,this.compressionLevel),A(I,I,this.compressionLevel),Re.rotateSphericalHarmonics5(T,_,P,D,I,w,b,x,E,C,B,M,S,k,R,L,F,O)):(v(T,k),v(_,R),v(P,L),v(D,F),v(I,O)),g(k,e,9+d,h),g(R,e,12+d,h),g(L,e,15+d,h),g(F,e,18+d,h),g(O,e,21+d,h))}}}()),this.constructFromBuffer(e,t)}return A(Re,[{key:"getSplatCount",value:function(){return this.splatCount}},{key:"getMaxSplatCount",value:function(){return this.maxSplatCount}},{key:"getMinSphericalHarmonicsDegree",value:function(){for(var e=0,t=0;t<this.sections.length;t++){var n=this.sections[t];(0===t||n.sphericalHarmonicsDegree<e)&&(e=n.sphericalHarmonicsDegree)}return e}},{key:"getBucketIndex",value:function(e,t){var n=e.fullBucketCount*e.bucketSize;if(t<n)r=Math.floor(t/e.bucketSize);else for(var i=n,r=e.fullBucketCount,a=0;i<e.splatCount;){var o=e.partiallyFilledBucketLengths[a];if(i<=t&&t<i+o)break;i+=o,r++,a++}return r}},{key:"getSplatCenter",value:function(e,t,n){var i,r,a=this.globalSplatIndexToSectionMap[e],a=this.sections[a],e=e-a.splatCountOffset,o=a.bytesPerSplat*e,o=new DataView(this.bufferData,a.dataBase+o),s=Ay(o,0,this.compressionLevel),l=Ay(o,1,this.compressionLevel),o=Ay(o,2,this.compressionLevel);1<=this.compressionLevel?(e=this.getBucketIndex(a,e)*Re.BucketStorageSizeFloats,i=a.compressionScaleFactor,r=a.compressionScaleRange,t.x=(s-r)*i+a.bucketArray[e],t.y=(l-r)*i+a.bucketArray[1+e],t.z=(o-r)*i+a.bucketArray[2+e]):(t.x=s,t.y=l,t.z=o),n&&t.applyMatrix4(n)}},{key:"getSplatColor",value:function(e,t){var n=this.globalSplatIndexToSectionMap[e],n=this.sections[n],e=e-n.splatCountOffset,e=n.bytesPerSplat*e+Re.CompressionLevels[this.compressionLevel].ColorOffsetBytes,n=new Uint8Array(this.bufferData,n.dataBase+e,4);t.set(n[0],n[1],n[2],n[3])}},{key:"fillSplatCenterArray",value:function(e,t,n,i,r){for(var a=this.splatCount,o=(n=n||0,i=i||a-1,void 0===r&&(r=n),new Le.Vector3),s=n;s<=i;s++){var l,u,c=this.globalSplatIndexToSectionMap[s],c=this.sections[c],d=s-c.splatCountOffset,h=(s-n+r)*Re.CenterComponentCount,p=c.bytesPerSplat*d,p=new DataView(this.bufferData,c.dataBase+p),f=Ay(p,0,this.compressionLevel),m=Ay(p,1,this.compressionLevel),p=Ay(p,2,this.compressionLevel);1<=this.compressionLevel?(d=this.getBucketIndex(c,d)*Re.BucketStorageSizeFloats,l=c.compressionScaleFactor,u=c.compressionScaleRange,o.x=(f-u)*l+c.bucketArray[d],o.y=(m-u)*l+c.bucketArray[1+d],o.z=(p-u)*l+c.bucketArray[2+d]):(o.x=f,o.y=m,o.z=p),t&&o.applyMatrix4(t),e[h]=o.x,e[1+h]=o.y,e[2+h]=o.z}}},{key:"fillSplatCovarianceArray",value:function(e,t,n,i,r,a){var o=this.splatCount,s=new Le.Vector3,l=new Le.Quaternion;n=n||0,i=i||o-1,void 0===r&&(r=n);for(var u=n;u<=i;u++){var c=this.globalSplatIndexToSectionMap[u],c=this.sections[c],d=u-c.splatCountOffset,h=(u-n+r)*Re.CovarianceComponentCount,d=c.bytesPerSplat*d+Re.CompressionLevels[this.compressionLevel].ScaleOffsetBytes,c=new DataView(this.bufferData,c.dataBase+d);s.set(gy(Ay(c,0,this.compressionLevel),this.compressionLevel),gy(Ay(c,1,this.compressionLevel),this.compressionLevel),gy(Ay(c,2,this.compressionLevel),this.compressionLevel)),l.set(gy(Ay(c,4,this.compressionLevel),this.compressionLevel),gy(Ay(c,5,this.compressionLevel),this.compressionLevel),gy(Ay(c,6,this.compressionLevel),this.compressionLevel),gy(Ay(c,3,this.compressionLevel),this.compressionLevel)),Re.computeCovariance(s,l,t,e,h,a)}}},{key:"fillSplatColorArray",value:function(e,t,n,i,r){var a=this.splatCount;n=n||0,i=i||a-1,void 0===r&&(r=n);for(var o=n;o<=i;o++){var s=this.globalSplatIndexToSectionMap[o],s=this.sections[s],l=o-s.splatCountOffset,u=(o-n+r)*Re.ColorComponentCount,l=s.bytesPerSplat*l+Re.CompressionLevels[this.compressionLevel].ColorOffsetBytes,s=new Uint8Array(this.bufferData,s.dataBase+l),l=t<=(l=s[3])?l:0;e[u]=s[0],e[1+u]=s[1],e[2+u]=s[2],e[3+u]=l}}},{key:"constructFromBuffer",value:function(e,t){this.bufferData=e,this.globalSplatIndexToLocalSplatIndexMap=[],this.globalSplatIndexToSectionMap=[];e=Re.parseHeader(this.bufferData);this.versionMajor=e.versionMajor,this.versionMinor=e.versionMinor,this.maxSectionCount=e.maxSectionCount,this.sectionCount=t?e.maxSectionCount:0,this.maxSplatCount=e.maxSplatCount,this.splatCount=t?e.maxSplatCount:0,this.compressionLevel=e.compressionLevel,this.sceneCenter=(new Le.Vector3).copy(e.sceneCenter),this.sections=Re.parseSectionHeaders(e,this.bufferData,Re.HeaderSizeBytes,t),this.linkBufferArrays(),this.buildMaps()}},{key:"linkBufferArrays",value:function(){for(var e=0;e<this.maxSectionCount;e++){var t=this.sections[e];t.bucketArray=new Float32Array(this.bufferData,t.bucketsBase,t.bucketCount*Re.BucketStorageSizeFloats),0<t.partiallyFilledBucketCount&&(t.partiallyFilledBucketLengths=new Uint32Array(this.bufferData,t.base,t.partiallyFilledBucketCount))}}},{key:"buildMaps",value:function(){for(var e=0,t=0;t<this.maxSectionCount;t++){for(var n=this.sections[t],i=0;i<n.maxSplatCount;i++){var r=e+i;this.globalSplatIndexToLocalSplatIndexMap[r]=i,this.globalSplatIndexToSectionMap[r]=t}e+=n.maxSplatCount}}},{key:"updateLoadedCounts",value:function(e,t){Re.writeHeaderCountsToBuffer(e,t,this.bufferData),this.sectionCount=e,this.splatCount=t}},{key:"updateSectionLoadedCounts",value:function(e,t){var n=Re.HeaderSizeBytes+Re.SectionHeaderSizeBytes*e;Re.writeSectionHeaderSplatCountToBuffer(t,this.bufferData,n),this.sections[e].splatCount=t}}],[{key:"parseHeader",value:function(e){var t=new Uint8Array(e,0,Re.HeaderSizeBytes),n=new Uint16Array(e,0,Re.HeaderSizeBytes/2),i=new Uint32Array(e,0,Re.HeaderSizeBytes/4),e=new Float32Array(e,0,Re.HeaderSizeBytes/4);return{versionMajor:t[0],versionMinor:t[1],maxSectionCount:i[1],sectionCount:i[2],maxSplatCount:i[3],splatCount:i[4],compressionLevel:n[10],sceneCenter:new Le.Vector3(e[6],e[7],e[8])}}},{key:"writeHeaderCountsToBuffer",value:function(e,t,n){n=new Uint32Array(n,0,Re.HeaderSizeBytes/4);n[2]=e,n[4]=t}},{key:"writeHeaderToBuffer",value:function(e,t){var n=new Uint8Array(t,0,Re.HeaderSizeBytes),i=new Uint16Array(t,0,Re.HeaderSizeBytes/2),r=new Uint32Array(t,0,Re.HeaderSizeBytes/4),t=new Float32Array(t,0,Re.HeaderSizeBytes/4);n[0]=e.versionMajor,n[1]=e.versionMinor,n[2]=0,n[3]=0,r[1]=e.maxSectionCount,r[2]=e.sectionCount,r[3]=e.maxSplatCount,r[4]=e.splatCount,i[10]=e.compressionLevel,t[6]=e.sceneCenter.x,t[7]=e.sceneCenter.y,t[8]=e.sceneCenter.z}},{key:"parseSectionHeaders",value:function(e,t){for(var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length?arguments[3]:void 0,r=e.compressionLevel,a=e.maxSectionCount,o=new Uint16Array(t,n,a*Re.SectionHeaderSizeBytes/2),s=new Uint32Array(t,n,a*Re.SectionHeaderSizeBytes/4),l=new Float32Array(t,n,a*Re.SectionHeaderSizeBytes/4),u=[],c=0,d=c/2,h=c/4,p=Re.HeaderSizeBytes+e.maxSectionCount*Re.SectionHeaderSizeBytes,f=0,m=0;m<a;m++){var v=s[h+1],g=s[h+2],A=s[h+3],y=l[h+4],w=y/2,b=o[d+10],x=s[h+6]||Re.CompressionLevels[r].ScaleRange,E=s[h+8],C=s[h+9],B=4*C,M=b*A+B,S=o[d+20],T=Re.calculateComponentStorage(r,S).bytesPerSplat,_=T*v,P=_+M;u[m]={bytesPerSplat:T,splatCountOffset:f,splatCount:i?v:0,maxSplatCount:v,bucketSize:g,bucketCount:A,bucketBlockSize:y,halfBucketBlockSize:w,bucketStorageSizeBytes:b,bucketsStorageSizeBytes:M,splatDataStorageSizeBytes:_,storageSizeBytes:P,compressionScaleRange:x,compressionScaleFactor:w/x,base:p,bucketsBase:p+B,dataBase:p+M,fullBucketCount:E,partiallyFilledBucketCount:C,sphericalHarmonicsDegree:S},p+=P,d=(c+=Re.SectionHeaderSizeBytes)/2,h=c/4,f+=v}return u}},{key:"writeSectionHeaderToBuffer",value:function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=new Uint16Array(n,i,Re.SectionHeaderSizeBytes/2),a=new Uint32Array(n,i,Re.SectionHeaderSizeBytes/4),n=new Float32Array(n,i,Re.SectionHeaderSizeBytes/4);a[0]=e.splatCount,a[1]=e.maxSplatCount,a[2]=1<=t?e.bucketSize:0,a[3]=1<=t?e.bucketCount:0,n[4]=1<=t?e.bucketBlockSize:0,r[10]=1<=t?Re.BucketStorageSizeBytes:0,a[6]=1<=t?e.compressionScaleRange:0,a[7]=e.storageSizeBytes,a[8]=1<=t?e.fullBucketCount:0,a[9]=1<=t?e.partiallyFilledBucketCount:0,r[20]=e.sphericalHarmonicsDegree}},{key:"writeSectionHeaderSplatCountToBuffer",value:function(e,t){new Uint32Array(t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,Re.SectionHeaderSizeBytes/4)[0]=e}},{key:"calculateComponentStorage",value:function(e,t){var n=Re.CompressionLevels[e].BytesPerCenter,i=Re.CompressionLevels[e].BytesPerScale,r=Re.CompressionLevels[e].BytesPerRotation,a=Re.CompressionLevels[e].BytesPerColor,t=fy(t),e=Re.CompressionLevels[e].BytesPerSphericalHarmonicsComponent*t;return{bytesPerCenter:n,bytesPerScale:i,bytesPerRotation:r,bytesPerColor:a,sphericalHarmonicsComponentsPerSplat:t,sphericalHarmonicsBytesPerSplat:e,bytesPerSplat:n+i+r+a+e}}},{key:"generateFromUncompressedSplatArrays",value:function(e,L,t,F,O,U){for(var N=6<arguments.length&&void 0!==arguments[6]?arguments[6]:[],n=function(e,t,n,i){for(var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=new Uint8Array(e,t),o=new Uint8Array(n,i),s=0;s<r;s++)o[s]=a[s]},i=0,r=0;r<e.length;r++){var a=e[r];if(0===r||a.sphericalHarmonicsDegree<i){if(0<r&&a.sphericalHarmonicsDegree!==i)throw new Error("SplatBuffer::generateFromUncompressedSplatArrays() -> all splat arrays must have the same spherical harmonics degree.");i=a.sphericalHarmonicsDegree}}for(var o=Re.calculateComponentStorage(t,i),z=o.bytesPerCenter,G=o.bytesPerScale,H=o.bytesPerRotation,V=o.bytesPerColor,Q=o.sphericalHarmonicsComponentsPerSplat,j=o.sphericalHarmonicsBytesPerSplat,W=o.bytesPerSplat,s=Re.CompressionLevels[t].ScaleRange,l=[],J=[],q=0,u=new Le.Quaternion,c=0;c<e.length;c++){for(var Y=e[c],d=N[c]||{},X=(d.blockSizeFactor||1)*(O||Re.BucketBlockSize),d=Math.ceil((d.bucketSizeFactor||1)*(U||Re.BucketSize)),h=new Ue(i),K=0;K<Y.splatCount;K++){var Z=Y.splats[K];L<=(Z[Ue.OFFSET.OPACITY]||255)&&h.addSplat(Z)}for(var p=Re.computeBucketsForUncompressedSplatArray(h,X,d),$=p.fullBuckets.length,f=p.partiallyFullBuckets.map(function(e){return e.splats.length}),ee=f.length,m=[].concat(Fe(p.fullBuckets),Fe(p.partiallyFullBuckets)),p=h.splats.length*W,v=4*ee,te=1<=t?m.length*Re.BucketStorageSizeBytes+v:0,p=p+te,g=new ArrayBuffer(p),ne=s/(X/2),ie=2*s+1,re=new ArrayBuffer(z),ae=new ArrayBuffer(G),oe=new ArrayBuffer(H),se=new ArrayBuffer(V),le=new ArrayBuffer(j),ue=new Le.Vector3,A=new Le.Vector3,y=0,ce=0;ce<m.length;ce++){var de=m[ce];ue.fromArray(de.center);for(var he=0;he<de.splats.length;he++){var w=de.splats[he],b=h.splats[w],w=te+y*W,pe=w+z,fe=pe+G,me=fe+H,x=me+V;if(0===t){var E=new Float32Array(g,w,Re.CenterComponentCount),C=new Float32Array(g,fe,Re.RotationComponentCount),B=new Float32Array(g,pe,Re.ScaleComponentCount);if(void 0!==b[Ue.OFFSET.SCALE0]?(u.set(b[Ue.OFFSET.ROTATION0],b[Ue.OFFSET.ROTATION1],b[Ue.OFFSET.ROTATION2],b[Ue.OFFSET.ROTATION3]),u.normalize(),C.set([u.x,u.y,u.z,u.w]),B.set([b[Ue.OFFSET.SCALE0],b[Ue.OFFSET.SCALE1],b[Ue.OFFSET.SCALE2]])):(C.set([1,0,0,0]),B.set([.01,.01,.01])),E.set([b[Ue.OFFSET.X],b[Ue.OFFSET.Y],b[Ue.OFFSET.Z]]),0<i){var ve=new Float32Array(g,x,Q);if(1<=i){for(var M=0;M<9;M++)ve[M]=b[Ue.OFFSET.FRC0+M];if(2<=i)for(var S=0;S<15;S++)ve[S+9]=b[Ue.OFFSET.FRC9+S]}}}else{C=new Uint16Array(re,0,Re.CenterComponentCount),B=new Uint16Array(oe,0,Re.RotationComponentCount),E=new Uint16Array(ae,0,Re.ScaleComponentCount);if(void 0!==b[Ue.OFFSET.SCALE0]?(u.set(b[Ue.OFFSET.ROTATION0],b[Ue.OFFSET.ROTATION1],b[Ue.OFFSET.ROTATION2],b[Ue.OFFSET.ROTATION3]),u.normalize(),B.set([Zy(u.x),Zy(u.y),Zy(u.z),Zy(u.w)]),E.set([Zy(b[Ue.OFFSET.SCALE0]),Zy(b[Ue.OFFSET.SCALE1]),Zy(b[Ue.OFFSET.SCALE2])])):(B.set([Zy(1),0,0,0]),E.set([Zy(.01),Zy(.01),Zy(.01)])),A.set(b[Ue.OFFSET.X],b[Ue.OFFSET.Y],b[Ue.OFFSET.Z]).sub(ue),A.x=Math.round(A.x*ne)+s,A.x=cy(A.x,0,ie),A.y=Math.round(A.y*ne)+s,A.y=cy(A.y,0,ie),A.z=Math.round(A.z*ne)+s,A.z=cy(A.z,0,ie),C.set([A.x,A.y,A.z]),0<i){var ge=1===t?2:1,T=new(1===t?Uint16Array:Uint8Array)(le,0,Q);if(1<=i){for(var _=0;_<9;_++){var Ae=b[Ue.OFFSET.FRC0+_];T[_]=(1===t?Zy:my)(Ae)}var ye=9*ge;if(n(T.buffer,0,g,x,ye),2<=i){for(var P=0;P<15;P++){var we=b[Ue.OFFSET.FRC9+P];T[P+9]=(1===t?Zy:my)(we)}n(T.buffer,ye,g,x+ye,15*ge)}}}n(C.buffer,0,g,w,6),n(E.buffer,0,g,pe,6),n(B.buffer,0,g,fe,8)}x=new Uint8ClampedArray(se,0,4);void 0!==b[Ue.OFFSET.FDC0]?x.set([b[Ue.OFFSET.FDC0],b[Ue.OFFSET.FDC1],b[Ue.OFFSET.FDC2]]):x.set([255,0,0]),void 0!==b[Ue.OFFSET.OPACITY]?x[3]=b[Ue.OFFSET.OPACITY]:x[3]=255,n(x.buffer,0,g,me,4),y++}}if(q+=y,1<=t){for(var be=new Uint32Array(g,0,4*f.length),D=0;D<f.length;D++)be[D]=f[D];for(var xe=new Float32Array(g,v,m.length*Re.BucketStorageSizeFloats),I=0;I<m.length;I++){var Ee=m[I],Ce=3*I;xe[Ce]=Ee.center[0],xe[1+Ce]=Ee.center[1],xe[2+Ce]=Ee.center[2]}}l.push(g);v=new ArrayBuffer(Re.SectionHeaderSizeBytes);Re.writeSectionHeaderToBuffer({maxSplatCount:y,splatCount:y,bucketSize:d,bucketCount:m.length,bucketBlockSize:X,compressionScaleRange:s,storageSizeBytes:p,fullBucketCount:$,partiallyFilledBucketCount:ee,sphericalHarmonicsDegree:i},t,v,0),J.push(v)}for(var Be=0,Me=0,Se=l;Me<Se.length;Me++)Be+=Se[Me].byteLength;for(var o=Re.HeaderSizeBytes+Re.SectionHeaderSizeBytes*l.length+Be,k=new ArrayBuffer(o),R=(Re.writeHeaderToBuffer({versionMajor:0,versionMinor:1,maxSectionCount:l.length,sectionCount:l.length,maxSplatCount:q,splatCount:q,compressionLevel:t,sceneCenter:F},k),Re.HeaderSizeBytes),Te=0,_e=J;Te<_e.length;Te++){var Pe=_e[Te];new Uint8Array(k,R,Re.SectionHeaderSizeBytes).set(new Uint8Array(Pe)),R+=Re.SectionHeaderSizeBytes}for(var De=0,Ie=l;De<Ie.length;De++){var ke=Ie[De];new Uint8Array(k,R,ke.byteLength).set(new Uint8Array(ke)),R+=ke.byteLength}return new Re(k)}},{key:"computeBucketsForUncompressedSplatArray",value:function(e,t,n){for(var i=e.splatCount,r=t/2,a=new Le.Vector3,o=new Le.Vector3,s=0;s<i;s++){var l=e.splats[s],l=[l[Ue.OFFSET.X],l[Ue.OFFSET.Y],l[Ue.OFFSET.Z]];(0===s||l[0]<a.x)&&(a.x=l[0]),(0===s||l[0]>o.x)&&(o.x=l[0]),(0===s||l[1]<a.y)&&(a.y=l[1]),(0===s||l[1]>o.y)&&(o.y=l[1]),(0===s||l[2]<a.z)&&(a.z=l[2]),(0===s||l[2]>o.z)&&(o.z=l[2])}for(var u=(new Le.Vector3).copy(o).sub(a),c=Math.ceil(u.y/t),d=Math.ceil(u.z/t),h=new Le.Vector3,p=[],f={},m=0;m<i;m++){var v=e.splats[m],v=[v[Ue.OFFSET.X],v[Ue.OFFSET.Y],v[Ue.OFFSET.Z]],g=Math.floor((v[0]-a.x)/t),A=Math.floor((v[1]-a.y)/t),v=Math.floor((v[2]-a.z)/t),g=(h.x=g*t+a.x+r,h.y=A*t+a.y+r,h.z=v*t+a.z+r,g*(c*d)+A*d+v),A=f[g];A||(f[g]=A={splats:[],center:h.toArray()}),A.splats.push(m),A.splats.length>=n&&(p.push(A),f[g]=null)}var y,w,b=[];for(y in f)f.hasOwnProperty(y)&&(w=f[y])&&b.push(w);return{fullBuckets:p,partiallyFullBuckets:b}}}])}(),tw=F,nw=(Y(F,"CurrentMajorVersion",0),Y(F,"CurrentMinorVersion",1),Y(F,"CenterComponentCount",3),Y(F,"ScaleComponentCount",3),Y(F,"RotationComponentCount",4),Y(F,"ColorComponentCount",4),Y(F,"CovarianceComponentCount",6),Y(F,"SplatScaleOffsetFloat",3),Y(F,"SplatRotationOffsetFloat",6),Y(F,"CompressionLevels",{0:{BytesPerCenter:12,BytesPerScale:12,BytesPerRotation:16,BytesPerColor:4,ScaleOffsetBytes:12,RotationffsetBytes:24,ColorOffsetBytes:40,SphericalHarmonicsOffsetBytes:44,ScaleRange:1,BytesPerSphericalHarmonicsComponent:4,SphericalHarmonicsOffsetFloat:11,SphericalHarmonicsDegrees:{0:{BytesPerSplat:44},1:{BytesPerSplat:80},2:{BytesPerSplat:140}}},1:{BytesPerCenter:6,BytesPerScale:6,BytesPerRotation:8,BytesPerColor:4,ScaleOffsetBytes:6,RotationffsetBytes:12,ColorOffsetBytes:20,SphericalHarmonicsOffsetBytes:24,ScaleRange:32767,BytesPerSphericalHarmonicsComponent:2,SphericalHarmonicsOffsetFloat:12,SphericalHarmonicsDegrees:{0:{BytesPerSplat:24},1:{BytesPerSplat:42},2:{BytesPerSplat:72}}},2:{BytesPerCenter:6,BytesPerScale:6,BytesPerRotation:8,BytesPerColor:4,ScaleOffsetBytes:6,RotationffsetBytes:12,ColorOffsetBytes:20,SphericalHarmonicsOffsetBytes:24,ScaleRange:32767,BytesPerSphericalHarmonicsComponent:1,SphericalHarmonicsOffsetFloat:12,SphericalHarmonicsDegrees:{0:{BytesPerSplat:24},1:{BytesPerSplat:33},2:{BytesPerSplat:48}}}}),Y(F,"CovarianceSizeFloats",6),Y(F,"HeaderSizeBytes",4096),Y(F,"SectionHeaderSizeBytes",1024),Y(F,"BucketStorageSizeBytes",12),Y(F,"BucketStorageSizeFloats",3),Y(F,"BucketBlockSize",5),Y(F,"BucketSize",256),Y(F,"computeCovariance",(By=new Le.Matrix4,My=new Le.Matrix3,Sy=new Le.Matrix3,Ty=new Le.Matrix3,_y=new Le.Matrix3,Py=new Le.Matrix3,Dy=new Le.Matrix3,function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=5<arguments.length?arguments[5]:void 0;By.makeScale(e.x,e.y,e.z),My.setFromMatrix4(By),By.makeRotationFromQuaternion(t),Sy.setFromMatrix4(By),Ty.copy(Sy).multiply(My),_y.copy(Ty).transpose().premultiply(Ty),n&&(Py.setFromMatrix4(n),Dy.copy(Py).transpose(),_y.multiply(Dy),_y.premultiply(Py)),1<=a?(i[r]=Zy(_y.elements[0]),i[r+1]=Zy(_y.elements[3]),i[r+2]=Zy(_y.elements[6]),i[r+3]=Zy(_y.elements[4]),i[r+4]=Zy(_y.elements[7]),i[r+5]=Zy(_y.elements[8])):(i[r]=_y.elements[0],i[r+1]=_y.elements[3],i[r+2]=_y.elements[6],i[r+3]=_y.elements[4],i[r+4]=_y.elements[7],i[r+5]=_y.elements[8])})),Y(F,"dot3",function(e,t,n,i,r){var a=i[r[0]=r[1]=r[2]=0],o=i[1],i=i[2];tw.addInto3(e[0]*a,e[1]*a,e[2]*a,r),tw.addInto3(t[0]*o,t[1]*o,t[2]*o,r),tw.addInto3(n[0]*i,n[1]*i,n[2]*i,r)}),Y(F,"addInto3",function(e,t,n,i){i[0]=i[0]+e,i[1]=i[1]+t,i[2]=i[2]+n}),Y(F,"dot5",function(e,t,n,i,r,a,o){var s=a[o[0]=o[1]=o[2]=0],l=a[1],u=a[2],c=a[3],a=a[4];tw.addInto3(e[0]*s,e[1]*s,e[2]*s,o),tw.addInto3(t[0]*l,t[1]*l,t[2]*l,o),tw.addInto3(n[0]*u,n[1]*u,n[2]*u,o),tw.addInto3(i[0]*c,i[1]*c,i[2]*c,o),tw.addInto3(r[0]*a,r[1]*a,r[2]*a,o)}),Y(F,"rotateSphericalHarmonics3",function(e,t,n,i,r,a,o,s,l){tw.dot3(e,t,n,i,o),tw.dot3(e,t,n,r,s),tw.dot3(e,t,n,a,l)}),Y(F,"rotateSphericalHarmonics5",function(e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g){var A=Math.sqrt(.25),y=Math.sqrt(.75),w=Math.sqrt(1/3),b=Math.sqrt(4/3),x=Math.sqrt(1/12);l[0]=A*(s[2]*a[0]+s[0]*a[2]+(a[2]*s[0]+a[0]*s[2])),l[1]=s[1]*a[0]+a[1]*s[0],l[2]=y*(s[1]*a[1]+a[1]*s[1]),l[3]=s[1]*a[2]+a[1]*s[2],l[4]=A*(s[2]*a[2]-s[0]*a[0]+(a[2]*s[2]-a[0]*s[0])),tw.dot5(e,t,n,i,r,l,p),u[0]=A*(o[2]*a[0]+o[0]*a[2]+(a[2]*o[0]+a[0]*o[2])),u[1]=o[1]*a[0]+a[1]*o[0],u[2]=y*(o[1]*a[1]+a[1]*o[1]),u[3]=o[1]*a[2]+a[1]*o[2],u[4]=A*(o[2]*a[2]-o[0]*a[0]+(a[2]*o[2]-a[0]*o[0])),tw.dot5(e,t,n,i,r,u,f),c[0]=w*(o[2]*o[0]+o[0]*o[2])+-x*(s[2]*s[0]+s[0]*s[2]+(a[2]*a[0]+a[0]*a[2])),c[1]=b*o[1]*o[0]+-w*(s[1]*s[0]+a[1]*a[0]),c[2]=o[1]*o[1]+-A*(s[1]*s[1]+a[1]*a[1]),c[3]=b*o[1]*o[2]+-w*(s[1]*s[2]+a[1]*a[2]),c[4]=w*(o[2]*o[2]-o[0]*o[0])+-x*(s[2]*s[2]-s[0]*s[0]+(a[2]*a[2]-a[0]*a[0])),tw.dot5(e,t,n,i,r,c,m),d[0]=A*(o[2]*s[0]+o[0]*s[2]+(s[2]*o[0]+s[0]*o[2])),d[1]=o[1]*s[0]+s[1]*o[0],d[2]=y*(o[1]*s[1]+s[1]*o[1]),d[3]=o[1]*s[2]+s[1]*o[2],d[4]=A*(o[2]*s[2]-o[0]*s[0]+(s[2]*o[2]-s[0]*o[0])),tw.dot5(e,t,n,i,r,d,v),h[0]=A*(s[2]*s[0]+s[0]*s[2]-(a[2]*a[0]+a[0]*a[2])),h[1]=s[1]*s[0]-a[1]*a[0],h[2]=y*(s[1]*s[1]-a[1]*a[1]),h[3]=s[1]*s[2]-a[1]*a[2],h[4]=A*(s[2]*s[2]-s[0]*s[0]-(a[2]*a[2]-a[0]*a[0])),tw.dot5(e,t,n,i,r,h,g)}),new Uint8Array([112,108,121,10])),iw=new Uint8Array([10,101,110,100,95,104,101,97,100,101,114,10]),rw="end_header",aw=new Map([["char",Int8Array],["uchar",Uint8Array],["short",Int16Array],["ushort",Uint16Array],["int",Int32Array],["uint",Uint32Array],["float",Float32Array],["double",Float64Array]]),ow=function(){function M(){ue(this,M)}return A(M,null,[{key:"decodeHeaderText",value:function(e){for(var t,n,i,r=e.split("\n").filter(function(e){return!e.startsWith("comment ")}),a=0,o=!1,s=1;s<r.length;++s){var l=r[s].split(" ");switch(l[0]){case"format":if("binary_little_endian"!==l[1])throw new Error("Unsupported ply format");break;case"element":"chunk"===(t={name:l[1],count:parseInt(l[2],10),properties:[],storageSizeBytes:0}).name?n=t:"vertex"===t.name&&(i=t);break;case"property":if(!aw.has(l[1]))throw new Error("Unrecognized property data type '".concat(l[1],"' in ply header"));var u=aw.get(l[1]),c=u.BYTES_PER_ELEMENT*t.count;"vertex"===t.name&&(a+=u.BYTES_PER_ELEMENT),t.properties.push({type:l[1],name:l[2],storage:null,byteSize:u.BYTES_PER_ELEMENT,storageSizeByes:c}),t.storageSizeBytes+=c;break;case rw:o=!0;break;default:throw new Error("Unrecognized header value '".concat(l[0],"' in ply header"))}if(o)break}return{chunkElement:n,vertexElement:i,bytesPerSplat:a,headerSizeBytes:e.indexOf(rw)+rw.length+1}}},{key:"decodeHeader",value:function(e){var t,e=new Uint8Array(e);if(e.length>=nw.length&&!function(e,t){if(e.length<t.length)return!1;for(var n=0;n<t.length;++n)if(e[n]!==t[n])return!1;return!0}(e,nw))throw new Error("Invalid PLY header");if(-1===(t=function(e,t){for(var n,i=e.length-t.length,r=0;r<=i;++r){for(n=0;n<t.length&&e[r+n]===t[n];++n);if(n===t.length)return r}return-1}(e,iw)))throw new Error("End of PLY header not found");var e=new TextDecoder("ascii").decode(e.slice(0,t)),e=M.decodeHeaderText(e),n=e.chunkElement,i=e.vertexElement,e=e.bytesPerSplat;return{headerSizeBytes:t+iw.length,bytesPerSplat:e,chunkElement:n,vertexElement:i}}},{key:"readElementData",value:function(e,t,n,i,r){var a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:null,o=t instanceof DataView?t:new DataView(t);r=r||e.count-1;for(var s=i=i||0;s<=r;++s)for(var l=0;l<e.properties.length;++l){var u=e.properties[l],c=aw.get(u.type),d=c.BYTES_PER_ELEMENT*e.count;if(u.storage&&!(u.storage.byteLength<d)||a&&!a(u.name)||(u.storage=new c(e.count)),u.storage)switch(u.type){case"char":u.storage[s]=o.getInt8(n);break;case"uchar":u.storage[s]=o.getUint8(n);break;case"short":u.storage[s]=o.getInt16(n,!0);break;case"ushort":u.storage[s]=o.getUint16(n,!0);break;case"int":u.storage[s]=o.getInt32(n,!0);break;case"uint":u.storage[s]=o.getUint32(n,!0);break;case"float":u.storage[s]=o.getFloat32(n,!0);break;case"double":u.storage[s]=o.getFloat64(n,!0)}n+=u.byteSize}return n}},{key:"readPly",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=M.decodeHeader(e),i=M.readElementData(n.chunkElement,e,n.headerSizeBytes,null,null,t);return M.readElementData(n.vertexElement,e,i,null,null,t),{chunkElement:n.chunkElement,vertexElement:n.vertexElement}}},{key:"getElementStorageArrays",value:function(e,t){var n=xy(e,"min_x"),i=xy(e,"min_y"),r=xy(e,"min_z"),a=xy(e,"max_x"),o=xy(e,"max_y"),s=xy(e,"max_z"),l=xy(e,"min_scale_x"),u=xy(e,"min_scale_y"),c=xy(e,"min_scale_z");return{positionExtremes:{minX:n,maxX:a,minY:i,maxY:o,minZ:r,maxZ:s},scaleExtremes:{minScaleX:l,maxScaleX:xy(e,"max_scale_x"),minScaleY:u,maxScaleY:xy(e,"max_scale_y"),minScaleZ:c,maxScaleZ:xy(e,"max_scale_z")},position:xy(t,"packed_position"),rotation:xy(t,"packed_rotation"),scale:xy(t,"packed_scale"),color:xy(t,"packed_color")}}},{key:"parseToUncompressedSplatBufferSection",value:function(e,t,n,i,r,a,o,s,l){M.readElementData(t,a,o,n,i,9<arguments.length&&void 0!==arguments[9]?arguments[9]:null);for(var u=F.CompressionLevels[0].BytesPerCenter,c=F.CompressionLevels[0].BytesPerScale,d=F.CompressionLevels[0].BytesPerRotation,h=F.CompressionLevels[0].SphericalHarmonicsDegrees[0].BytesPerSplat,a=M.getElementStorageArrays(e,t),p=a.positionExtremes,f=a.scaleExtremes,m=a.position,v=a.rotation,g=a.scale,A=a.color,y=Ue.OFFSET,w=Ue.createSplat(),b=n;b<=i;++b){M.decompressSplat(b,r,m,p,g,f,v,A,w);var x=b*h+l,E=new Float32Array(s,x,3),C=new Float32Array(s,x+u,3),B=new Float32Array(s,x+u+c,4),x=new Uint8Array(s,x+u+c+d,4);E[0]=w[y.X],E[1]=w[y.Y],E[2]=w[y.Z],C[0]=w[y.SCALE0],C[1]=w[y.SCALE1],C[2]=w[y.SCALE2],B[0]=w[y.ROTATION0],B[1]=w[y.ROTATION1],B[2]=w[y.ROTATION2],B[3]=w[y.ROTATION3],x[0]=w[y.FDC0],x[1]=w[y.FDC1],x[2]=w[y.FDC2],x[3]=w[y.OPACITY]}}},{key:"parseToUncompressedSplatArray",value:function(e){for(var e=M.readPly(e),t=e.chunkElement,n=e.vertexElement,i=new Ue,e=M.getElementStorageArrays(t,n),r=e.positionExtremes,a=e.scaleExtremes,o=e.position,s=e.rotation,l=e.scale,u=e.color,c=0;c<n.count;++c){i.addDefaultSplat();var d=i.getSplat(i.splatCount-1);M.decompressSplat(c,0,o,r,l,a,s,u,d)}return(new Le.Matrix4).identity(),i}}])}(),sw=(Y(ow,"decompressSplat",(Iy=new Le.Vector3,ky=new Le.Quaternion,Ry=new Le.Vector3,Ly=new Le.Vector4,Fy=Ue.OFFSET,function(e,t,n,i,r,a,o,s,l){l=l||Ue.createSplat();var t=Math.floor((t+e)/256),u=(wy(Iy,n[e]),ky),n=o[e],o=1/(.5*Math.sqrt(2)),c=(yy(n>>>20,10)-.5)*o,d=(yy(n>>>10,10)-.5)*o,h=(yy(n,10)-.5)*o,p=Math.sqrt(1-(c*c+d*d+h*h));switch(n>>>30){case 0:u.set(p,c,d,h);break;case 1:u.set(c,p,d,h);break;case 2:u.set(c,d,p,h);break;case 3:u.set(c,d,h,p)}return wy(Ry,r[e]),o=Ly,n=s[e],o.x=yy(n>>>24,8),o.y=yy(n>>>16,8),o.z=yy(n>>>8,8),o.w=yy(n,8),l[Fy.X]=by(i.minX[t],i.maxX[t],Iy.x),l[Fy.Y]=by(i.minY[t],i.maxY[t],Iy.y),l[Fy.Z]=by(i.minZ[t],i.maxZ[t],Iy.z),l[Fy.ROTATION0]=ky.x,l[Fy.ROTATION1]=ky.y,l[Fy.ROTATION2]=ky.z,l[Fy.ROTATION3]=ky.w,l[Fy.SCALE0]=Math.exp(by(a.minScaleX[t],a.maxScaleX[t],Ry.x)),l[Fy.SCALE1]=Math.exp(by(a.minScaleY[t],a.maxScaleY[t],Ry.y)),l[Fy.SCALE2]=Math.exp(by(a.minScaleZ[t],a.maxScaleZ[t],Ry.z)),l[Fy.FDC0]=cy(Math.floor(255*Ly.x),0,255),l[Fy.FDC1]=cy(Math.floor(255*Ly.y),0,255),l[Fy.FDC2]=cy(Math.floor(255*Ly.z),0,255),l[Fy.OPACITY]=cy(Math.floor(255*Ly.w),0,255),l})),function(){function S(){ue(this,S)}return A(S,null,[{key:"checkTextForEndHeader",value:function(e){return!!e.includes(S.HeaderEndToken)}},{key:"checkBufferForEndHeader",value:function(e,t,n,i){e=new Uint8Array(e,Math.max(0,t-n),n),t=i.decode(e);return S.checkTextForEndHeader(t)}},{key:"decodeHeaderText",value:function(e){for(var t=e.split("\n"),n=[],i=0,r={},a=!1,o=0;o<t.length;o++){var s=t[o].trim();if(n.push(s),s.startsWith("element chunk")||s.match(/[A-Za-z]*packed_[A-Za-z]*/))a=!0;else if(s.startsWith("element vertex")){var l=s.match(/\d+/);l&&(i=parseInt(l[0]))}else if(s.startsWith("property")){var u,l=s.match(/(\w+)\s+(\w+)\s+(\w+)/);l&&(u=l[2],r[l[3]]=u)}else if(s===S.HeaderEndToken)break}var c,d,h=0,p={},f={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1},m=[];for(c in r)r.hasOwnProperty(c)&&(m.push(c),d=r[c],p[c]=h,h+=f[d]);for(var v=0,g=0,A=m;g<A.length;g++)A[g].startsWith("f_rest")&&v++;var y,w=8<=(y=v/3)?2:3<=y?1:0,b=[];if(1<=w)for(var x=0;x<3;x++)for(var E=0;E<3;E++)b.push("f_rest_"+(E+y*x));var C=[];if(2<=w)for(var B=0;B<3;B++)for(var M=0;M<5;M++)C.push("f_rest_"+(M+y*B+3));return{splatCount:i,propertyTypes:r,compressed:a,headerText:e,headerLines:n,headerSizeBytes:e.indexOf(S.HeaderEndToken)+S.HeaderEndToken.length+1,bytesPerSplat:h,fieldOffsets:p,sphericalHarmonicsDegree:w,sphericalHarmonicsCoefficientsPerChannel:y,sphericalHarmonicsDegree1Fields:b,sphericalHarmonicsDegree2Fields:C}}},{key:"decodeHeadeFromBuffer",value:function(e){for(var t=new TextDecoder,n=0,i="";;){if(n+100>=e.byteLength)throw new Error("End of file reached while searching for end of header");var r=new Uint8Array(e,n,100);if(i+=t.decode(r),S.checkBufferForEndHeader(e,n+=100,200,t))break}return S.decodeHeaderText(i)}},{key:"findVertexData",value:function(e,t){return new DataView(e,t.headerSizeBytes)}},{key:"readRawVertexFast",value:function(e,t,n,i,r,a){var o,s=a||{},l=q(i);try{for(l.s();!(o=l.n()).done;){var u=o.value,c=r[u];"float"===c?s[u]=e.getFloat32(t+n[u],!0):"double"===c?s[u]=e.getFloat64(t+n[u],!0):"uchar"===c&&(s[u]=e.getUint8(t+n[u])/255)}}catch(e){l.e(e)}finally{l.f()}}},{key:"parseToUncompressedSplatBufferSection",value:function(e,t,n,i,r,a,o){for(var s=7<arguments.length&&void 0!==arguments[7]?arguments[7]:0,s=Math.min(s,e.sphericalHarmonicsDegree),l=F.CompressionLevels[0].BytesPerCenter,u=F.CompressionLevels[0].BytesPerScale,c=F.CompressionLevels[0].BytesPerRotation,d=F.CompressionLevels[0].BytesPerColor,h=F.CompressionLevels[0].SphericalHarmonicsDegrees[s].BytesPerSplat,p=t;p<=n;p++){var f=S.parseToUncompressedSplat(i,p,e,r,s),m=p*h+o,v=new Float32Array(a,m,3),g=new Float32Array(a,m+l,3),A=new Float32Array(a,m+l+u,4),y=new Uint8Array(a,m+l+u+c,4);if(v[0]=f[Ue.OFFSET.X],v[1]=f[Ue.OFFSET.Y],v[2]=f[Ue.OFFSET.Z],g[0]=f[Ue.OFFSET.SCALE0],g[1]=f[Ue.OFFSET.SCALE1],g[2]=f[Ue.OFFSET.SCALE2],A[0]=f[Ue.OFFSET.ROTATION0],A[1]=f[Ue.OFFSET.ROTATION1],A[2]=f[Ue.OFFSET.ROTATION2],A[3]=f[Ue.OFFSET.ROTATION3],y[0]=f[Ue.OFFSET.FDC0],y[1]=f[Ue.OFFSET.FDC1],y[2]=f[Ue.OFFSET.FDC2],y[3]=f[Ue.OFFSET.OPACITY],1<=s){for(var w=new Float32Array(a,m+l+u+c+d,f.sphericalHarmonicsCount),b=0;b<=8;b++)w[b]=f[Ue.OFFSET.FRC0+b];if(2<=s)for(var x=9;x<=23;x++)w[x]=f[Ue.OFFSET.FRC0+x]}}}},{key:"parseToUncompressedSplatArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=S.decodeHeadeFromBuffer(e);if(n.compressed)return ow.parseToUncompressedSplatArray(e);for(var i=n.splatCount,r=S.findVertexData(e,n),a=new Ue(t),o=0;o<i;o++){var s=S.parseToUncompressedSplat(r,o,n,0,t);a.addSplat(s)}return a}}])}()),lw=sw,uw=(Y(sw,"HeaderEndToken","end_header"),Y(sw,"BaseFields",["scale_0","scale_1","scale_2","rot_0","rot_1","rot_2","rot_3","x","y","z","f_dc_0","f_dc_1","f_dc_2","red","green","blue","opacity"]),Y(sw,"SphericalHarmonicsFields",Array.from(Array(45)).map(function(e,t){return"f_rest_".concat(t)})),Y(sw,"Fields",[Fe(lw.BaseFields),[].concat(Fe(lw.BaseFields),Fe(lw.SphericalHarmonicsFields))]),Y(sw,"parseToUncompressedSplat",(Oy={},Uy=new Le.Quaternion,function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,r=Math.min(r,n.sphericalHarmonicsDegree),a=(lw.readRawVertexFast(e,t*n.bytesPerSplat+i,n.fieldOffsets,lw.Fields[0<r?1:0],n.propertyTypes,Oy),Ue.createSplat(r));if(void 0!==Oy.scale_0?(a[Ue.OFFSET.SCALE0]=Math.exp(Oy.scale_0),a[Ue.OFFSET.SCALE1]=Math.exp(Oy.scale_1),a[Ue.OFFSET.SCALE2]=Math.exp(Oy.scale_2)):(a[Ue.OFFSET.SCALE0]=.01,a[Ue.OFFSET.SCALE1]=.01,a[Ue.OFFSET.SCALE2]=.01),void 0!==Oy.f_dc_0?(a[Ue.OFFSET.FDC0]=255*(.5+(e=.28209479177387814)*Oy.f_dc_0),a[Ue.OFFSET.FDC1]=255*(.5+e*Oy.f_dc_1),a[Ue.OFFSET.FDC2]=255*(.5+e*Oy.f_dc_2)):void 0!==Oy.red?(a[Ue.OFFSET.FDC0]=255*Oy.red,a[Ue.OFFSET.FDC1]=255*Oy.green,a[Ue.OFFSET.FDC2]=255*Oy.blue):(a[Ue.OFFSET.FDC0]=0,a[Ue.OFFSET.FDC1]=0,a[Ue.OFFSET.FDC2]=0),a[Ue.OFFSET.OPACITY]=void 0!==Oy.opacity?1/(1+Math.exp(-Oy.opacity))*255:1,a[Ue.OFFSET.FDC0]=cy(Math.floor(a[Ue.OFFSET.FDC0]),0,255),a[Ue.OFFSET.FDC1]=cy(Math.floor(a[Ue.OFFSET.FDC1]),0,255),a[Ue.OFFSET.FDC2]=cy(Math.floor(a[Ue.OFFSET.FDC2]),0,255),a[Ue.OFFSET.OPACITY]=cy(Math.floor(a[Ue.OFFSET.OPACITY]),0,255),1<=r)if(void 0!==Oy.f_rest_0){for(var o=0;o<9;o++)a[Ue.OFFSET.FRC0+o]=Oy[n.sphericalHarmonicsDegree1Fields[o]];if(2<=r)for(var s=0;s<15;s++)a[Ue.OFFSET.FRC9+s]=Oy[n.sphericalHarmonicsDegree2Fields[s]]}else a[Ue.OFFSET.FRC0]=0,a[Ue.OFFSET.FRC1]=0,a[Ue.OFFSET.FRC2]=0;return null==Oy.rot_0?Uy.set(0,0,0,1):(Uy.set(Oy.rot_0,Oy.rot_1,Oy.rot_2,Oy.rot_3),Uy.normalize()),a[Ue.OFFSET.ROTATION0]=Uy.x,a[Ue.OFFSET.ROTATION1]=Uy.y,a[Ue.OFFSET.ROTATION2]=Uy.z,a[Ue.OFFSET.ROTATION3]=Uy.w,a[Ue.OFFSET.X]=Oy.x,a[Ue.OFFSET.Y]=Oy.y,a[Ue.OFFSET.Z]=Oy.z,a})),function(){function r(e,t,n,i){ue(this,r),this.sectionCount=e,this.sectionFilters=t,this.groupingParameters=n,this.partitionGenerator=i}return A(r,[{key:"partitionUncompressedSplatArray",value:function(e){r=(this.partitionGenerator?(n=(t=this.partitionGenerator(e)).groupingParameters,i=t.sectionCount,t):(n=this.groupingParameters,i=this.sectionCount,this)).sectionFilters;for(var t,n,i,r,a=[],o=0;o<i;o++){for(var s=new Ue(e.sphericalHarmonicsDegree),l=r[o],u=0;u<e.splatCount;u++)l(u)&&s.addSplatFromArray(e,u);a.push(s)}return{splatArrays:a,parameters:n}}}],[{key:"getStandardPartitioner",value:function(){var u=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le.Vector3,d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:F.BucketBlockSize,h=3<arguments.length&&void 0!==arguments[3]?arguments[3]:F.BucketSize;return new r(void 0,void 0,void 0,function(e){u<=0&&(u=e.splatCount);for(var n=new Le.Vector3,i=new Le.Vector3,r=function(e){e.x=.5*Math.floor(e.x/.5),e.y=.5*Math.floor(e.y/.5),e.z=.5*Math.floor(e.z/.5)},a=(e.splats.sort(function(e,t){n.set(e[Ue.OFFSET.X],e[Ue.OFFSET.Y],e[Ue.OFFSET.Z]).sub(c),r(n);e=n.lengthSq();return i.set(t[Ue.OFFSET.X],t[Ue.OFFSET.Y],t[Ue.OFFSET.Z]).sub(c),r(i),i.lengthSq()<e?1:-1}),[]),o=[],t=(u=Math.min(e.splatCount,u),Math.ceil(e.splatCount/u)),s=0,l=0;l<t;l++)!function(){var t=s;a.push(function(e){return t<=e&&e<t+u}),o.push({blocksSize:d,bucketSize:h}),s+=u}();return{sectionCount:a.length,sectionFilters:a,groupingParameters:o}})}}])}()),cw=function(){function s(e,t,n,i,r,a,o){ue(this,s),this.splatPartitioner=e,this.alphaRemovalThreshold=t,this.compressionLevel=n,this.sectionSize=i,this.sceneCenter=r?(new Le.Vector3).copy(r):void 0,this.blockSize=a,this.bucketSize=o}return A(s,[{key:"generateFromUncompressedSplatArray",value:function(e){e=this.splatPartitioner.partitionUncompressedSplatArray(e);return F.generateFromUncompressedSplatArrays(e.splatArrays,this.alphaRemovalThreshold,this.compressionLevel,this.sceneCenter,this.blockSize,this.bucketSize,e.parameters)}}],[{key:"getStandardGenerator",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Le.Vector3,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:F.BucketBlockSize,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:F.BucketSize;return new s(uw.getStandardPartitioner(n,i,r,a),e,t,n,i,r,a)}}])}(),dw=0,hw=1,pw=2,fw=A(function e(){ue(this,e)});function mw(e,t){var n,i=0,r=q(e);try{for(r.s();!(n=r.n()).done;)i+=n.value.sizeBytes}catch(e){r.e(e)}finally{r.f()}(!t||t.byteLength<i)&&(t=new ArrayBuffer(i));var a,o=0,s=q(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;new Uint8Array(t,o,l.sizeBytes).set(l.data),o+=l.sizeBytes}}catch(e){s.e(e)}finally{s.f()}return t}Y(fw,"DepthMapRange",65536),Y(fw,"MemoryPageSize",65536),Y(fw,"BytesPerFloat",4),Y(fw,"BytesPerInt",4),Y(fw,"MaxScenes",32),Y(fw,"StreamingSectionSize",524288);function vw(e){return e.endsWith(".ply")?xw.Ply:e.endsWith(".splat")?xw.Splat:e.endsWith(".ksplat")?xw.KSplat:null}var gw,Aw=function(){function l(){ue(this,l)}return A(l,null,[{key:"loadFromURL",value:function(e,p,f,m,t,n){var v,g,A,y,w,b=6<arguments.length&&void 0!==arguments[6]?arguments[6]:0,i=7<arguments.length?arguments[7]:void 0,r=8<arguments.length?arguments[8]:void 0,a=9<arguments.length?arguments[9]:void 0,o=10<arguments.length?arguments[10]:void 0,x=fw.StreamingSectionSize,E=F.HeaderSizeBytes+F.SectionHeaderSizeBytes,C=0,B=0,M=!1,S=!1,T=!1,s=new Promise(function(e){w=e}),_=0,P=0,D=0,I="",k=null,R=[],L=new TextDecoder;return uy(e,function(e,t,n){var i=100<=e;if(f&&(n&&(R.push({data:n,sizeBytes:n.byteLength,startBytes:D,endBytes:D+n.byteLength}),D+=n.byteLength),M?T&&!S&&(r=k.headerSizeBytes+k.chunkElement.storageSizeBytes,(y=mw(R,y)).byteLength>=r)&&(ow.readElementData(k.chunkElement,y,k.headerSizeBytes),P=_=r,S=!0):(I+=L.decode(n),sw.checkTextForEndHeader(I)&&(k=sw.decodeHeaderText(I),b=Math.min(b,k.sphericalHarmonicsDegree),(T=k.compressed)?(k=ow.decodeHeaderText(I),C=k.vertexElement.count):(C=k.splatCount,S=!0),r=F.CompressionLevels[0].SphericalHarmonicsDegrees[b],n=E+r.BytesPerSplat*C,g=new ArrayBuffer(n),F.writeHeaderToBuffer({versionMajor:F.CurrentMajorVersion,versionMinor:F.CurrentMinorVersion,maxSectionCount:1,sectionCount:1,maxSplatCount:C,splatCount:B,compressionLevel:0,sceneCenter:new Le.Vector3},g),_=k.headerSizeBytes,P=k.headerSizeBytes,M=!0)),M&&S)){if(0<R.length)if(v=mw(R,v),x<D-_||i){var r=D-P,n=Math.floor(r/k.bytesPerSplat),a=n*k.bytesPerSplat,o=r-a,r=B+n,s=P-R[0].startBytes,s=new DataView(v,s,a),l=F.CompressionLevels[0].SphericalHarmonicsDegrees[b],l=B*l.BytesPerSplat+E;if(T?ow.parseToUncompressedSplatBufferSection(k.chunkElement,k.vertexElement,0,n-1,B,s,0,g,l):sw.parseToUncompressedSplatBufferSection(k,0,n-1,s,0,g,l,b),B=r,A||(F.writeSectionHeaderToBuffer({maxSplatCount:C,splatCount:B,bucketSize:0,bucketCount:0,bucketBlockSize:0,compressionScaleRange:0,storageSizeBytes:0,fullBucketCount:0,partiallyFilledBucketCount:0,sphericalHarmonicsDegree:b},0,g,F.HeaderSizeBytes),A=new F(g,!1)),A.updateLoadedCounts(1,B),m(A,i),_+=x,P+=a,0==o)R=[];else{for(var u=[],c=0,d=R.length-1;0<=d;d--){var h=R[d];if(c+=h.sizeBytes,u.unshift(h),o<=c)break}R=u}}i&&w(A)}p&&p(e,t,dw)},!f).then(function(e){return p&&p(0,"0%",hw),(f?s:l.loadFromFileData(e,t,n,b,i,r,a,o)).then(function(e){return p&&p(100,"100%",pw),e})})}},{key:"loadFromFileData",value:function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=4<arguments.length?arguments[4]:void 0,a=5<arguments.length?arguments[5]:void 0,o=6<arguments.length?arguments[6]:void 0,s=7<arguments.length?arguments[7]:void 0;return py(function(){return sw.parseToUncompressedSplatArray(e,i)}).then(function(e){return cw.getStandardGenerator(t,n,r,a,o,s).generateFromUncompressedSplatArray(e)})}}])}(),yw=function(){function y(){ue(this,y)}return A(y,null,[{key:"parseToUncompressedSplatBufferSection",value:function(e,t,n,i,r,a){for(var o=F.CompressionLevels[0].BytesPerCenter,s=F.CompressionLevels[0].BytesPerScale,l=F.CompressionLevels[0].BytesPerRotation,u=F.CompressionLevels[0].SphericalHarmonicsDegrees[0].BytesPerSplat,c=e;c<=t;c++){var d=c*y.RowSizeBytes+i,h=new Float32Array(n,d,3),p=new Float32Array(n,d+y.CenterSizeBytes,3),f=new Uint8Array(n,d+y.CenterSizeBytes+y.ScaleSizeBytes,4),d=new Uint8Array(n,d+y.CenterSizeBytes+y.ScaleSizeBytes+y.RotationSizeBytes,4),d=new Le.Quaternion((d[1]-128)/128,(d[2]-128)/128,(d[3]-128)/128,(d[0]-128)/128),m=(d.normalize(),c*u+a),v=new Float32Array(r,m,3),g=new Float32Array(r,m+o,3),A=new Float32Array(r,m+o+s,4),m=new Uint8Array(r,m+o+s+l,4);v[0]=h[0],v[1]=h[1],v[2]=h[2],g[0]=p[0],g[1]=p[1],g[2]=p[2],A[0]=d.w,A[1]=d.x,A[2]=d.y,A[3]=d.z,m[0]=f[0],m[1]=f[1],m[2]=f[2],m[3]=f[3]}}},{key:"parseStandardSplatToUncompressedSplatArray",value:function(e){for(var t=e.byteLength/y.RowSizeBytes,n=new Ue,i=0;i<t;i++){var r=i*y.RowSizeBytes,a=new Float32Array(e,r,3),o=new Float32Array(e,r+y.CenterSizeBytes,3),s=new Uint8Array(e,r+y.CenterSizeBytes+y.ScaleSizeBytes,4),r=new Uint8Array(e,r+y.CenterSizeBytes+y.ScaleSizeBytes+y.ColorSizeBytes,4),r=new Le.Quaternion((r[1]-128)/128,(r[2]-128)/128,(r[3]-128)/128,(r[0]-128)/128);r.normalize(),n.addSplatFromComonents(a[0],a[1],a[2],o[0],o[1],o[2],r.w,r.x,r.y,r.z,s[0],s[1],s[2],s[3])}return n}}])}(),ww=(Y(yw,"RowSizeBytes",32),Y(yw,"CenterSizeBytes",12),Y(yw,"ScaleSizeBytes",12),Y(yw,"RotationSizeBytes",4),Y(yw,"ColorSizeBytes",4),function(){function E(){ue(this,E)}return A(E,null,[{key:"loadFromURL",value:function(e,a,o,s,t,n,i,r,l,u,c){var d,h,p,f,m=F.HeaderSizeBytes+F.SectionHeaderSizeBytes,v=fw.StreamingSectionSize,g=0,A=0,y=new Promise(function(e){f=e}),w=0,b=0,x=[];return uy(e,function(e,t,n,i){var r=100<=e;return(o=i?o:!1)&&(d||(g=i/yw.RowSizeBytes,d=new ArrayBuffer(i),i=F.CompressionLevels[0].SphericalHarmonicsDegrees[0].BytesPerSplat,h=new ArrayBuffer(m+i*g),F.writeHeaderToBuffer({versionMajor:F.CurrentMajorVersion,versionMinor:F.CurrentMinorVersion,maxSectionCount:1,sectionCount:1,maxSplatCount:g,splatCount:A,compressionLevel:0,sceneCenter:new Le.Vector3},h)),n&&(x.push(n),new Uint8Array(d,b,n.byteLength).set(new Uint8Array(n)),i=(b+=n.byteLength)-w,v<i||r)&&(n=(r?i:v)/yw.RowSizeBytes,i=A+n,yw.parseToUncompressedSplatBufferSection(A,i-1,d,0,h,m),A=i,p||(F.writeSectionHeaderToBuffer({maxSplatCount:g,splatCount:A,bucketSize:0,bucketCount:0,bucketBlockSize:0,compressionScaleRange:0,storageSizeBytes:0,fullBucketCount:0,partiallyFilledBucketCount:0},0,h,F.HeaderSizeBytes),p=new F(h,!1)),p.updateLoadedCounts(1,A),s(p,r),w+=v),r)&&f(p),a&&a(e,t,dw),o},!0).then(function(e){return a&&a(0,"0%",hw),(o?y:E.loadFromFileData(e,t,n,i,r,l,u,c)).then(function(e){return a&&a(100,"100%",pw),e})})}},{key:"loadFromFileData",value:function(t,n,i,r,a,o,s,l){return py(function(){var e=yw.parseStandardSplatToUncompressedSplatArray(t);return r?cw.getStandardGenerator(n,i,a,o,s,l).generateFromUncompressedSplatArray(e):F.generateFromUncompressedSplatArrays([e],n,0,new Le.Vector3)})}}])}()),bw=function(){function M(){ue(this,M)}return A(M,null,[{key:"checkVersion",value:function(e){var t=F.CurrentMajorVersion,n=F.CurrentMinorVersion,e=F.parseHeader(e);if(e.versionMajor===t&&e.versionMinor>=n||e.versionMajor>t)return!0;throw new Error("KSplat version not supported: v".concat(e.versionMajor,".").concat(e.versionMinor,". ")+"Minimum required: v".concat(t,".").concat(n))}},{key:"loadFromURL",value:function(e,i,r,l){function a(){if(v&&!x&&(x=b<=A,w<A-y||x)){y=A,c=c||new F(u,!1);for(var e=F.HeaderSizeBytes+F.SectionHeaderSizeBytes*d.maxSectionCount,t=0,n=0,i=0,r=0;r<d.maxSectionCount;r++){var a=m[r],o=e+(t+4*a.partiallyFilledBucketCount+a.bucketStorageSizeBytes*a.bucketCount);if(!(o<=A))break;n++;var o=A-o,s=F.CompressionLevels[d.compressionLevel].SphericalHarmonicsDegrees[a.sphericalHarmonicsDegree].BytesPerSplat,o=Math.floor(o/s);i+=o=Math.min(o,a.maxSplatCount),c.updateLoadedCounts(n,i),c.updateSectionLoadedCounts(r,o),t+=a.storageSizeBytes}l(c,x),x&&h(c)}}var u,c,o,d,s,h,p=!1,f=!1,m=[],v=!1,g=!1,A=0,y=0,w=fw.StreamingSectionSize,b=0,x=!1,E=[],t=new Promise(function(e){h=e}),n=0,C=function(){0===n&&(n++,window.setTimeout(function(){n--,a()},1))},B=function(){!g&&!v&&p&&A>=F.HeaderSizeBytes+F.SectionHeaderSizeBytes*d.maxSectionCount&&(g=!0,new Blob(E).arrayBuffer().then(function(e){v=!(g=!1),s=new ArrayBuffer(d.maxSectionCount*F.SectionHeaderSizeBytes),new Uint8Array(s).set(new Uint8Array(e,F.HeaderSizeBytes,d.maxSectionCount*F.SectionHeaderSizeBytes)),m=F.parseSectionHeaders(d,s,0,!1);for(var t=0,n=0;n<d.maxSectionCount;n++)t+=m[n].storageSizeBytes;e=F.HeaderSizeBytes+d.maxSectionCount*F.SectionHeaderSizeBytes+t;if(!u){u=new ArrayBuffer(e);for(var i=0,r=0;r<E.length;r++){var a=E[r];new Uint8Array(u,i,a.byteLength).set(new Uint8Array(a)),i+=a.byteLength}}b=F.HeaderSizeBytes+F.SectionHeaderSizeBytes*d.maxSectionCount;for(var o=0;o<=m.length&&o<d.maxSectionCount;o++)b+=m[o].storageSizeBytes;C()}))};return uy(e,function(e,t,n){n&&(E.push(n),u&&new Uint8Array(u,A,n.byteLength).set(new Uint8Array(n)),A+=n.byteLength),r&&(!p&&!f&&A>=F.HeaderSizeBytes&&(f=!0,new Blob(E).arrayBuffer().then(function(e){o=new ArrayBuffer(F.HeaderSizeBytes),new Uint8Array(o).set(new Uint8Array(e,0,F.HeaderSizeBytes)),M.checkVersion(o),p=!(f=!1),d=F.parseHeader(o),window.setTimeout(function(){B()},1)})),B(),a()),i&&i(e,t,dw)},!r).then(function(e){return i&&i(0,"0%",hw),(r?t:M.loadFromFileData(e)).then(function(e){return i&&i(100,"100%",pw),e})})}},{key:"loadFromFileData",value:function(e){return py(function(){return M.checkVersion(e),new F(e)})}}])}(),xw=(Y(bw,"downloadFile",function(e,t){e=new Blob([e.bufferData],{type:"application/octet-stream"});gw||(gw=document.createElement("a"),document.body.appendChild(gw)),gw.download=t,gw.href=URL.createObjectURL(e),gw.click()}),{Splat:0,KSplat:1,Ply:2}),Ru=Object.freeze({__proto__:null,sceneFormatFromPath:vw}),Ew={type:"change"},Cw={type:"start"},Bw={type:"end"},Mw=new Le.Ray,Sw=new Le.Plane,Tw=Math.cos(70*Le.MathUtils.DEG2RAD),_w=function(){function se(r,t){ue(this,se),(e=le(this,se)).object=r,e.domElement=t,e.domElement.style.touchAction="none",e.enabled=!0,e.target=new Le.Vector3,e.minDistance=0,e.maxDistance=1/0,e.minZoom=0,e.maxZoom=1/0,e.minPolarAngle=0,e.maxPolarAngle=Math.PI,e.minAzimuthAngle=-1/0,e.maxAzimuthAngle=1/0,e.enableDamping=!1,e.dampingFactor=.05,e.enableZoom=!0,e.zoomSpeed=1,e.enableRotate=!0,e.rotateSpeed=1,e.enablePan=!0,e.panSpeed=1,e.screenSpacePanning=!0,e.keyPanSpeed=7,e.zoomToCursor=!1,e.autoRotate=!1,e.autoRotateSpeed=2,e.keys={LEFT:"KeyA",UP:"KeyW",RIGHT:"KeyD",BOTTOM:"KeyS"},e.mouseButtons={LEFT:Le.MOUSE.ROTATE,MIDDLE:Le.MOUSE.DOLLY,RIGHT:Le.MOUSE.PAN},e.touches={ONE:Le.TOUCH.ROTATE,TWO:Le.TOUCH.DOLLY_PAN},e.target0=e.target.clone(),e.position0=e.object.position.clone(),e.zoom0=e.object.zoom,e._domElementKeyEvents=null,e.getPolarAngle=function(){return m.phi},e.getAzimuthalAngle=function(){return m.theta},e.getDistance=function(){return this.object.position.distanceTo(this.target)},e.listenToKeyEvents=function(e){e.addEventListener("keydown",ie),this._domElementKeyEvents=e},e.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",ie),this._domElementKeyEvents=null},e.saveState=function(){h.target0.copy(h.target),h.position0.copy(h.object.position),h.zoom0=h.object.zoom},e.reset=function(){h.target.copy(h.target0),h.object.position.copy(h.position0),h.object.zoom=h.zoom0,this.clearDampedRotation(),this.clearDampedPan(),h.object.updateProjectionMatrix(),h.dispatchEvent(Ew),h.update(),f=p.NONE},e.clearDampedRotation=function(){v.theta=0,v.phi=0},e.clearDampedPan=function(){A.set(0,0,0)},e.update=(a=new Le.Vector3,o=(new Le.Quaternion).setFromUnitVectors(r.up,new Le.Vector3(0,1,0)),s=o.clone().invert(),l=new Le.Vector3,u=new Le.Quaternion,c=new Le.Vector3,d=2*Math.PI,function(){o.setFromUnitVectors(r.up,new Le.Vector3(0,1,0)),s.copy(o).invert();var e,t=h.object.position,n=(a.copy(t).sub(h.target),a.applyQuaternion(o),m.setFromVector3(a),h.autoRotate&&f===p.NONE&&D(2*Math.PI/60/60*h.autoRotateSpeed),h.enableDamping?(m.theta+=v.theta*h.dampingFactor,m.phi+=v.phi*h.dampingFactor):(m.theta+=v.theta,m.phi+=v.phi),h.minAzimuthAngle),i=h.maxAzimuthAngle,n=(isFinite(n)&&isFinite(i)&&(n<-Math.PI?n+=d:n>Math.PI&&(n-=d),i<-Math.PI?i+=d:i>Math.PI&&(i-=d),m.theta=n<=i?Math.max(n,Math.min(i,m.theta)):m.theta>(n+i)/2?Math.max(n,m.theta):Math.min(i,m.theta)),m.phi=Math.max(h.minPolarAngle,Math.min(h.maxPolarAngle,m.phi)),m.makeSafe(),!0===h.enableDamping?h.target.addScaledVector(A,h.dampingFactor):h.target.add(A),h.zoomToCursor&&T||h.object.isOrthographicCamera?m.radius=j(m.radius):m.radius=j(m.radius*g),a.setFromSpherical(m),a.applyQuaternion(s),t.copy(h.target).add(a),h.object.lookAt(h.target),!0===h.enableDamping?(v.theta*=1-h.dampingFactor,v.phi*=1-h.dampingFactor,A.multiplyScalar(1-h.dampingFactor)):(v.set(0,0,0),A.set(0,0,0)),!1);return h.zoomToCursor&&T?(i=null,h.object.isPerspectiveCamera?(i=j((t=a.length())*g),h.object.position.addScaledVector(U,t-i),h.object.updateMatrixWorld()):h.object.isOrthographicCamera?((t=new Le.Vector3(S.x,S.y,0)).unproject(h.object),h.object.zoom=Math.max(h.minZoom,Math.min(h.maxZoom,h.object.zoom/g)),h.object.updateProjectionMatrix(),n=!0,(e=new Le.Vector3(S.x,S.y,0)).unproject(h.object),h.object.position.sub(e).add(t),h.object.updateMatrixWorld(),i=a.length()):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),h.zoomToCursor=!1),null!==i&&(this.screenSpacePanning?h.target.set(0,0,-1).transformDirection(h.object.matrix).multiplyScalar(i).add(h.object.position):(Mw.origin.copy(h.object.position),Mw.direction.set(0,0,-1).transformDirection(h.object.matrix),Math.abs(h.object.up.dot(Mw.direction))<Tw?r.lookAt(h.target):(Sw.setFromNormalAndCoplanarPoint(h.object.up,h.target),Mw.intersectPlane(Sw,h.target))))):h.object.isOrthographicCamera&&(h.object.zoom=Math.max(h.minZoom,Math.min(h.maxZoom,h.object.zoom/g)),h.object.updateProjectionMatrix(),n=!0),T=!(g=1),!(!(n||l.distanceToSquared(h.object.position)>O||8*(1-u.dot(h.object.quaternion))>O||0<c.distanceToSquared(h.target))||(h.dispatchEvent(Ew),l.copy(h.object.position),u.copy(h.object.quaternion),c.copy(h.target),!1))}),e.dispose=function(){h.domElement.removeEventListener("contextmenu",re),h.domElement.removeEventListener("pointerdown",ee),h.domElement.removeEventListener("pointercancel",F),h.domElement.removeEventListener("wheel",ne),h.domElement.removeEventListener("pointermove",te),h.domElement.removeEventListener("pointerup",F),null!==h._domElementKeyEvents&&(h._domElementKeyEvents.removeEventListener("keydown",ie),h._domElementKeyEvents=null)};var e,a,o,s,l,u,c,d,h=e,p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},f=p.NONE,O=1e-6,m=new Le.Spherical,v=new Le.Spherical,g=1,A=new Le.Vector3,i=new Le.Vector2,y=new Le.Vector2,w=new Le.Vector2,b=new Le.Vector2,x=new Le.Vector2,E=new Le.Vector2,C=new Le.Vector2,B=new Le.Vector2,M=new Le.Vector2,U=new Le.Vector3,S=new Le.Vector2,T=!1,_=[],n={};function P(){return Math.pow(.95,h.zoomSpeed)}function D(e){v.theta-=e}function I(e){v.phi-=e}k=new Le.Vector3;var k,R,N,z=function(e,t){k.setFromMatrixColumn(t,0),k.multiplyScalar(-e),A.add(k)},G=(R=new Le.Vector3,function(e,t){!0===h.screenSpacePanning?R.setFromMatrixColumn(t,1):(R.setFromMatrixColumn(t,0),R.crossVectors(h.object.up,R)),R.multiplyScalar(e),A.add(R)}),L=(N=new Le.Vector3,function(e,t){var n,i=h.domElement;h.object.isPerspectiveCamera?(n=h.object.position,N.copy(n).sub(h.target),n=N.length(),n*=Math.tan(h.object.fov/2*Math.PI/180),z(2*e*n/i.clientHeight,h.object.matrix),G(2*t*n/i.clientHeight,h.object.matrix)):h.object.isOrthographicCamera?(z(e*(h.object.right-h.object.left)/h.object.zoom/i.clientWidth,h.object.matrix),G(t*(h.object.top-h.object.bottom)/h.object.zoom/i.clientHeight,h.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),h.enablePan=!1)});function H(e){h.object.isPerspectiveCamera||h.object.isOrthographicCamera?g/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),h.enableZoom=!1)}function V(e){h.object.isPerspectiveCamera||h.object.isOrthographicCamera?g*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),h.enableZoom=!1)}function Q(e){var t,n,i;h.zoomToCursor&&(T=!0,i=h.domElement.getBoundingClientRect(),t=e.clientX-i.left,e=e.clientY-i.top,n=i.width,i=i.height,S.x=t/n*2-1,S.y=-e/i*2+1,U.set(S.x,S.y,1).unproject(r).sub(r.position).normalize())}function j(e){return Math.max(h.minDistance,Math.min(h.maxDistance,e))}function W(e){i.set(e.clientX,e.clientY)}function J(e){b.set(e.clientX,e.clientY)}function q(){var e,t;1===_.length?i.set(_[0].pageX,_[0].pageY):(e=.5*(_[0].pageX+_[1].pageX),t=.5*(_[0].pageY+_[1].pageY),i.set(e,t))}function Y(){var e,t;1===_.length?b.set(_[0].pageX,_[0].pageY):(e=.5*(_[0].pageX+_[1].pageX),t=.5*(_[0].pageY+_[1].pageY),b.set(e,t))}function X(){var e=_[0].pageX-_[1].pageX,t=_[0].pageY-_[1].pageY,e=Math.sqrt(e*e+t*t);C.set(0,e)}function K(e){1==_.length?y.set(e.pageX,e.pageY):(n=oe(e),t=.5*(e.pageX+n.x),e=.5*(e.pageY+n.y),y.set(t,e)),w.subVectors(y,i).multiplyScalar(h.rotateSpeed);var t,n=h.domElement;D(2*Math.PI*w.x/n.clientHeight),I(2*Math.PI*w.y/n.clientHeight),i.copy(y)}function Z(e){var t,n;1===_.length?x.set(e.pageX,e.pageY):(t=oe(e),n=.5*(e.pageX+t.x),e=.5*(e.pageY+t.y),x.set(n,e)),E.subVectors(x,b).multiplyScalar(h.panSpeed),L(E.x,E.y),b.copy(x)}function $(e){var t=oe(e),n=e.pageX-t.x,e=e.pageY-t.y,t=Math.sqrt(n*n+e*e);B.set(0,t),M.set(0,Math.pow(B.y/C.y,h.zoomSpeed)),H(M.y),C.copy(B)}function ee(e){if(!1!==h.enabled){if(0===_.length&&(h.domElement.setPointerCapture(e.pointerId),h.domElement.addEventListener("pointermove",te),h.domElement.addEventListener("pointerup",F)),_.push(e),"touch"===e.pointerType)switch(ae(e),_.length){case 1:switch(h.touches.ONE){case Le.TOUCH.ROTATE:if(!1===h.enableRotate)return;q(),f=p.TOUCH_ROTATE;break;case Le.TOUCH.PAN:if(!1===h.enablePan)return;Y(),f=p.TOUCH_PAN;break;default:f=p.NONE}break;case 2:switch(h.touches.TWO){case Le.TOUCH.DOLLY_PAN:if(!1===h.enableZoom&&!1===h.enablePan)return;h.enableZoom&&X(),h.enablePan&&Y(),f=p.TOUCH_DOLLY_PAN;break;case Le.TOUCH.DOLLY_ROTATE:if(!1===h.enableZoom&&!1===h.enableRotate)return;h.enableZoom&&X(),h.enableRotate&&q(),f=p.TOUCH_DOLLY_ROTATE;break;default:f=p.NONE}break;default:f=p.NONE}else{var t,n=e;switch(n.button){case 0:t=h.mouseButtons.LEFT;break;case 1:t=h.mouseButtons.MIDDLE;break;case 2:t=h.mouseButtons.RIGHT;break;default:t=-1}switch(t){case Le.MOUSE.DOLLY:if(!1===h.enableZoom)return;!function(e){Q(e),C.set(e.clientX,e.clientY)}(n),f=p.DOLLY;break;case Le.MOUSE.ROTATE:if(n.ctrlKey||n.metaKey||n.shiftKey){if(!1===h.enablePan)return;J(n),f=p.PAN}else{if(!1===h.enableRotate)return;W(n),f=p.ROTATE}break;case Le.MOUSE.PAN:if(n.ctrlKey||n.metaKey||n.shiftKey){if(!1===h.enableRotate)return;W(n),f=p.ROTATE}else{if(!1===h.enablePan)return;J(n),f=p.PAN}break;default:f=p.NONE}}f!==p.NONE&&h.dispatchEvent(Cw)}}function te(e){if(!1!==h.enabled)if("touch"===e.pointerType){var t=e;switch(ae(t),f){case p.TOUCH_ROTATE:!1!==h.enableRotate&&(K(t),h.update());break;case p.TOUCH_PAN:!1!==h.enablePan&&(Z(t),h.update());break;case p.TOUCH_DOLLY_PAN:!1===h.enableZoom&&!1===h.enablePan||(!function(e){h.enableZoom&&$(e),h.enablePan&&Z(e)}(t),h.update());break;case p.TOUCH_DOLLY_ROTATE:!1===h.enableZoom&&!1===h.enableRotate||(!function(e){h.enableZoom&&$(e),h.enableRotate&&K(e)}(t),h.update());break;default:f=p.NONE}}else{var n=e;switch(f){case p.ROTATE:!1!==h.enableRotate&&!function(e){y.set(e.clientX,e.clientY),w.subVectors(y,i).multiplyScalar(h.rotateSpeed),e=h.domElement,D(2*Math.PI*w.x/e.clientHeight),I(2*Math.PI*w.y/e.clientHeight),i.copy(y),h.update()}(n);break;case p.DOLLY:!1!==h.enableZoom&&!function(e){B.set(e.clientX,e.clientY),M.subVectors(B,C),0<M.y?H(P()):M.y<0&&V(P()),C.copy(B),h.update()}(n);break;case p.PAN:!1!==h.enablePan&&!function(e){x.set(e.clientX,e.clientY),E.subVectors(x,b).multiplyScalar(h.panSpeed),L(E.x,E.y),b.copy(x),h.update()}(n)}}}function F(e){!function(e){delete n[e.pointerId];for(var t=0;t<_.length;t++)if(_[t].pointerId==e.pointerId)return _.splice(t,1)}(e),0===_.length&&(h.domElement.releasePointerCapture(e.pointerId),h.domElement.removeEventListener("pointermove",te),h.domElement.removeEventListener("pointerup",F)),h.dispatchEvent(Bw),f=p.NONE}function ne(e){!1!==h.enabled&&!1!==h.enableZoom&&f===p.NONE&&(e.preventDefault(),h.dispatchEvent(Cw),Q(e=e),e.deltaY<0?V(P()):0<e.deltaY&&H(P()),h.update(),h.dispatchEvent(Bw))}function ie(e){if(!1!==h.enabled&&!1!==h.enablePan){var t=e,n=!1;switch(t.code){case h.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?I(2*Math.PI*h.rotateSpeed/h.domElement.clientHeight):L(0,h.keyPanSpeed),n=!0;break;case h.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?I(-2*Math.PI*h.rotateSpeed/h.domElement.clientHeight):L(0,-h.keyPanSpeed),n=!0;break;case h.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?D(2*Math.PI*h.rotateSpeed/h.domElement.clientHeight):L(h.keyPanSpeed,0),n=!0;break;case h.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?D(-2*Math.PI*h.rotateSpeed/h.domElement.clientHeight):L(-h.keyPanSpeed,0),n=!0}n&&(t.preventDefault(),h.update())}}function re(e){!1!==h.enabled&&e.preventDefault()}function ae(e){var t=n[e.pointerId];void 0===t&&(t=new Le.Vector2,n[e.pointerId]=t),t.set(e.pageX,e.pageY)}function oe(e){e=e.pointerId===_[0].pointerId?_[1]:_[0];return n[e.pointerId]}return h.domElement.addEventListener("contextmenu",re),h.domElement.addEventListener("pointerdown",ee),h.domElement.addEventListener("pointercancel",F),h.domElement.addEventListener("wheel",ne,{passive:!1}),e.update(),e}return v(se,Le.EventDispatcher),A(se)}(),Pw=function(){function n(e,t){ue(this,n),this.taskIDGen=0,this.elementID=n.elementIDGen++,this.tasks=[],this.message=e||"Loading...",this.container=t||document.body,this.spinnerContainerOuter=document.createElement("div"),this.spinnerContainerOuter.className="spinnerOuterContainer".concat(this.elementID),this.spinnerContainerOuter.style.display="none",this.spinnerContainerPrimary=document.createElement("div"),this.spinnerContainerPrimary.className="spinnerContainerPrimary".concat(this.elementID),this.spinnerPrimary=document.createElement("div"),this.spinnerPrimary.classList.add("spinner".concat(this.elementID),"spinnerPrimary".concat(this.elementID)),this.messageContainerPrimary=document.createElement("div"),this.messageContainerPrimary.classList.add("messageContainer".concat(this.elementID),"messageContainerPrimary".concat(this.elementID)),this.messageContainerPrimary.innerHTML=this.message,this.spinnerContainerMin=document.createElement("div"),this.spinnerContainerMin.className="spinnerContainerMin".concat(this.elementID),this.spinnerMin=document.createElement("div"),this.spinnerMin.classList.add("spinner".concat(this.elementID),"spinnerMin".concat(this.elementID)),this.messageContainerMin=document.createElement("div"),this.messageContainerMin.classList.add("messageContainer".concat(this.elementID),"messageContainerMin".concat(this.elementID)),this.messageContainerMin.innerHTML=this.message,this.spinnerContainerPrimary.appendChild(this.spinnerPrimary),this.spinnerContainerPrimary.appendChild(this.messageContainerPrimary),this.spinnerContainerOuter.appendChild(this.spinnerContainerPrimary),this.spinnerContainerMin.appendChild(this.spinnerMin),this.spinnerContainerMin.appendChild(this.messageContainerMin),this.spinnerContainerOuter.appendChild(this.spinnerContainerMin);e=document.createElement("style");e.innerHTML="\n\n .spinnerOuterContainer".concat(this.elementID," {\n width: 100%;\n height: 100%;\n margin: 0;\n top: 0;\n left: 0;\n position: absolute;\n pointer-events: none;\n }\n\n .messageContainer").concat(this.elementID," {\n height: 20px;\n font-family: arial;\n font-size: 12pt;\n color: #ffffff;\n text-align: center;\n vertical-align: middle;\n }\n\n .spinner").concat(this.elementID," {\n padding: 15px;\n background: #07e8d6;\n z-index:99999;\n \n aspect-ratio: 1;\n border-radius: 50%;\n --_m: \n conic-gradient(#0000,#000),\n linear-gradient(#000 0 0) content-box;\n -webkit-mask: var(--_m);\n mask: var(--_m);\n -webkit-mask-composite: source-out;\n mask-composite: subtract;\n box-sizing: border-box;\n animation: load 1s linear infinite;\n }\n\n .spinnerContainerPrimary").concat(this.elementID," {\n z-index:99999;\n background-color: rgba(128, 128, 128, 0.75);\n border: #666666 1px solid;\n border-radius: 5px;\n padding-top: 20px;\n padding-bottom: 10px;\n margin: 0;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-80px, -80px);\n width: 180px;\n pointer-events: auto;\n }\n\n .spinnerPrimary").concat(this.elementID," {\n width: 120px;\n margin-left: 30px;\n }\n\n .messageContainerPrimary").concat(this.elementID," {\n padding-top: 15px;\n }\n\n .spinnerContainerMin").concat(this.elementID," {\n z-index:99999;\n background-color: rgba(128, 128, 128, 0.75);\n border: #666666 1px solid;\n border-radius: 5px;\n padding-top: 20px;\n padding-bottom: 15px;\n margin: 0;\n position: absolute;\n bottom: 50px;\n left: 50%;\n transform: translate(-50%, 0);\n display: flex;\n flex-direction: left;\n pointer-events: auto;\n min-width: 250px;\n }\n\n .messageContainerMin").concat(this.elementID," {\n margin-right: 15px;\n }\n\n .spinnerMin").concat(this.elementID," {\n width: 50px;\n height: 50px;\n margin-left: 15px;\n margin-right: 25px;\n }\n\n .messageContainerMin").concat(this.elementID," {\n padding-top: 15px;\n }\n \n @keyframes load {\n to{transform: rotate(1turn)}\n }\n\n "),this.spinnerContainerOuter.appendChild(e),this.container.appendChild(this.spinnerContainerOuter),this.setMinimized(!1,!0),this.fadeTransitions=[]}return A(n,[{key:"addTask",value:function(e){e={message:e,id:this.taskIDGen++};return this.tasks.push(e),this.update(),e.id}},{key:"removeTask",value:function(e){var t,n=0,i=q(this.tasks);try{for(i.s();!(t=i.n()).done;){if(t.value.id===e){this.tasks.splice(n,1);break}n++}}catch(e){i.e(e)}finally{i.f()}this.update()}},{key:"removeAllTasks",value:function(){this.tasks=[],this.update()}},{key:"setMessageForTask",value:function(e,t){var n,i=q(this.tasks);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r.id===e){r.message=t;break}}}catch(e){i.e(e)}finally{i.f()}this.update()}},{key:"update",value:function(){0<this.tasks.length?(this.show(),this.setMessage(this.tasks[this.tasks.length-1].message)):this.hide()}},{key:"show",value:function(){this.spinnerContainerOuter.style.display="block",this.visible=!0}},{key:"hide",value:function(){this.spinnerContainerOuter.style.display="none",this.visible=!1}},{key:"setContainer",value:function(e){this.container&&this.container.removeChild(this.spinnerContainerOuter),e&&(this.container=e,this.container.appendChild(this.spinnerContainerOuter),this.spinnerContainerOuter.style.zIndex=this.container.style.zIndex+1)}},{key:"setMinimized",value:function(e,t){function n(e,t,n,i,r){var a,o,s,l,u,c,d,h;n?e.style.display=t?i:"none":p.fadeTransitions[r]=(a=e,o=!t,s=i,l=500,u=function(){p.fadeTransitions[r]=null},c=performance.now(),d="none"===a.style.display?0:parseFloat(a.style.opacity),isNaN(d)&&(d=1),h=window.setInterval(function(){var e,t=performance.now(),t=Math.min((t-c)/l,1);.999<t&&(t=1),o?(e=(1-t)*d)<1e-4&&(e=0):e=(1-d)*t+d,0<e?(a.style.display=s,a.style.opacity=e):a.style.display="none",1<=t&&(u&&u(),window.clearInterval(h))},16))}var p=this;n(this.spinnerContainerPrimary,!e,t,"block",0),n(this.spinnerContainerMin,e,t,"flex",1),this.minimized=e}},{key:"setMessage",value:function(e){this.messageContainerPrimary.innerHTML=e,this.messageContainerMin.innerHTML=e}}])}(),Dw=(Y(Pw,"elementIDGen",0),function(){return A(function e(t){ue(this,e),this.idGen=0,this.tasks=[],this.container=t||document.body,this.progressBarContainerOuter=document.createElement("div"),this.progressBarContainerOuter.className="progressBarOuterContainer",this.progressBarContainerOuter.style.display="none",this.progressBarBox=document.createElement("div"),this.progressBarBox.className="progressBarBox",this.progressBarBackground=document.createElement("div"),this.progressBarBackground.className="progressBarBackground",this.progressBar=document.createElement("div"),this.progressBar.className="progressBar",this.progressBarBackground.appendChild(this.progressBar),this.progressBarBox.appendChild(this.progressBarBackground),this.progressBarContainerOuter.appendChild(this.progressBarBox);t=document.createElement("style");t.innerHTML="\n\n .progressBarOuterContainer {\n width: 100%;\n height: 100%;\n margin: 0;\n top: 0;\n left: 0;\n position: absolute;\n pointer-events: none;\n }\n\n .progressBarBox {\n z-index:99999;\n padding: 7px 9px 5px 7px;\n background-color: rgba(190, 190, 190, 0.75);\n border: #555555 1px solid;\n border-radius: 15px;\n margin: 0;\n position: absolute;\n bottom: 50px;\n left: 50%;\n transform: translate(-50%, 0);\n width: 180px;\n height: 30px;\n pointer-events: auto;\n }\n\n .progressBarBackground {\n width: 100%;\n height: 25px;\n border-radius:10px;\n background-color: rgba(128, 128, 128, 0.75);\n border: #444444 1px solid;\n box-shadow: inset 0 0 10px #333333;\n }\n\n .progressBar {\n height: 25px;\n width: 0px;\n border-radius:10px;\n background-color: rgba(0, 200, 0, 0.75);\n box-shadow: inset 0 0 10px #003300;\n }\n\n ",this.progressBarContainerOuter.appendChild(t),this.container.appendChild(this.progressBarContainerOuter)},[{key:"show",value:function(){this.progressBarContainerOuter.style.display="block"}},{key:"hide",value:function(){this.progressBarContainerOuter.style.display="none"}},{key:"setProgress",value:function(e){this.progressBar.style.width=e+"%"}},{key:"setContainer",value:function(e){this.container&&this.container.removeChild(this.progressBarContainerOuter),e&&(this.container=e,this.container.appendChild(this.progressBarContainerOuter),this.progressBarContainerOuter.style.zIndex=this.container.style.zIndex+1)}}])}()),Iw=function(){return A(function e(t){ue(this,e),Y(this,"update",function(e,t,n,i,r,a,o,s,l,u,c,d,h,p){t="".concat(t.x.toFixed(5),", ").concat(t.y.toFixed(5),", ").concat(t.z.toFixed(5)),this.infoCells.cameraPosition.innerHTML!==t&&(this.infoCells.cameraPosition.innerHTML=t),n&&(n="".concat((t=n).x.toFixed(5),", ").concat(t.y.toFixed(5),", ").concat(t.z.toFixed(5)),this.infoCells.cameraLookAt.innerHTML!==n)&&(this.infoCells.cameraLookAt.innerHTML=n),t="".concat(i.x.toFixed(5),", ").concat(i.y.toFixed(5),", ").concat(i.z.toFixed(5));this.infoCells.cameraUp.innerHTML!==t&&(this.infoCells.cameraUp.innerHTML=t),this.infoCells.orthographicCamera.innerHTML=r?"Orthographic":"Perspective",a?(i="".concat((n=a).x.toFixed(5),", ").concat(n.y.toFixed(5),", ").concat(n.z.toFixed(5)),this.infoCells.cursorPosition.innerHTML=i):this.infoCells.cursorPosition.innerHTML="N/A",this.infoCells.fps.innerHTML=o,this.infoCells.renderWindow.innerHTML="".concat(e.x," x ").concat(e.y),this.infoCells.renderSplatCount.innerHTML="".concat(l," splats out of ").concat(s," (").concat(u.toFixed(2),"%)"),this.infoCells.sortTime.innerHTML="".concat(c.toFixed(3)," ms"),this.infoCells.focalAdjustment.innerHTML="".concat(d.toFixed(3)),this.infoCells.splatScale.innerHTML="".concat(h.toFixed(3)),this.infoCells.pointCloudMode.innerHTML="".concat(p)}),this.container=t||document.body,this.infoCells={};this.infoPanelContainer=document.createElement("div");var t=document.createElement("style"),n=(t.innerHTML="\n\n .infoPanel {\n width: 430px;\n padding: 10px;\n background-color: rgba(50, 50, 50, 0.85);\n border: #555555 2px solid;\n color: #dddddd;\n border-radius: 10px;\n z-index: 9999;\n font-family: arial;\n font-size: 11pt;\n text-align: left;\n margin: 0;\n top: 10px;\n left:10px;\n position: absolute;\n pointer-events: auto;\n }\n\n .info-panel-cell {\n margin-bottom: 5px;\n padding-bottom: 2px;\n }\n\n .label-cell {\n font-weight: bold;\n font-size: 12pt;\n width: 140px;\n }\n\n ",this.infoPanelContainer.append(t),this.infoPanel=document.createElement("div"),this.infoPanel.className="infoPanel",document.createElement("div"));n.style.display="table";for(var i=0,r=[["Camera position","cameraPosition"],["Camera look-at","cameraLookAt"],["Camera up","cameraUp"],["Camera mode","orthographicCamera"],["Cursor position","cursorPosition"],["FPS","fps"],["Rendering:","renderSplatCount"],["Sort time","sortTime"],["Render window","renderWindow"],["Focal adjustment","focalAdjustment"],["Splat scale","splatScale"],["Point cloud mode","pointCloudMode"]];i<r.length;i++){var a=r[i],o=document.createElement("div"),s=(o.style.display="table-row",o.className="info-panel-row",document.createElement("div")),l=(s.style.display="table-cell",s.innerHTML="".concat(a[0],": "),s.classList.add("info-panel-cell","label-cell"),document.createElement("div")),u=(l.style.display="table-cell",l.style.width="10px",l.innerHTML=" ",l.className="info-panel-cell",document.createElement("div"));u.style.display="table-cell",u.innerHTML="",u.className="info-panel-cell",this.infoCells[a[1]]=u,o.appendChild(s),o.appendChild(l),o.appendChild(u),n.appendChild(o)}this.infoPanel.appendChild(n),this.infoPanelContainer.append(this.infoPanel),this.infoPanelContainer.style.display="none",this.container.appendChild(this.infoPanelContainer),this.visible=!1},[{key:"setContainer",value:function(e){this.container&&this.container.removeChild(this.infoPanelContainer),e&&(this.container=e,this.container.appendChild(this.infoPanelContainer),this.infoPanelContainer.style.zIndex=this.container.style.zIndex+1)}},{key:"show",value:function(){this.infoPanelContainer.style.display="block",this.visible=!0}},{key:"hide",value:function(){this.infoPanelContainer.style.display="none",this.visible=!1}}])}(),kw=function(){function l(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Le.Vector3(0,0,1),n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le.Vector3(0,0,0),i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.1,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:16776960,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:.2*i,s=6<arguments.length&&void 0!==arguments[6]?arguments[6]:.2*o,r=(ue(this,l),(e=le(this,l)).type="ArrowHelper",new Le.CylinderGeometry(r,r,i,32)),s=(r.translate(0,i/2,0),new Le.CylinderGeometry(0,s,o,32));return s.translate(0,i,0),e.position.copy(n),e.line=new Le.Mesh(r,new Le.MeshBasicMaterial({color:a,toneMapped:!1})),e.line.matrixAutoUpdate=!1,e.add(e.line),e.cone=new Le.Mesh(s,new Le.MeshBasicMaterial({color:a,toneMapped:!1})),e.cone.matrixAutoUpdate=!1,e.add(e.cone),e.setDirection(t),e}return v(l,Le.Object3D),A(l,[{key:"setDirection",value:function(e){.99999<e.y?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(_axis.set(e.z,0,-e.x).normalize(),e=Math.acos(e.y),this.quaternion.setFromAxisAngle(_axis,e))}},{key:"setColor",value:function(e){this.line.material.color.set(e),this.cone.material.color.set(e)}},{key:"copy",value:function(e){return I(l,"copy",this,3)([e,!1]),this.line.copy(e.line),this.cone.copy(e.cone),this}},{key:"dispose",value:function(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}])}(),Rw=function(){function s(e){var i,r,a,n,o;ue(this,s),Y(this,"updateFocusMarker",(i=new Le.Vector3,r=new Le.Matrix4,a=new Le.Vector3,function(e,t,n){r.copy(t.matrixWorld).invert(),i.copy(e).applyMatrix4(r),i.normalize().multiplyScalar(10),i.applyMatrix4(t.matrixWorld),a.copy(t.position).sub(e);t=a.length();this.focusMarker.position.copy(e),this.focusMarker.scale.set(t,t,t),this.focusMarker.material.uniforms.realFocusPosition.value.copy(e),this.focusMarker.material.uniforms.viewport.value.copy(n),this.focusMarker.material.uniformsNeedUpdate=!0})),Y(this,"positionAndOrientControlPlane",(n=new Le.Quaternion,o=new Le.Vector3(0,1,0),function(e,t){n.setFromUnitVectors(o,t),this.controlPlane.position.copy(e),this.controlPlane.quaternion.copy(n)})),this.threeScene=e,this.splatRenderTarget=null,this.renderTargetCopyQuad=null,this.renderTargetCopyCamera=null,this.meshCursor=null,this.focusMarker=null,this.controlPlane=null,this.debugRoot=null,this.secondaryDebugRoot=null}return A(s,[{key:"updateSplatRenderTargetForRenderDimensions",value:function(e,t){this.destroySplatRendertarget(),this.splatRenderTarget=new Le.WebGLRenderTarget(e,t,{format:Le.RGBAFormat,stencilBuffer:!1,depthBuffer:!0}),this.splatRenderTarget.depthTexture=new Le.DepthTexture(e,t),this.splatRenderTarget.depthTexture.format=Le.DepthFormat,this.splatRenderTarget.depthTexture.type=Le.UnsignedIntType}},{key:"destroySplatRendertarget",value:function(){this.splatRenderTarget&&(this.splatRenderTarget=null)}},{key:"setupRenderTargetCopyObjects",value:function(){var e=new Le.ShaderMaterial({vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4( position.xy, 0.0, 1.0 ); \n }\n ",fragmentShader:"\n #include <common>\n #include <packing>\n varying vec2 vUv;\n uniform sampler2D sourceColorTexture;\n uniform sampler2D sourceDepthTexture;\n void main() {\n vec4 color = texture2D(sourceColorTexture, vUv);\n float fragDepth = texture2D(sourceDepthTexture, vUv).x;\n gl_FragDepth = fragDepth;\n gl_FragColor = vec4(color.rgb, color.a * 2.0);\n }\n ",uniforms:{sourceColorTexture:{type:"t",value:null},sourceDepthTexture:{type:"t",value:null}},depthWrite:!1,depthTest:!1,transparent:!0,blending:Le.CustomBlending,blendSrc:Le.SrcAlphaFactor,blendSrcAlpha:Le.SrcAlphaFactor,blendDst:Le.OneMinusSrcAlphaFactor,blendDstAlpha:Le.OneMinusSrcAlphaFactor});e.extensions.fragDepth=!0,this.renderTargetCopyQuad=new Le.Mesh(new Le.PlaneGeometry(2,2),e),this.renderTargetCopyCamera=new Le.OrthographicCamera(-1,1,1,-1,0,1)}},{key:"destroyRenderTargetCopyObjects",value:function(){this.renderTargetCopyQuad&&(hy(this.renderTargetCopyQuad),this.renderTargetCopyQuad=null)}},{key:"setupMeshCursor",value:function(){var e,t,n,i,r;this.meshCursor||(r=new Le.ConeGeometry(.5,1.5,32),e=new Le.MeshBasicMaterial({color:16777215}),(t=new Le.Mesh(r,e)).rotation.set(0,0,Math.PI),t.position.set(0,1,0),(n=new Le.Mesh(r,e)).position.set(0,-1,0),(i=new Le.Mesh(r,e)).rotation.set(0,0,Math.PI/2),i.position.set(1,0,0),(r=new Le.Mesh(r,e)).rotation.set(0,0,-Math.PI/2),r.position.set(-1,0,0),this.meshCursor=new Le.Object3D,this.meshCursor.add(t),this.meshCursor.add(n),this.meshCursor.add(i),this.meshCursor.add(r),this.meshCursor.scale.set(.1,.1,.1),this.threeScene.add(this.meshCursor),this.meshCursor.visible=!1)}},{key:"destroyMeshCursor",value:function(){this.meshCursor&&(hy(this.meshCursor),this.threeScene.remove(this.meshCursor),this.meshCursor=null)}},{key:"setMeshCursorVisibility",value:function(e){this.meshCursor.visible=e}},{key:"getMeschCursorVisibility",value:function(){return this.meshCursor.visible}},{key:"setMeshCursorPosition",value:function(e){this.meshCursor.position.copy(e)}},{key:"positionAndOrientMeshCursor",value:function(e,t){this.meshCursor.position.copy(e),this.meshCursor.up.copy(t.up),this.meshCursor.lookAt(t.position)}},{key:"setupFocusMarker",value:function(){var e,t;this.focusMarker||(e=new Le.SphereGeometry(.5,32,32),(t=s.buildFocusMarkerMaterial()).depthTest=!1,t.depthWrite=!1,t.transparent=!0,this.focusMarker=new Le.Mesh(e,t))}},{key:"destroyFocusMarker",value:function(){this.focusMarker&&(hy(this.focusMarker),this.focusMarker=null)}},{key:"setFocusMarkerVisibility",value:function(e){this.focusMarker.visible=e}},{key:"setFocusMarkerOpacity",value:function(e){this.focusMarker.material.uniforms.opacity.value=e,this.focusMarker.material.uniformsNeedUpdate=!0}},{key:"getFocusMarkerOpacity",value:function(){return this.focusMarker.material.uniforms.opacity.value}},{key:"setupControlPlane",value:function(){var e,t,n;this.controlPlane||((e=new Le.PlaneGeometry(1,1)).rotateX(-Math.PI/2),(n=new Le.MeshBasicMaterial({color:16777215})).transparent=!0,n.opacity=.6,n.depthTest=!1,n.depthWrite=!1,n.side=Le.DoubleSide,e=new Le.Mesh(e,n),(n=new Le.Vector3(0,1,0)).normalize(),t=new Le.Vector3(0,0,0),n=new kw(n,t,.5,.01,56576,.1,.03),this.controlPlane=new Le.Object3D,this.controlPlane.add(e),this.controlPlane.add(n))}},{key:"destroyControlPlane",value:function(){this.controlPlane&&(hy(this.controlPlane),this.controlPlane=null)}},{key:"setControlPlaneVisibility",value:function(e){this.controlPlane.visible=e}},{key:"addDebugMeshes",value:function(){this.debugRoot=this.createDebugMeshes(),this.secondaryDebugRoot=this.createSecondaryDebugMeshes(),this.threeScene.add(this.debugRoot),this.threeScene.add(this.secondaryDebugRoot)}},{key:"destroyDebugMeshes",value:function(){for(var e=0,t=[this.debugRoot,this.secondaryDebugRoot];e<t.length;e++){var n=t[e];n&&(hy(n),this.threeScene.remove(n))}this.debugRoot=null,this.secondaryDebugRoot=null}},{key:"createDebugMeshes",value:function(n){function e(e,t){(e=new Le.Mesh(i,s.buildDebugMaterial(e))).renderOrder=n,r.add(e),e.position.fromArray(t)}var i=new Le.SphereGeometry(1,32,32),r=new Le.Object3D;return e(16711680,[-50,0,0]),e(16711680,[50,0,0]),e(65280,[0,0,-50]),e(65280,[0,0,50]),e(16755200,[5,0,5]),r}},{key:"createSecondaryDebugMeshes",value:function(n){function e(e){var t=new Le.Mesh(i,s.buildDebugMaterial(12303291));t.renderOrder=n,r.add(t),t.position.fromArray(e)}var i=new Le.BoxGeometry(3,3,3),r=new Le.Object3D;return e([-10,0,-10]),e([-10,0,10]),e([10,0,-10]),e([10,0,10]),r}},{key:"dispose",value:function(){this.destroyMeshCursor(),this.destroyFocusMarker(),this.destroyDebugMeshes(),this.destroyControlPlane(),this.destroyRenderTargetCopyObjects(),this.destroySplatRendertarget()}}],[{key:"buildDebugMaterial",value:function(e){e={color:{type:"v3",value:new Le.Color(e)}},e=new Le.ShaderMaterial({uniforms:e,vertexShader:"\n #include <common>\n varying float ndcDepth;\n\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position.xyz, 1.0);\n ndcDepth = gl_Position.z / gl_Position.w;\n gl_Position.x = gl_Position.x / gl_Position.w;\n gl_Position.y = gl_Position.y / gl_Position.w;\n gl_Position.z = 0.0;\n gl_Position.w = 1.0;\n \n }\n ",fragmentShader:"\n #include <common>\n uniform vec3 color;\n varying float ndcDepth;\n void main() {\n gl_FragDepth = (ndcDepth + 1.0) / 2.0;\n gl_FragColor = vec4(color.rgb, 0.0);\n }\n ",transparent:!1,depthTest:!0,depthWrite:!0,side:Le.FrontSide});return e.extensions.fragDepth=!0,e}},{key:"buildFocusMarkerMaterial",value:function(e){e={color:{type:"v3",value:new Le.Color(e)},realFocusPosition:{type:"v3",value:new Le.Vector3},viewport:{type:"v2",value:new Le.Vector2},opacity:{value:0}};return new Le.ShaderMaterial({uniforms:e,vertexShader:"\n #include <common>\n\n uniform vec2 viewport;\n uniform vec3 realFocusPosition;\n\n varying vec4 ndcPosition;\n varying vec4 ndcCenter;\n varying vec4 ndcFocusPosition;\n\n void main() {\n float radius = 0.01;\n\n vec4 viewPosition = modelViewMatrix * vec4(position.xyz, 1.0);\n vec4 viewCenter = modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0);\n\n vec4 viewFocusPosition = modelViewMatrix * vec4(realFocusPosition, 1.0);\n\n ndcPosition = projectionMatrix * viewPosition;\n ndcPosition = ndcPosition * vec4(1.0 / ndcPosition.w);\n ndcCenter = projectionMatrix * viewCenter;\n ndcCenter = ndcCenter * vec4(1.0 / ndcCenter.w);\n\n ndcFocusPosition = projectionMatrix * viewFocusPosition;\n ndcFocusPosition = ndcFocusPosition * vec4(1.0 / ndcFocusPosition.w);\n\n gl_Position = projectionMatrix * viewPosition;\n\n }\n ",fragmentShader:"\n #include <common>\n uniform vec3 color;\n uniform vec2 viewport;\n uniform float opacity;\n\n varying vec4 ndcPosition;\n varying vec4 ndcCenter;\n varying vec4 ndcFocusPosition;\n\n void main() {\n vec2 screenPosition = vec2(ndcPosition) * viewport;\n vec2 screenCenter = vec2(ndcCenter) * viewport;\n\n vec2 screenVec = screenPosition - screenCenter;\n\n float projectedRadius = length(screenVec);\n\n float lineWidth = 0.0005 * viewport.y;\n float aaRange = 0.0025 * viewport.y;\n float radius = 0.06 * viewport.y;\n float radDiff = abs(projectedRadius - radius) - lineWidth;\n float alpha = 1.0 - clamp(radDiff / 5.0, 0.0, 1.0); \n\n gl_FragColor = vec4(color.rgb, alpha * opacity);\n }\n ",transparent:!0,depthTest:!1,depthWrite:!1,side:Le.FrontSide})}}])}(),Lw=new Le.Vector3(1,0,0),Fw=new Le.Vector3(0,1,0),Ow=new Le.Vector3(0,0,1),Uw=function(){return A(function e(){var l,u,c,d,a,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Le.Vector3,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le.Vector3;ue(this,e),Y(this,"intersectBox",(l=new Le.Vector3,u=[],c=[],d=[],function(e,t){if(c[0]=this.origin.x,c[1]=this.origin.y,c[2]=this.origin.z,d[0]=this.direction.x,d[1]=this.direction.y,d[2]=this.direction.z,this.boxContainsPoint(e,this.origin,1e-4))return t&&(t.origin.copy(this.origin),t.normal.set(0,0,0),t.distance=-1),!0;for(var n=0;n<3;n++)if(0!=d[n]){var i=0==n?Lw:1==n?Fw:Ow,r=d[n]<0?e.max:e.min,a=-Math.sign(d[n]);if(u[0]=0==n?r.x:1==n?r.y:r.z,(r=u[0]-c[n])*a<0){var o=(n+1)%3,s=(n+2)%3;if(u[2]=d[o]/d[n]*r+c[o],u[1]=d[s]/d[n]*r+c[s],l.set(u[n],u[s],u[o]),this.boxContainsPoint(e,l,1e-4))return t&&(t.origin.copy(l),t.normal.copy(i).multiplyScalar(a),t.distance=l.sub(this.origin).length()),!0}}return!1})),Y(this,"intersectSphere",(a=new Le.Vector3,function(e,t,n){a.copy(e).sub(this.origin);var i=a.dot(this.direction),r=i*i,r=a.dot(a)-r;return!((t=t*t)<r||(r=i-(t=Math.sqrt(t-r)),(i+=t)<0)||(t=r<0?i:r,n&&(n.origin.copy(this.origin).addScaledVector(this.direction,t),n.normal.copy(n.origin).sub(e).normalize(),n.distance=t),0))})),this.origin=new Le.Vector3,this.direction=new Le.Vector3,this.setParameters(t,n)},[{key:"setParameters",value:function(e,t){this.origin.copy(e),this.direction.copy(t).normalize()}},{key:"boxContainsPoint",value:function(e,t,n){return!(t.x<e.min.x-n||t.x>e.max.x+n||t.y<e.min.y-n||t.y>e.max.y+n||t.z<e.min.z-n||t.z>e.max.z+n)}}])}(),Nw=function(){function t(){ue(this,t),this.origin=new Le.Vector3,this.normal=new Le.Vector3,this.distance=0,this.splatIndex=0}return A(t,[{key:"set",value:function(e,t,n,i){this.origin.copy(e),this.normal.copy(t),this.distance=n,this.splatIndex=i}},{key:"clone",value:function(){var e=new t;return e.origin.copy(this.origin),e.normal.copy(this.normal),e.distance=this.distance,e.splatIndex=this.splatIndex,e}}])}(),zw=A(function e(t,n){var i,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,r=2<arguments.length&&void 0!==arguments[2]&&arguments[2];ue(this,e),Y(this,"setFromCameraAndScreenPosition",(i=new Le.Vector2,function(e,t,n){if(i.x=t.x/n.x*2-1,i.y=(n.y-t.y)/n.y*2-1,e.isPerspectiveCamera)this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(i.x,i.y,.5).unproject(e).sub(this.ray.origin).normalize();else{if(!e.isOrthographicCamera)throw new Error("Raycaster::setFromCameraAndScreenPosition() -> Unsupported camera type");this.ray.origin.set(i.x,i.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld)}this.camera=e})),Y(this,"intersectSplatMesh",(s=new Le.Matrix4,l=new Le.Matrix4,u=new Le.Matrix4,c=new Uw,d=new Le.Vector3,function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],i=e.getSplatTree();if(i){for(var r=0;r<i.subTrees.length;r++){var a=i.subTrees[r],o=(l.copy(e.matrixWorld),e.dynamicMode&&(e.getSceneTransform(r,u),l.multiply(u)),s.copy(l).invert(),c.origin.copy(this.ray.origin).applyMatrix4(s),c.direction.copy(this.ray.origin).add(this.ray.direction),c.direction.applyMatrix4(s).sub(c.origin).normalize(),[]);a.rootNode&&this.castRayAtSplatTreeNode(c,i,a.rootNode,o),o.forEach(function(e){e.origin.applyMatrix4(l),e.normal.applyMatrix4(l).normalize(),e.distance=d.copy(e.origin).sub(t.ray.origin).length()}),n.push.apply(n,o)}return n.sort(function(e,t){return e.distance>t.distance?1:-1}),n}})),Y(this,"castRayAtSplatTreeNode",(h=new Le.Vector4,p=new Le.Vector3,f=new Le.Vector3,m=new Le.Quaternion,v=new Nw,g=new Le.Vector3(0,0,0),A=new Le.Matrix4,y=new Le.Matrix4,w=new Le.Matrix4,b=new Le.Matrix4,x=new Le.Matrix4,E=new Uw,function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:[];if(e.intersectBox(n.boundingBox)){if(n.data&&n.data.indexes&&0<n.data.indexes.length)for(var r=0;r<n.data.indexes.length;r++){var a,o,s=n.data.indexes[r];t.splatMesh.getSplatColor(s,h),t.splatMesh.getSplatCenter(s,p),t.splatMesh.getSplatScaleAndRotation(s,f,m),f.x<=1e-7||f.y<=1e-7||f.z<=1e-7||(this.raycastAgainstTrueSplatEllipsoid?(y.makeScale(f.x,f.y,f.z),w.makeRotationFromQuaternion(m),a=2*Math.log10(h.w),A.makeScale(a,a,a),x.copy(A).multiply(w).multiply(y),b.copy(x).invert(),E.origin.copy(e.origin).sub(p).applyMatrix4(b),E.direction.copy(e.origin).add(e.direction).sub(p),E.direction.applyMatrix4(b).sub(E.origin).normalize(),E.intersectSphere(g,1,v)&&((a=v.clone()).splatIndex=s,a.origin.applyMatrix4(x).add(p),i.push(a))):(a=(f.x+f.y+f.z)/3,e.intersectSphere(p,a,v)&&((o=v.clone()).splatIndex=s,i.push(o))))}if(n.children&&0<n.children.length){var l,u=q(n.children);try{for(u.s();!(l=u.n()).done;){var c=l.value;this.castRayAtSplatTreeNode(e,t,c,i)}}catch(e){u.e(e)}finally{u.f()}}return i}})),this.ray=new Uw(t,n),this.raycastAgainstTrueSplatEllipsoid=r}),Gw=function(){return A(function e(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le.Vector3,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Le.Quaternion,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Le.Vector3(1,1,1),a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1;ue(this,e),this.splatBuffer=t,this.position=n.clone(),this.quaternion=i.clone(),this.scale=r.clone(),this.transform=new Le.Matrix4,this.minimumAlpha=a,this.updateTransform()},[{key:"copyTransformData",value:function(e){this.position.copy(e.position),this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.transform.copy(e.transform)}},{key:"updateTransform",value:function(){this.transform.compose(this.position,this.quaternion,this.scale)}}])}(),Hw=A(function e(t,n,i,r){ue(this,e),this.min=(new Le.Vector3).copy(t),this.max=(new Le.Vector3).copy(n),this.boundingBox=new Le.Box3(this.min,this.max),this.center=(new Le.Vector3).copy(this.max).sub(this.min).multiplyScalar(.5).add(this.min),this.depth=i,this.children=[],this.data=null,this.id=r||e.idGen++}),Vw=(Y(Hw,"idGen",0),function(){function c(e,t){ue(this,c),this.maxDepth=e,this.maxCentersPerNode=t,this.sceneDimensions=new Le.Vector3,this.sceneMin=new Le.Vector3,this.sceneMax=new Le.Vector3,this.rootNode=null,this.nodesWithIndexes=[],this.splatMesh=null}return A(c,null,[{key:"convertWorkerSubTreeNode",value:function(e){var t=(new Le.Vector3).fromArray(e.min),n=(new Le.Vector3).fromArray(e.max),i=new Hw(t,n,e.depth,e.id);if(e.data.indexes){i.data={indexes:[]};var r,a=q(e.data.indexes);try{for(a.s();!(r=a.n()).done;){var o=r.value;i.data.indexes.push(o)}}catch(e){a.e(e)}finally{a.f()}}if(e.children){var s,l=q(e.children);try{for(l.s();!(s=l.n()).done;){var u=s.value;i.children.push(c.convertWorkerSubTreeNode(u))}}catch(e){l.e(e)}finally{l.f()}}return i}},{key:"convertWorkerSubTree",value:function(e,t){function a(e,t){0===e.children.length&&t(e);var n,i=q(e.children);try{for(i.s();!(n=i.n()).done;){var r=n.value;a(r,t)}}catch(e){i.e(e)}finally{i.f()}}var n=new c(e.maxDepth,e.maxCentersPerNode);n.sceneMin=(new Le.Vector3).fromArray(e.sceneMin),n.sceneMax=(new Le.Vector3).fromArray(e.sceneMax),n.splatMesh=t,n.rootNode=c.convertWorkerSubTreeNode(e.rootNode);return n.nodesWithIndexes=[],a(n.rootNode,function(e){e.data&&e.data.indexes&&0<e.data.indexes.length&&n.nodesWithIndexes.push(e)}),n}}])}());function Qw(m){var r,a=0,x=function(){return A(function e(t,n){ue(this,e),this.min=[t[0],t[1],t[2]],this.max=[n[0],n[1],n[2]]},[{key:"containsPoint",value:function(e){return e[0]>=this.min[0]&&e[0]<=this.max[0]&&e[1]>=this.min[1]&&e[1]<=this.max[1]&&e[2]>=this.min[2]&&e[2]<=this.max[2]}}])}(),v=A(function e(t,n){ue(this,e),this.maxDepth=t,this.maxCentersPerNode=n,this.sceneDimensions=[],this.sceneMin=[],this.sceneMax=[],this.rootNode=null,this.addedIndexes={},this.nodesWithIndexes=[],this.splatMesh=null,this.disposed=!1}),E=A(function e(t,n,i,r){ue(this,e),this.min=[t[0],t[1],t[2]],this.max=[n[0],n[1],n[2]],this.center=[.5*(n[0]-t[0])+t[0],.5*(n[1]-t[1])+t[1],.5*(n[2]-t[2])+t[2]],this.depth=i,this.children=[],this.data=null,this.id=r||a++});function e(e,t,n,i){return r.apply(this,arguments)}processSplatTreeNode=(r=function(e,t,n,i){var r=t.data.indexes.length;if(r<e.maxCentersPerNode||t.depth>e.maxDepth){for(var a=[],o=0;o<t.data.indexes.length;o++)e.addedIndexes[t.data.indexes[o]]||(a.push(t.data.indexes[o]),e.addedIndexes[t.data.indexes[o]]=!0);t.data.indexes=a,t.data.indexes.sort(function(e,t){return t<e?1:-1}),e.nodesWithIndexes.push(t)}else{for(var s=[t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2]],s=[.5*s[0],.5*s[1],.5*s[2]],l=[t.min[0]+s[0],t.min[1]+s[1],t.min[2]+s[2]],u=[new x([l[0]-s[0],l[1],l[2]-s[2]],[l[0],l[1]+s[1],l[2]]),new x([l[0],l[1],l[2]-s[2]],[l[0]+s[0],l[1]+s[1],l[2]]),new x([l[0],l[1],l[2]],[l[0]+s[0],l[1]+s[1],l[2]+s[2]]),new x([l[0]-s[0],l[1],l[2]],[l[0],l[1]+s[1],l[2]+s[2]]),new x([l[0]-s[0],l[1]-s[1],l[2]-s[2]],[l[0],l[1],l[2]]),new x([l[0],l[1]-s[1],l[2]-s[2]],[l[0]+s[0],l[1],l[2]]),new x([l[0],l[1]-s[1],l[2]],[l[0]+s[0],l[1],l[2]+s[2]]),new x([l[0]-s[0],l[1]-s[1],l[2]],[l[0],l[1],l[2]+s[2]])],c=[],d=0;d<u.length;d++)d,c[d]=[];for(var h=[0,0,0],p=0;p<r;p++){var f=t.data.indexes[p],m=n[f];h[0]=i[m],h[1]=i[m+1],h[2]=i[m+2];for(var v=0;v<u.length;v++)if(u[v].containsPoint(h)){v,c[v].push(f);break}}for(var g=0;g<u.length;g++){var A=new E(u[g].min,u[g].max,t.depth+1);A.data={indexes:c[g]},t.children.push(A)}t.data={};var y,w=q(t.children);try{for(w.s();!(y=w.n()).done;){var b=y.value;processSplatTreeNode(e,b,n,i)}}catch(e){w.e(e)}finally{w.f()}}},e.toString=function(){return r.toString()},e);function t(e,t,n){var i,r=[],a=q(e);try{for(a.s();!(i=a.n()).done;)for(var o=i.value,s=Math.floor(o.length/4),l=0;l<s;l++){var u=4*l;r[Math.round(o[3+u])]=u}}catch(e){a.e(e)}finally{a.f()}var c,d=[],h=q(e);try{for(h.s();!(c=h.n()).done;){var p=c.value,f=function(e,t,n){for(var i=[0,0,0],r=[0,0,0],a=[],o=Math.floor(e.length/4),s=0;s<o;s++){var l=4*s,u=e[l],c=e[1+l],d=e[2+l],l=Math.round(e[3+l]);(0===s||u<i[0])&&(i[0]=u),(0===s||r[0]<u)&&(r[0]=u),(0===s||c<i[1])&&(i[1]=c),(0===s||r[1]<c)&&(r[1]=c),(0===s||d<i[2])&&(i[2]=d),(0===s||r[2]<d)&&(r[2]=d),a.push(l)}t=new v(t,n);return t.sceneMin=i,t.sceneMax=r,t.rootNode=new E(t.sceneMin,t.sceneMax,0),t.rootNode.data={indexes:a},t}(p,t,n);d.push(f),processSplatTreeNode(f,f.rootNode,r,p)}}catch(e){h.e(e)}finally{h.f()}m.postMessage({subTrees:d})}m.onmessage=function(e){e.data.process&&t(e.data.process.centers,e.data.process.maxDepth,e.data.process.maxCentersPerNode)}}var jw=function(){return A(function e(t,n){ue(this,e),Y(this,"processSplatMesh",function(l){function u(e,t){for(var n=new Float32Array(4*t),i=0,r=0;r<t;r++){var a,o=r+e;s(o)&&(l.getSplatCenter(o,p),n[a=4*i]=p.x,n[1+a]=p.y,n[2+a]=p.z,n[3+a]=o,i++)}return n}var c=this,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:function(){return!0},d=2<arguments.length?arguments[2]:void 0,h=3<arguments.length?arguments[3]:void 0,p=(this.splatTreeWorker||(this.splatTreeWorker=new Worker(URL.createObjectURL(new Blob(["(",Qw.toString(),")(self)"],{type:"application/javascript"})))),this.splatMesh=l,this.subTrees=[],new Le.Vector3);return new Promise(function(o){function s(){return!!c.disposed&&(c.diposeSplatTreeWorker(),o(),!0)}d&&d(!1),py(function(){if(!s()){var r=[];if(l.dynamicMode)for(var e=0,t=0;t<l.scenes.length;t++){var n=l.getScene(t).splatBuffer.getSplatCount(),i=u(e,n);r.push(i),e+=n}else{var a=u(0,l.getSplatCount());r.push(a)}c.splatTreeWorker.onmessage=function(r){s()||r.data.subTrees&&(h&&h(!1),py(function(){if(!s()){var e,t=q(r.data.subTrees);try{for(t.s();!(e=t.n()).done;){var n=e.value,i=Vw.convertWorkerSubTree(n,l);c.subTrees.push(i)}}catch(e){t.e(e)}finally{t.f()}c.diposeSplatTreeWorker(),h&&h(!0),py(function(){o()})}}))},py(function(){var e,t,n,i;s()||(d&&d(!0),e=r.map(function(e){return e.buffer}),t=c.splatTreeWorker,n=c.maxDepth,i=c.maxCentersPerNode,t.postMessage({process:{centers:r,maxDepth:n,maxCentersPerNode:i}},e))})}})})}),this.maxDepth=t,this.maxCentersPerNode=n,this.subTrees=[],this.splatMesh=null},[{key:"dispose",value:function(){this.diposeSplatTreeWorker(),this.disposed=!0}},{key:"diposeSplatTreeWorker",value:function(){this.splatTreeWorker&&this.splatTreeWorker.terminate(),this.splatTreeWorker=null}},{key:"countLeaves",value:function(){var e=0;return this.visitLeaves(function(){e++}),e}},{key:"visitLeaves",value:function(e){var t,a=function(e,t){0===e.children.length&&t(e);var n,i=q(e.children);try{for(i.s();!(n=i.n()).done;){var r=n.value;a(r,t)}}catch(e){i.e(e)}finally{i.f()}},n=q(this.subTrees);try{for(n.s();!(t=n.n()).done;){var i=t.value;a(i.rootNode,e)}}catch(e){n.e(e)}finally{n.f()}}}])}();function Ww(n){var i={};function r(e){if(void 0!==i[e])return i[e];var t;switch(e){case"WEBGL_depth_texture":t=n.getExtension("WEBGL_depth_texture")||n.getExtension("MOZ_WEBGL_depth_texture")||n.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":t=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":t=n.getExtension("WEBGL_compressed_texture_s3tc")||n.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":t=n.getExtension("WEBGL_compressed_texture_pvrtc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:t=n.getExtension(e)}return i[e]=t}return{has:function(e){return null!==r(e)},init:function(e){e.isWebGL2?(r("EXT_color_buffer_float"),r("WEBGL_clip_cull_distance")):(r("WEBGL_depth_texture"),r("OES_texture_float"),r("OES_texture_half_float"),r("OES_texture_half_float_linear"),r("OES_standard_derivatives"),r("OES_element_index_uint"),r("OES_vertex_array_object"),r("ANGLE_instanced_arrays")),r("OES_texture_float_linear"),r("EXT_color_buffer_half_float"),r("WEBGL_multisampled_render_to_texture")},get:function(e){var t=r(e);return null===t&&console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function Jw(t,n,e){var i;function r(e){if("highp"===e){if(0<t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision&&0<t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision)return"highp";e="mediump"}return"mediump"===e&&0<t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision&&0<t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===t.constructor.name,o=void 0!==e.precision?e.precision:"highp",s=r(o),s=(s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s),a||n.has("WEBGL_draw_buffers")),e=!0===e.logarithmicDepthBuffer,l=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),u=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),c=t.getParameter(t.MAX_TEXTURE_SIZE),d=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),h=t.getParameter(t.MAX_VERTEX_ATTRIBS),p=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),f=t.getParameter(t.MAX_VARYING_VECTORS),m=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=0<u,g=a||n.has("OES_texture_float");return{isWebGL2:a,drawBuffers:s,getMaxAnisotropy:function(){var e;return i=void 0===i?!0===n.has("EXT_texture_filter_anisotropic")?(e=n.get("EXT_texture_filter_anisotropic"),t.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT)):0:i},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:e,maxTextures:l,maxVertexTextures:u,maxTextureSize:c,maxCubemapSize:d,maxAttributes:h,maxVertexUniforms:p,maxVaryings:f,maxFragmentUniforms:m,vertexTextures:v,floatFragmentTextures:g,floatVertexTextures:v&&g,maxSamples:a?t.getParameter(t.MAX_SAMPLES):0}}var qw={Default:0,Gradual:1,Instant:2},Yw={None:0,Error:1,Warning:2,Info:3,Debug:4},Xw=new Le.BufferGeometry,Kw=new Le.MeshBasicMaterial,Zw=function(){function B(){var e,s,h,r,d,i,a,n,t=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],o=1<arguments.length&&void 0!==arguments[1]&&arguments[1],l=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,u=!(3<arguments.length&&void 0!==arguments[3])||arguments[3],c=4<arguments.length&&void 0!==arguments[4]&&arguments[4],p=5<arguments.length&&void 0!==arguments[5]&&arguments[5],f=6<arguments.length&&void 0!==arguments[6]?arguments[6]:2048,m=7<arguments.length&&void 0!==arguments[7]?arguments[7]:Yw.None,v=8<arguments.length&&void 0!==arguments[8]?arguments[8]:0;return ue(this,B),Y(e=le(this,B,[Xw,Kw]),"buildSplatTree",function(){var s=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],e=1<arguments.length?arguments[1]:void 0,i=2<arguments.length?arguments[2]:void 0;return new Promise(function(a){s.disposeSplatTree(),s.baseSplatTree=new jw(8,1e3);var o=performance.now(),t=new Le.Vector4;s.baseSplatTree.processSplatMesh(s,function(e){s.getSplatColor(e,t);e=s.getSceneIndexForSplat(e),e=n[e]||1;return t.w>=e},e,i).then(function(){var t,n,i,r,e=performance.now()-o;s.logLevel>=Yw.Info&&console.log("SplatTree build: "+e+" ms"),s.disposed||(s.splatTree=s.baseSplatTree,s.baseSplatTree=null,r=i=n=t=0,s.splatTree.visitLeaves(function(e){e=e.data.indexes.length;0<e&&(n+=e,i=Math.max(i,e),r++,t++)}),s.logLevel>=Yw.Info&&(console.log("SplatTree leaves: ".concat(s.splatTree.countLeaves())),console.log("SplatTree leaves with splats:".concat(t)),n/=r,console.log("Avg splat count per node: ".concat(n)),console.log("Total splat count: ".concat(s.getSplatCount())))),a()})})}),Y(e,"updateUniforms",(s=new Le.Vector2,function(e,t,n,i,r,a){if(0<this.getSplatCount()){if(s.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(s),this.material.uniforms.basisViewport.value.set(1/s.x,1/s.y),this.material.uniforms.focal.value.set(t,n),this.material.uniforms.orthographicMode.value=i?1:0,this.material.uniforms.orthoZoom.value=r,this.material.uniforms.inverseFocalAdjustment.value=a,this.dynamicMode)for(var o=0;o<this.scenes.length;o++)this.material.uniforms.transforms.value[o].copy(this.getScene(o).transform);this.material.uniformsNeedUpdate=!0}})),Y(e,"setupDistancesComputationTransformFeedback",function(){var e=this.getMaxSplatCount();if(this.renderer){var t=this.lastRenderer!==this.renderer,n=h!==e;if(t||n){t?this.disposeDistancesComputationGPUResources():n&&this.disposeDistancesComputationGPUBufferResources();var i=this.renderer.getContext(),r=function(e,t,n){var i=e.createShader(t);return i?(e.shaderSource(i,n),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(n="unknown",t===e.VERTEX_SHADER?n="vertex shader":t===e.FRAGMENT_SHADER&&(n="fragement shader"),t=e.getShaderInfoLog(i),console.error("Failed to compile "+n+" with these errors:"+t),e.deleteShader(i),null)):(console.error("Fatal error: gl could not create a shader object."),null)},a=(this.integerBasedDistancesComputation?(c="#version 300 es\n in ivec4 center;\n flat out int distance;",this.dynamicMode?c+="\n in uint transformIndex;\n uniform ivec4 transforms[".concat(fw.MaxScenes,"];\n void main(void) {\n ivec4 transform = transforms[transformIndex];\n distance = center.x * transform.x + center.y * transform.y + center.z * transform.z + transform.w * center.w;\n }\n "):c+="\n uniform ivec3 modelViewProj;\n void main(void) {\n distance = center.x * modelViewProj.x + center.y * modelViewProj.y + center.z * modelViewProj.z;\n }\n "):(c="#version 300 es\n in vec4 center;\n flat out float distance;",this.dynamicMode?c+="\n in uint transformIndex;\n uniform mat4 transforms[".concat(fw.MaxScenes,"];\n void main(void) {\n vec4 transformedCenter = transforms[transformIndex] * vec4(center.xyz, 1.0);\n distance = transformedCenter.z;\n }\n "):c+="\n uniform vec3 modelViewProj;\n void main(void) {\n distance = center.x * modelViewProj.x + center.y * modelViewProj.y + center.z * modelViewProj.z;\n }\n "),i.getParameter(i.VERTEX_ARRAY_BINDING)),o=i.getParameter(i.CURRENT_PROGRAM),s=!!o&&i.getProgramParameter(o,i.DELETE_STATUS);if(t&&(this.distancesTransformFeedback.vao=i.createVertexArray()),i.bindVertexArray(this.distancesTransformFeedback.vao),t){var l,u=i.createProgram(),c=r(i,i.VERTEX_SHADER,c),r=r(i,i.FRAGMENT_SHADER,"#version 300 es\n precision lowp float;\n out vec4 fragColor;\n void main(){}\n ");if(!c||!r)throw new Error("Could not compile shaders for distances computation on GPU.");if(i.attachShader(u,c),i.attachShader(u,r),i.transformFeedbackVaryings(u,["distance"],i.SEPARATE_ATTRIBS),i.linkProgram(u),!i.getProgramParameter(u,i.LINK_STATUS))throw l=i.getProgramInfoLog(u),console.error("Fatal error: Failed to link program: "+l),i.deleteProgram(u),i.deleteShader(r),i.deleteShader(c),new Error("Could not link shaders for distances computation on GPU.");this.distancesTransformFeedback.program=u,this.distancesTransformFeedback.vertexShader=c,this.distancesTransformFeedback.vertexShader=r}if(i.useProgram(this.distancesTransformFeedback.program),this.distancesTransformFeedback.centersLoc=i.getAttribLocation(this.distancesTransformFeedback.program,"center"),this.dynamicMode){this.distancesTransformFeedback.transformIndexesLoc=i.getAttribLocation(this.distancesTransformFeedback.program,"transformIndex");for(var d=0;d<this.scenes.length;d++)this.distancesTransformFeedback.transformsLocs[d]=i.getUniformLocation(this.distancesTransformFeedback.program,"transforms[".concat(d,"]"))}else this.distancesTransformFeedback.modelViewProjLoc=i.getUniformLocation(this.distancesTransformFeedback.program,"modelViewProj");(t||n)&&(this.distancesTransformFeedback.centersBuffer=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this.distancesTransformFeedback.centersBuffer),i.enableVertexAttribArray(this.distancesTransformFeedback.centersLoc),this.integerBasedDistancesComputation?i.vertexAttribIPointer(this.distancesTransformFeedback.centersLoc,4,i.INT,0,0):i.vertexAttribPointer(this.distancesTransformFeedback.centersLoc,4,i.FLOAT,!1,0,0),this.dynamicMode)&&(this.distancesTransformFeedback.transformIndexesBuffer=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this.distancesTransformFeedback.transformIndexesBuffer),i.enableVertexAttribArray(this.distancesTransformFeedback.transformIndexesLoc),i.vertexAttribIPointer(this.distancesTransformFeedback.transformIndexesLoc,1,i.UNSIGNED_INT,0,0)),(t||n)&&(this.distancesTransformFeedback.outDistancesBuffer=i.createBuffer()),i.bindBuffer(i.ARRAY_BUFFER,this.distancesTransformFeedback.outDistancesBuffer),i.bufferData(i.ARRAY_BUFFER,4*e,i.STATIC_READ),t&&(this.distancesTransformFeedback.id=i.createTransformFeedback()),i.bindTransformFeedback(i.TRANSFORM_FEEDBACK,this.distancesTransformFeedback.id),i.bindBufferBase(i.TRANSFORM_FEEDBACK_BUFFER,0,this.distancesTransformFeedback.outDistancesBuffer),o&&!0!==s&&i.useProgram(o),a&&i.bindVertexArray(a),this.lastRenderer=this.renderer,h=e}}}),Y(e,"fillTransformsArray",(r=[],function(e){r.length!==e.length&&(r.length=e.length);for(var t=0;t<this.scenes.length;t++)for(var n=this.getScene(t).transform.elements,i=0;i<16;i++)r[16*t+i]=n[i];e.set(r)})),Y(e,"computeDistancesOnGPU",(d=new Le.Matrix4,function(e,i){var r=this;if(this.renderer){var a=this.renderer.getContext(),t=a.getParameter(a.VERTEX_ARRAY_BINDING),n=a.getParameter(a.CURRENT_PROGRAM),o=!!n&&a.getProgramParameter(n,a.DELETE_STATUS);if(a.bindVertexArray(this.distancesTransformFeedback.vao),a.useProgram(this.distancesTransformFeedback.program),a.enable(a.RASTERIZER_DISCARD),this.dynamicMode)for(var s,l=0;l<this.scenes.length;l++)d.copy(this.getScene(l).transform),d.premultiply(e),this.integerBasedDistancesComputation?(s=[(s=B.getIntegerMatrixArray(d))[2],s[6],s[10],s[14]],a.uniform4i(this.distancesTransformFeedback.transformsLocs[l],s[0],s[1],s[2],s[3])):a.uniformMatrix4fv(this.distancesTransformFeedback.transformsLocs[l],!1,d.elements);else this.integerBasedDistancesComputation?(c=[(c=B.getIntegerMatrixArray(e))[2],c[6],c[10]],a.uniform3i(this.distancesTransformFeedback.modelViewProjLoc,c[0],c[1],c[2])):(c=[e.elements[2],e.elements[6],e.elements[10]],a.uniform3f(this.distancesTransformFeedback.modelViewProjLoc,c[0],c[1],c[2]));a.bindBuffer(a.ARRAY_BUFFER,this.distancesTransformFeedback.centersBuffer),a.enableVertexAttribArray(this.distancesTransformFeedback.centersLoc),this.integerBasedDistancesComputation?a.vertexAttribIPointer(this.distancesTransformFeedback.centersLoc,4,a.INT,0,0):a.vertexAttribPointer(this.distancesTransformFeedback.centersLoc,4,a.FLOAT,!1,0,0),this.dynamicMode&&(a.bindBuffer(a.ARRAY_BUFFER,this.distancesTransformFeedback.transformIndexesBuffer),a.enableVertexAttribArray(this.distancesTransformFeedback.transformIndexesLoc),a.vertexAttribIPointer(this.distancesTransformFeedback.transformIndexesLoc,1,a.UNSIGNED_INT,0,0)),a.bindTransformFeedback(a.TRANSFORM_FEEDBACK,this.distancesTransformFeedback.id),a.bindBufferBase(a.TRANSFORM_FEEDBACK_BUFFER,0,this.distancesTransformFeedback.outDistancesBuffer),a.beginTransformFeedback(a.POINTS),a.drawArrays(a.POINTS,0,this.getSplatCount()),a.endTransformFeedback(),a.bindBufferBase(a.TRANSFORM_FEEDBACK_BUFFER,0,null),a.bindTransformFeedback(a.TRANSFORM_FEEDBACK,null),a.disable(a.RASTERIZER_DISCARD);var u=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0),c=(a.flush(),new Promise(function(t){var n=function(){if(r.disposed)t();else switch(a.clientWaitSync(u,0,0)){case a.TIMEOUT_EXPIRED:return r.computeDistancesOnGPUSyncTimeout=setTimeout(n),r.computeDistancesOnGPUSyncTimeout;case a.WAIT_FAILED:throw new Error("should never get here");default:r.computeDistancesOnGPUSyncTimeout=null,a.deleteSync(u);var e=a.getParameter(a.VERTEX_ARRAY_BINDING);a.bindVertexArray(r.distancesTransformFeedback.vao),a.bindBuffer(a.ARRAY_BUFFER,r.distancesTransformFeedback.outDistancesBuffer),a.getBufferSubData(a.ARRAY_BUFFER,0,i),a.bindBuffer(a.ARRAY_BUFFER,null),e&&a.bindVertexArray(e),t()}};r.computeDistancesOnGPUSyncTimeout=setTimeout(n)}));return n&&!0!==o&&a.useProgram(n),t&&a.bindVertexArray(t),c}})),Y(e,"getSplatCenter",(i={},function(e,t,n){this.getLocalSplatParameters(e,i,n),i.splatBuffer.getSplatCenter(i.localIndex,t,i.sceneTransform)})),Y(e,"getSplatScaleAndRotation",(a={},function(e,t,n,i){this.getLocalSplatParameters(e,a,i),a.splatBuffer.getSplatScaleAndRotation(a.localIndex,t,n,a.sceneTransform)})),Y(e,"getSplatColor",(n={},function(e,t){this.getLocalSplatParameters(e,n),n.splatBuffer.getSplatColor(n.localIndex,t)})),e.renderer=void 0,e.halfPrecisionCovariancesOnGPU=o,e.dynamicMode=t,e.devicePixelRatio=l,e.enableDistancesComputationOnGPU=u,e.integerBasedDistancesComputation=c,e.antialiased=p,e.maxScreenSpaceSplatSize=f,e.logLevel=m,e.sphericalHarmonicsDegree=v,e.minSphericalHarmonicsDegree=0,e.scenes=[],e.splatTree=null,e.baseSplatTree=null,e.splatDataTextures={},e.distancesTransformFeedback={id:null,vertexShader:null,fragmentShader:null,program:null,centersBuffer:null,transformIndexesBuffer:null,outDistancesBuffer:null,centersLoc:-1,modelViewProjLoc:-1,transformIndexesLoc:-1,transformsLocs:[]},e.globalSplatIndexToLocalSplatIndexMap=[],e.globalSplatIndexToSceneIndexMap=[],e.lastBuildSplatCount=0,e.lastBuildScenes=[],e.lastBuildMaxSplatCount=0,e.lastBuildSceneCount=0,e.firstRenderTime=-1,e.finalBuild=!1,e.webGLUtils=null,e.boundingBox=new Le.Box3,e.calculatedSceneCenter=new Le.Vector3,e.maxSplatDistanceFromSceneCenter=0,e.visibleRegionBufferRadius=0,e.visibleRegionRadius=0,e.visibleRegionFadeStartRadius=0,e.visibleRegionChanging=!1,e.splatScale=1,e.pointCloudModeEnabled=!1,e.disposed=!1,e.lastRenderer=null,e.visible=!1,e}return v(B,Le.Mesh),A(B,[{key:"build",value:function(e,t){var n=this,i=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],r=3<arguments.length&&void 0!==arguments[3]&&arguments[3],a=4<arguments.length?arguments[4]:void 0,o=5<arguments.length?arguments[5]:void 0,s=(this.sceneOptions=t,this.finalBuild=r,B.getTotalMaxSplatCountForSplatBuffers(e)),l=B.buildScenes(e,t);if(i)for(var u=0;u<this.scenes.length&&u<l.length;u++){var c=l[u],d=this.getScene(u);c.copyTransformData(d)}this.scenes=l;var h,p=3,f=q(e);try{for(f.s();!(h=f.n()).done;){var m=h.value.getMinSphericalHarmonicsDegree();m<p&&(p=m)}}catch(e){f.e(e)}finally{f.f()}this.minSphericalHarmonicsDegree=Math.min(p,this.sphericalHarmonicsDegree);var v=!1;if(e.length!==this.lastBuildScenes.length)v=!0;else for(var g=0;g<e.length;g++)if(e[g]!==this.lastBuildScenes[g].splatBuffer){v=!0;break}for(var i=!0,s=((i=1===this.scenes.length&&this.lastBuildSceneCount===this.scenes.length&&this.lastBuildMaxSplatCount===s&&!v?i:!1)||(this.boundingBox=new Le.Box3,this.maxSplatDistanceFromSceneCenter=0,this.visibleRegionBufferRadius=0,this.visibleRegionRadius=0,this.visibleRegionFadeStartRadius=0,this.firstRenderTime=-1,this.lastBuildScenes=[],this.lastBuildSplatCount=0,this.lastBuildMaxSplatCount=0,this.disposeMeshData(),this.geometry=B.buildGeomtery(s),this.material=B.buildMaterial(this.dynamicMode,this.antialiased,this.maxScreenSpaceSplatSize,this.splatScale,this.pointCloudModeEnabled,this.minSphericalHarmonicsDegree),s=B.buildSplatIndexMaps(e),this.globalSplatIndexToLocalSplatIndexMap=s.localSplatIndexMap,this.globalSplatIndexToSceneIndexMap=s.sceneIndexMap),this.getSplatCount()),i=(this.enableDistancesComputationOnGPU&&this.setupDistancesComputationTransformFeedback(),this.refreshGPUDataFromSplatBuffers(i)),A=0;A<this.scenes.length;A++)this.lastBuildScenes[A]=this.scenes[A];return this.lastBuildSplatCount=s,this.lastBuildMaxSplatCount=this.getMaxSplatCount(),this.lastBuildSceneCount=this.scenes.length,r&&0<this.scenes.length&&this.buildSplatTree(t.map(function(e){return e.splatAlphaRemovalThreshold||1}),a,o).then(function(){n.onSplatTreeReadyCallback&&n.onSplatTreeReadyCallback(n.splatTree)}),this.visible=0<this.scenes.length,i}},{key:"dispose",value:function(){this.disposeMeshData(),this.disposeTextures(),this.disposeSplatTree(),this.enableDistancesComputationOnGPU&&(this.computeDistancesOnGPUSyncTimeout&&(clearTimeout(this.computeDistancesOnGPUSyncTimeout),this.computeDistancesOnGPUSyncTimeout=null),this.disposeDistancesComputationGPUResources()),this.scenes=[],this.distancesTransformFeedback={id:null,vertexShader:null,fragmentShader:null,program:null,centersBuffer:null,transformIndexesBuffer:null,outDistancesBuffer:null,centersLoc:-1,modelViewProjLoc:-1,transformIndexesLoc:-1,transformsLocs:[]},this.renderer=null,this.globalSplatIndexToLocalSplatIndexMap=[],this.globalSplatIndexToSceneIndexMap=[],this.lastBuildSplatCount=0,this.lastBuildScenes=[],this.lastBuildMaxSplatCount=0,this.lastBuildSceneCount=0,this.firstRenderTime=-1,this.finalBuild=!1,this.webGLUtils=null,this.boundingBox=new Le.Box3,this.calculatedSceneCenter=new Le.Vector3,this.maxSplatDistanceFromSceneCenter=0,this.visibleRegionBufferRadius=0,this.visibleRegionRadius=0,this.visibleRegionFadeStartRadius=0,this.visibleRegionChanging=!1,this.splatScale=1,this.pointCloudModeEnabled=!1,this.disposed=!0,this.lastRenderer=null,this.visible=!1}},{key:"disposeMeshData",value:function(){this.geometry&&this.geometry!==Xw&&(this.geometry.dispose(),this.geometry=null),this.material&&(this.material.dispose(),this.material=null)}},{key:"disposeTextures",value:function(){for(var e in this.splatDataTextures)this.splatDataTextures.hasOwnProperty(e)&&(e=this.splatDataTextures[e]).texture&&(e.texture.dispose(),e.texture=null);this.splatDataTextures=null}},{key:"disposeSplatTree",value:function(){this.splatTree?(this.splatTree.dispose(),this.splatTree=null):this.baseSplatTree&&(this.baseSplatTree.dispose(),this.baseSplatTree=null)}},{key:"getSplatTree",value:function(){return this.splatTree}},{key:"onSplatTreeReady",value:function(e){this.onSplatTreeReadyCallback=e}},{key:"getDataForDistancesComputation",value:function(e,t){return{centers:this.integerBasedDistancesComputation?this.getIntegerCenters(e,t,!0):this.getFloatCenters(e,t,!0),sceneIndexes:this.getSceneIndexes(e,t)}}},{key:"refreshGPUDataFromSplatBuffers",value:function(e){var t=this.getSplatCount(),n=(this.refreshDataTexturesFromSplatBuffers(e),e?this.lastBuildSplatCount:0),i=this.getDataForDistancesComputation(n,t-1),r=i.centers,i=i.sceneIndexes;return this.enableDistancesComputationOnGPU&&this.refreshGPUBuffersForDistancesComputation(r,i,e),{from:n,to:t-1,count:t-n,centers:r,sceneIndexes:i}}},{key:"refreshGPUBuffersForDistancesComputation",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=n?this.lastBuildSplatCount:0;this.updateGPUCentersBufferForDistancesComputation(n,e,i),this.updateGPUTransformIndexesBufferForDistancesComputation(n,t,i)}},{key:"refreshDataTexturesFromSplatBuffers",value:function(e){e?this.updateDataTextures():this.setupDataTextures(),this.updateVisibleRegion(e)}},{key:"setupDataTextures",value:function(){function e(e,t){for(var n=new Le.Vector2(4096,1024);n.x*n.y*e<i*t;)n.y*=2;return n}var i=this.getMaxSplatCount(),t=this.getSplatCount(),n=(this.disposeTextures(),this.getTargetCovarianceCompressionLevel()),r=this.getTargetSphericalHarmonicsCompressionLevel(),a=new Float32Array(6*i),o=new Float32Array(3*i),s=new Uint8Array(4*i),l=Float32Array,u=(1===r?l=Uint16Array:2===r&&(l=Uint8Array),fy(this.minSphericalHarmonicsDegree)),c=u,d=(c%2!=0&&c++,this.minSphericalHarmonicsDegree?new l(i*u):void 0),h=(this.fillSplatDataArrays(a,o,s,d,void 0,n,r),e(4,6)),p=1<=n?Uint16Array:Float32Array,f=1<=n?Le.HalfFloatType:Le.FloatType,p=new p(h.x*h.y*4),f=(p.set(a),new Le.DataTexture(p,h.x,h.y,Le.RGBAFormat,f)),m=(f.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=f,this.material.uniforms.covariancesTextureSize.value.copy(h),e(4,4)),v=new Uint32Array(m.x*m.y*4),g=(B.updateCenterColorsPaddedData(0,t,o,s,v),new Le.DataTexture(v,m.x,m.y,Le.RGBAIntegerFormat,Le.UnsignedIntType));if(g.internalFormat="RGBA32UI",g.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=g,this.material.uniforms.centersColorsTextureSize.value.copy(m),this.material.uniformsNeedUpdate=!0,this.splatDataTextures={baseData:{covariances:a,centers:o,colors:s,sphericalHarmonics:d},covariances:{data:p,texture:f,size:h,compressionLevel:n},centerColors:{data:v,texture:g,size:m}},d){for(var a=e(4,c),A=new l(a.x*a.y*4),y=0;y<t;y++)for(var w=u*y,b=c*y,x=0;x<u;x++)A[b+x]=d[w+x];o=2===r?Le.UnsignedByteType:Le.HalfFloatType,s=new Le.DataTexture(A,a.x,a.y,Le.RGBAFormat,o);s.needsUpdate=!0,this.material.uniforms.sphericalHarmonicsTexture.value=s,this.material.uniforms.sphericalHarmonicsTextureSize.value.copy(a),2===r&&(this.material.uniforms.sphericalHarmonics8BitMode.value=1),this.material.uniformsNeedUpdate=!0,this.splatDataTextures.sphericalHarmonics={componentCount:u,paddedComponentCount:c,data:A,texture:s,size:a,compressionLevel:r}}if(this.dynamicMode){for(var p=e(1,4),E=new Uint32Array(p.x*p.y*1),C=0;C<t;C++)E[C]=this.globalSplatIndexToSceneIndexMap[C];f=new Le.DataTexture(E,p.x,p.y,Le.RedIntegerFormat,Le.UnsignedIntType);f.internalFormat="R32UI",f.needsUpdate=!0,this.material.uniforms.transformIndexesTexture.value=f,this.material.uniforms.transformIndexesTextureSize.value.copy(p),this.material.uniformsNeedUpdate=!0,this.splatDataTextures.tansformIndexes={data:E,texture:f,size:p}}}},{key:"updateDataTextures",value:function(){for(var e=this.getSplatCount(),t=this.splatDataTextures.covariances.compressionLevel,n=this.splatDataTextures.sphericalHarmonics,i=n?n.compressionLevel:0,r=(this.fillSplatDataArrays(this.splatDataTextures.baseData.covariances,this.splatDataTextures.baseData.centers,this.splatDataTextures.baseData.colors,this.splatDataTextures.baseData.sphericalHarmonics,void 0,t,i,this.lastBuildSplatCount,e-1,this.lastBuildSplatCount),this.splatDataTextures.covariances),a=r.data,o=r.texture,s=6*e,l=6*this.lastBuildSplatCount;l<s;l++){var u=this.splatDataTextures.baseData.covariances[l];a[l]=u}var c=this.renderer?this.renderer.properties.get(o):null,r=(c&&c.__webglTexture?this.updateDataTexture(a,r,c,4,6,t?2:4,this.lastBuildSplatCount,e-1):o.needsUpdate=!0,this.splatDataTextures.centerColors),c=r.data,t=r.texture,o=(B.updateCenterColorsPaddedData(this.lastBuildSplatCount,e,this.splatDataTextures.baseData.centers,this.splatDataTextures.baseData.colors,c),this.renderer?this.renderer.properties.get(t):null);if(o&&o.__webglTexture?this.updateDataTexture(c,r,o,4,4,4,this.lastBuildSplatCount,e-1):t.needsUpdate=!0,this.splatDataTextures.baseData.sphericalHarmonics){for(var d=n.componentCount,h=n.paddedComponentCount,p=n.data,f=this.lastBuildSplatCount;f<e;f++)for(var m=d*f,v=h*f,g=0;g<d;g++)p[v+g]=this.splatDataTextures.baseData.sphericalHarmonics[m+g];c=n.texture,r=this.renderer?this.renderer.properties.get(c):null;r&&r.__webglTexture?(o=4,1===i?o=2:2===i&&(o=1),this.updateDataTexture(p,n,r,4,h,o,this.lastBuildSplatCount,e-1)):c.needsUpdate=!0}if(this.dynamicMode){for(var t=this.splatDataTextures.tansformIndexes,A=t.data,y=this.lastBuildSplatCount;y<e;y++)A[y]=this.globalSplatIndexToSceneIndexMap[y];i=t.texture,n=this.renderer?this.renderer.properties.get(i):null;n&&n.__webglTexture?this.updateDataTexture(A,t,n,1,1,1,this.lastBuildSplatCount,e-1):i.needsUpdate=!0}}},{key:"getTargetCovarianceCompressionLevel",value:function(){return this.halfPrecisionCovariancesOnGPU?1:0}},{key:"getTargetSphericalHarmonicsCompressionLevel",value:function(){return Math.max(1,this.getMaximumSplatBufferCompressionLevel())}},{key:"getMaximumSplatBufferCompressionLevel",value:function(){for(var e,t=0;t<this.scenes.length;t++){var n=this.getScene(t).splatBuffer;(0===t||n.compressionLevel>e)&&(e=n.compressionLevel)}return e}},{key:"getMinimumSplatBufferCompressionLevel",value:function(){for(var e,t=0;t<this.scenes.length;t++){var n=this.getScene(t).splatBuffer;(0===t||n.compressionLevel<e)&&(e=n.compressionLevel)}return e}},{key:"updateDataTexture",value:function(e,t,n,i,r,a,o,s){var l=this.renderer.getContext(),o=B.computeTextureUpdateRegion(o,s,t.size.x,i,r),s=o.dataEnd-o.dataStart,i=new e.constructor(e.buffer,o.dataStart*a,s),r=o.endRow-o.startRow+1,e=t.texture,a=this.webGLUtils.convert(e.type),s=this.webGLUtils.convert(e.format,e.colorSpace),e=l.getParameter(l.TEXTURE_BINDING_2D);l.bindTexture(l.TEXTURE_2D,n.__webglTexture),l.texSubImage2D(l.TEXTURE_2D,0,0,o.startRow,t.size.x,r,s,a,i),l.bindTexture(l.TEXTURE_2D,e)}},{key:"updateVisibleRegion",value:function(e){var t,n=this.getSplatCount(),i=new Le.Vector3;e||(t=new Le.Vector3,this.scenes.forEach(function(e){t.add(e.splatBuffer.sceneCenter)}),t.multiplyScalar(1/this.scenes.length),this.calculatedSceneCenter.copy(t),this.material.uniforms.sceneCenter.value.copy(this.calculatedSceneCenter),this.material.uniformsNeedUpdate=!0);for(var r=e?this.lastBuildSplatCount:0;r<n;r++){this.getSplatCenter(r,i,!1);var a=i.sub(this.calculatedSceneCenter).length();a>this.maxSplatDistanceFromSceneCenter&&(this.maxSplatDistanceFromSceneCenter=a)}1<this.maxSplatDistanceFromSceneCenter-this.visibleRegionBufferRadius&&(this.visibleRegionBufferRadius=this.maxSplatDistanceFromSceneCenter,this.visibleRegionRadius=Math.max(this.visibleRegionBufferRadius-1,0)),this.finalBuild&&(this.visibleRegionRadius=this.visibleRegionBufferRadius=this.maxSplatDistanceFromSceneCenter),this.updateVisibleRegionFadeDistance()}},{key:"updateVisibleRegionFadeDistance",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:qw.Default,t=this.finalBuild?.012:.003;this.visibleRegionFadeStartRadius=(this.visibleRegionRadius-this.visibleRegionFadeStartRadius)*(e===qw.Default?t:.003)+this.visibleRegionFadeStartRadius;t=.99<(0<this.visibleRegionBufferRadius?this.visibleRegionFadeStartRadius/this.visibleRegionBufferRadius:0),e=t||e===qw.Instant?1:0;this.material.uniforms.visibleRegionFadeStartRadius.value=this.visibleRegionFadeStartRadius,this.material.uniforms.visibleRegionRadius.value=this.visibleRegionRadius,this.material.uniforms.firstRenderTime.value=this.firstRenderTime,this.material.uniforms.currentTime.value=performance.now(),this.material.uniforms.fadeInComplete.value=e,this.material.uniformsNeedUpdate=!0,this.visibleRegionChanging=!t}},{key:"updateRenderIndexes",value:function(e,t){var n=this.geometry;n.attributes.splatIndex.set(e),n.attributes.splatIndex.needsUpdate=!0,0<t&&-1===this.firstRenderTime&&(this.firstRenderTime=performance.now()),n.instanceCount=t}},{key:"updateTransforms",value:function(){for(var e=0;e<this.scenes.length;e++)this.getScene(e).updateTransform()}},{key:"setSplatScale",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;this.splatScale=e,this.material.uniforms.splatScale.value=e,this.material.uniformsNeedUpdate=!0}},{key:"getSplatScale",value:function(){return this.splatScale}},{key:"setPointCloudModeEnabled",value:function(e){this.pointCloudModeEnabled=e,this.material.uniforms.pointCloudModeEnabled.value=e?1:0,this.material.uniformsNeedUpdate=!0}},{key:"getPointCloudModeEnabled",value:function(){return this.pointCloudModeEnabled}},{key:"getSplatDataTextures",value:function(){return this.splatDataTextures}},{key:"getSplatCount",value:function(){return B.getTotalSplatCountForScenes(this.scenes)}},{key:"getMaxSplatCount",value:function(){return B.getTotalMaxSplatCountForScenes(this.scenes)}},{key:"disposeDistancesComputationGPUResources",value:function(){var e;this.renderer&&(e=this.renderer.getContext(),this.distancesTransformFeedback.vao&&(e.deleteVertexArray(this.distancesTransformFeedback.vao),this.distancesTransformFeedback.vao=null),this.distancesTransformFeedback.program&&(e.deleteProgram(this.distancesTransformFeedback.program),e.deleteShader(this.distancesTransformFeedback.vertexShader),e.deleteShader(this.distancesTransformFeedback.fragmentShader),this.distancesTransformFeedback.program=null,this.distancesTransformFeedback.vertexShader=null,this.distancesTransformFeedback.fragmentShader=null),this.disposeDistancesComputationGPUBufferResources(),this.distancesTransformFeedback.id)&&(e.deleteTransformFeedback(this.distancesTransformFeedback.id),this.distancesTransformFeedback.id=null)}},{key:"disposeDistancesComputationGPUBufferResources",value:function(){var e;this.renderer&&(e=this.renderer.getContext(),this.distancesTransformFeedback.centersBuffer&&(this.distancesTransformFeedback.centersBuffer=null,e.deleteBuffer(this.distancesTransformFeedback.centersBuffer)),this.distancesTransformFeedback.outDistancesBuffer)&&(e.deleteBuffer(this.distancesTransformFeedback.outDistancesBuffer),this.distancesTransformFeedback.outDistancesBuffer=null)}},{key:"setRenderer",value:function(e){var t,n;e!==this.renderer&&(this.renderer=e,n=new Jw(e=this.renderer.getContext(),t=new Ww(e),{}),t.init(n),this.webGLUtils=new Le.WebGLUtils(e,t,n),this.enableDistancesComputationOnGPU)&&0<this.getSplatCount()&&(this.setupDistancesComputationTransformFeedback(),t=(e=this.getDataForDistancesComputation(0,this.getSplatCount()-1)).centers,n=e.sceneIndexes,this.refreshGPUBuffersForDistancesComputation(t,n))}},{key:"updateGPUCentersBufferForDistancesComputation",value:function(e,t,n){var i,r,a;this.renderer&&(r=(i=this.renderer.getContext()).getParameter(i.VERTEX_ARRAY_BINDING),i.bindVertexArray(this.distancesTransformFeedback.vao),a=this.integerBasedDistancesComputation?Uint32Array:Float32Array,n=16*n,i.bindBuffer(i.ARRAY_BUFFER,this.distancesTransformFeedback.centersBuffer),e?i.bufferSubData(i.ARRAY_BUFFER,n,t):((e=new a(16*this.getMaxSplatCount())).set(t),i.bufferData(i.ARRAY_BUFFER,e,i.STATIC_DRAW)),i.bindBuffer(i.ARRAY_BUFFER,null),r)&&i.bindVertexArray(r)}},{key:"updateGPUTransformIndexesBufferForDistancesComputation",value:function(e,t,n){var i,r;this.renderer&&this.dynamicMode&&(r=(i=this.renderer.getContext()).getParameter(i.VERTEX_ARRAY_BINDING),i.bindVertexArray(this.distancesTransformFeedback.vao),n=4*n,i.bindBuffer(i.ARRAY_BUFFER,this.distancesTransformFeedback.transformIndexesBuffer),e?i.bufferSubData(i.ARRAY_BUFFER,n,t):((e=new Uint32Array(4*this.getMaxSplatCount())).set(t),i.bufferData(i.ARRAY_BUFFER,e,i.STATIC_DRAW)),i.bindBuffer(i.ARRAY_BUFFER,null),r)&&i.bindVertexArray(r)}},{key:"getSceneIndexes",value:function(e,t){for(var n=new Uint32Array(t-e+1),i=e;i<=t;i++)n[i]=this.globalSplatIndexToSceneIndexMap[i];return n}},{key:"getLocalSplatParameters",value:function(e,t,n){null==n&&(n=!this.dynamicMode),t.splatBuffer=this.getSplatBufferForSplat(e),t.localIndex=this.getSplatLocalIndex(e),t.sceneTransform=n?this.getSceneTransformForSplat(e):null}},{key:"fillSplatDataArrays",value:function(e,t,n,i,r){for(var a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,o=6<arguments.length&&void 0!==arguments[6]?arguments[6]:1,s=7<arguments.length?arguments[7]:void 0,l=8<arguments.length?arguments[8]:void 0,u=9<arguments.length&&void 0!==arguments[9]?arguments[9]:0,c=0;c<this.scenes.length;c++){null==r&&(r=!this.dynamicMode);var d=this.getScene(c),h=d.splatBuffer,p=r?d.transform:null;e&&h.fillSplatCovarianceArray(e,p,s,l,u,a),t&&h.fillSplatCenterArray(t,p,s,l,u),n&&h.fillSplatColorArray(n,d.minimumAlpha,s,l,u),i&&h.fillSphericalHarmonicsArray(i,this.minSphericalHarmonicsDegree,p,s,l,u,o),u+=h.getSplatCount()}}},{key:"getIntegerCenters",value:function(e,t){for(var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=t-e+1,r=new Float32Array(3*i),a=(this.fillSplatDataArrays(null,r,null,null,void 0,void 0,void 0,e),n?4:3),o=new Int32Array(i*a),s=0;s<i;s++){for(var l=0;l<3;l++)o[s*a+l]=Math.round(1e3*r[3*s+l]);n&&(o[s*a+3]=1e3)}return o}},{key:"getFloatCenters",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=t-e+1,r=new Float32Array(3*i);if(this.fillSplatDataArrays(null,r,null,null,void 0,void 0,void 0,e),!n)return r;for(var a=new Float32Array(4*i),o=0;o<i;o++){for(var s=0;s<3;s++)a[4*o+s]=r[3*o+s];a[4*o+3]=1}return a}},{key:"getSceneTransform",value:function(e,t){e=this.getScene(e);e.updateTransform(),t.copy(e.transform)}},{key:"getScene",value:function(e){if(e<0||e>=this.scenes.length)throw new Error("SplatMesh::getScene() -> Invalid scene index.");return this.scenes[e]}},{key:"getSplatBufferForSplat",value:function(e){return this.getScene(this.globalSplatIndexToSceneIndexMap[e]).splatBuffer}},{key:"getSceneIndexForSplat",value:function(e){return this.globalSplatIndexToSceneIndexMap[e]}},{key:"getSceneTransformForSplat",value:function(e){return this.getScene(this.globalSplatIndexToSceneIndexMap[e]).transform}},{key:"getSplatLocalIndex",value:function(e){return this.globalSplatIndexToLocalSplatIndexMap[e]}}],[{key:"buildMaterial",value:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:2048,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,r=4<arguments.length&&void 0!==arguments[4]&&arguments[4],a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,o="\n precision highp float;\n #include <common>\n\n attribute uint splatIndex;\n\n uniform highp sampler2D covariancesTexture;\n uniform highp usampler2D centersColorsTexture;\n uniform highp sampler2D sphericalHarmonicsTexture;",t=(e&&(o+="\n uniform highp usampler2D transformIndexesTexture;\n uniform highp mat4 transforms[".concat(fw.MaxScenes,"];\n uniform vec2 transformIndexesTextureSize;\n ")),o=(o+="\n uniform vec2 focal;\n uniform float orthoZoom;\n uniform int orthographicMode;\n uniform int pointCloudModeEnabled;\n uniform float inverseFocalAdjustment;\n uniform vec2 viewport;\n uniform vec2 basisViewport;\n uniform vec2 covariancesTextureSize;\n uniform vec2 centersColorsTextureSize;\n uniform int sphericalHarmonicsDegree;\n uniform vec2 sphericalHarmonicsTextureSize;\n uniform int sphericalHarmonics8BitMode;\n uniform float visibleRegionRadius;\n uniform float visibleRegionFadeStartRadius;\n uniform float firstRenderTime;\n uniform float currentTime;\n uniform int fadeInComplete;\n uniform vec3 sceneCenter;\n uniform float splatScale;\n\n varying vec4 vColor;\n varying vec2 vUv;\n\n varying vec2 vPosition;\n\n const float sqrt8 = sqrt(8.0);\n const float minAlpha = 1.0 / 255.0;\n\n const vec4 encodeNorm4 = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0);\n const uvec4 mask4 = uvec4(uint(0x000000FF), uint(0x0000FF00), uint(0x00FF0000), uint(0xFF000000));\n const uvec4 shift4 = uvec4(0, 8, 16, 24);\n vec4 uintToRGBAVec (uint u) {\n uvec4 urgba = mask4 & u;\n urgba = urgba >> shift4;\n vec4 rgba = vec4(urgba) * encodeNorm4;\n return rgba;\n }\n\n vec2 getDataUV(in int stride, in int offset, in vec2 dimensions) {\n vec2 samplerUV = vec2(0.0, 0.0);\n float d = float(splatIndex * uint(stride) + uint(offset)) / dimensions.x;\n samplerUV.y = float(floor(d)) / dimensions.y;\n samplerUV.x = fract(d);\n return samplerUV;\n }\n\n vec2 getDataUVF(in uint sIndex, in float stride, in uint offset, in vec2 dimensions) {\n vec2 samplerUV = vec2(0.0, 0.0);\n float d = float(uint(float(sIndex) * stride) + offset) / dimensions.x;\n samplerUV.y = float(floor(d)) / dimensions.y;\n samplerUV.x = fract(d);\n return samplerUV;\n }\n\n const float SH_C1 = 0.4886025119029199f;\n const float[5] SH_C2 = float[](1.0925484, -1.0925484, 0.3153916, -1.0925484, 0.5462742);\n const vec3 vecOnes3 = vec3(1.0, 1.0, 1.0);\n\n void main () {\n\n uint oddOffset = splatIndex & uint(0x00000001);\n uint doubleOddOffset = oddOffset * uint(2);\n bool isEven = oddOffset == uint(0);\n uint nearestEvenIndex = splatIndex - oddOffset;\n float fOddOffset = float(oddOffset);\n\n uvec4 sampledCenterColor = texture(centersColorsTexture, getDataUV(1, 0, centersColorsTextureSize));\n vec3 splatCenter = uintBitsToFloat(uvec3(sampledCenterColor.gba));")+(e?"\n uint transformIndex = texture(transformIndexesTexture, getDataUV(1, 0, transformIndexesTextureSize)).r;\n mat4 transform = transforms[transformIndex];\n mat4 transformModelViewMatrix = modelViewMatrix * transform;\n ":"mat4 transformModelViewMatrix = modelViewMatrix;")+"\n vec4 viewCenter = transformModelViewMatrix * vec4(splatCenter, 1.0);\n\n vec4 clipCenter = projectionMatrix * viewCenter;\n\n float clip = 1.2 * clipCenter.w;\n if (clipCenter.z < -clip || clipCenter.x < -clip || clipCenter.x > clip || clipCenter.y < -clip || clipCenter.y > clip) {\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n return;\n }\n\n vPosition = position.xy;\n vColor = uintToRGBAVec(sampledCenterColor.r);\n\n ",1<=a&&(o=(o=o+" \n if (sphericalHarmonicsDegree >= 1) {\n "+(e?"\n mat4 mTransform = modelMatrix * transform;\n vec3 worldViewDir = normalize(splatCenter - vec3(inverse(mTransform) * vec4(cameraPosition, 1.0)));\n ":"\n vec3 worldViewDir = normalize(splatCenter - cameraPosition);\n "))+(2<=a?"\n vec4 sampledSH0123 = texture(sphericalHarmonicsTexture, getDataUV(6, 0, sphericalHarmonicsTextureSize));\n vec4 sampledSH4567 = texture(sphericalHarmonicsTexture, getDataUV(6, 1, sphericalHarmonicsTextureSize));\n vec4 sampledSH891011 = texture(sphericalHarmonicsTexture, getDataUV(6, 2, sphericalHarmonicsTextureSize));\n vec3 sh1 = sampledSH0123.rgb;\n vec3 sh2 = vec3(sampledSH0123.a, sampledSH4567.rg);\n vec3 sh3 = vec3(sampledSH4567.ba, sampledSH891011.r);\n ":"\n vec2 shUV = getDataUVF(nearestEvenIndex, 2.5, doubleOddOffset, sphericalHarmonicsTextureSize);\n vec4 sampledSH0123 = texture(sphericalHarmonicsTexture, shUV);\n shUV = getDataUVF(nearestEvenIndex, 2.5, doubleOddOffset + uint(1), sphericalHarmonicsTextureSize);\n vec4 sampledSH4567 = texture(sphericalHarmonicsTexture, shUV);\n shUV = getDataUVF(nearestEvenIndex, 2.5, doubleOddOffset + uint(2), sphericalHarmonicsTextureSize);\n vec4 sampledSH891011 = texture(sphericalHarmonicsTexture, shUV);\n\n vec3 sh1 = vec3(sampledSH0123.rgb) * (1.0 - fOddOffset) + vec3(sampledSH0123.ba, sampledSH4567.r) * fOddOffset;\n vec3 sh2 = vec3(sampledSH0123.a, sampledSH4567.rg) * (1.0 - fOddOffset) + vec3(sampledSH4567.gba) * fOddOffset;\n vec3 sh3 = vec3(sampledSH4567.ba, sampledSH891011.r) * (1.0 - fOddOffset) + vec3(sampledSH891011.rgb) * fOddOffset;\n ")+"\n if (sphericalHarmonics8BitMode == 1) {\n sh1 = sh1 * 2.0 - vecOnes3;\n sh2 = sh2 * 2.0 - vecOnes3;\n sh3 = sh3 * 2.0 - vecOnes3;\n }\n float x = worldViewDir.x;\n float y = worldViewDir.y;\n float z = worldViewDir.z;\n vColor.rgb += SH_C1 * (-sh1 * y + sh2 * z - sh3 * x);\n ",2<=a&&(o+="\n if (sphericalHarmonicsDegree >= 2) {\n float xx = x * x;\n float yy = y * y;\n float zz = z * z;\n float xy = x * y;\n float yz = y * z;\n float xz = x * z;\n\n vec4 sampledSH12131415 = texture(sphericalHarmonicsTexture, getDataUV(6, 3, sphericalHarmonicsTextureSize));\n vec4 sampledSH16171819 = texture(sphericalHarmonicsTexture, getDataUV(6, 4, sphericalHarmonicsTextureSize));\n vec4 sampledSH20212223 = texture(sphericalHarmonicsTexture, getDataUV(6, 5, sphericalHarmonicsTextureSize));\n\n vec3 sh4 = sampledSH891011.gba;\n vec3 sh5 = sampledSH12131415.rgb;\n vec3 sh6 = vec3(sampledSH12131415.a, sampledSH16171819.rg);\n vec3 sh7 = vec3(sampledSH16171819.ba, sampledSH20212223.r);\n vec3 sh8 = sampledSH20212223.gba;\n\n if (sphericalHarmonics8BitMode == 1) {\n sh4 = sh4 * 2.0 - vecOnes3;\n sh5 = sh5 * 2.0 - vecOnes3;\n sh6 = sh6 * 2.0 - vecOnes3;\n sh7 = sh7 * 2.0 - vecOnes3;\n sh8 = sh8 * 2.0 - vecOnes3;\n }\n\n vColor.rgb +=\n (SH_C2[0] * xy) * sh4 +\n (SH_C2[1] * yz) * sh5 +\n (SH_C2[2] * (2.0 * zz - xx - yy)) * sh6 +\n (SH_C2[3] * xz) * sh7 +\n (SH_C2[4] * (xx - yy)) * sh8;\n }\n "),o+="\n }\n "),o=(o=o+"\n\n vec4 sampledCovarianceA = texture(covariancesTexture,\n getDataUVF(nearestEvenIndex, 1.5, oddOffset, covariancesTextureSize));\n vec4 sampledCovarianceB = texture(covariancesTexture,\n getDataUVF(nearestEvenIndex, 1.5, oddOffset + uint(1), covariancesTextureSize));\n\n vec3 cov3D_M11_M12_M13 = vec3(sampledCovarianceA.rgb) * (1.0 - fOddOffset) +\n vec3(sampledCovarianceA.ba, sampledCovarianceB.r) * fOddOffset;\n vec3 cov3D_M22_M23_M33 = vec3(sampledCovarianceA.a, sampledCovarianceB.rg) * (1.0 - fOddOffset) +\n vec3(sampledCovarianceB.gba) * fOddOffset;\n\n // Construct the 3D covariance matrix\n mat3 Vrk = mat3(\n cov3D_M11_M12_M13.x, cov3D_M11_M12_M13.y, cov3D_M11_M12_M13.z,\n cov3D_M11_M12_M13.y, cov3D_M22_M23_M33.x, cov3D_M22_M23_M33.y,\n cov3D_M11_M12_M13.z, cov3D_M22_M23_M33.y, cov3D_M22_M23_M33.z\n );\n\n \n // Construct the Jacobian行列式 of the affine仿射 approximation逼近 of the projection matrix. It will be used to transform the\n // 3D covariance matrix instead of using the actual projection matrix because that transformation would\n // require a non-linear component (perspective division) which would yield a non-gaussian result. (This assumes假设\n // the current projection is a perspective projection).\n //翻译结果:构建投影矩阵仿射近似的雅可比矩阵。它将被用来变换3D协方差矩阵,而不是直接使用实际的投影矩阵,因为使用实际投影矩阵进行变换需要包含非线性成分(透视除法),这会导致非高斯的结果。这里假设当前的投影为透视投影。\n //看不懂 https://zhuanlan.zhihu.com/p/661569671\n\n \n mat3 J;\n if (orthographicMode == 1) {\n // Since the projection is linear, we don't need an approximation\n J = transpose(mat3(orthoZoom, 0.0, 0.0,\n 0.0, orthoZoom, 0.0,\n 0.0, 0.0, 0.0));\n } else {\n // Construct the Jacobian of the affine approximation of the projection matrix. It will be used to transform the\n // 3D covariance matrix instead of using the actual projection matrix because that transformation would\n // require a non-linear component (perspective division) which would yield a non-gaussian result.\n float s = 1.0 / (viewCenter.z * viewCenter.z);\n J = mat3(\n focal.x / viewCenter.z, 0., -(focal.x * viewCenter.x) * s,\n 0., focal.y / viewCenter.z, -(focal.y * viewCenter.y) * s,\n 0., 0., 0.\n );\n }\n\n // Concatenate the projection approximation with the model-view transformation\n mat3 W = transpose(mat3(transformModelViewMatrix));\n mat3 T = W * J;\n\n // Transform the 3D covariance matrix (Vrk) to compute the 2D covariance matrix\n mat3 cov2Dm = transpose(T) * Vrk * T;\n "+(t?"\n float detOrig = cov2Dm[0][0] * cov2Dm[1][1] - cov2Dm[0][1] * cov2Dm[0][1];\n cov2Dm[0][0] += 0.3;\n cov2Dm[1][1] += 0.3;\n float detBlur = cov2Dm[0][0] * cov2Dm[1][1] - cov2Dm[0][1] * cov2Dm[0][1];\n float compensation = sqrt(max(detOrig / detBlur, 0.0));\n ":"\n cov2Dm[0][0] += 0.3;\n cov2Dm[1][1] += 0.3;\n float compensation = 1.0;\n "))+"\n\n vColor.a *= compensation;\n\n if (vColor.a < minAlpha) return;\n\n // We are interested in the upper-left 2x2 portion of the projected 3D covariance matrix because\n // we only care about the X and Y values. We want the X-diagonal, cov2Dm[0][0],\n // the Y-diagonal, cov2Dm[1][1], and the correlation between the two cov2Dm[0][1]. We don't\n // need cov2Dm[1][0] because it is a symetric matrix.\n vec3 cov2Dv = vec3(cov2Dm[0][0], cov2Dm[0][1], cov2Dm[1][1]);\n\n vec3 ndcCenter = clipCenter.xyz / clipCenter.w;\n\n // We now need to solve for the eigen-values and eigen vectors of the 2D covariance matrix\n // so that we can determine the 2D basis for the splat. This is done using the method described\n // here: https://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html 公式出处\n // After calculating the eigen-values and eigen-vectors, we calculate the basis for rendering the splat\n // by normalizing the eigen-vectors and then multiplying them by (sqrt(8) * eigen-value), which is\n // equal to scaling them by sqrt(8) standard deviations.\n //\n // This is a different approach than in the original work at INRIA. In that work they compute the\n // max extents of the projected splat in screen space to form a screen-space aligned bounding rectangle\n // which forms the geometry that is actually rasterized. The dimensions of that bounding box are 3.0\n // times the maximum eigen-value, or 3 standard deviations. They then use the inverse 2D covariance\n // matrix (called 'conic') in the CUDA rendering thread to determine fragment opacity by calculating the\n // full gaussian: exp(-0.5 * (X - mean) * conic * (X - mean)) * splat opacity\n float a = cov2Dv.x;\n float d = cov2Dv.z;\n float b = cov2Dv.y;\n float D = a * d - b * b;\n float trace = a + d; //追踪\n float traceOver2 = 0.5 * trace;\n float term2 = sqrt(max(0.1f, traceOver2 * traceOver2 - D));\n float eigenValue1 = traceOver2 + term2; //特征值L1\n float eigenValue2 = traceOver2 - term2; //特征值L1\n\n if (pointCloudModeEnabled == 1) {// each splat is rendered as a filled circle\n eigenValue1 = eigenValue2 = 0.2;\n }\n\n if (eigenValue2 <= 0.0) return;\n\n vec2 eigenVector1 = normalize(vec2(b, eigenValue1 - a));\n // since the eigen vectors are orthogonal, we derive the second one from the first 由于本征向量是正交的,因此我们从第一个导出第二个\n vec2 eigenVector2 = vec2(eigenVector1.y, -eigenVector1.x);\n\n // We use sqrt(8) standard deviations偏差 instead of 3 to eliminate消除 more of the splat with a very low opacity.\n vec2 basisVector1 = eigenVector1 * splatScale * min(sqrt8 * sqrt(eigenValue1), ".concat(parseInt(n),".0);\n vec2 basisVector2 = eigenVector2 * splatScale * min(sqrt8 * sqrt(eigenValue2), ").concat(parseInt(n),".0);\n\n if (fadeInComplete == 0) {\n float opacityAdjust = 1.0;\n float centerDist = length(splatCenter - sceneCenter);\n float renderTime = max(currentTime - firstRenderTime, 0.0);\n\n float fadeDistance = 0.75;\n float distanceLoadFadeInFactor = step(visibleRegionFadeStartRadius, centerDist);\n distanceLoadFadeInFactor = (1.0 - distanceLoadFadeInFactor) +\n (1.0 - clamp((centerDist - visibleRegionFadeStartRadius) / fadeDistance, 0.0, 1.0)) *\n distanceLoadFadeInFactor;\n opacityAdjust *= distanceLoadFadeInFactor;\n vColor.a *= opacityAdjust;\n }\n\n vec2 ndcOffset = vec2(vPosition.x * basisVector1 + vPosition.y * basisVector2) *\n basisViewport * 2.0 * inverseFocalAdjustment;\n\n vec4 quadPos = vec4(ndcCenter.xy + ndcOffset, ndcCenter.z , 1.0);\n gl_Position = quadPos; //将整个正方形做一定的拉伸形变,之后在fs中因为只显示中间的圆,所以也就是显示拉伸后的圆。(vs只计算四个顶点的具体位置,其他位置是插值得到的)\n\n // Scale the position data we send to the fragment shader\n vPosition *= sqrt8;\n }"),{sceneCenter:{type:"v3",value:new Le.Vector3},fadeInComplete:{type:"i",value:0},orthographicMode:{type:"i",value:0},visibleRegionFadeStartRadius:{type:"f",value:0},visibleRegionRadius:{type:"f",value:0},currentTime:{type:"f",value:0},firstRenderTime:{type:"f",value:0},covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},sphericalHarmonicsTexture:{type:"t",value:null},focal:{type:"v2",value:new Le.Vector2},orthoZoom:{type:"f",value:1},inverseFocalAdjustment:{type:"f",value:1},viewport:{type:"v2",value:new Le.Vector2},basisViewport:{type:"v2",value:new Le.Vector2},debugColor:{type:"v3",value:new Le.Color},covariancesTextureSize:{type:"v2",value:new Le.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Le.Vector2(1024,1024)},sphericalHarmonicsDegree:{type:"i",value:a},sphericalHarmonicsTextureSize:{type:"v2",value:new Le.Vector2(1024,1024)},sphericalHarmonics8BitMode:{type:"i",value:0},splatScale:{type:"f",value:i},pointCloudModeEnabled:{type:"i",value:r?1:0}});if(e){t.transformIndexesTexture={type:"t",value:null};for(var s=[],l=0;l<fw.MaxScenes;l++)s.push(new Le.Matrix4);t.transforms={type:"mat4",value:s},t.transformIndexesTextureSize={type:"v2",value:new Le.Vector2(1024,1024)}}return new Le.ShaderMaterial({uniforms:t,vertexShader:o,fragmentShader:"\n precision highp float;\n #include <common>\n \n uniform vec3 debugColor;\n\n varying vec4 vColor;\n varying vec2 vUv;\n\n varying vec2 vPosition;\n\n void main () {\n // Compute the positional squared distance from the center of the splat to the current fragment.\n float A = dot(vPosition, vPosition);\n // Since the positional data in vPosition has been scaled by sqrt(8), the squared result will be\n // scaled by a factor of 8. If the squared result is larger than 8, it means it is outside the ellipse\n // defined by the rectangle formed by vPosition. It also means it's farther\n // away than sqrt(8) standard deviations from the mean.\n if (A > 8.0) discard; //position的范围半径为1。指一个rectangle面中的范围。椭圆外的完全透明\n vec3 color = vColor.rgb;\n\n // Since the rendered splat is scaled by sqrt(8), the inverse covariance matrix that is part of\n // the gaussian formula becomes the identity matrix. We're then left with (X - mean) * (X - mean),\n // and since 'mean' is zero, we have X * X, which is the same as A:\n float opacity = exp(-0.5 * A) * vColor.a; //周围的透明度降低\n\n gl_FragColor = vec4(color.rgb, opacity);\n //不知道为何ply转过来的vColor.a是0,(但是在外面访问的opacity并不是0), 导致全是黑色\n }",transparent:!0,alphaTest:1,blending:Le.NormalBlending,depthTest:!0,depthWrite:!1,side:Le.DoubleSide})}},{key:"buildGeomtery",value:function(e){var t=new Le.BufferGeometry,n=(t.setIndex([0,1,2,0,2,3]),new Float32Array(12)),n=new Le.BufferAttribute(n,3),n=(t.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0,(new Le.InstancedBufferGeometry).copy(t)),t=new Uint32Array(e),e=new Le.InstancedBufferAttribute(t,1,!1);return e.setUsage(Le.DynamicDrawUsage),n.setAttribute("splatIndex",e),n.instanceCount=0,n}},{key:"buildScenes",value:function(e,t){var n=[];n.length=e.length;for(var i=0;i<e.length;i++){var r=e[i],a=t[i]||{},o=a.position||[0,0,0],s=a.rotation||[0,0,0,1],l=a.scale||[1,1,1],o=(new Le.Vector3).fromArray(o),s=(new Le.Quaternion).fromArray(s),l=(new Le.Vector3).fromArray(l);n[i]=B.createScene(r,o,s,l,a.splatAlphaRemovalThreshold||1)}return n}},{key:"createScene",value:function(e,t,n,i,r){return new Gw(e,t,n,i,r)}},{key:"buildSplatIndexMaps",value:function(e){for(var t=[],n=[],i=0,r=0;r<e.length;r++)for(var a=e[r].getMaxSplatCount(),o=0;o<a;o++)t[i]=o,n[i]=r,i++;return{localSplatIndexMap:t,sceneIndexMap:n}}},{key:"computeTextureUpdateRegion",value:function(e,t,n,i,r){var r=r/i,e=Math.floor(e*r/n),a=e*n*i,t=Math.floor(t*r/n);return{dataStart:a,dataEnd:t*n*i+n*i,startRow:e,endRow:t}}},{key:"updateCenterColorsPaddedData",value:function(e,t,n,i,r){for(var a=e;a<t;a++){var o=4*a,s=3*a,l=4*a;r[l]=i[o]+(i[o+1]<<8)+(i[o+2]<<16)+(i[o+3]<<24),r[1+l]=Ky(n[s]),r[2+l]=Ky(n[1+s]),r[3+l]=Ky(n[2+s])}}},{key:"getTotalSplatCountForScenes",value:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;r&&r.splatBuffer&&(n+=r.splatBuffer.getSplatCount())}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"getTotalSplatCountForSplatBuffers",value:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;)n+=t.value.getSplatCount()}catch(e){i.e(e)}finally{i.f()}return n}},{key:"getTotalMaxSplatCountForScenes",value:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;r&&r.splatBuffer&&(n+=r.splatBuffer.getMaxSplatCount())}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"getTotalMaxSplatCountForSplatBuffers",value:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;)n+=t.value.getMaxSplatCount()}catch(e){i.e(e)}finally{i.f()}return n}},{key:"getIntegerMatrixArray",value:function(e){for(var t=e.elements,n=[],i=0;i<16;i++)n[i]=Math.round(1e3*t[i]);return n}}])}();function $w(A){var y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,R,L,F;A.onmessage=function(e){var t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g;e.data.centers?(centers=e.data.centers,transformIndexes=e.data.transformIndexes,x?new Int32Array(w,I+e.data.range.from*F.BytesPerInt*4,4*e.data.range.count).set(new Int32Array(centers)):new Float32Array(w,I+e.data.range.from*F.BytesPerFloat*4,4*e.data.range.count).set(new Float32Array(centers)),E&&new Uint32Array(w,S+4*e.data.range.from,e.data.range.count).set(new Uint32Array(transformIndexes)),A.postMessage({centerDataSet:!0})):e.data.sort?(d=e.data.sort.splatRenderCount||0,c=e.data.sort.splatSortCount||0,p=e.data.sort.usePrecomputedDistances,b||(f=e.data.sort.indexesToSort,v=e.data.sort.transforms,p&&(m=e.data.sort.precomputedDistances)),c=c,d=d,h=e.data.sort.modelViewProj,p=p,f=f,m=m,v=v,g=performance.now(),b||(new Uint32Array(w,B,f.byteLength/F.BytesPerInt).set(f),new Float32Array(w,T,v.byteLength/F.BytesPerFloat).set(v),p&&(x?new Int32Array(w,_,m.byteLength/F.BytesPerInt):new Float32Array(w,_,m.byteLength/F.BytesPerFloat)).set(m)),R=R||new Uint32Array(F.DepthMapRange),new Float32Array(w,k,16).set(h),new Uint32Array(w,D,F.DepthMapRange).set(R),y.exports.sortIndexes(B,I,_,P,D,k,M,S,T,F.DepthMapRange,c,d,C,p,x,E),f={sortDone:!0,splatSortCount:c,splatRenderCount:d,sortTime:0},b||(v=new Uint32Array(w,M,d),(L=!L||L.length<d?new Uint32Array(d):L).set(v),f.sortedIndexes=L),m=performance.now(),f.sortTime=m-g,A.postMessage(f)):e.data.init&&(F=e.data.init.Constants,C=e.data.init.splatCount,b=e.data.init.useSharedMemory,x=e.data.init.integerBasedSort,E=e.data.init.dynamicMode,h=x?4*F.BytesPerInt:4*F.BytesPerFloat,p=new Uint8Array(e.data.init.sorterWasmBytes),c=16*F.BytesPerFloat,t=C*F.BytesPerInt,n=C*h,i=c,r=x?C*F.BytesPerInt:C*F.BytesPerFloat,a=C*F.BytesPerInt,o=C*F.BytesPerInt,s=F.DepthMapRange*F.BytesPerInt*2,l=E?C*F.BytesPerInt:0,d=E?F.MaxScenes*c:0,g=32*F.MemoryPageSize,e=Math.floor((t+n+i+r+a+s+o+l+d+g)/F.MemoryPageSize)+1,u={module:{},env:{memory:new WebAssembly.Memory({initial:2*e,maximum:4*e,shared:!0})}},WebAssembly.compile(p).then(function(e){return WebAssembly.instantiate(e,u)}).then(function(e){y=e,T=(S=(M=(D=(P=(_=(k=(I=(B=0)+t)+n)+i)+r)+a)+s)+o)+l,w=u.env.memory.buffer,b?A.postMessage({sortSetupPhase1Complete:!0,indexesToSortBuffer:w,indexesToSortOffset:B,sortedIndexesBuffer:w,sortedIndexesOffset:M,precomputedDistancesBuffer:w,precomputedDistancesOffset:_,transformsBuffer:w,transformsOffset:T}):A.postMessage({sortSetupPhase1Complete:!0})}))}}var e1,t1,n1,i1={None:0,VR:1,AR:2},r1=function(){function u(){ue(this,u)}return A(u,null,[{key:"createButton",value:function(o){var e,s=document.createElement("button");function l(){s.style.display="",s.style.cursor="auto",s.style.left="calc(50% - 75px)",s.style.width="150px",s.onmouseenter=null,s.onmouseleave=null,s.onclick=null}function t(e){e.style.position="absolute",e.style.bottom="20px",e.style.padding="12px 6px",e.style.border="1px solid #fff",e.style.borderRadius="4px",e.style.background="rgba(0,0,0,0.1)",e.style.color="#fff",e.style.font="normal 13px sans-serif",e.style.textAlign="center",e.style.opacity="0.5",e.style.outline="none",e.style.zIndex="999"}return"xr"in navigator?(s.id="VRButton",s.style.display="none",t(s),navigator.xr.isSessionSupported("immersive-vr").then(function(e){function t(e){return n.apply(this,arguments)}function n(){return(n=J(X().mark(function e(t){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.addEventListener("end",i),e.next=3,o.xr.setSession(t);case 3:s.textContent="EXIT VR",r=t;case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function i(){r.removeEventListener("end",i),s.textContent="ENTER VR",r=null}var r,a;e?(r=null,s.style.display="",s.style.cursor="pointer",s.style.left="calc(50% - 50px)",s.style.width="100px",s.textContent="ENTER VR",a={optionalFeatures:["local-floor","bounded-floor","hand-tracking","layers"]},s.onmouseenter=function(){s.style.opacity="1.0"},s.onmouseleave=function(){s.style.opacity="0.5"},s.onclick=function(){null===r?navigator.xr.requestSession("immersive-vr",a).then(t):(r.end(),void 0!==navigator.xr.offerSession&&navigator.xr.offerSession("immersive-vr",a).then(t).catch(function(e){console.warn(e)}))},void 0!==navigator.xr.offerSession&&navigator.xr.offerSession("immersive-vr",a).then(t).catch(function(e){console.warn(e)})):(l(),s.textContent="VR NOT SUPPORTED"),e&&u.xrSessionIsGranted&&s.click()}).catch(function(e){l(),console.warn("Exception when trying to call xr.isSessionSupported",e),s.textContent="VR NOT ALLOWED"}),s):(e=document.createElement("a"),!1===window.isSecureContext?(e.href=document.location.href.replace(/^http:/,"https:"),e.innerHTML="WEBXR NEEDS HTTPS"):(e.href="https://immersiveweb.dev/",e.innerHTML="WEBXR NOT AVAILABLE"),e.style.left="calc(50% - 90px)",e.style.width="180px",e.style.textDecoration="none",t(e),e)}},{key:"registerSessionGrantedListener",value:function(){"undefined"!=typeof navigator&&"xr"in navigator&&(/WebXRViewer\//i.test(navigator.userAgent)||navigator.xr.addEventListener("sessiongranted",function(){u.xrSessionIsGranted=!0}))}}])}(),a1=(r1.xrSessionIsGranted=!1,r1.registerSessionGrantedListener(),function(){return A(function e(){ue(this,e)},null,[{key:"createButton",value:function(s){var e,l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},u=document.createElement("button");function c(){u.style.display="",u.style.cursor="auto",u.style.left="calc(50% - 75px)",u.style.width="150px",u.onmouseenter=null,u.onmouseleave=null,u.onclick=null}function t(e){e.style.position="absolute",e.style.bottom="20px",e.style.padding="12px 6px",e.style.border="1px solid #fff",e.style.borderRadius="4px",e.style.background="rgba(0,0,0,0.1)",e.style.color="#fff",e.style.font="normal 13px sans-serif",e.style.textAlign="center",e.style.opacity="0.5",e.style.outline="none",e.style.zIndex="999"}return"xr"in navigator?(u.id="ARButton",u.style.display="none",t(u),navigator.xr.isSessionSupported("immersive-ar").then(function(e){function t(e){return n.apply(this,arguments)}function n(){return(n=J(X().mark(function e(t){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.addEventListener("end",i),s.xr.setReferenceSpaceType("local"),e.next=4,s.xr.setSession(t);case 4:u.textContent="STOP AR",l.domOverlay.root.style.display="",o=t;case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function i(){o.removeEventListener("end",i),u.textContent="START AR",l.domOverlay.root.style.display="none",o=null}var r,a,o;e?(void 0===l.domOverlay&&((e=document.createElement("div")).style.display="none",document.body.appendChild(e),(r=document.createElementNS("http://www.w3.org/2000/svg","svg")).setAttribute("width",38),r.setAttribute("height",38),r.style.position="absolute",r.style.right="20px",r.style.top="20px",r.addEventListener("click",function(){o.end()}),e.appendChild(r),(a=document.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),a.setAttribute("stroke","#fff"),a.setAttribute("stroke-width",2),r.appendChild(a),void 0===l.optionalFeatures&&(l.optionalFeatures=[]),l.optionalFeatures.push("dom-overlay"),l.domOverlay={root:e}),o=null,u.style.display="",u.style.cursor="pointer",u.style.left="calc(50% - 50px)",u.style.width="100px",u.textContent="START AR",u.onmouseenter=function(){u.style.opacity="1.0"},u.onmouseleave=function(){u.style.opacity="0.5"},u.onclick=function(){null===o?navigator.xr.requestSession("immersive-ar",l).then(t):(o.end(),void 0!==navigator.xr.offerSession&&navigator.xr.offerSession("immersive-ar",l).then(t).catch(function(e){console.warn(e)}))},void 0!==navigator.xr.offerSession&&navigator.xr.offerSession("immersive-ar",l).then(t).catch(function(e){console.warn(e)})):(c(),u.textContent="AR NOT SUPPORTED")}).catch(function(e){c(),console.warn("Exception when trying to call xr.isSessionSupported",e),u.textContent="AR NOT ALLOWED"}),u):(e=document.createElement("a"),!1===window.isSecureContext?(e.href=document.location.href.replace(/^http:/,"https:"),e.innerHTML="WEBXR NEEDS HTTPS"):(e.href="https://immersiveweb.dev/",e.innerHTML="WEBXR NOT AVAILABLE"),e.style.left="calc(50% - 90px)",e.style.width="180px",e.style.textDecoration="none",t(e),e)}}])}()),o1={Always:0,OnChange:1,Never:2},s1=function(){function j(){var t,n,i,r,a,o,s,l,u,c,d,h,p,e,f,m,v,g,A,y,w,b,x,E,L,C,B,F,M,O,U,S,N,T,_,z,G,P,D,I,H,k,V,Q,R=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,j),Y(this,"onKeyDown",(t=new Le.Vector3,n=new Le.Matrix4,i=new Le.Matrix4,function(e){switch(t.set(0,0,-1),t.transformDirection(this.camera.matrixWorld),n.makeRotationAxis(t,Math.PI/128),i.makeRotationAxis(t,-Math.PI/128),e.code){case"KeyG":this.focalAdjustment+=.02,this.forceRenderNextFrame();break;case"KeyF":this.focalAdjustment-=.02,this.forceRenderNextFrame();break;case"ArrowLeft":this.camera.up.transformDirection(n);break;case"ArrowRight":this.camera.up.transformDirection(i);break;case"KeyC":this.showMeshCursor=!this.showMeshCursor;break;case"KeyU":this.showControlPlane=!this.showControlPlane;break;case"KeyI":this.showInfo=!this.showInfo,this.showInfo?this.infoPanel.show():this.infoPanel.hide();break;case"KeyO":this.usingExternalCamera||this.setOrthographicMode(!this.camera.isOrthographicCamera);break;case"KeyP":this.usingExternalCamera||this.splatMesh.setPointCloudModeEnabled(!this.splatMesh.getPointCloudModeEnabled());break;case"Equal":this.usingExternalCamera||this.splatMesh.setSplatScale(this.splatMesh.getSplatScale()+.05);break;case"Minus":this.usingExternalCamera||this.splatMesh.setSplatScale(Math.max(this.splatMesh.getSplatScale()-.05,0))}})),Y(this,"onMouseUp",(r=new Le.Vector2,function(e){r.copy(this.mousePosition).sub(this.mouseDownPosition),dy()-this.mouseDownTime<.5&&r.length()<2&&this.onMouseClick(e)})),Y(this,"checkForFocalPointChange",(a=new Le.Vector2,o=new Le.Vector3,s=[],function(){var e;this.transitioningCameraTarget||(this.getRenderDimensions(a),s.length=0,this.raycaster.setFromCameraAndScreenPosition(this.camera,this.mousePosition,a),this.raycaster.intersectSplatMesh(this.splatMesh,s),0<s.length&&(e=s[0].origin,o.copy(e).sub(this.camera.position),.75<o.length())&&(this.previousCameraTarget.copy(this.controls.target),this.nextCameraTarget.copy(e),this.transitioningCameraTarget=!0,this.transitioningCameraTargetStartTime=dy()))})),Y(this,"updateSplatMesh",(l=new Le.Vector2,function(){var e,t,n,i;this.splatMesh&&0<this.splatMesh.getSplatCount()&&(this.splatMesh.updateTransforms(),this.getRenderDimensions(l),e=.5*this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*l.x,t=.5*this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*l.y,n=this.camera.isOrthographicCamera?1/this.devicePixelRatio:1,i=1/(n=this.focalAdjustment*n),this.adjustForWebXRStereo(l),this.splatMesh.updateUniforms(l,e*n,t*n,this.camera.isOrthographicCamera,this.camera.zoom||1,i))})),Y(this,"addSplatBuffers",function(i){var r=this,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],o=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],e=!(3<arguments.length&&void 0!==arguments[3])||arguments[3],s=!(4<arguments.length&&void 0!==arguments[4])||arguments[4];if(this.isDisposingOrDisposed())return Promise.resolve();this.splatRenderReady=!1;var l=null;return new Promise(function(n){e&&(l=r.loadingSpinner.addTask("Processing splats...")),py(function(){var t,e;r.isDisposingOrDisposed()?n():(t=r.addSplatBuffersToMesh(i,a,o,s),e=r.splatMesh.getMaxSplatCount(),r.sortWorker&&r.sortWorker.maxSplatCount!==e&&r.disposeSortWorker(),(!r.sortWorker&&0<e?r.setupSortWorker(r.splatMesh):Promise.resolve()).then(function(){var e;e=t,r.isDisposingOrDisposed()||(null!==l&&(r.loadingSpinner.removeTask(l),l=null),!r.gpuAcceleratedSort&&r.sortWorker&&r.sortWorker.postMessage({centers:e.centers.buffer,transformIndexes:e.sceneIndexes.buffer,range:{from:e.from,to:e.to,count:e.count}}),r.splatRenderReady=!0,r.sortNeededForSceneChange=!0),n()}))},!0)})}),Y(this,"shouldRender",(u=0,c=new Le.Vector3,d=new Le.Quaternion,function(){var e,t,n=!1;return this.camera&&(e=this.camera.position,t=this.camera.quaternion,n=1e-4<Math.abs(e.x-c.x)||1e-4<Math.abs(e.y-c.y)||1e-4<Math.abs(e.z-c.z)||1e-4<Math.abs(t.x-d.x)||1e-4<Math.abs(t.y-d.y)||1e-4<Math.abs(t.z-d.z)||1e-4<Math.abs(t.w-d.w)),e=this.renderMode!==o1.Never&&(0===u||this.splatMesh.visibleRegionChanging||n||this.renderMode===o1.Always||!0===this.dynamicMode||this.renderNextFrame),this.camera&&(c.copy(this.camera.position),d.copy(this.camera.quaternion)),u++,e})),Y(this,"render",function(){var e,t;this.initialized&&this.splatRenderReady&&(e=this.camera.layers.mask,this.camera.layers.set(0),t=this.renderer.autoClear,this.renderer.render(this.splatMesh,this.camera),this.renderer.autoClear=!1,0<this.sceneHelper.getFocusMarkerOpacity()&&this.renderer.render(this.sceneHelper.focusMarker,this.camera),this.showControlPlane&&this.renderer.render(this.sceneHelper.controlPlane,this.camera),this.renderer.autoClear=t,this.camera.layers.mask=e)}),Y(this,"updateFPS",(h=dy(),p=0,function(){var e;60<this.consecutiveRenderFrames?1<=(e=dy())-h?(this.currentFPS=p,p=0,h=e):p++:this.currentFPS=null})),Y(this,"updateForRendererSizeChanges",(f=new Le.Vector2,m=new Le.Vector2,function(){this.usingExternalCamera||(this.renderer.getSize(m),void 0!==e&&e===this.camera.isOrthographicCamera&&m.x===f.x&&m.y===f.y)||(this.camera.isOrthographicCamera?(this.camera.left=-m.x/2,this.camera.right=m.x/2,this.camera.top=m.y/2,this.camera.bottom=-m.y/2):this.camera.aspect=m.x/m.y,this.camera.updateProjectionMatrix(),f.copy(m),e=this.camera.isOrthographicCamera)})),Y(this,"timingSensitiveUpdates",function(){var e=dy(),t=e-(v=v||e);this.updateCameraTransition(e),this.updateFocusMarker(t),v=e}),Y(this,"updateCameraTransition",(g=new Le.Vector3,A=new Le.Vector3,y=new Le.Vector3,function(e){var t;this.transitioningCameraTarget&&(A.copy(this.previousCameraTarget).sub(this.camera.position).normalize(),y.copy(this.nextCameraTarget).sub(this.camera.position).normalize(),t=((t=Math.acos(A.dot(y)))/(Math.PI/3)*.65+.3)/t*(e-this.transitioningCameraTargetStartTime),g.copy(this.previousCameraTarget).lerp(this.nextCameraTarget,t),this.camera.lookAt(g),this.controls.target.copy(g),1<=t)&&(this.transitioningCameraTarget=!1)})),Y(this,"updateFocusMarker",(w=new Le.Vector2,b=!1,function(e){var t;this.getRenderDimensions(w),this.transitioningCameraTarget?(this.sceneHelper.setFocusMarkerVisibility(!0),t=Math.max(this.sceneHelper.getFocusMarkerOpacity(),0),t=Math.min(t+10*e,1),this.sceneHelper.setFocusMarkerOpacity(t),this.sceneHelper.updateFocusMarker(this.nextCameraTarget,this.camera,w),b=!0,this.forceRenderNextFrame()):(0<(t=b?1:Math.min(this.sceneHelper.getFocusMarkerOpacity(),1))&&(this.sceneHelper.updateFocusMarker(this.nextCameraTarget,this.camera,w),e=Math.max(t-2.5*e,0),this.sceneHelper.setFocusMarkerOpacity(e),0===e)&&this.sceneHelper.setFocusMarkerVisibility(!1),0<t&&this.forceRenderNextFrame(),b=!1)})),Y(this,"updateMeshCursor",(x=[],E=new Le.Vector2,function(){this.showMeshCursor?(this.forceRenderNextFrame(),this.getRenderDimensions(E),x.length=0,this.raycaster.setFromCameraAndScreenPosition(this.camera,this.mousePosition,E),this.raycaster.intersectSplatMesh(this.splatMesh,x),0<x.length?(this.sceneHelper.setMeshCursorVisibility(!0),this.sceneHelper.positionAndOrientMeshCursor(x[0].origin,this.camera)):this.sceneHelper.setMeshCursorVisibility(!1)):(this.sceneHelper.getMeschCursorVisibility()&&this.forceRenderNextFrame(),this.sceneHelper.setMeshCursorVisibility(!1))})),Y(this,"updateInfoPanel",(L=new Le.Vector2,function(){var e,t,n,i;this.showInfo&&(e=this.splatMesh.getSplatCount(),this.getRenderDimensions(L),t=this.controls?this.controls.target:null,n=this.showMeshCursor?this.sceneHelper.meshCursor.position:null,i=0<e?this.splatRenderCount/e*100:0,this.infoPanel.update(L,this.camera.position,t,this.camera.up,this.camera.isOrthographicCamera,n,this.currentFPS||"N/A",e,this.splatRenderCount,i,this.lastSortTime,this.focalAdjustment,this.splatMesh.getSplatScale(),this.splatMesh.getPointCloudModeEnabled()))})),Y(this,"updateSplatSort",(C=new Le.Matrix4,B=[],F=new Le.Vector3(0,0,-1),M=new Le.Vector3(0,0,-1),O=new Le.Vector3,U=new Le.Vector3,S=[],N=[{angleThreshold:.55,sortFractions:[.125,.33333,.75]},{angleThreshold:.65,sortFractions:[.33333,.66667]},{angleThreshold:.8,sortFractions:[.5]}],J(X().mark(function e(){var t,n,i,r,a,o,s,l,u,c,d,h,p,f=this,m=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=0<m.length&&void 0!==m[0]&&m[0],this.sortRunning)return e.abrupt("return");e.next=3;break;case 3:if(this.splatMesh.getSplatCount()<=0)return e.abrupt("return");e.next=5;break;case 5:if(n=0,o=r=!1,M.set(0,0,-1).applyQuaternion(this.camera.quaternion),n=M.dot(F),i=U.copy(this.camera.position).sub(O).length(),t){e.next=18;break}if(this.sortNeededForSceneChange||this.splatMesh.dynamicMode||0!==S.length){e.next=18;break}if(1<=i&&(o=!0),(r=n<=.99?!0:r)||o){e.next=18;break}return e.abrupt("return");case 18:if(this.sortRunning=!0,i=this.gatherSceneNodesForSort(),r=i.splatRenderCount,a=i.shouldSortAll,this.splatRenderCount=r,C.copy(this.camera.matrixWorld).invert(),o=this.perspectiveCamera||this.camera,C.premultiply(o.projectionMatrix),C.multiply(this.splatMesh.matrixWorld),this.gpuAcceleratedSort&&(S.length<=1||S.length%2==0))return e.next=28,this.splatMesh.computeDistancesOnGPU(C,this.sortWorkerPrecomputedDistances);e.next=28;break;case 28:this.splatMesh.dynamicMode||a?(S.push(this.splatRenderCount),e.next=44):e.next=32;break;case 32:if(0!==S.length){e.next=44;break}s=0,l=N;case 34:if(!(s<l.length)){e.next=43;break}if(h=l[s],!(n<h.angleThreshold)){e.next=40;break}u=q(h.sortFractions);try{for(u.s();!(c=u.n()).done;)d=c.value,S.push(Math.floor(this.splatRenderCount*d))}catch(e){u.e(e)}finally{u.f()}return e.abrupt("break",43);case 40:s++,e.next=34;break;case 43:S.push(this.splatRenderCount);case 44:h=Math.min(S.shift(),this.splatRenderCount),B[0]=this.camera.position.x,B[1]=this.camera.position.y,B[2]=this.camera.position.z,p={modelViewProj:C.elements,cameraPosition:B,splatRenderCount:this.splatRenderCount,splatSortCount:h,usePrecomputedDistances:this.gpuAcceleratedSort},this.splatMesh.dynamicMode&&this.splatMesh.fillTransformsArray(this.sortWorkerTransforms),this.sharedMemoryForWorkers||(p.indexesToSort=this.sortWorkerIndexesToSort,p.transforms=this.sortWorkerTransforms,this.gpuAcceleratedSort&&(p.precomputedDistances=this.sortWorkerPrecomputedDistances)),this.sortPromise=new Promise(function(e){f.sortPromiseResolver=e}),this.sortWorker.postMessage({sort:p}),0===S.length&&(O.copy(this.camera.position),F.copy(M)),this.sortNeededForSceneChange=!1;case 55:case"end":return e.stop()}},e,this)})))),Y(this,"gatherSceneNodesForSort",(T=[],_=null,z=new Le.Vector3,G=new Le.Vector3,P=new Le.Vector3,D=new Le.Matrix4,I=new Le.Matrix4,H=new Le.Matrix4,k=new Le.Vector3,V=new Le.Vector3(0,0,-1),Q=new Le.Vector3,function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=(this.getRenderDimensions(k),k.y/2/Math.tan(this.camera.fov/2*Le.MathUtils.DEG2RAD)),n=Math.atan(k.x/2/t),t=Math.atan(k.y/2/t),i=Math.cos(n),r=Math.cos(t),a=this.splatMesh.getSplatTree();if(a){I.copy(this.camera.matrixWorld).invert(),I.multiply(this.splatMesh.matrixWorld);for(var o=0,s=0,l=0;l<a.subTrees.length;l++)for(var u=a.subTrees[l],c=(D.copy(I),this.splatMesh.dynamicMode&&(this.splatMesh.getSceneTransform(l,H),D.multiply(H)),u.nodesWithIndexes.length),d=0;d<c;d++){var h,p,f,m=u.nodesWithIndexes[d];m.data&&m.data.indexes&&0!==m.data.indexes.length&&(P.copy(m.center).applyMatrix4(D),h=P.length(),P.normalize(),z.copy(P).setX(0).normalize(),G.copy(P).setY(0).normalize(),p=V.dot(G),f=V.dot(z),b=m,b=Q.copy(b.max).sub(b.min).length(),!e&&(p<i-.6||f<r-.6)&&b<h||(s+=m.data.indexes.length,(T[o]=m).data.distanceToNode=h,o++))}T.length=o,T.sort(function(e,t){return e.data.distanceToNode<t.data.distanceToNode?-1:1});for(var v=s*fw.BytesPerInt,g=0;g<o;g++){var A=T[g],y=A.data.indexes.length,w=y*fw.BytesPerInt;new Uint32Array(this.sortWorkerIndexesToSort.buffer,v-w,y).set(A.data.indexes),v-=w}return{splatRenderCount:s,shouldSortAll:!1}}var b,x=this.splatMesh.getSplatCount();if(!_||_.length!==x){_=new Uint32Array(x);for(var E=0;E<x;E++)_[E]=E}return this.sortWorkerIndexesToSort.set(_),{splatRenderCount:x,shouldSortAll:!0}})),R.cameraUp||(R.cameraUp=[0,1,0]),this.cameraUp=(new Le.Vector3).fromArray(R.cameraUp),R.initialCameraPosition||(R.initialCameraPosition=[0,10,15]),this.initialCameraPosition=(new Le.Vector3).fromArray(R.initialCameraPosition),R.initialCameraLookAt||(R.initialCameraLookAt=[0,0,0]),this.initialCameraLookAt=(new Le.Vector3).fromArray(R.initialCameraLookAt),this.dropInMode=R.dropInMode||!1,void 0!==R.selfDrivenMode&&null!==R.selfDrivenMode||(R.selfDrivenMode=!0),this.selfDrivenMode=R.selfDrivenMode&&!this.dropInMode,this.selfDrivenUpdateFunc=this.selfDrivenUpdate.bind(this),void 0===R.useBuiltInControls&&(R.useBuiltInControls=!0),this.useBuiltInControls=R.useBuiltInControls,this.rootElement=R.rootElement,this.ignoreDevicePixelRatio=R.ignoreDevicePixelRatio||!1,this.devicePixelRatio=this.ignoreDevicePixelRatio?1:window.devicePixelRatio,this.halfPrecisionCovariancesOnGPU=R.halfPrecisionCovariancesOnGPU||!1,this.threeScene=R.threeScene,this.renderer=R.renderer,this.camera=R.camera,this.gpuAcceleratedSort=R.gpuAcceleratedSort||!1,void 0!==R.integerBasedSort&&null!==R.integerBasedSort||(R.integerBasedSort=!0),this.integerBasedSort=R.integerBasedSort,void 0!==R.sharedMemoryForWorkers&&null!==R.sharedMemoryForWorkers||(R.sharedMemoryForWorkers=!0),this.sharedMemoryForWorkers=R.sharedMemoryForWorkers,this.dynamicScene=!!R.dynamicScene,this.antialiased=R.antialiased||!1,this.webXRMode=R.webXRMode||i1.None,this.webXRMode!==i1.None&&(this.gpuAcceleratedSort=!1),this.webXRActive=!1,this.renderMode=R.renderMode||o1.Always,this.sceneRevealMode=R.sceneRevealMode||qw.Default,this.focalAdjustment=R.focalAdjustment||1,this.maxScreenSpaceSplatSize=R.maxScreenSpaceSplatSize||2048,this.logLevel=R.logLevel||Yw.None,this.sphericalHarmonicsDegree=R.sphericalHarmonicsDegree||0,this.createSplatMesh(),this.controls=null,this.perspectiveControls=null,this.orthographicControls=null,this.orthographicCamera=null,this.perspectiveCamera=null,this.showMeshCursor=!1,this.showControlPlane=!1,this.showInfo=!1,this.sceneHelper=null,this.sortWorker=null,this.sortRunning=!1,this.splatRenderCount=0,this.sortWorkerIndexesToSort=null,this.sortWorkerSortedIndexes=null,this.sortWorkerPrecomputedDistances=null,this.sortWorkerTransforms=null,this.runAfterFirstSort=[],this.selfDrivenModeRunning=!1,this.splatRenderReady=!1,this.raycaster=new zw,this.infoPanel=null,this.startInOrthographicMode=!1,this.currentFPS=0,this.lastSortTime=0,this.consecutiveRenderFrames=0,this.previousCameraTarget=new Le.Vector3,this.nextCameraTarget=new Le.Vector3,this.mousePosition=new Le.Vector2,this.mouseDownPosition=new Le.Vector2,this.mouseDownTime=null,this.resizeObserver=null,this.mouseMoveListener=null,this.mouseDownListener=null,this.mouseUpListener=null,this.keyDownListener=null,this.sortPromise=null,this.sortPromiseResolver=null,this.splatSceneDownloadPromises={},this.splatSceneDownloadAndBuildPromise=null,this.splatSceneRemovalPromise=null,this.loadingSpinner=new Pw(null,this.rootElement||document.body),this.loadingSpinner.hide(),this.loadingProgressBar=new Dw(this.rootElement||document.body),this.loadingProgressBar.hide(),this.infoPanel=new Iw(this.rootElement||document.body),this.infoPanel.hide(),this.usingExternalCamera=!(!this.dropInMode&&!this.camera),this.usingExternalRenderer=!(!this.dropInMode&&!this.renderer),this.initialized=!1,this.disposing=!1,this.disposed=!1,this.dropInMode||this.init()}return A(j,[{key:"createSplatMesh",value:function(){this.splatMesh=new Zw(this.dynamicScene,this.halfPrecisionCovariancesOnGPU,this.devicePixelRatio,this.gpuAcceleratedSort,this.integerBasedSort,this.antialiased,this.maxScreenSpaceSplatSize,this.logLevel,this.sphericalHarmonicsDegree),this.splatMesh.frustumCulled=!1}},{key:"init",value:function(){this.initialized||(this.rootElement||(this.usingExternalRenderer?this.rootElement=this.renderer.domElement.parentElement||document.body:(this.rootElement=document.createElement("div"),this.rootElement.style.width="100%",this.rootElement.style.height="100%",this.rootElement.style.position="absolute",document.body.appendChild(this.rootElement))),this.setupCamera(),this.setupRenderer(),this.setupWebXR(),this.setupControls(),this.setupEventHandlers(),this.threeScene=this.threeScene||new Le.Scene,this.sceneHelper=new Rw(this.threeScene),this.sceneHelper.setupMeshCursor(),this.sceneHelper.setupFocusMarker(),this.sceneHelper.setupControlPlane(),this.loadingProgressBar.setContainer(this.rootElement),this.loadingSpinner.setContainer(this.rootElement),this.infoPanel.setContainer(this.rootElement),this.initialized=!0)}},{key:"setupCamera",value:function(){var e;this.usingExternalCamera||(e=new Le.Vector2,this.getRenderDimensions(e),this.perspectiveCamera=new Le.PerspectiveCamera(50,e.x/e.y,.1,1e3),this.orthographicCamera=new Le.OrthographicCamera(e.x/-2,e.x/2,e.y/2,e.y/-2,.1,1e3),this.camera=this.startInOrthographicMode?this.orthographicCamera:this.perspectiveCamera,this.camera.position.copy(this.initialCameraPosition),this.camera.up.copy(this.cameraUp).normalize(),this.camera.lookAt(this.initialCameraLookAt))}},{key:"setupRenderer",value:function(){var e,t=this;this.usingExternalRenderer||(e=new Le.Vector2,this.getRenderDimensions(e),this.renderer=new Le.WebGLRenderer({antialias:!1,precision:"highp"}),this.renderer.setPixelRatio(this.devicePixelRatio),this.renderer.autoClear=!0,this.renderer.setClearColor(new Le.Color(0),0),this.renderer.setSize(e.x,e.y),this.resizeObserver=new ResizeObserver(function(){t.getRenderDimensions(e),t.renderer.setSize(e.x,e.y),t.forceRenderNextFrame()}),this.resizeObserver.observe(this.rootElement),this.rootElement.appendChild(this.renderer.domElement))}},{key:"setupWebXR",value:function(){var t=this;this.webXRMode&&(this.webXRMode===i1.VR?this.rootElement.appendChild(r1.createButton(this.renderer)):this.webXRMode===i1.AR&&this.rootElement.appendChild(a1.createButton(this.renderer)),this.renderer.xr.addEventListener("sessionstart",function(e){t.webXRActive=!0}),this.renderer.xr.addEventListener("sessionend",function(e){t.webXRActive=!1}),this.renderer.xr.enabled=!0,this.camera.position.copy(this.initialCameraPosition),this.camera.up.copy(this.cameraUp).normalize(),this.camera.lookAt(this.initialCameraLookAt))}},{key:"setupControls",value:function(){if(this.useBuiltInControls&&this.webXRMode===i1.None){this.usingExternalCamera?this.camera.isOrthographicCamera?this.orthographicControls=new _w(this.camera,this.renderer.domElement):this.perspectiveControls=new _w(this.camera,this.renderer.domElement):(this.perspectiveControls=new _w(this.perspectiveCamera,this.renderer.domElement),this.orthographicControls=new _w(this.orthographicCamera,this.renderer.domElement));for(var e=0,t=[this.perspectiveControls,this.orthographicControls];e<t.length;e++){var n=t[e];n&&(n.listenToKeyEvents(window),n.rotateSpeed=.5,n.maxPolarAngle=.75*Math.PI,n.minPolarAngle=.1,n.enableDamping=!0,n.dampingFactor=.05,n.target.copy(this.initialCameraLookAt))}this.controls=this.camera.isOrthographicCamera?this.orthographicControls:this.perspectiveControls}}},{key:"setupEventHandlers",value:function(){this.useBuiltInControls&&this.webXRMode===i1.None&&(this.mouseMoveListener=this.onMouseMove.bind(this),this.renderer.domElement.addEventListener("pointermove",this.mouseMoveListener,!1),this.mouseDownListener=this.onMouseDown.bind(this),this.renderer.domElement.addEventListener("pointerdown",this.mouseDownListener,!1),this.mouseUpListener=this.onMouseUp.bind(this),this.renderer.domElement.addEventListener("pointerup",this.mouseUpListener,!1),this.keyDownListener=this.onKeyDown.bind(this),window.addEventListener("keydown",this.keyDownListener,!1))}},{key:"removeEventHandlers",value:function(){this.useBuiltInControls&&(this.renderer.domElement.removeEventListener("pointermove",this.mouseMoveListener),this.mouseMoveListener=null,this.renderer.domElement.removeEventListener("pointerdown",this.mouseDownListener),this.mouseDownListener=null,this.renderer.domElement.removeEventListener("pointerup",this.mouseUpListener),this.mouseUpListener=null,window.removeEventListener("keydown",this.keyDownListener),this.keyDownListener=null)}},{key:"setRenderMode",value:function(e){this.renderMode=e}},{key:"onMouseMove",value:function(e){this.mousePosition.set(e.offsetX,e.offsetY)}},{key:"onMouseDown",value:function(){this.mouseDownPosition.copy(this.mousePosition),this.mouseDownTime=dy()}},{key:"onMouseClick",value:function(e){this.mousePosition.set(e.offsetX,e.offsetY),this.checkForFocalPointChange()}},{key:"getRenderDimensions",value:function(e){this.rootElement?(e.x=this.rootElement.offsetWidth,e.y=this.rootElement.offsetHeight):this.renderer.getSize(e)}},{key:"setOrthographicMode",value:function(e){var t,n,i,r,a;e!==this.camera.isOrthographicCamera&&(t=this.camera,(n=e?this.orthographicCamera:this.perspectiveCamera).position.copy(t.position),n.up.copy(t.up),n.rotation.copy(t.rotation),n.quaternion.copy(t.quaternion),n.matrix.copy(t.matrix),this.camera=n,this.controls)&&(r=this.controls,(i=function(e){e.saveState(),e.reset()})(a=e?this.orthographicControls:this.perspectiveControls),i(r),a.target.copy(r.target),e?j.setCameraZoomFromPosition(n,t,r):j.setCameraPositionFromZoom(n,t,a),this.controls=a,this.camera.lookAt(this.controls.target))}},{key:"adjustForWebXRStereo",value:function(e){var t,n;this.camera&&this.webXRActive&&(t=this.renderer.xr.getCamera().projectionMatrix.elements[0],n=this.camera.projectionMatrix.elements[0],e.x*=n/t)}},{key:"isLoadingOrUnloading",value:function(){return 0<Object.keys(this.splatSceneDownloadPromises).length||null!==this.splatSceneDownloadAndBuildPromise||null!==this.splatSceneRemovalPromise}},{key:"isDisposingOrDisposed",value:function(){return this.disposing||this.disposed}},{key:"addSplatSceneDownloadPromise",value:function(e){this.splatSceneDownloadPromises[e.id]=e}},{key:"removeSplatSceneDownloadPromise",value:function(e){delete this.splatSceneDownloadPromises[e.id]}},{key:"setSplatSceneDownloadAndBuildPromise",value:function(e){this.splatSceneDownloadAndBuildPromise=e}},{key:"clearSplatSceneDownloadAndBuildPromise",value:function(){this.splatSceneDownloadAndBuildPromise=null}},{key:"addSplatScene",value:function(e){var r=this,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(this.isLoadingOrUnloading())throw new Error("Cannot add splat scene while another load or unload is already in progress.");if(this.isDisposingOrDisposed())throw new Error("Cannot add splat scene after dispose() is called.");var t=void 0!==a.format&&null!==a.format?a.format:vw(e),o=j.isStreamable(t)&&a.streamView,s=void 0===a.showLoadingUI||null===a.showLoadingUI||a.showLoadingUI,i=null,l=(s&&(this.loadingSpinner.removeAllTasks(),i=this.loadingSpinner.addTask("Downloading...")),function(e,t,n){s&&(n===dw?100==e?r.loadingSpinner.setMessageForTask(i,"Download complete!"):o?r.loadingSpinner.setMessageForTask(i,"Downloading splats..."):(e=t?": ".concat(t):"...",r.loadingSpinner.setMessageForTask(i,"Downloading".concat(e))):n===hw?r.loadingSpinner.setMessageForTask(i,"Processing splats..."):r.loadingSpinner.setMessageForTask(i,"Ready!"))}),n=!1,u=0,c=function(e,t){s&&((e&&o||t&&!o)&&r.runAfterFirstSort.push(function(){r.loadingSpinner.removeTask(i),t||n||r.loadingProgressBar.show()}),o)&&(t?(n=!0,r.loadingProgressBar.hide()):r.loadingProgressBar.setProgress(u))};return(o?this.downloadAndBuildSingleSplatSceneStreaming:this.downloadAndBuildSingleSplatSceneNonStreaming).bind(this)(e,t,a.splatAlphaRemovalThreshold,function(e,t,n){!o&&a.onProgress&&a.onProgress(0,"0%",hw);var i={rotation:a.rotation||a.orientation,position:a.position,scale:a.scale,splatAlphaRemovalThreshold:a.splatAlphaRemovalThreshold};return r.addSplatBuffers([e],[i],n,t&&s,s).then(function(){!o&&a.onProgress&&a.onProgress(100,"100%",hw),c(t,n)})}.bind(this),function(e,t,n){l(u=e,t,n),a.onProgress&&a.onProgress(e,t,n)},function(){r.loadingProgressBar.hide(),r.loadingSpinner.removeAllTasks()}.bind(this))}},{key:"downloadAndBuildSingleSplatSceneNonStreaming",value:function(t,e,n,i,r,a){var o=this,s=this.downloadSplatSceneToSplatBuffer(t,n,r,!1,void 0,e).then(function(e){return o.removeSplatSceneDownloadPromise(s),i(e,!0,!0).then(function(){o.clearSplatSceneDownloadAndBuildPromise()})}).catch(function(e){if(a&&a(),o.clearSplatSceneDownloadAndBuildPromise(),o.removeSplatSceneDownloadPromise(s),!(e instanceof Xy))throw new Error("Viewer::addSplatScene -> Could not load file ".concat(t))});return this.addSplatSceneDownloadPromise(s),this.setSplatSceneDownloadAndBuildPromise(s),s}},{key:"downloadAndBuildSingleSplatSceneStreaming",value:function(e,t,n,i,r,a){var o,s,l,u,c=this,d=0,h=!1,p=[],f=function(){var e;0<p.length&&!h&&!c.isDisposingOrDisposed()&&(h=!0,e=p.shift(),i(e.splatBuffer,e.firstBuild,e.finalBuild).then(function(){h=!1,e.firstBuild?(s=null,o()):e.finalBuild&&(l(),c.clearSplatSceneDownloadAndBuildPromise()),0<p.length&&py(function(){return f()})}))},m=this.downloadSplatSceneToSplatBuffer(e,n,r,!0,function(e,t){c.isDisposingOrDisposed()||(t||0===p.length||e.getSplatCount()>p[0].splatBuffer.getSplatCount())&&(p.push({splatBuffer:e,firstBuild:0===d,finalBuild:t}),d++,f())},t),e=new Yy(function(e,t){o=e,s=t},m.abortHandler),n=new Yy(function(e,t){l=e,u=t});return this.addSplatSceneDownloadPromise(m),this.setSplatSceneDownloadAndBuildPromise(n),m.then(function(){c.removeSplatSceneDownloadPromise(m)}).catch(function(e){c.clearSplatSceneDownloadAndBuildPromise(),c.removeSplatSceneDownloadPromise(m),e instanceof Xy||(u(e),s&&s(e),a&&a(e))}),e}},{key:"addSplatScenes",value:function(i){var a=this,o=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:void 0;if(this.isLoadingOrUnloading())throw new Error("Cannot add splat scene while another load or unload is already in progress.");if(this.isDisposingOrDisposed())throw new Error("Cannot add splat scene after dispose() is called.");for(var l=i.length,u=[],e=(o&&(this.loadingSpinner.removeAllTasks(),this.loadingSpinner.show()),function(e,t,n){u[e]=t;for(var i=0,r=0;r<l;r++)i+=u[r]||0;n="".concat((i/=l).toFixed(2),"%"),o&&a.loadingSpinner.setMessage(100==i?"Download complete!":"Downloading: ".concat(n)),s&&s(i,n,dw)}),r=[],c=[],n=[],t=0;t<i.length;t++){var d=i[t],h=void 0!==d.format&&null!==d.format?d.format:vw(d.path),d=this.downloadSplatSceneToSplatBuffer(d.path,d.splatAlphaRemovalThreshold,e.bind(this,t),!1,void 0,h);n.push(d.abortHandler),r.push(d),c.push(d.promise),this.addSplatSceneDownloadPromise(d)}var p=new Yy(function(t,n){Promise.all(c).then(function(e){o&&a.loadingSpinner.hide(),s&&options.onProgress(0,"0%",hw),a.addSplatBuffers(e,i,!0,o,o).then(function(){s&&s(100,"100%",hw),a.clearSplatSceneDownloadAndBuildPromise(),t()})}).catch(function(e){o&&a.loadingSpinner.hide(),a.clearSplatSceneDownloadAndBuildPromise(),e instanceof Xy?t():n(new Error("Viewer::addSplatScenes -> Could not load one or more splat scenes."))}).finally(function(){for(var e=0,t=r;e<t.length;e++)a.removeSplatSceneDownloadPromise(t[e])})},function(){for(var e=0,t=n;e<t.length;e++)(0,t[e])()});return this.setSplatSceneDownloadAndBuildPromise(p),p}},{key:"downloadSplatSceneToSplatBuffer",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:void 0,i=3<arguments.length&&void 0!==arguments[3]&&arguments[3],r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:void 0,a=5<arguments.length?arguments[5]:void 0;return a===xw.Splat?ww.loadFromURL(e,n,i,r,t,0,!1):a===xw.KSplat?bw.loadFromURL(e,n,i,r):a===xw.Ply?Aw.loadFromURL(e,n,i,r,t,0,this.sphericalHarmonicsDegree):Yy.reject(new Error("Viewer::downloadSplatSceneToSplatBuffer -> File format not supported: ".concat(e)))}},{key:"addSplatBuffersToMesh",value:function(e,t){var n,i,r,a=this,o=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],s=3<arguments.length&&void 0!==arguments[3]&&arguments[3];if(!this.isDisposingOrDisposed())return n=this.splatMesh.splatBuffers||[],i=this.splatMesh.splatBufferOptions||[],n.push.apply(n,Fe(e)),i.push.apply(i,Fe(t)),this.renderer&&this.splatMesh.setRenderer(this.renderer),this.splatMesh.build(n,i,!0,o,function(e){var t;a.isDisposingOrDisposed()||(t=a.splatMesh.getSplatCount(),s&&15e5<=t&&(e||r||(a.loadingSpinner.setMinimized(!0,!0),r=a.loadingSpinner.addTask("Optimizing splats..."))))},function(e){a.isDisposingOrDisposed()||e&&r&&a.loadingSpinner.removeTask(r)})}},{key:"setupSortWorker",value:function(e){var l=this;if(!this.isDisposingOrDisposed())return new Promise(function(i){var r=l.integerBasedSort?Int32Array:Float32Array,a=e.getSplatCount(),o=e.getMaxSplatCount(),s=(l.sortWorker=function(e,t,n,i){for(var r=new Worker(URL.createObjectURL(new Blob(["(",$w.toString(),")(self)"],{type:"application/javascript"}))),a=atob("AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEbA2AAAGAQf39/f39/f39/f39/f39/fwBgAAF/AhIBA2VudgZtZW1vcnkCAwCAgAQDBAMAAQIHOQMRX193YXNtX2NhbGxfY3RvcnMAAAtzb3J0SW5kZXhlcwABE2Vtc2NyaXB0ZW5fdGxzX2luaXQAAgrHEAMDAAELuxAFAXwDewJ/A30CfiALIAprIQwCQCAOBEAgDQRAQfj///8HIQ5BiICAgHghDSALIAxNDQIgDCEBA0AgAyABQQJ0IgVqIAIgACAFaigCAEECdGooAgAiBTYCACAFIA4gBSAOSBshDiAFIA0gBSANShshDSABQQFqIgEgC0cNAAsMAgsgDwRAQfj///8HIQ5BiICAgHghDSALIAxNDQJBfyEPIAwhAgNAIA8gByAAIAJBAnQiFGooAgAiFUECdGooAgAiCkcEQAJ+IAX9CQIIIAggCkEGdGoiD/0JAgAgDyoCEP0gASAPKgIg/SACIA8qAjD9IAP95gEgBf0JAhggD/0JAgQgDyoCFP0gASAPKgIk/SACIA8qAjT9IAP95gH95AEgBf0JAiggD/0JAgggDyoCGP0gASAPKgIo/SACIA8qAjj9IAP95gH95AEgBf0JAjggD/0JAgwgDyoCHP0gASAPKgIs/SACIA8qAjz9IAP95gH95AEiEf0fArv9FCAR/R8Du/0iAf0MAAAAAABAj0AAAAAAAECPQCIS/fIBIhP9IQEiEJlEAAAAAAAA4ENjBEAgELAMAQtCgICAgICAgICAfwshGQJ+IBP9IQAiEJlEAAAAAAAA4ENjBEAgELAMAQtCgICAgICAgICAfwv9EiETAn4gEf0fALv9FCAR/R8Bu/0iASAS/fIBIhH9IQEiEJlEAAAAAAAA4ENjBEAgELAMAQtCgICAgICAgICAfwshGiATIBn9HgEhEgJ+IBH9IQAiEJlEAAAAAAAA4ENjBEAgELAMAQtCgICAgICAgICAfwv9EiAa/R4BIBL9DQABAgMICQoLEBESExgZGhshEiAKIQ8LIAMgFGogASAVQQR0av0AAAAgEv21ASIR/RsAIBH9GwFqIBH9GwJqIBH9GwNqIgo2AgAgCiAOIAogDkgbIQ4gCiANIAogDUobIQ0gAkEBaiICIAtHDQALDAILAn8gBSoCGLtEAAAAAABAj0CiIhCZRAAAAAAAAOBBYwRAIBCqDAELQYCAgIB4CyEKAn8gBSoCCLtEAAAAAABAj0CiIhCZRAAAAAAAAOBBYwRAIBCqDAELQYCAgIB4CyECAn8gBSoCKLtEAAAAAABAj0CiIhCZRAAAAAAAAOBBYwRAIBCqDAELQYCAgIB4CyEFQfj///8HIQ5BiICAgHghDSALIAxNDQEgAv0RIAr9HAEgBf0cAiESIAwhBQNAIAMgBUECdCICaiABIAAgAmooAgBBBHRq/QAAACAS/bUBIhH9GwAgEf0bAWogEf0bAmoiAjYCACACIA4gAiAOSBshDiACIA0gAiANShshDSAFQQFqIgUgC0cNAAsMAQsgDQRAQfj///8HIQ5BiICAgHghDSALIAxNDQEgDCEBA0AgAyABQQJ0IgVqAn8gAiAAIAVqKAIAQQJ0aioCALtEAAAAAAAAsECiIhCZRAAAAAAAAOBBYwRAIBCqDAELQYCAgIB4CyIKNgIAIAogDiAKIA5IGyEOIAogDSAKIA1KGyENIAFBAWoiASALRw0ACwwBCwJAIA9FBEAgCyAMSw0BQYiAgIB4IQ1B+P///wchDgwCC0H4////ByEOQYiAgIB4IQ0gCyAMTQ0BQX8hDyAMIQIDQCAPIAcgACACQQJ0IhRqKAIAQQJ0IhVqKAIAIgpHBEAgBf0JAgggCCAKQQZ0aiIP/QkCACAPKgIQ/SABIA8qAiD9IAIgDyoCMP0gA/3mASAF/QkCGCAP/QkCBCAPKgIU/SABIA8qAiT9IAIgDyoCNP0gA/3mAf3kASAF/QkCKCAP/QkCCCAPKgIY/SABIA8qAij9IAIgDyoCOP0gA/3mAf3kASAF/QkCOCAP/QkCDCAPKgIc/SABIA8qAiz9IAIgDyoCPP0gA/3mAf3kASERIAohDwsgAyAUagJ/IBEgASAVQQJ0IgpqKQIA/RL95gEiEv0fACAS/R8BkiARIBH9DQgJCgsMDQ4PAAAAAAAAAAAgASAKQQhyaikCAP0S/eYBIhL9HwCSIBL9HwGSu0QAAAAAAACwQKIiEJlEAAAAAAAA4EFjBEAgEKoMAQtBgICAgHgLIgo2AgAgCiAOIAogDkgbIQ4gCiANIAogDUobIQ0gAkEBaiICIAtHDQALDAELIAUqAighFiAFKgIYIRcgBSoCCCEYQfj///8HIQ5BiICAgHghDSAMIQUDQAJ/IBggASAAIAVBAnQiB2ooAgBBBHRqIgIqAgCUIBcgAioCBJSSIBYgAioCCJSSu0QAAAAAAACwQKIiEJlEAAAAAAAA4EFjBEAgEKoMAQtBgICAgHgLIQogAyAHaiAKNgIAIAogDiAKIA5IGyEOIAogDSAKIA1KGyENIAVBAWoiBSALRw0ACwsgCyAMSwRAIAlBAWuzIA2yIA6yk5UhFiAMIQ0DQAJ/IBYgAyANQQJ0aiIBKAIAIA5rspQiF4tDAAAAT10EQCAXqAwBC0GAgICAeAshCiABIAo2AgAgBCAKQQJ0aiIBIAEoAgBBAWo2AgAgDUEBaiINIAtHDQALCyAJQQJPBEAgBCgCACENQQEhDgNAIAQgDkECdGoiASABKAIAIA1qIg02AgAgDkEBaiIOIAlHDQALCyAMQQBKBEAgDCEOA0AgBiAOQQFrIgFBAnQiAmogACACaigCADYCACAOQQFKIQIgASEOIAINAAsLIAsgDEoEQCALIQ4DQCAGIAsgBCADIA5BAWsiDkECdCIBaigCAEECdGoiAigCACIFa0ECdGogACABaigCADYCACACIAVBAWs2AgAgDCAOSA0ACwsLBABBAAs="),o=new Uint8Array(a.length),s=0;s<a.length;s++)o[s]=a.charCodeAt(s);return r.postMessage({init:{sorterWasmBytes:o.buffer,splatCount:e,useSharedMemory:t,integerBasedSort:n,dynamicMode:i,Constants:{BytesPerFloat:fw.BytesPerFloat,BytesPerInt:fw.BytesPerInt,DepthMapRange:fw.DepthMapRange,MemoryPageSize:fw.MemoryPageSize,MaxScenes:fw.MaxScenes}}}),r}(o,l.sharedMemoryForWorkers,l.integerBasedSort,l.splatMesh.dynamicMode),0);l.sortWorker.onmessage=function(e){if(e.data.sortDone)l.sortRunning=!1,l.sharedMemoryForWorkers?l.splatMesh.updateRenderIndexes(l.sortWorkerSortedIndexes,e.data.splatRenderCount):(t=new Uint32Array(e.data.sortedIndexes.buffer,0,e.data.splatRenderCount),l.splatMesh.updateRenderIndexes(t,e.data.splatRenderCount)),l.lastSortTime=e.data.sortTime,l.sortPromiseResolver(),l.sortPromiseResolver=null,l.forceRenderNextFrame(),0===s&&(l.runAfterFirstSort.forEach(function(e){e()}),l.runAfterFirstSort.length=0),s++;else if(e.data.sortCanceled)l.sortRunning=!1;else if(e.data.sortSetupPhase1Complete){l.logLevel>=Yw.Info&&console.log("Sorting web worker WASM setup complete."),l.sharedMemoryForWorkers?(l.sortWorkerSortedIndexes=new Uint32Array(e.data.sortedIndexesBuffer,e.data.sortedIndexesOffset,o),l.sortWorkerIndexesToSort=new Uint32Array(e.data.indexesToSortBuffer,e.data.indexesToSortOffset,o),l.sortWorkerPrecomputedDistances=new r(e.data.precomputedDistancesBuffer,e.data.precomputedDistancesOffset,o),l.sortWorkerTransforms=new Float32Array(e.data.transformsBuffer,e.data.transformsOffset,16*fw.MaxScenes)):(l.sortWorkerIndexesToSort=new Uint32Array(o),l.sortWorkerPrecomputedDistances=new r(o),l.sortWorkerTransforms=new Float32Array(16*fw.MaxScenes));for(var t,n=0;n<a;n++)l.sortWorkerIndexesToSort[n]=n;l.sortWorker.maxSplatCount=o,l.logLevel>=Yw.Info&&(console.log("Sorting web worker ready."),e=(t=l.splatMesh.getSplatDataTextures()).covariances.size,t=t.centerColors.size,console.log("Covariances texture size: "+e.x+" x "+e.y),console.log("Centers/colors texture size: "+t.x+" x "+t.y)),i()}}})}},{key:"disposeSortWorker",value:function(){this.sortWorker&&this.sortWorker.terminate(),this.sortWorker=null,this.sortPromise=null,this.sortPromiseResolver&&(this.sortPromiseResolver(),this.sortPromiseResolver=null),this.sortRunning=!1}},{key:"removeSplatScene",value:function(u){var c=this,i=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(this.isLoadingOrUnloading())throw new Error("Cannot remove splat scene while another load or unload is already in progress.");if(this.isDisposingOrDisposed())throw new Error("Cannot remove splat scene after dispose() is called.");return this.splatSceneRemovalPromise=new Promise(function(t,n){function o(e){l(),c.splatSceneRemovalPromise=null,e?n(e):t()}function s(){return!!c.isDisposingOrDisposed()&&(o(),!0)}i&&(c.loadingSpinner.removeAllTasks(),c.loadingSpinner.show(),e=c.loadingSpinner.addTask("Removing splat scene..."));var e,l=function(){i&&(c.loadingSpinner.hide(),c.loadingSpinner.removeTask(e))};(c.sortPromise||Promise.resolve()).then(function(){if(!s()){for(var e,t=[],n=[],i=[],r=c.splatMesh.visibleRegionFadeStartRadius,a=0;a<c.splatMesh.scenes.length;a++)a!==u&&(e=c.splatMesh.scenes[a],t.push(e.splatBuffer),n.push(c.splatMesh.sceneOptions[a]),i.push({position:e.position.clone(),quaternion:e.quaternion.clone(),scale:e.scale.clone()}));c.disposeSortWorker(),c.splatMesh.dispose(),c.createSplatMesh(),c.addSplatBuffers(t,n,!0,!1,!0).then(function(){s()||(l(),c.splatMesh.visibleRegionFadeStartRadius=r,c.splatMesh.scenes.forEach(function(e,t){e.position.copy(i[t].position),e.quaternion.copy(i[t].quaternion),e.scale.copy(i[t].scale)}),c.splatMesh.updateTransforms(),c.splatRenderReady=!1,c.updateSplatSort(!0).then(function(){s()?c.splatRenderReady=!0:(c.sortPromise||Promise.resolve()).then(function(){c.splatRenderReady=!0,o()})}))}).catch(function(e){o(e)})}})}),this.splatSceneRemovalPromise}},{key:"start",value:function(){if(!this.selfDrivenMode)throw new Error("Cannot start viewer unless it is in self driven mode.");this.webXRMode?this.renderer.setAnimationLoop(this.selfDrivenUpdateFunc):this.requestFrameId=requestAnimationFrame(this.selfDrivenUpdateFunc),this.selfDrivenModeRunning=!0}},{key:"stop",value:function(){this.selfDrivenMode&&this.selfDrivenModeRunning&&(this.webXRMode||cancelAnimationFrame(this.requestFrameId),this.selfDrivenModeRunning=!1)}},{key:"dispose",value:(e=J(X().mark(function e(){var t,n,i,r,a,o=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(i in this.disposing=!0,t=[],n=[],this.splatSceneDownloadPromises)this.splatSceneDownloadPromises.hasOwnProperty(i)&&(r=this.splatSceneDownloadPromises[i],n.push(r),t.push(r.promise));return this.sortPromise&&t.push(this.sortPromise),a=Promise.all(t).finally(function(){o.stop(),o.controls&&(o.controls.dispose(),o.controls=null),o.splatMesh&&(o.splatMesh.dispose(),o.splatMesh=null),o.sceneHelper&&(o.sceneHelper.dispose(),o.sceneHelper=null),o.resizeObserver&&(o.resizeObserver.unobserve(o.rootElement),o.resizeObserver=null),o.disposeSortWorker(),o.removeEventHandlers(),o.loadingSpinner.removeAllTasks(),o.loadingSpinner.setContainer(null),o.loadingProgressBar.hide(),o.loadingProgressBar.setContainer(null),o.infoPanel.setContainer(null),o.camera=null,o.threeScene=null,o.splatRenderReady=!1,o.initialized=!1,o.renderer&&(o.usingExternalRenderer||(o.rootElement.removeChild(o.renderer.domElement),o.renderer.dispose()),o.renderer=null),o.usingExternalRenderer||document.body.removeChild(o.rootElement),o.sortWorkerSortedIndexes=null,o.sortWorkerIndexesToSort=null,o.sortWorkerPrecomputedDistances=null,o.sortWorkerTransforms=null,o.disposed=!0,o.disposing=!1}),n.forEach(function(e){e.abort()}),e.abrupt("return",a);case 8:case"end":return e.stop()}},e,this)})),function(){return e.apply(this,arguments)})},{key:"selfDrivenUpdate",value:function(){this.update(),this.shouldRender()?(this.render(),this.consecutiveRenderFrames++):this.consecutiveRenderFrames=0,this.renderNextFrame=!1}},{key:"forceRenderNextFrame",value:function(){this.renderNextFrame=!0}},{key:"update",value:function(e,t){this.dropInMode&&this.updateForDropInMode(e,t),this.initialized&&this.splatRenderReady&&(this.controls&&(this.controls.update(),this.camera.isOrthographicCamera)&&!this.usingExternalCamera&&j.setCameraPositionFromZoom(this.camera,this.camera,this.controls),this.splatMesh.updateVisibleRegionFadeDistance(this.sceneRevealMode),this.updateSplatSort(),this.updateForRendererSizeChanges(),this.updateSplatMesh(),this.updateMeshCursor(),this.updateFPS(),this.timingSensitiveUpdates(),this.updateInfoPanel(),this.updateControlPlane())}},{key:"updateForDropInMode",value:function(e,t){this.renderer=e,this.splatMesh&&this.splatMesh.setRenderer(this.renderer),this.camera=t,this.controls&&(this.controls.object=t),this.init()}},{key:"updateControlPlane",value:function(){this.showControlPlane?(this.sceneHelper.setControlPlaneVisibility(!0),this.sceneHelper.positionAndOrientControlPlane(this.controls.target,this.camera.up)):this.sceneHelper.setControlPlaneVisibility(!1)}},{key:"getSplatMesh",value:function(){return this.splatMesh}},{key:"getSplatScene",value:function(e){return this.splatMesh.getScene(e)}},{key:"isMobile",value:function(){return navigator.userAgent.includes("Mobi")}}],[{key:"isStreamable",value:function(e){return e===xw.Splat||e===xw.KSplat||e===xw.Ply}}]);var e}(),Iu=(Y(s1,"setCameraPositionFromZoom",(e1=new Le.Vector3,function(e,t,n){t=1/(.001*t.zoom);e1.copy(n.target).sub(e.position).normalize().multiplyScalar(t).negate(),e.position.copy(n.target).add(e1)})),Y(s1,"setCameraZoomFromPosition",(t1=new Le.Vector3,function(e,t,n){n=t1.copy(n.target).sub(t.position).length();e.zoom=1/(.001*n)})),function(){function n(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,n),e=le(this,n),t.selfDrivenMode=!1,t.useBuiltInControls=!1,t.rootElement=null,t.ignoreDevicePixelRatio=!1,t.dropInMode=!0,t.camera=void 0,t.renderer=void 0,e.viewer=new s1(t),e.splatMesh=null,e.callbackMesh=n.createCallbackMesh(),e.add(e.callbackMesh),e.callbackMesh.onBeforeRender=n.onBeforeRender.bind(e,e.viewer),e}return v(n,Le.Group),A(n,[{key:"addSplatScene",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return!1!==t.showLoadingUI&&(t.showLoadingUI=!0),this.viewer.addSplatScene(e,t)}},{key:"addSplatScenes",value:function(e,t){return this.viewer.addSplatScenes(e,t=!1!==t?!0:t)}},{key:"getSplatScene",value:function(e){return this.viewer.getSplatScene(e)}},{key:"removeSplatScene",value:function(e){return this.viewer.removeSplatScene(e)}},{key:"dispose",value:function(){return this.viewer.dispose()}}],[{key:"onBeforeRender",value:function(e,t,n,i){this.splatMesh!==this.viewer.splatMesh&&(this.splatMesh&&this.remove(this.splatMesh),this.splatMesh=this.viewer.splatMesh,this.add(this.viewer.splatMesh)),e.update(t,i)}},{key:"createCallbackMesh",value:function(){var e=new Le.SphereGeometry(1,8,8),t=new Le.MeshBasicMaterial,e=(t.colorWrite=!1,t.depthWrite=!1,new Le.Mesh(e,t));return e.frustumCulled=!1,e}}])}()),pp=Object.freeze({__proto__:null,AbortablePromise:Yy,CompressedPlyParser:ow,DropInViewer:Iu,KSplatLoader:bw,LoaderUtils:Ru,LogLevel:Yw,OrbitControls:_w,PlyLoader:Aw,PlyParser:sw,RenderMode:o1,SceneFormat:xw,SceneRevealMode:qw,SplatBuffer:F,SplatBufferGenerator:cw,SplatLoader:ww,SplatParser:yw,SplatPartitioner:uw,Viewer:s1,WebXRMode:i1}),l1=15,u1=new Nu(1,1),c1=new Gc,d1=new wl({color:"#ffffff"}),h1=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).lineLength=null!=e.lineLength?e.lineLength:.6,t.position.copy(e.position),t.normal=null!=e.normal?e.normal:new Oe(0,0,-1),t.root=e.root,t.build(),t}return v(n,Z),A(n,[{key:"build",value:function(){n1=n1||new R({transparent:!0,map:c1.load(Potree.resourcePath+"/textures/spot_default.png")});var e=this.normal.clone().multiplyScalar(this.lineLength),t=(this.line=av.createLine([new Oe(0,0,0),e],{mat:d1}),new Z);this.spot=new Q(u1,n1),this.spot.scale.set(.4,.4,.4),this.titleLabel=new cv({root:t,text:"1",sizeInfo:{width2d:200},textColor:{r:255,g:255,b:255,a:1},backgroundColor:{r:0,g:0,b:0,a:.8},borderRadius:6,fontsize:13,fontWeight:"",renderOrder:l1,pickOrder:l1}),this.spot.renderOrder=l1,this.titleLabel.position.set(0,.4,0),this.titleLabel.sprite.material.depthTest=this.titleLabel.sprite.material.depthWrite=!0,t.position.copy(e),t.add(this.spot),t.add(this.titleLabel),this.add(t),this.add(this.line),viewer.scene.tags.add(this)}},{key:"changeTitle",value:function(e){this.titleLabel.changeText(e)}},{key:"updateMatrixWorld",value:function(e){this.updateMatrix(),this.matrixWorld.multiplyMatrices(this.root.matrixWorld,this.matrix);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}},{key:"updateWorldMatrix",value:function(e,t){if(!0===e&&null!==this.root&&this.root.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorld.multiplyMatrices(this.root.matrixWorld,this.matrix),!0===t)for(var n=this.children,i=0,r=n.length;i<r;i++)n[i].updateWorldMatrix(!1,!0)}},{key:"dispose",value:function(){this.parent.remove(this),this.titleLabel.dispose()}}])}(),p1=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).viewer=e,t.viewer.addEventListener("start_inserting_tag",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t}return v(n,Qn),A(n,[{key:"createTagFromData",value:function(e){return new h1({title:e.title,position:e.position,normal:e.normal,root:e.root})}},{key:"startInsertion",value:function(){var e=this,n=$.Deferred(),i=(this.viewer.dispatchEvent({type:"start_inserting_tag"}),this.adding=!0,function(){e.adding=!1,viewer.dispatchEvent({type:"endTagMove"}),e.viewer.removeEventListener("global_click",t)}),t=function(e){var t=e.intersect&&e.intersect.location;if(t)return t=Potree.Utils.datasetPosTransform({toDataset:!0,pointcloud:e.intersect.pointcloud,object:e.intersect.object,position:t}),t=new h1({title:"1",position:t,normal:e.intersect.normal,root:e.intersect.pointcloud||e.intersect.object}),i(),e.consume&&e.consume(),n.resolve(t),{stopContinue:!0}};return this.viewer.addEventListener("global_click",t,{importance:10}),n.promise()}}])}(),f1=(new Oe(0,1,0),function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).angle=0,n.show=!1,e&&(n.dom=$(e)),n.viewport=t,n.init(),n}return v(i,Qn),A(i,[{key:"init",value:function(){var t=this,e=(this.dom||(this.dom=$('<div name="compass"></div>'),$(viewer.renderArea).append(this.dom)),this.dom.css({display:"none",position:"absolute",right:"1%",top:"60px",width:"100px",height:"100px","z-index":100,"pointer-events":"none"}),$("<div class='dirText north'><span>北</span></div><div class='center'></div>"));this.dom.append(e),this.dom.find(".dirText").css({textAlign:"center","font-size":"10px",position:"absolute",width:"100%",height:"25px","line-height":"25px"}),this.dom.find(".north").css({color:"#02a0e9",top:"0"}),this.dom.find(".south").css({color:"#ff1414",bottom:"0"}),this.dom.find(".center").css({width:"50px",height:"50px","background-size":"contain","background-position":"center",left:"50%",top:"50%",transform:"translate(-50%,-50%)",position:"absolute"}),this.dom.find(".dirText").css({"text-align":"center","font-size":"10px",color:"rgb(255, 255, 255)",position:"absolute",top:"50%",left:"50%",width:"45%",height:"0px","transform-origin":"left center"}),this.dom.find(".dirText span").css({display:"block",position:"absolute",right:"5px",top:"0",width:"20px",height:"20px","line-height":"20px","margin-top":"-10px"});try{this.renderer=new Is({antialias:!0,alpha:!0}),this.renderer.autoClear=!0,this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.domElement.setAttribute("name","compass"),this.renderer.setClearAlpha(0),this.renderer.setDrawingBufferSize(50,50,window.devicePixelRatio||1)}catch(e){viewer.dispatchEvent("webglError",{msg:e})}this.dom.find(".center")[0].appendChild(this.renderer.domElement),this.renderer.domElement.style.width=this.renderer.domElement.style.height="100%",this.camera=new ya,this.camera.fov=50,this.camera.updateProjectionMatrix(),this.scene=new Fs,this.scene.add(this.camera),this.createCompass(),viewer.addEventListener("camera_changed",function(e){e.viewport==t.viewport&&e.changeInfo.quaternionChanged&&t.update()}),this.setDomPos(),this.viewport&&this.setDisplay(!0)}},{key:"createCompass",value:function(){function e(e,t,n){for(var i=[],r=0,a=e.attributes.position.count;r<a;++r)i.push(1,1,1);function o(e,t){i[3*e+0]=t[0],i[3*e+1]=t[1],i[3*e+2]=t[2]}var s=[(t[0]+n[0])/2,(t[1]+n[1])/2,(t[2]+n[2])/2];o(1,t),o(5,t),o(6,t),o(2,s),o(3,s),o(7,s),o(4,n),o(8,n),o(9,n),e.setAttribute("color",new H(new Float32Array(i),3))}var t=new $l(.7,2,4,!0),n=new $l(.7,2,4,!0),i=new R({vertexColors:!0}),r=[20/255,146/255,170/255],r=(e(t,[1/255,238/255,245/255],r),e(n,r,[40/255,60/255,103/255]),new Q(t,i)),t=(r.position.setY(1),t.computeVertexNormals(),n.computeVertexNormals(),new Z),r=(t.add(r),new Q(n,i));r.rotation.x=Math.PI,r.position.setY(-1),t.add(r),t.rotation.z=Math.PI,t.scale.set(.7,.7,.7),this.scene.add(t),this.cones=t}},{key:"setNorth",value:function(){var e,t=store.getters["scene/houstFloor"].floors;t&&t.length&&(t=t[0],e=app.store.getters["scene/metadata"]||{},this.angle=(t&&t.dire||0)+Be.radToDeg(parseFloat(e.floorPlanAngle||0)),this.cones.rotation.y=Math.PI/2-Be.degToRad(this.angle),this.update())}},{key:"update",value:function(e){this.show&&(e=e||this.viewport.camera.quaternion.clone(),this.updateCamera(e),this.updateLabel(e),this.render())}},{key:"updateLabel",value:function(e){var t=Be.radToDeg(this.viewport.view.yaw)-90;this.dom.find(".dirText").css("transform","rotate("+t+"deg)"),this.dom.find(".dirText span").css("transform","rotate("+-t+"deg)")}},{key:"updateCamera",value:function(e){this.camera.quaternion.copy(e);e=this.viewport.view.direction;this.camera.position.copy(e.multiplyScalar(5).negate())}},{key:"changeViewport",value:function(e){this.viewport=e,this.update()}},{key:"render",value:function(){this.renderer.render(this.scene,this.camera)}},{key:"setDisplay",value:function(e){this.show=!!e,this.show?(this.update(),this.dom.fadeIn(100)):this.dom.fadeOut(100)}},{key:"setAutoDisplay",value:function(e){var t=this;(this.autoJudgeShow=e)?(this._autoDisplayEvent=function(){var e=t.show;t.show=!!t.renderer.domElement.clientHeight,e!=t.show&&t.update()},viewer.addEventListener("update_start",this._autoDisplayEvent)):viewer.removeEventListener("update_start",this._autoDisplayEvent)}},{key:"setDomPos",value:function(){var e;this.viewport&&(e=this.viewport.left+this.viewport.width,this.dom.css({right:100*(1-e)+1+"%"}))}}])}()),m1=function(){function l(n,e){function t(e){e.viewport==n&&e.changeInfo.quaternionChanged&&r.update()}function i(){if(!n.active||0==n.width||0==n.height)return o.css("visibility","hidden");function e(e){var t=null!=s[e[1]]?e[1]:e[0],e=null!=s[e[1]]?1-n[e[0]]-n[e[2]]:n[e[0]],e=0==s[t]||s[t].includes("%")?parseFloat(s[t])+100*e+"%":"calc("+100*e+"% + "+s[t]+")";o.css(t,e)}o.css("visibility","visible");var t=[["left","right","width"],["bottom","top","height"]];e(t[0]),e(t[1])}var r,a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},o=(ue(this,l),$('<div name="Axisdom" viewport='.concat(n.name,"></div>"))),s=($(e).append(o),Object.assign({right:0,top:0,width:"100px",height:"100px"},a.domStyle,{position:"absolute"}));a.domStyle&&(null!=a.domStyle.bottom&&delete s.top,null!=a.domStyle.left)&&delete s.right,o.css(s),(r=le(this,l,[o[0],{name:"axis",antialias:!0}])).listenViewport=n,Object.defineProperty(n,"axis",{value:r,writable:!0,enumerable:!1,configurable:!0}),r.scene=new Fs,r.camera=new Ad(-25,25,25,-25,1,200),r.camera.zoom=2.7,r.camera.updateProjectionMatrix(),r.view=new ff,r.view.radius=70,r.viewports=[new og(r.view,r.camera,{left:0,bottom:0,width:1,height:1,name:"axis"})],r.updateScreenSize(),r.createAxis(),viewer.addEventListener("camera_changed",t);return r.listenViewport.addEventListener("resize",i),r.addEventListener("dispose",function(){viewer.removeEventListener("camera_changed",t),viewer.removeEventListener("resize",i)}),i(),r.update(),r}return v(l,ag),A(l,[{key:"createAxis",value:function(){var r=this,a=new Z;["x","y","z"].forEach(function(e){var t=(new Se).set(Potree.config.axis[e].color),n=new Z,i=av.createLine([new Oe,new Oe(0,0,7)],{color:t}),t=r.createLabel(e,t);t.position.set(0,0,11),"y"==e?n.rotation.x=-Math.PI/2:"x"==e&&(n.rotation.y=Math.PI/2),n.add(i),n.add(t),a.add(n)}),this.axis=a,this.scene.add(this.axis)}},{key:"createLabel",value:function(e,t){var n=this.renderArea.clientWidth/5,i=3100/this.renderArea.clientWidth,t=(console.log("fontsize",n),new cv({backgroundColor:{r:0,g:0,b:0,a:0},textColor:{r:255*t.r,g:255*t.g,b:255*t.b,a:1},fontsize:n,renderOrder:5,fontWeight:"Lighter",text:e,name:"axis",viewports:this.viewports}));return t.scale.set(i,i,i),t}},{key:"update",value:function(){this.updateCamera(),this.render()}},{key:"updateCamera",value:function(){var e=this.listenViewport.view,e=(this.view.yaw=e.yaw,this.view.pitch=e.pitch,e.direction);this.view.position.copy(e.multiplyScalar(this.view.radius).negate()),this.view.applyToCamera(this.camera)}},{key:"render",value:function(){viewer.dispatchEvent({type:"render.begin",viewport:this.viewports[0]}),this.renderer.render(this.scene,this.camera)}},{key:"dispose",value:function(){this.axis.traverse(function(e){e instanceof cv?e.dispose():e instanceof _l&&(e.material.dispose(),e.geometry.dispose())}),I(l,"dispose",this,3)([]),delete this.listenViewport.axis}}])}();function v1(e,t){var n;if(t===ut)return e.REPEAT;if(t===ct)return e.CLAMP_TO_EDGE;if(t===dt)return e.MIRRORED_REPEAT;if(t===ht)return e.NEAREST;if(1004===t)return e.NEAREST_MIPMAP_NEAREST;if(1005===t)return e.NEAREST_MIPMAP_LINEAR;if(t===N)return e.LINEAR;if(1007===t)return e.LINEAR_MIPMAP_NEAREST;if(t===gt)return e.LINEAR_MIPMAP_LINEAR;if(t===At)return e.UNSIGNED_BYTE;if(t===Mt)return e.UNSIGNED_SHORT_4_4_4_4;if(t===St)return e.UNSIGNED_SHORT_5_5_5_1;if(t===Tt)return e.UNSIGNED_SHORT_5_6_5;if(t===yt)return e.BYTE;if(t===wt)return e.SHORT;if(t===bt)return e.UNSIGNED_SHORT;if(t===xt)return e.INT;if(t===Et)return e.UNSIGNED_INT;if(t===Ct)return e.FLOAT;if(t===Bt&&null!==(n=extensions.get("OES_texture_half_float")))return n.HALF_FLOAT_OES;if(t===Pt)return e.ALPHA;if(t===Dt)return e.RGB;if(t===It)return e.RGBA;if(t===kt)return e.LUMINANCE;if(t===Rt)return e.LUMINANCE_ALPHA;if(t===Ft)return e.DEPTH_COMPONENT;if(t===Ot)return e.DEPTH_STENCIL;if(t===Ee)return e.FUNC_ADD;if(t===Ce)return e.FUNC_SUBTRACT;if(t===Te)return e.FUNC_REVERSE_SUBTRACT;if(t===De)return e.ZERO;if(t===Ie)return e.ONE;if(t===ke)return e.SRC_COLOR;if(t===Ne)return e.ONE_MINUS_SRC_COLOR;if(t===ze)return e.SRC_ALPHA;if(t===Ge)return e.ONE_MINUS_SRC_ALPHA;if(t===He)return e.DST_ALPHA;if(t===Ve)return e.ONE_MINUS_DST_ALPHA;if(t===Qe)return e.DST_COLOR;if(t===je)return e.ONE_MINUS_DST_COLOR;if(t===We)return e.SRC_ALPHA_SATURATE;if((t===Qt||t===RGBA_S3TC_DXT1_Format||t===Wt||t===RGBA_S3TC_DXT5_Format)&&null!==(n=extensions.get("WEBGL_compressed_texture_s3tc"))){if(t===Qt)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===jt)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Wt)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Jt)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((t===qt||t===Yt||t===Xt||t===Kt)&&null!==(n=extensions.get("WEBGL_compressed_texture_pvrtc"))){if(t===qt)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Yt)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===Xt)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===Kt)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(t===Zt&&null!==(n=extensions.get("WEBGL_compressed_texture_etc1")))return n.COMPRESSED_RGB_ETC1_WEBGL;if((t===_e||t===Pe)&&null!==(n=extensions.get("EXT_blend_minmax"))){if(t===_e)return n.MIN_EXT;if(t===Pe)return n.MAX_EXT}return t===UnsignedInt248Type&&null!==(n=extensions.get("WEBGL_depth_texture"))?n.UNSIGNED_INT_24_8_WEBGL:0}function g1(e){return(A1=A1||{position:av.createFatLineMat({color:F1,lineWidth:3}),target:av.createFatLineMat({color:O1,lineWidth:3}),frustum:av.createFatLineMat({color:F1,lineWidth:2}),aimAtTarget:new wl({color:O1,depthTest:!1})})[e]}var A1,y1={position:{name:"position",location:0},color:{name:"color",location:1},rgba:{name:"color",location:1},intensity:{name:"intensity",location:2},classification:{name:"classification",location:3},returnNumber:{name:"returnNumber",location:4},"return number":{name:"returnNumber",location:4},returns:{name:"returnNumber",location:4},numberOfReturns:{name:"numberOfReturns",location:5},"number of returns":{name:"numberOfReturns",location:5},pointSourceID:{name:"pointSourceID",location:6},"source id":{name:"pointSourceID",location:6},"point source id":{name:"pointSourceID",location:6},indices:{name:"indices",location:7},normal:{name:"normal",location:8},spacing:{name:"spacing",location:9},"gps-time":{name:"gpsTime",location:10},aExtra:{name:"aExtra",location:11}},w1=function(){return A(function e(t,n,i,r){ue(this,e),this.gl=t,this.name=n,this.vsSource=i,this.fsSource=r,this.cache=new Map,this.vs=null,this.fs=null,this.program=null,this.uniformLocations={},this.attributeLocations={},this.uniformBlockIndices={},this.uniformBlocks={},this.uniforms={},this.update(i,r)},[{key:"update",value:function(e,t){this.vsSource=e,this.fsSource=t,this.linkProgram()}},{key:"compileShader",value:function(e,t){var n=this.gl;if(n.shaderSource(e,t),n.compileShader(e),!n.getShaderParameter(e,n.COMPILE_STATUS))throw n=n.getShaderInfoLog(e),e=t.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"),"could not compile shader ".concat(this.name,": ").concat(n,", \n").concat(e)}},{key:"linkProgram",value:function(){performance.now();var e=this.gl,t=(this.uniformLocations={},this.attributeLocations={},this.uniforms={},e.useProgram(null),this.cache.get("".concat(this.vsSource,", ").concat(this.fsSource)));if(t)this.program=t.program,this.vs=t.vs,this.fs=t.fs,this.attributeLocations=t.attributeLocations,this.uniformLocations=t.uniformLocations,this.uniformBlocks=t.uniformBlocks,this.uniforms=t.uniforms;else if(this.vs=e.createShader(e.VERTEX_SHADER),this.fs=e.createShader(e.FRAGMENT_SHADER),this.program=e.createProgram(),e.isProgram(this.program)){for(var n=0,i=Object.keys(y1);n<i.length;n++){var r=i[n],a=y1[r].location,r=y1[r].name;e.bindAttribLocation(this.program,a,r)}this.compileShader(this.vs,this.vsSource),this.compileShader(this.fs,this.fsSource);var o=this.program;if(e.attachShader(o,this.vs),e.attachShader(o,this.fs),e.linkProgram(o),e.detachShader(o,this.vs),e.detachShader(o,this.fs),!e.getProgramParameter(o,e.LINK_STATUS))throw t=e.getProgramInfoLog(o),"could not link program ".concat(this.name,": ").concat(t);for(var s=e.getProgramParameter(o,e.ACTIVE_ATTRIBUTES),l=0;l<s;l++){var u=e.getActiveAttrib(o,l),c=e.getAttribLocation(o,u.name);this.attributeLocations[u.name]=c}for(var d=e.getProgramParameter(o,e.ACTIVE_UNIFORMS),h=0;h<d;h++){var p=e.getActiveUniform(o,h),f=e.getUniformLocation(o,p.name);this.uniformLocations[p.name]=f,this.uniforms[p.name]={location:f,value:null}}if("undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext)for(var m=e.getProgramParameter(o,e.ACTIVE_UNIFORM_BLOCKS),v=0;v<m;v++){var g=e.getActiveUniformBlockName(o,v),A=e.getUniformBlockIndex(o,g),y=(this.uniformBlockIndices[g]=A,e.uniformBlockBinding(o,A,A),e.getActiveUniformBlockParameter(o,A,e.UNIFORM_BLOCK_DATA_SIZE)),w=e.createBuffer();e.bindBuffer(e.UNIFORM_BUFFER,w),e.bufferData(e.UNIFORM_BUFFER,y,e.DYNAMIC_READ),e.bindBufferBase(e.UNIFORM_BUFFER,A,w),e.bindBuffer(e.UNIFORM_BUFFER,null),this.uniformBlocks[g]={name:g,index:A,dataSize:y,buffer:w}}t={program:this.program,vs:this.vs,fs:this.fs,attributeLocations:this.attributeLocations,uniformLocations:this.uniformLocations,uniforms:this.uniforms,uniformBlocks:this.uniformBlocks};this.cache.set("".concat(this.vsSource,", ").concat(this.fsSource),t);performance.now()}else viewer.dispatchEvent("webglError",{msg:"potreeRenderer创建program失败"}),console.log(this.vs),console.log(this.fs)}},{key:"setUniformMatrix4",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&(t=new Float32Array(t.elements),n.uniformMatrix4fv(e,!1,t))}},{key:"setUniform1f",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1f(e.location,t))}},{key:"setUniformBoolean",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1i(e.location,t))}},{key:"setUniformTexture",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}},{key:"setUniform2f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform2f(e,t[0],t[1])}},{key:"setUniform3f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform3f(e,t[0],t[1],t[2])}},{key:"setUniform",value:function(e,t){t.constructor===Me?this.setUniformMatrix4(e,t):"number"==typeof t?this.setUniform1f(e,t):"boolean"==typeof t?this.setUniformBoolean(e,t):t instanceof b1?this.setUniformTexture(e,t):t instanceof Array?2===t.length?this.setUniform2f(e,t):3===t.length&&this.setUniform3f(e,t):console.error("unhandled uniform type: ",e,t)}},{key:"setUniform1i",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}}])}(),b1=function(){return A(function e(t,n,i){ue(this,e),this.gl=t,!(this.texture=n).image||n.image instanceof Image||n.isCanvasTexture||n.isDataTexture?this.id=t.createTexture():(this.id=i.properties.get(n).__webglTexture||t.createTexture(),this.isFromRenderTarget=!0),this.target=t.TEXTURE_2D,this.version=-1,this.update(n)},[{key:"update",value:function(){var e,t,n,i,r,a,o,s;this.texture.image?(e=this.gl,t=this.texture,this.version!==t.version&&(this.target=e.TEXTURE_2D,e.bindTexture(this.target,this.id),n=v1(e,t.format),i=t.image.width,r=t.image.height,a=n,o=v1(e,t.type),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,t.unpackAlignment),t instanceof Ea?(s=t.image.data,e.texParameteri(this.target,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,v1(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,v1(e,t.minFilter)),e.texImage2D(this.target,0,n,i,r,0,a,o,s)):(t instanceof zl||t instanceof Zn)&&(s=t.image,e.texParameteri(this.target,e.TEXTURE_WRAP_S,v1(e,t.wrapS)),e.texParameteri(this.target,e.TEXTURE_WRAP_T,v1(e,t.wrapT)),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,v1(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,v1(e,t.minFilter)),this.isFromRenderTarget||e.texImage2D(this.target,0,n,n,o,s),t instanceof Zn)&&e.generateMipmap(e.TEXTURE_2D),e.bindTexture(this.target,null),this.version=t.version)):this.version=this.texture.version}}])}(),x1=A(function e(){ue(this,e),this.numElements=0,this.vao=null,this.vbos=new Map}),E1=function(){return A(function e(t){ue(this,e),this.threeRenderer=t,this.gl=this.threeRenderer.getContext(),this.buffers=new Map,this.shaders=new Map,this.textures=new Map,this.glTypeMapping=new Map,this.glTypeMapping.set(Float32Array,this.gl.FLOAT),this.glTypeMapping.set(Uint8Array,this.gl.UNSIGNED_BYTE),this.glTypeMapping.set(Uint16Array,this.gl.UNSIGNED_SHORT),this.toggle=0},[{key:"deleteBuffer",value:function(e){var t=this.gl,n=this.buffers.get(e);if(null!=n){for(var i in e.attributes)t.deleteBuffer(n.vbos.get(i).handle);this.buffers.delete(e)}}},{key:"createBuffer",value:function(t){var e,n=this,i=this.gl,r=new x1;for(e in r.vao=i.createVertexArray(),r.numElements=t.attributes.position.count,i.bindVertexArray(r.vao),t.attributes){var a,o=t.attributes[e],s=i.createBuffer(),l=(i.bindBuffer(i.ARRAY_BUFFER,s),i.bufferData(i.ARRAY_BUFFER,o.array,i.STATIC_DRAW),o.normalized),u=this.glTypeMapping.get(o.array.constructor);void 0!==y1[e]&&(a=y1[e].location,i.vertexAttribPointer(a,o.itemSize,u,l,0,0),i.enableVertexAttribArray(a)),r.vbos.set(e,{handle:s,name:e,count:o.count,itemSize:o.itemSize,type:t.attributes.position.array.constructor,version:0})}i.bindBuffer(i.ARRAY_BUFFER,null),i.bindVertexArray(null);var c=function(e){n.deleteBuffer(t),t.removeEventListener("dispose",c)};return t.addEventListener("dispose",c),r}},{key:"updateBuffer",value:function(e){var t,n=this.gl,i=this.buffers.get(e);for(t in n.bindVertexArray(i.vao),e.attributes){var r=e.attributes[t],a=r.normalized,o=this.glTypeMapping.get(r.array.constructor),s=null;i.vbos.has(t)?(s=i.vbos.get(t).handle,i.vbos.get(t).version=r.version):(s=n.createBuffer(),i.vbos.set(t,{handle:s,name:t,count:r.count,itemSize:r.itemSize,type:e.attributes.position.array.constructor,version:r.version})),n.bindBuffer(n.ARRAY_BUFFER,s),n.bufferData(n.ARRAY_BUFFER,r.array,n.STATIC_DRAW),void 0!==y1[t]&&(s=y1[t].location,n.vertexAttribPointer(s,r.itemSize,o,a,0,0),n.enableVertexAttribArray(s))}n.bindBuffer(n.ARRAY_BUFFER,null),n.bindVertexArray(null)}},{key:"traverse",value:function(e){for(var t=[],n=[e];0<n.length;){var i=n.pop();i instanceof gm?t.push(i):(i=i.children.filter(function(e){return e.visible}),n.push.apply(n,Fe(i)))}return{octrees:t}}},{key:"renderNodes",value:function(R,e,L,t,n,F,i){var r,O,U=this,N=(viewer.addTimeMark("renderNodes","start"),this.gl),z=i.material||R.material,G=null==i.shadowMaps?[]:i.shadowMaps,H=t.matrixWorldInverse,V=(i.viewOverride&&(H=i.viewOverride),new Me),Q=new Float32Array(16),j=0,a=(F.setUniform1f("size",z.usePanoMap?Potree.config.material.absolutePanoramaSize*Math.min(window.devicePixelRatio,2):z.size),F.setUniform1f("uOpacity",z.usePanoMap?1:z.opacity),F.setUniform3f("uColor",z.color.toArray()),i.currentTextureBindingPoint),o=(0<=z.pointSizeType&&(z.pointSizeType===_m.ADAPTIVE||"level of detail"===z.activeAttributeName)&&(r=null!=i.vnTextureNodes?i.vnTextureNodes:e,L=R.computeVisibilityTextureData(r,t),(r=z.visibleNodesTexture).image.data.set(L.data),r.needsUpdate=!0,this.textures.get(r).update(),t=this.textures.get(z.visibleNodesTexture))&&(F.setUniform1i("visibleNodes",a),N.activeTexture(N.TEXTURE0+a),N.bindTexture(t.target,t.id)),(void 0!==i.transparent?i.transparent&&z.opacity<1:!z.usePanoMap&&(z.useFilterByNormal||z.opacity<1))?(N.enable(N.BLEND),i.notAdditiveBlending?(N.blendFuncSeparate(N.SRC_ALPHA,N.ONE_MINUS_SRC_ALPHA,N.ONE,N.ONE_MINUS_SRC_ALPHA),N.disable(N.DEPTH_TEST),N.depthMask(!0)):(N.blendFunc(N.SRC_ALPHA,N.ONE),N.disable(N.DEPTH_TEST),N.depthMask(!1))):(N.disable(N.BLEND),N.depthMask(!0),N.enable(N.DEPTH_TEST)),void 0!==i.blendFunc&&(N.enable(N.BLEND),N.blendFunc.apply(N,Fe(i.blendFunc))),void 0!==i.depthTest&&(!0===i.depthTest?N.enable(N.DEPTH_TEST):N.disable(N.DEPTH_TEST)),void 0!==i.depthWrite&&(!0===i.depthWrite?N.depthMask(!0):N.depthMask(!1)),q(e));try{for(o.s();!(O=o.n()).done;)!function(){var e=O.value;if(void 0!==W.debug.allowedNodes&&!W.debug.allowedNodes.includes(e.name))return;for(var t=e.sceneNode.matrixWorld,n=(V.multiplyMatrices(H,t),L&&(n=L.offsets.get(e),F.setUniform1f("uVNStart",n)),e.getLevel()),i=(e.debug?F.setUniform("uDebug",!0):F.setUniform("uDebug",!1),F.uniformLocations.modelMatrix),i=(i&&(Q.set(t.elements),N.uniformMatrix4fv(i,!1,Q)),F.uniformLocations.modelViewMatrix),r=0;r<16;r++)Q[r]=V.elements[r];if(N.uniformMatrix4fv(i,!1,Q),z.clipPolygons&&0<z.clipPolygons.length){var a,o=[],s=[],l=q(z.clipPolygons);try{for(l.s();!(a=l.n()).done;){var u=a.value,c=u.viewMatrix,d=u.projMatrix.clone().multiply(c).multiply(t);o.push(u.markers.length),s.push(d)}}catch(e){l.e(e)}finally{l.f()}for(var i=(i=[]).concat.apply(i,Fe(s.map(function(e){return e.elements}))),h=new Array(24*z.clipPolygons.length),p=0;p<z.clipPolygons.length;p++)for(var f=z.clipPolygons[p],m=0;m<f.markers.length;m++)h[24*p+(3*m+0)]=f.markers[m].position.x,h[24*p+(3*m+1)]=f.markers[m].position.y,h[24*p+(3*m+2)]=f.markers[m].position.z;var v=F.uniformLocations["uClipPolygonVCount[0]"],v=(N.uniform1iv(v,o),F.uniformLocations["uClipPolygonWVP[0]"]),v=(N.uniformMatrix4fv(v,!1,i),F.uniformLocations["uClipPolygonVertices[0]"]);N.uniform3fv(v,h)}if(F.setUniform1f("uLevel",n),F.setUniform1f("levelPercent",R.nodeMaxLevel?n/R.nodeMaxLevel:.5),F.setUniform1f("uNodeSpacing",e.geometryNode.estimatedSpacing),F.setUniform1f("uPCIndex",j),0<G.length){var i=F.uniformLocations["uShadowMap[0]"],g=(F.setUniform3f("uShadowColor",z.uniforms.uShadowColor.value),new Array(G.length).fill(5).map(function(e,t){return e+t}));N.uniform1iv(i,g);for(var A=0;A<G.length;A++){var y=G[A],w=g[A],y=U.threeRenderer.properties.get(y.target.texture).__webglTexture;N.activeTexture(N["TEXTURE".concat(w)]),N.bindTexture(N.TEXTURE_2D,y)}v=G.map(function(e){return e.camera.matrixWorldInverse}).map(function(e){return(new Me).multiplyMatrices(e,t)}),i=(n=[]).concat.apply(n,Fe(v.map(function(e){return e.elements}))),n=F.uniformLocations["uShadowWorldView[0]"];N.uniformMatrix4fv(n,!1,i);n=(v=[]).concat.apply(v,Fe(G.map(function(e){return e.camera.projectionMatrix.elements}))),i=F.uniformLocations["uShadowProj[0]"];N.uniformMatrix4fv(i,!1,n)}var b=e.geometryNode.geometry,i=(b.attributes["gps-time"]&&(b.attributes["gps-time"],T=(n=(i=(v=R.getAttribute("gps-time")).initialRange)[1]-i[0])/(v=(e=v.range)[1]-e[0]),i=-(e[0]-i[0])/n,T=Number.isNaN(T)?1:T,i=Number.isNaN(i)?0:i,F.setUniform1f("uGpsScale",T),F.setUniform1f("uGpsOffset",i),T=[((n=z.uniforms.uFilterGPSTimeClipRange.value)[0]-e[0])/v,(n[1]-e[0])/v],F.setUniform2f("uFilterGPSTimeClipRange",T)),z.uniforms.uFilterReturnNumberRange.value),n=z.uniforms.uFilterNumberOfReturnsRange.value,e=z.uniforms.uFilterPointSourceIDClipRange.value,x=(F.setUniform2f("uFilterReturnNumberRange",i),F.setUniform2f("uFilterNumberOfReturnsRange",n),F.setUniform2f("uFilterPointSourceIDClipRange",e),null);if(U.buffers.has(b))for(var E in x=U.buffers.get(b),b.attributes)b.attributes[E].version>x.vbos.get(E).version&&U.updateBuffer(b);else x=U.createBuffer(b),U.buffers.set(b,x);if(N.bindVertexArray(x.vao),void 0===y1[z.activeAttributeName]&&Object.keys(b.attributes).includes(z.activeAttributeName)){var C,B=y1.aExtra.location;for(C in b.attributes){b.attributes[C];var M=x.vbos.get(C);N.bindBuffer(N.ARRAY_BUFFER,M.handle),N.disableVertexAttribArray(B)}var S=z.activeAttributeName,v=b.attributes[S],T=x.vbos.get(S),e=(void 0!==v&&void 0!==T&&(i=U.glTypeMapping.get(v.array.constructor),n=v.normalized,N.bindBuffer(N.ARRAY_BUFFER,T.handle),N.vertexAttribPointer(B,v.itemSize,i,n,0,0),N.enableVertexAttribArray(B)),R.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===S})),T=(T=z.getRange(S))||e.range,v=e.initialRange,i=v[1]-v[0],n=T=T||[0,1],e=i/(n[1]-n[0]),T=-(n[0]-v[0])/i,e=Number.isNaN(e)?1:e,T=Number.isNaN(T)?0:T;F.setUniform1f("uExtraScale",e),F.setUniform1f("uExtraOffset",T)}else for(var _ in b.attributes){var P,D,I=b.attributes[_],k=x.vbos.get(_);void 0!==y1[_]&&(_=y1[_].location,P=U.glTypeMapping.get(I.array.constructor),D=I.normalized,N.bindBuffer(N.ARRAY_BUFFER,k.handle),N.vertexAttribPointer(_,I.itemSize,P,D,0,0),N.enableVertexAttribArray(_))}n=x.numElements;N.drawArrays(N.POINTS,0,n),j++}()}catch(e){o.e(e)}finally{o.f()}N.bindVertexArray(null),viewer.addTimeMark("renderNodes","end")}},{key:"renderOctree",value:function(e,t,n,i){var r=this,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},o=(viewer.addTimeMark("renderOctree","start"),e instanceof Array?R=e[0]:e=[R=e],this.gl),s=a.material||R.material,l=null==a.shadowMaps?[]:a.shadowMaps,u=n.matrixWorldInverse,c=n.matrixWorld,d=(a.viewOverride&&(c=(u=a.viewOverride).clone().invert()),n.projectionMatrix),h=d.clone().invert(),p=null,f=0;this.shaders.has(s)||(x=[s.vertexShader,s.fragmentShader],x=new w1(o,"pointcloud",x[0],x[1]),this.shaders.set(s,x)),p=this.shaders.get(s),s.shaderNeedsUpdate&&(k=(x=[s.vertexShader,s.fragmentShader])[0],x=x[1],C=s.snapEnabled?s.numSnapshots:0,I=s.clipBoxes_in&&s.clipBoxes_in.length?s.clipBoxes_in.length:0,B=s.clipBoxes_out&&s.clipBoxes_out.length?s.clipBoxes_out.length:0,D=s.highlightBoxes&&s.highlightBoxes.length?s.highlightBoxes.length:0,E=a.clipSpheres&&a.clipSpheres.length?a.clipSpheres.length:0,s.clipPolygons&&s.clipPolygons.length&&s.clipPolygons.length,l=["#define num_shadowmaps ".concat(l.length),"#define num_snapshots ".concat(C),"#define num_in_clipboxes ".concat(I),"#define num_out_clipboxes ".concat(B),"#define num_highlightBox ".concat(D),"#define num_clipspheres ".concat(E),"#define num_prism ".concat(s.prisms.pointsCount?s.prisms.length:0),"#define prismPointCountSum ".concat(s.prisms.pointsCount),"#define prism_maxPointsCount ".concat(s.prisms.maxPointsCount)],s.bigClipInBox&&l.push("#define bigClipInBox"),s.usePanoMap&&l.push("#define usePanoMap"),s.useFilterByNormal&&l.push("#define use_filter_by_normal"),s.uniforms.baseHeightAreaMap.value&&l.push("#define showBaseHeight"),R.pcoGeometry.root.isLoaded()&&((C=R.pcoGeometry.root.geometry.attributes)["gps-time"]&&l.push("#define clip_gps_enabled"),C["return number"]&&l.push("#define clip_return_number_enabled"),C["number of returns"]&&l.push("#define clip_number_of_returns_enabled"),C["source id"]||C["point source id"])&&l.push("#define clip_point_source_id_enabled"),I=l.join("\n"),B=k.indexOf("#version "),D=x.indexOf("#version "),k=0<=B?k.replace(/(#version .*)/,"$1\n".concat(I)):"".concat(I,"\n").concat(k),x=0<=D?x.replace(/(#version .*)/,"$1\n".concat(I)):"".concat(I,"\n").concat(x),p.update(k,x),s.shaderNeedsUpdate=!1);for(var m=0,v=Object.keys(s.uniforms);m<v.length;m++){var g=v[m],A=s.uniforms[g];"t"==A.type&&(A=A.value)&&"pano0Map"!=g&&"pano1Map"!=g&&(this.textures.has(A)&&!A.needsRebuild||(g=new b1(o,A,this.threeRenderer),this.textures.set(A,g),delete A.needsRebuild),this.textures.get(A).update())}if(o.useProgram(p.program),p.setUniformMatrix4("projectionMatrix",d),p.setUniformMatrix4("viewMatrix",u),p.setUniformMatrix4("uViewInv",c),p.setUniformMatrix4("uProjInv",h),p.setUniform2f("resolution",s.resolution.toArray()),p.setUniform1f("fov",Math.PI*n.fov/180),p.setUniform1f("near",n.near),p.setUniform1f("far",n.far),n instanceof Ad?(p.setUniform("uUseOrthographicCamera",!0),p.setUniform("uOrthoWidth",(n.right-n.left)/n.zoom),p.setUniform("uOrthoHeight",n.top-n.bottom)):p.setUniform("uUseOrthographicCamera",!1),s.clipBoxes_in&&0<s.clipBoxes_in.length&&(E=p.uniformLocations["clipBoxes_in[0]"],o.uniformMatrix4fv(E,!1,s.uniforms.clipBoxes_in.value)),s.clipBoxes_out&&0<s.clipBoxes_out.length&&(R=p.uniformLocations["clipBoxes_out[0]"],o.uniformMatrix4fv(R,!1,s.uniforms.clipBoxes_out.value)),s.highlightBoxes&&0<s.highlightBoxes.length&&(C=p.uniformLocations["boxes_highlight[0]"],o.uniformMatrix4fv(C,!1,s.uniforms.boxes_highlight.value)),s.bigClipInBox&&p.setUniformMatrix4("clipBoxBig_in",s.uniforms.clipBoxBig_in.value),s.uniforms.baseHeightAreaMap.value&&(l=p.uniformLocations.baseHeightBoundZ,o.uniform2f.apply(o,[l].concat(Fe(s.uniforms.baseHeightBoundZ.value.toArray()))),B=p.uniformLocations.baseHeightBoundXY,o.uniform4f.apply(o,[B].concat(Fe(s.uniforms.baseHeightBoundXY.value.toArray())))),s.prisms.length&&(D=p.uniformLocations["prismList[0]"],o.uniformMatrix3fv(D,!1,s.uniforms.prismList.value),I=p.uniformLocations["prismPoints[0]"],o.uniform2fv(I,s.uniforms.prismPoints.value)),a.clipSpheres&&0<a.clipSpheres.length){var y,w=[],b=q(a.clipSpheres);try{for(b.s();!(y=b.n()).done;){var L=y.value.matrixWorld,F=n.matrixWorld,O=L.clone().invert(),U=(new Me).multiplyMatrices(O,F);w.push(U)}}catch(e){b.e(e)}finally{b.f()}var x=(k=[]).concat.apply(k,Fe(w.map(function(e){return e.elements}))),d=p.uniformLocations["uClipSpheres[0]"];o.uniformMatrix4fv(d,!1,x)}p.setUniform1f("orthoMaxSize",s.uniforms.orthoMaxSize.value),p.setUniform1f("maxSize",s.uniforms.maxSize.value),p.setUniform1f("minSize",s.uniforms.minSize.value),p.setUniform1f("uOctreeSpacing",s.spacing),p.setUniform("uOctreeSize",s.uniforms.octreeSize.value),p.setUniform2f("elevationRange",s.elevationRange),p.setUniform2f("intensityRange",s.intensityRange),p.setUniform3f("uIntensity_gbc",[s.intensityGamma,s.intensityBrightness,s.intensityContrast]),p.setUniform3f("uRGB_gbc",[s.rgbGamma,s.rgbBrightness,s.rgbContrast]),p.setUniform1f("uTransition",s.transition),p.setUniform1f("wRGB",s.weightRGB),p.setUniform1f("wIntensity",s.weightIntensity),p.setUniform1f("wElevation",s.weightElevation),p.setUniform1f("wClassification",s.weightClassification),p.setUniform1f("wReturnNumber",s.weightReturnNumber),p.setUniform1f("wSourceID",s.weightSourceID),p.setUniform("backfaceCulling",s.uniforms.backfaceCulling.value);var u=this.textures.get(s.gradientTexture),c=(p.setUniform1i("gradient",f),o.activeTexture(o.TEXTURE0+f),o.bindTexture(u.target,u.id),f++,s.elevationGradientRepeat),h=(c===Sm.REPEAT?(o.texParameteri(u.target,o.TEXTURE_WRAP_S,o.REPEAT),o.texParameteri(u.target,o.TEXTURE_WRAP_T,o.REPEAT)):c===Sm.MIRRORED_REPEAT?(o.texParameteri(u.target,o.TEXTURE_WRAP_S,o.MIRRORED_REPEAT),o.texParameteri(u.target,o.TEXTURE_WRAP_T,o.MIRRORED_REPEAT)):(o.texParameteri(u.target,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(u.target,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE)),f++,this.textures.get(s.classificationTexture)),E=(p.setUniform1i("classificationLUT",f),o.activeTexture(o.TEXTURE0+f),o.bindTexture(h.target,h.id),f++,s.uniforms.baseHeightAreaMap.value);if(E&&(R=this.textures.get(E),p.setUniform1i("baseHeightAreaMap",f),o.activeTexture(o.TEXTURE0+f),o.bindTexture(R.target,R.id),f++),!0===s.snapEnabled){var C=p.uniformLocations["uSnapshot[0]"],l=p.uniformLocations["uSnapshotDepth[0]"],B=f,M=new Array(5).fill(B).map(function(e,t){return e+t}),S=new Array(5).fill(1+Math.max.apply(Math,Fe(M))).map(function(e,t){return e+t}),f=1+Math.max.apply(Math,Fe(S));o.uniform1iv(C,M),o.uniform1iv(l,S);for(var T=0;T<5;T++){var _=s.uniforms.uSnapshot.value[T],P=s.uniforms.uSnapshotDepth.value[T];if(!_)break;var _=this.threeRenderer.properties.get(_).__webglTexture,P=this.threeRenderer.properties.get(P).__webglTexture,N=M[T],z=S[T];o.activeTexture(o["TEXTURE".concat(N)]),o.bindTexture(o.TEXTURE_2D,_),o.activeTexture(o["TEXTURE".concat(z)]),o.bindTexture(o.TEXTURE_2D,P)}var D,I=(D=[]).concat.apply(D,Fe(s.uniforms.uSnapView.value.map(function(e){return e.elements}))),k=p.uniformLocations["uSnapView[0]"];o.uniformMatrix4fv(k,!1,I);x=(d=[]).concat.apply(d,Fe(s.uniforms.uSnapProj.value.map(function(e){return e.elements}))),c=p.uniformLocations["uSnapProj[0]"];o.uniformMatrix4fv(c,!1,x);h=(u=[]).concat.apply(u,Fe(s.uniforms.uSnapProjInv.value.map(function(e){return e.elements}))),E=p.uniformLocations["uSnapProjInv[0]"];o.uniformMatrix4fv(E,!1,h);var R,B=(R=[]).concat.apply(R,Fe(s.uniforms.uSnapViewInv.value.map(function(e){return e.elements}))),C=p.uniformLocations["uSnapViewInv[0]"];o.uniformMatrix4fv(C,!1,B)}s.usePanoMap&&(p.setUniform1f("progress",s.uniforms.progress.value),p.setUniform1f("easeInOutRatio",s.uniforms.easeInOutRatio.value),p.setUniform3f("pano0Position",s.uniforms.pano0Position.value.toArray()),p.setUniform3f("pano1Position",s.uniforms.pano1Position.value.toArray()),p.setUniform("pano0Matrix",s.uniforms.pano0Matrix.value),p.setUniform("pano1Matrix",s.uniforms.pano1Matrix.value),(l=s.uniforms.pano0Map.value)&&(this.threeRenderer._textures.safeSetTextureCube(l,++f),p.setUniform1i("pano0Map",f)),D=s.uniforms.pano1Map.value)&&(this.threeRenderer._textures.safeSetTextureCube(D,++f),p.setUniform1i("pano1Map",f)),viewer.addTimeMark("renderOctree","end"),a.currentTextureBindingPoint=++f,e.forEach(function(e){r.renderNodes(e,t||e.visibleNodes,null,n,i,p,a)}),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,null),o.activeTexture(o.TEXTURE0),o.disable(o.BLEND),o.depthMask(!0),o.enable(o.DEPTH_TEST)}},{key:"render",value:function(e,n){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},r=this.gl,a=(null!=t&&this.threeRenderer.setRenderTarget(t),this.traverse(e)),e=(i.notAdditiveBlending&&(a.octrees.forEach(function(e){var t;1==e.material.opacity?e._z=1/0:((t=e.boundCenter?e.boundCenter.clone():e.boundingBox.getCenter(e.boundCenter).applyMatrix4(e.matrixWorld)).project(n),e._z=t.z)}),a.octrees.sort(function(e,t){return t._z-e._z})),i.material||a.octrees[0].material);if(Potree.settings.cloudSameMat&&0==viewer.scene.volumes.length&&e.pointSizeType!=_m.ADAPTIVE&&"level of detail"!=e.activeAttributeName)this.renderOctree(a.octrees,null,n,t,i);else{var o,s=q(a.octrees);try{for(s.s();!(o=s.n()).done;){o.value;var l,u=q(a.octrees);try{for(u.s();!(l=u.n()).done;){var c=l.value;this.renderOctree(c,c.visibleNodes,n,t,i)}}catch(e){u.e(e)}finally{u.f()}}}catch(e){s.e(e)}finally{s.f()}}r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,null),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindVertexArray(null),this.threeRenderer.resetState()}}])}(),C1=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return ue(this,t),delete(e=le(this,t,[e])).uniforms.screenWidth,delete e.uniforms.screenHeight,e.uniforms.resolution={type:"v2",value:new Re},e.uniforms.useEDL={type:"i",value:1},e.vertexShader=e.getDefines()+bm["edl_new.vs"],e.fragmentShader=e.getDefines()+bm["edl_new.fs"],e}return v(t,mA),A(t)}(),B1={tDiffuse:{type:"t",value:null},opacity:{type:"f",value:1},depthTex:{type:"t",value:null}},M1=" \n varying vec2 vUv;\n void main() {\n vUv = uv; \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }\n ",S1="\n #extension GL_EXT_frag_depth : enable\n uniform float opacity;\n uniform sampler2D tDiffuse;\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n uniform sampler2D depthTex;\n #endif\n \n varying vec2 vUv;\n void main() { \n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n float depth = texture2D(depthTex, vUv).r;\n /* if(depth >= 1.0){ //超级远(但是在modelTex里我把天空距离超出far了,所以不删)\n discard;\n } */\n gl_FragDepthEXT = depth; \n #endif\n \n \n \n vec4 texel = texture2D( tDiffuse, vUv );\n gl_FragColor = opacity * texel; \n \n \n } \n ",T1=function(){return A(function e(t){ue(this,e),this.viewer=t,this.edlMaterial=null,this.rtEDLs=new Map,this.gl=t.renderer.getContext(),t.addEventListener("resize",this.resize.bind(this)),this.initEDL(t)},[{key:"initEDL",value:function(e){var t,n,i,r=this;null==this.edlMaterial&&sm.EXT_DEPTH.isSupported()&&(this.edlMaterial=new C1,this.edlMaterial.depthTest=!0,this.edlMaterial.depthWrite=!0,this.edlMaterial.transparent=!0,t=fa.clone(B1),n=(i=j.changeShaderToWebgl2(M1,S1,"ShaderMaterial")).vs,i=i.fs,this.recoverToScreenMat=new ga({uniforms:t,vertexShader:n,fragmentShader:i,transparent:!0,defines:{useDepth:!0}}),Potree.settings.useRTskybox!=Potree.settings.useRTPoint)&&e.images360.addEventListener("endChangeMode",function(){r.resize({viewport:e.mainViewport})})}},{key:"resize",value:function(e){var t;sm.EXT_DEPTH.isSupported()&&(e=e.viewport,t=("showPanos"==Potree.settings.displayMode?Potree.settings.useRTskybox:Potree.settings.useRTPoint)?e.resolution2:e.resolution,this.getRtEDL(e).setSize(t.x,t.y))}},{key:"clearTargets",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=this.viewer.renderer,n=t.getRenderTarget();e.target&&(t.setRenderTarget(e.target),t.clear()),sm.EXT_DEPTH.isSupported()&&(e.rtEDL?(t.setRenderTarget(e.rtEDL),t.clear()):(e=this.getRtEDL(e.viewport))&&(t.setRenderTarget(e),t.setClearAlpha(0),t.clear(!0,!0,!0))),t.setRenderTarget(n)}},{key:"getRtEDL",value:function(e){e||(console.warn("getRtEDL没传viewport!!!! !!!!!!!!!!"),e=viewer.mainViewport);var t=this.rtEDLs.get(e);return t||sm.EXT_DEPTH.isSupported()&&(t=new ti(e.resolution.x,e.resolution.y,{minFilter:ht,magFilter:ht,format:It,type:Ct,depthTexture:new Gl(void 0,void 0,Et)}),this.rtEDLs.set(e,t)),t}},{key:"renderShadowMap",value:function(e,t,n){var i=this.viewer;if(0<n.length&&!n[0].disableShadowUpdates){var r,n=n[0],a=(this.shadowMap.setLight(n),new Map),o=q(i.scene.pointclouds);try{for(o.s();!(r=o.n()).done;){var s=r.value;a.set(s,s.material.activeAttributeName),s.material.disableEvents(),s.material.activeAttributeName="depth"}}catch(e){o.e(e)}finally{o.f()}this.shadowMap.render(i.scene.scenePointCloud,t);var l,u=q(e);try{for(u.s();!(l=u.n()).done;){var c=l.value,d=a.get(c);c.material.activeAttributeName=d,c.material.enableEvents()}}catch(e){u.e(e)}finally{u.f()}i.shadowTestCam.updateMatrixWorld(),i.shadowTestCam.matrixWorldInverse.copy(i.shadowTestCam.matrixWorld).invert(),i.shadowTestCam.updateProjectionMatrix()}}},{key:"render",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=this.viewer,n=e.camera||t.scene.getActiveCamera(),i=(Potree.settings.pointEnableRT||"showPanos"==Potree.settings.displayMode||t.useEDL)&&sm.EXT_DEPTH.isSupported()&&"OrthographicCamera"!=n.type&&!e.dontRenderRtEDL&&(e.rtEDL||this.getRtEDL(e.viewport)),r=t.useEDL&&i&&"showPanos"!=Potree.settings.displayMode,a=e.target||null,o=i&&Potree.settings.useRTPoint?new Re(i.width,i.height):e.target?new Re(e.target.width,e.target.height):e.viewport?e.viewport.resolution2:this.viewer.renderer.getSize(new Re),s=(t.renderer.setRenderTarget(a),[]);if(e.magnifier||"showPanos"!=Potree.settings.displayMode&&!Potree.settings.testCube||(Potree.Utils.setCameraLayers(n,["skybox"]),"showPanos"==Potree.settings.displayMode&&t.images360.currentPano.pointcloud.hasDepthTex&&i&&(t.renderer.setRenderTarget(i),t.renderer.render(t.scene.scene,n),t.renderer.setRenderTarget(a),Potree.settings.useRTskybox)?(this.recoverToScreenMat.uniforms.depthTex.value=i.depthTexture,this.recoverToScreenMat.uniforms.tDiffuse.value=i.texture,ne.screenPass.render(t.renderer,this.recoverToScreenMat,a)):t.renderer.render(t.scene.scene,n),"showPanos"!=Potree.settings.displayMode)){var l,u,c,d=t.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")}),h=e.magnifier?0<d.length:t.scene.pointclouds.some(function(e){return e.visible}),p=(d.forEach(function(e){e.oldVisi=e.visible,e.visible=!0}),Potree.Utils.setCameraLayers(n,["pointcloud"]),q(d));try{for(p.s();!(l=p.n()).done;){var f=l.value,m=f.material,v=f.pcoGeometry.boundingBox.getSize(new Oe).x;m.fov=Be.degToRad(n.fov),m.resolution=o,m.spacing=f.pcoGeometry.spacing,m.near=n.near,m.far=n.far,m.uniforms.octreeSize.value=v,m.useEDL=!!r}}catch(e){p.e(e)}finally{p.f()}i&&(t.renderer.setRenderTarget(i),0<d.length&&t.pRenderer.render(t.scene.scenePointCloud,n,i,{shadowMaps:0<s.length?[this.shadowMap]:null,clipSpheres:t.scene.volumes.filter(function(e){return e instanceof Df}),transparent:!0,notAdditiveBlending:Potree.settings.notAdditiveBlending}),Potree.settings.intersectOnObjs)&&(Potree.Utils.setCameraLayers(n,["model","light"]),t.objs.traverse(function(e){e.material&&(e._OlddepthWrite=e.material.depthWrite,e.material.depthWrite=!0)}),t.renderer.render(t.scene.scene,n),t.objs.traverse(function(e){e.material&&(e.material.depthWrite=e._OlddepthWrite)})),t.dispatchEvent({type:"render.pass.scene",viewer:t}),t.renderer.setRenderTarget(a),e.magnifier||d.forEach(function(e){e.visible=e.oldVisi}),h&&(r?((h=this.edlMaterial.uniforms).resolution.value.copy(o),h.edlStrength.value=t.edlStrength,h.radius.value=t.edlRadius,h.useEDL.value=1,c=n.projectionMatrix,(u=new Float32Array(16)).set(c.elements),h.uProj.value=u,h.uEDLColor.value=i.texture,h.opacity.value=t.edlOpacity,ne.screenPass.render(t.renderer,this.edlMaterial,a)):Potree.settings.useRTPoint&&i?(this.recoverToScreenMat.uniforms.tDiffuse.value=i.texture,this.recoverToScreenMat.defines.useDepth&&(this.recoverToScreenMat.uniforms.depthTex.value=i.depthTexture),ne.screenPass.render(t.renderer,this.recoverToScreenMat,a),e.drawedModelOnRT=Potree.settings.intersectOnObjs):(c={shadowMaps:0<s.length?[this.shadowMap]:null,clipSpheres:t.scene.volumes.filter(function(e){return e instanceof Df}),notAdditiveBlending:Potree.settings.notAdditiveBlending},t.pRenderer.render(t.scene.scenePointCloud,n,null,c))),d.forEach(function(e){e.visible=e.oldVisi})}else Potree.settings.fastTran&&t.images360.fastTranMaskPass.enabled&&t.images360.fastTranMaskPass.render()}}])}(),_1=function(){function i(n){function e(e){var t=new R({depthTest:!0,depthWrite:!0,side:ve});return(new Gc).load(W.resourcePath+"/textures/navigation/"+e,function(e){e.anisotropy=n.renderer.capabilities.getMaxAnisotropy(),t.map=e,t.needsUpdate=!0}),t}ue(this,i),(a=le(this,i)).viewer=n;var a,t=new Nu(1,1);a.front=new Q(t,e("F.png")),a.front.position.y=-.5,a.front.rotation.x=Math.PI/2,a.front.updateMatrixWorld(),a.front.name="F",a.add(a.front),a.back=new Q(t,e("B.png")),a.back.position.y=.5,a.back.rotation.x=Math.PI/2,a.back.updateMatrixWorld(),a.back.name="B",a.add(a.back),a.left=new Q(t,e("L.png")),a.left.position.x=-.5,a.left.rotation.y=Math.PI/2,a.left.updateMatrixWorld(),a.left.name="L",a.add(a.left),a.right=new Q(t,e("R.png")),a.right.position.x=.5,a.right.rotation.y=Math.PI/2,a.right.updateMatrixWorld(),a.right.name="R",a.add(a.right),a.bottom=new Q(t,e("D.png")),a.bottom.position.z=-.5,a.bottom.updateMatrixWorld(),a.bottom.name="D",a.add(a.bottom),a.top=new Q(t,e("U.png")),a.top.position.z=.5,a.top.updateMatrixWorld(),a.top.name="U",a.add(a.top),a.width=150,a.camera=new Ad(-1,1,1,-1,-1,1),a.camera.position.copy(new Oe(0,0,0)),a.camera.lookAt(new Oe(0,1,0)),a.camera.updateMatrixWorld(),a.camera.rotation.order="ZXY";return a.viewer.renderer.domElement.addEventListener("mousedown",function(e){if(a.visible){a.pickedFace=null;var t=new Re;if(t.x=e.clientX-(window.innerWidth-a.width),t.y=e.clientY,!(t.x<0||t.y>a.width)){t.x=t.x/a.width*2-1,t.y=2*-(t.y/a.width)+1;for(var e=new bh,n=(e.setFromCamera(t,a.camera),e.ray.origin.sub(a.camera.getWorldDirection(new Oe)),e.intersectObjects(a.children)),i=1e3,r=0;r<n.length;r++)n[r].distance<i&&(a.pickedFace=n[r].object.name,i=n[r].distance);a.pickedFace&&a.viewer.setView(a.pickedFace)}}},!1),a}return v(i,Z),A(i,[{key:"update",value:function(e){this.camera.rotation.copy(e),this.visible&&this.camera.updateMatrixWorld()}}])}(),P1=function(){function o(){ue(this,o)}return A(o,null,[{key:"measurementToFeatures",value:function(e){var t,n=e.points.map(function(e){return e.position.toArray()}),i=[];return 1===n.length?(t={type:"Feature",geometry:{type:"Point",coordinates:n[0]},properties:{name:e.name}},i.push(t)):1<n.length&&!e.closed?(t={type:"Feature",geometry:{type:"LineString",coordinates:n},properties:{name:e.name}},i.push(t)):1<n.length&&e.closed&&(t={type:"Feature",geometry:{type:"Polygon",coordinates:[[].concat(Fe(n),[n[0]])]},properties:{name:e.name}},i.push(t)),e.showDistances&&e.edgeLabels.forEach(function(e){e={type:"Feature",geometry:{type:"Point",coordinates:e.position.toArray()},properties:{distance:e.text}};i.push(e)}),e.showArea&&(n={type:"Feature",geometry:{type:"Point",coordinates:e.areaLabel.position.toArray()},properties:{area:e.areaLabel.text}},i.push(n)),i}},{key:"toString",value:function(e){var t,n=[],i=q(e=(e=e instanceof Array?e:[e]).filter(function(e){return e instanceof im}));try{for(i.s();!(t=i.n()).done;)var r=t.value,a=o.measurementToFeatures(r),n=n.concat(a)}catch(e){i.e(e)}finally{i.f()}return JSON.stringify({type:"FeatureCollection",features:n},null,"\t")}}])}(),D1=function(){function d(){ue(this,d)}return A(d,null,[{key:"measurementPointSection",value:function(e){e=e.points[0].position;return e?"0\nCIRCLE\n8\nlayer_point\n10\n".concat(e.x,"\n20\n").concat(e.y,"\n30\n").concat(e.z,"\n40\n1.0\n"):""}},{key:"measurementPolylineSection",value:function(e){var t,n=8,i=(e.closed&&(n+=1),"0\nPOLYLINE\n8\nlayer_polyline\n62\n1\n66\n1\n10\n0.0\n20\n0.0\n30\n0.0\n70\n".concat(n,"\n")),r=0,a=0,o=0,s=q(e.points);try{for(s.s();!(t=s.n()).done;){var l=t.value.position,r=Math.max(r,l.x),a=Math.max(a,l.y),o=Math.max(o,l.z);i+="0\nVERTEX\n8\n0\n10\n".concat(l.x,"\n20\n").concat(l.y,"\n30\n").concat(l.z,"\n70\n32\n")}}catch(e){s.e(e)}finally{s.f()}return i+="0\nSEQEND\n"}},{key:"measurementSection",value:function(e){return 0===e.points.length?"":1===e.points.length?d.measurementPointSection(e):2<=e.points.length?d.measurementPolylineSection(e):void 0}},{key:"toString",value:function(e){var t,n=(e=(e=e instanceof Array?e:[e]).filter(function(e){return e instanceof im})).filter(function(e){return e instanceof im}).map(function(e){return e.points}).reduce(function(e,t){return e.concat(t)}).map(function(e){return e.position}),i=new Oe(1/0,1/0,1/0),r=new Oe(-1/0,-1/0,-1/0),a=q(n);try{for(a.s();!(t=a.n()).done;){var o=t.value;i.min(o),r.max(o)}}catch(e){a.e(e)}finally{a.f()}var s,n="999\nDXF created from potree\n0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1006\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n9\n$EXTMIN\n10\n".concat(i.x,"\n20\n").concat(i.y,"\n30\n").concat(i.z,"\n9\n$EXTMAX\n10\n").concat(r.x,"\n20\n").concat(r.y,"\n30\n").concat(r.z,"\n0\nENDSEC\n"),l="0\nSECTION\n2\nENTITIES\n",u=q(e);try{for(u.s();!(s=u.n()).done;){var c=s.value;l+=d.measurementSection(c)}}catch(e){u.e(e)}finally{u.f()}return n+(l+="0\nENDSEC\n")+"0\nEOF"}}])}(),I1=function(){function r(e,t){function n(){i.update()}var i;ue(this,r),(i=le(this,r)).position=e,i.color="#"+new Se(t).getHexString(),i.svg=i.create(),i.visible_=!0;return viewer.addEventListener("camera_changed",n),i.addEventListener("dispose",function(){viewer.removeEventListener("camera_changed",n)}),i}return v(r,Qn),A(r,[{key:"create",value:function(){var o=this,e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg"),e=(t.setAttribute("width","2em"),t.setAttribute("height","2em"),t.setAttribute("position","absolute"),t.style.left="50px",t.style.top="50px",t.style.position="absolute",t.style.zIndex="10000",t.style.cursor="grab",t.style.transform="translate(-50%,-50%)",document.createElementNS(e,"circle"));e.setAttributeNS(null,"cx","1em"),e.setAttributeNS(null,"cy","1em"),e.setAttributeNS(null,"r","0.5em"),e.setAttributeNS(null,"style","fill: "+this.color+"; stroke: black; stroke-width: 0.2em;"),t.appendChild(e);function n(e){o.selectedElement=t,document.addEventListener("mousemove",r)}function i(e){o.selectedElement=null,document.removeEventListener("mousemove",r)}viewer.renderer.domElement.parentElement.appendChild(t);var r=function(e){var t,n,i,r,a;o.selectedElement&&(e.preventDefault(),n=viewer.renderer.domElement.getBoundingClientRect(),a=e.clientX-n.x,e=e.clientY-n.y,t=(n=viewer.renderer.getSize(new Re)).width,n=n.height,i=viewer.scene.getActiveCamera(),(r=o.position.clone().project(i)).x=(a/t-.5)/.5,r.y=(-(e-n)/n-.5)/.5,a=r.clone().unproject(i),o.position.set(a.x,a.y,a.z),o.update(),o.dispatchEvent({type:"dragged",position:o.position}))};return t.addEventListener("mousedown",n),t.addEventListener("mouseup",i),t.style.display=this.visible?"":"none",this.addEventListener("dispose",function(){t.removeEventListener("mousedown",n),t.removeEventListener("mouseup",i)}),t}},{key:"visible",get:function(){return this.visible_},set:function(e){(this.visible_=e)?this.update():this.svg.style.display="none"}},{key:"update",value:function(){if(this.visible){viewer.scene.getActiveCamera();var e=Potree.Utils.getPos2d(this.position,viewer.mainViewport,viewer.renderArea);if(!e.trueSide)return this.svg.style.display="none";this.svg.style.left=e.posInViewport.x,this.svg.style.top=e.posInViewport.y,this.svg.style.display=""}}},{key:"dispose",value:function(){this.svg.remove(),this.dispatchEvent("dispose")}}])}(),k1=(new _a(1,1),function(){function i(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return ue(this,i),n.sizeInfo={width2d:60},(t=le(this,i,[n])).position.copy(e),t.dragStyle=n.dragStyle||"default",t.bindEvent(),t}return v(i,uv),A(i,[{key:"bindEvent",value:function(){var r,a,o=this;this.addEventListener("drag",function(e){var t,n,i=viewer.scene.getActiveCamera();r?(n=(new Re).subVectors(e.pointer,a),(t=r.clone()).x+=n.x,t.y+=n.y,n=t.clone().unproject(i),o.position.set(n.x,n.y,n.z)):(r=o.position.clone().project(i),a=e.pointer.clone()),o.update(),o.dispatchEvent({type:"dragged",position:o.position})}),this.addEventListener("drop",function(e){a=r=null}),this.addEventListener("mouseover",function(e){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),this.addEventListener("mouseleave",function(e){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})})}}])}()),R1=new Q(new Qu(.08,.08,3,2),new R({color:"#f88"})),L1=function(){function l(e,t,n,i){var r,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{};ue(this,l),(r=le(this,l)).curve=new Xc(e,!1,"centripetal"),r.name=i||"curveNode",r.handleMat=a.handleMat,r.lineMat=t,r.createPath(),r.color=n,r.handles=[],r.wholeLength=0,r.viewports=a.viewports||[viewer.mainViewport];for(var o=0,s=r.points.length;o<s;o++)r.handles.push(r.createHandle(r.points[o]));return r.visible_=!0,Potree.settings.isTest&&(r.spheres=new Z,r.add(r.spheres)),r.updatePath(),r}return v(l,Z),A(l,[{key:"addPoint",value:function(e,t,n){var i=this.points.length,r=(null==t&&(t=i),this.createHandle(e));this.handles=[].concat(Fe(this.handles.slice(0,t)),[r],Fe(this.handles.slice(t,i))),this.points=[].concat(Fe(this.points.slice(0,t)),[e],Fe(this.points.slice(t,i))),n&&(this.updatePath(),this.updateHandle(t))}},{key:"removePoint",value:function(e){this.handles[e].dispose(),this.handles.splice(e,1),this.points.splice(e,1),this.updatePath()}},{key:"createPath",value:function(){var e=av.createFatLine([],this.lineMat);this.line=e,this.add(e)}},{key:"updatePath",value:function(){var n=this;this.curve.needsUpdate=!0;var e=this.points.length;if(this.wholeLength=this.points.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0),1<e){var t=Be.clamp(Math.ceil(5*this.wholeLength),30,500),t=this.curve.getSpacedPoints(t);if(this.needsPercent){this.pointsPercent=[0];for(var i=[0],r=0,a=t[0],o=1;o<e;o++){var s=this.points[o];r+=s.distanceTo(a),a=s,i.push(r)}for(var l=1;l<e;l++)this.pointsPercent.push(0==r?l/e:i[l]/r)}Potree.settings.isTest&&(this.spheres.children.forEach(function(e){return e.visible=!1}),t.forEach(function(e,t){t=n.spheres.children[t];t||(t=R1.clone(),n.spheres.add(t)),t.position.copy(e),t.visible=!0}))}else t=[];av.updateLine(this.line,t),this.dispatchEvent("updatePath")}},{key:"createHandle",value:function(e){var n,i=this;return this.handleMat?(n=new k1(e,{mat:this.handleMat,viewports:this.viewports}),this.add(n)):n=new I1(e,this.color),n.visible=this.visible,n.addEventListener("dragged",function(e){var t=i.handles.indexOf(n);i.points[t].copy(e.position),i.updatePath(),i.dispatchEvent({type:"dragCurvePoint",index:t})}),n}},{key:"updateHandle",value:function(e){this.visible&&this.handles[e].update()}},{key:"updateHandles",value:function(){var n=this;this.handles.forEach(function(e,t){n.updateHandle(t)})}},{key:"update",value:function(){this.updateHandles(),this.updatePath()}},{key:"visible",get:function(){return this.visible_},set:function(t){t!=this.visible_&&(this.visible_=t,this.visible=t,this.handles)&&(this.handles.forEach(function(e){return e.visible=t}),t)&&this.updateHandles()}},{key:"points",get:function(){return this.curve.points},set:function(e){this.curve.points=e}},{key:"getPointAt",value:function(e){return this.curve.getPointAt(e)}},{key:"getSpacedPoints",value:function(e){return this.curve.getSpacedPoints(e)}},{key:"dispose",value:function(){this.parent&&this.parent.remove(this),this.handles.forEach(function(e){return e.dispose()}),this.line.geometry&&this.line.geometry.dispose()}}])}(),F1="red",O1="blue",U1=function(){function c(e){var t;return ue(this,c),(t=le(this,c)).viewer=e,t.selectedElement=null,t.uuid=Be.generateUUID(),t.node=new Z,t.node.name="camera animation",t.viewer.scene.scene.add(t.node),t.frustum=t.createFrustum(),t.node.add(t.frustum),t.name="Camera Animation",t.curveType="centripetal",t.visible=!0,t.targets=[],t.createPath(),t.duration=5,t.percent=0,t.currentIndex=0,t.durations=[],t.quaternions=[],!Potree.settings.isTest&&Potree.settings.isOfficial&&t.setVisible(!1),t.addEventListener("dispose",function(){t.dispose()}),t.targetLines=new Z,t.node.add(t.targetLines),t}return v(c,Qn),A(c,[{key:"createControlPoint",value:function(e,t){var n=this,i=this.posCurve.points.length,r=new Oe,a=new Oe,o=(null==e&&(e=i),t?(r.copy(t.position),a.copy(t.target)):2<=i&&0===e?(o=(new Oe).subVectors(this.posCurve.points[0],this.posCurve.points[1]),r.copy(this.posCurve.points[0]).add(o),(new Oe).subVectors(this.targets[0].position,this.targets[1].position),a.copy(this.targets[0].position).add(o)):2<=i&&e===i?(o=(new Oe).subVectors(this.posCurve.points[i-1],this.posCurve.points[i-2]),r.copy(this.posCurve.points[i-2]).add(o),(new Oe).subVectors(this.targets[i-1].position,this.targets[i-2].position),a.copy(this.targets[i-2].position).add(o)):2<=i&&(r.copy(this.posCurve.points[e-1].clone().add(this.posCurve.points[e]).multiplyScalar(.5)),a.copy(this.targets[e-1].position.clone().add(this.targets[e].position).multiplyScalar(.5))),this.posCurve.addPoint(r,e),new I1(a,O1)),o=(o.visible=this.visible,this.targets=[].concat(Fe(this.targets.slice(0,e)),[o],Fe(this.targets.slice(e,i))),this.useDurSlice&&(this.durations=[].concat(Fe(this.durations.slice(0,e)),[t.duration],Fe(this.durations.slice(e,i)))),this.dispatchEvent({type:"controlpoint_added",index:e}),av.createLine([r,a],{mat:g1("aimAtTarget")}));this.targetLines.children=[].concat(Fe(this.targetLines.children.slice(0,e)),[o],Fe(this.targetLines.children.slice(e,i))),this.targets[e].addEventListener("dragged",function(e){n.updatePathCallback(),n.dragPointCallback(e)})}},{key:"dragPointCallback",value:function(e){var t=e.index;null==e.index&&(t=this.targets.indexOf(e.target)),av.moveLine(this.targetLines.children[t],[this.posCurve.points[t],this.targets[t].position]),viewer.dispatchEvent("content_changed"),this.updateFrustum()}},{key:"updatePathCallback",value:function(){this.quaternions=[];for(var e=this.posCurve.points.length,t=0;t<e;t++){var n=te.getQuaFromPosAim(this.posCurve.points[t],this.targets[t].position);this.quaternions.push(n)}this.reMapCurvePercent()}},{key:"removeControlPoint",value:function(e){this.posCurve.removePoint(e),this.targets[e].dispose(),this.targets.splice(e,1),this.dispatchEvent({type:"controlpoint_removed",index:e}),this.targetLines.remove(this.targetLines.children[e]),this.useDurSlice&&this.durations.splice(e,1)}},{key:"createPath",value:function(){this.posCurve=new L1([],g1("position"),F1,"posCurve"),this.posCurve.needsPercent=!0,this.node.add(this.posCurve),this.posCurve.addEventListener("dragCurvePoint",this.dragPointCallback.bind(this)),this.posCurve.addEventListener("updatePath",this.updatePathCallback.bind(this))}},{key:"createFrustum",value:function(){var e=[new Oe(0,0,0),new Oe(-.3,-.3,1),new Oe(0,0,0),new Oe(.3,-.3,1),new Oe(0,0,0),new Oe(.3,.3,1),new Oe(0,0,0),new Oe(-.3,.3,1),new Oe(-.3,-.3,1),new Oe(.3,-.3,1),new Oe(.3,-.3,1),new Oe(.3,.3,1),new Oe(.3,.3,1),new Oe(-.3,.3,1),new Oe(-.3,.3,1),new Oe(-.3,-.3,1)],e=(e.forEach(function(e){return e.z*=-1}),av.createFatLine(e,{mat:g1("frustum")}));return e.visible=!1,e}},{key:"reMapCurvePercent",value:function(){var e=this.posCurve.points.length;if(e<2)return this.newPointsPercents=[];var t=[0];if(this.useDurSlice){for(var n=[0],i=0,r=0;r<e-1;r++){var a=this.durations[r];n.push(i+=a)}for(var o=1;o<e;o++)t.push(0==i?o/e:n[o]/i)}else{for(var s=this.duration/e,l=Math.min(.8,s),u=Be.clamp(.8*Math.PI,l,s),c=this.posCurve.pointsPercent,d=1;d<e;d++){var h,p=(c[d]-c[d-1])*this.duration,f=l;p<u&&(h=this.quaternions[d].angleTo(this.quaternions[d-1]),f=Be.clamp(.8*h,l,s)),p=Math.max(p,f),h=t[d-1]+p/this.duration,t.push(h)}var m,v=t[e-1];te.closeTo(v,1)||(m=1/v,t=t.map(function(e){return e*m}))}this.newPointsPercents=t}},{key:"at",value:function(e,t,n){var i,r,a,o=e=Be.clamp(e,0,1),e=(o<1?(this.currentIndex=this.newPointsPercents.findIndex(function(e){return o<e})-1,e=this.newPointsPercents[this.currentIndex],s=this.newPointsPercents[this.currentIndex+1],s=(o-e)/(s-e),e=this.posCurve.pointsPercent[this.currentIndex],o=e+(this.posCurve.pointsPercent[this.currentIndex+1]-e)*s,e=this.quaternions[this.currentIndex+1],i=this.quaternions[this.currentIndex],i=(new ii).copy(i),lf(i,e)(s)):(this.currentIndex=this.posCurve.points.length-1,i=te.getQuaFromPosAim(this.posCurve.points[this.currentIndex],this.targets[this.currentIndex].position)),this.posCurve.getPointAt(o)),s=(null!=t?(a=(Potree.settings.tourTestCameraMove?(r=this.frustum.quaternion.clone(),this.frustum):(r=(s=viewer.scene.getActiveCamera()).quaternion.clone(),s)).position.clone(),n=n||1/Potree.settings.cameraAniSmoothRatio,n=Be.clamp(n*=60*t,0,1),lf(r,i)(n),sf(a,e)(n)):(r=i,a=e),(new Oi).setFromQuaternion(r));return{position:a,rotation:s}}},{key:"set",value:function(e){this.percent=e}},{key:"setVisible",value:function(t){this.node.visible=t,this.posCurve.visible=t,this.targets.forEach(function(e){return e.visible=t}),this.visible=t}},{key:"setDuration",value:function(e){e!=this.duration&&(this.duration=e,this.quaternions.length==this.posCurve.points.length)&&this.reMapCurvePercent()}},{key:"getDuration",value:function(e){return this.duration}},{key:"play",value:function(){var i=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(this.onUpdate)return console.error("已经开始播放");var r=0,a=0,o=(null!=e.percent?r=e.percent:e.index&&(a=index,r=this.posCurve.pointsPercent[index]),this.duration);this.originalyVisible=this.visible,Potree.settings.tourTestCameraMove||this.setVisible(!1);var s,l=0,u=Potree.settings.cameraAniSmoothRatio/60*3,c=0;this.onUpdate=function(e){var t,n;i.posCurve.points.length<2?(1==i.posCurve.points.length&&(viewer.scene.view.position.copy(i.posCurve.points[0]),viewer.scene.view.rotation=(new Oi).setFromQuaternion(i.quaternions[0])),i.pause()):(s?t=(performance.now()-s)/1e3/o+r:(t=0,n=.2,.25<(l+=e.delta)&&(s=performance.now())),i.set(t),n=i.at(t,e.delta,n),a!=i.currentIndex&&(a=i.currentIndex,console.log("updateCurrentIndex",a),i.dispatchEvent({type:"updateCurrentIndex",currentIndex:a})),Potree.settings.tourTestCameraMove||(viewer.scene.view.position.copy(n.position),viewer.scene.view.rotation=n.rotation),i.updateFrustum(n),1<=t&&(u<c?i.pause():c+=e.delta))},this.viewer.addEventListener("update",this.onUpdate)}},{key:"pause",value:function(){this.setVisible(this.originalyVisible),this.viewer.removeEventListener("update",this.onUpdate),this.dispatchEvent("playDone"),this.onUpdate=null}},{key:"updateFrustum",value:function(e){var t=this.frustum;1<this.posCurve.points.length?(t.visible=!0,e=e||this.at(this.percent),t.position.copy(e.position),t.rotation.copy(e.rotation),viewer.dispatchEvent("content_changed")):t.visible=!1}},{key:"changeCallback",value:function(e){if(this.posCurve.update(),this.updatePathCallback(),null==e)for(var t=this.posCurve.points.length,n=0;n<t;n++)this.dragPointCallback({index:n});else this.dragPointCallback({index:e});this.updateFrustum()}},{key:"dispose",value:function(){this.posCurve.dispose(),this.targets.forEach(function(e){return e.dispose()}),this.durations=[],this.node.parent.remove(this.node)}}],[{key:"defaultFromView",value:function(e){for(var t=new c(e),n=e.scene.getActiveCamera(),e=e.scene.view.getPivot(),i=new Oe(.3*n.position.x+.7*e.x,.3*n.position.y+.7*e.y,.3*n.position.z+.7*e.z),r=new Oe(.05*n.position.x+.95*e.x,.05*n.position.y+.95*e.y,.05*n.position.z+.95*e.z),a=ne.computeAzimuth(n.position,e),o=0;o<5;o++){var s=1.5*Math.PI*(o/5)+a,l=2*Math.cos(s),s=2*Math.sin(s),u=new Oe(i.x+l,i.y+s,i.z),l=new Oe(r.x+.1*l,r.y+.1*s,r.z);t.createControlPoint(null,{position:u,target:l})}return t.changeCallback(),t}}])}(),N1=function(){return A(function e(t,n,i){var r=this;ue(this,e),this.viewer=t,this.measurement=n,this.propertiesPanel=i,this._update=function(){r.update()}},[{key:"createCoordinatesTable",value:function(e){var r,a=this,o=$('\n\t\t\t<table class="measurement_value_table">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>x</th>\n\t\t\t\t\t<th>y</th>\n\t\t\t\t\t<th>z</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t'),s=Potree.resourcePath+"/icons/copy.svg",t=q(e);try{for(t.s();!(r=t.n()).done;)!function(){var t=r.value,e=ne.addCommas(t.x.toFixed(3)),n=ne.addCommas(t.y.toFixed(3)),i=ne.addCommas(t.z.toFixed(3)),e=$("\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>".concat(e,"</span></td>\n\t\t\t\t\t<td><span>").concat(n,"</span></td>\n\t\t\t\t\t<td><span>").concat(i,'</span></td>\n\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t<img name="copy" title="copy" class="button-icon" src="').concat(s,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t'));a.elCopy=e.find("img[name=copy]"),a.elCopy.click(function(){var e=t.toArray().map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),a.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),o.append(e)}()}catch(e){t.e(e)}finally{t.f()}return o}},{key:"createAttributesTable",value:function(){var e=$('<table class="measurement_value_table"></table>');this.measurement.points[0];return e}},{key:"update",value:function(){}}])}(),z1=function(){function n(e,r,t){ue(this,n),a=le(this,n,[e,r,t]);var a,e=Potree.resourcePath+"/icons/remove.svg";return a.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table id="distances_table" class="measurement_value_table"></table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<input type="button" name="make_profile" value="profile from measure" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),a.elRemove=a.elContent.find("img[name=remove]"),a.elRemove.click(function(){a.viewer.scene.removeMeasurement(r)}),a.elMakeProfile=a.elContent.find("input[name=make_profile]"),a.elMakeProfile.click(function(){var e,t=new If,n=(t.name=r.name,t.width=r.getTotalDistance()/50,q(r.points));try{for(n.s();!(e=n.n()).done;){var i=e.value;t.addMarker(i.position.clone())}}catch(e){n.e(e)}finally{n.f()}a.viewer.scene.addProfile(t)}),a.propertiesPanel.addVolatileListener(r,"marker_added",a._update),a.propertiesPanel.addVolatileListener(r,"marker_removed",a._update),a.propertiesPanel.addVolatileListener(r,"marker_moved",a._update),a.update(),a}return v(n,N1),A(n,[{key:"update",value:function(){for(var e=this.elContent.find(".coordinates_table_container"),t=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),this.measurement.points.map(function(e){return e.position})),n=[],i=0;i<t.length-1;i++){var r=t[i].distanceTo(t[i+1]);n.push(r.toFixed(3))}var e=this.measurement.getTotalDistance().toFixed(3),a=this.elContent.find("#distances_table");a.empty();for(var o=0;o<n.length;o++){var s=n[o],s=$("\n\t\t\t\t<tr>\n\t\t\t\t\t<th>".concat(0===o?"Distances: ":"",'</th>\n\t\t\t\t\t<td style="width: 100%; padding-left: 10px">').concat(s,"</td>\n\t\t\t\t</tr>"));a.append(s)}e=$('\n\t\t\t<tr>\n\t\t\t\t<th>Total: </td><td style="width: 100%; padding-left: 10px">'.concat(e,"</th>\n\t\t\t</tr>"));a.append(e)}}])}(),G1=function(){function r(e,t,n){ue(this,r),i=le(this,r,[e,t,n]);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span class="attributes_table_container"></span>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return v(r,N1),A(r,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container"),e=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points)),this.elContent.find(".attributes_table_container"));e.empty(),e.append(this.createAttributesTable())}}])}(),H1=function(){function r(e,t,n){ue(this,r),i=le(this,r,[e,t,n]);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span style="font-weight: bold">Area: </span>\n\t\t\t\t<span id="measurement_area"></span>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return v(r,N1),A(r,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points)),this.elContent.find("#measurement_area").html(this.measurement.area.value.toFixed(3))}}])}(),V1=function(){function r(e,t,n){ue(this,r),i=le(this,r,[e,t,n]);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>α</th>\n\t\t\t\t\t\t<th>β</th>\n\t\t\t\t\t\t<th>γ</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="angle_cell_alpha" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_betta" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_gamma" style="width: 33%"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return v(r,N1),A(r,[{key:"update",value:function(){for(var e=this.elContent.find(".coordinates_table_container"),t=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),[]),n=0;n<this.measurement.points.length;n++)t.push(this.measurement.getAngle(n)*(180/Math.PI));var t=t.map(function(e){return e.toFixed(1)+"°"}),e=this.elContent.find("#angle_cell_alpha"),i=this.elContent.find("#angle_cell_betta"),r=this.elContent.find("#angle_cell_gamma");e.html(t[0]),i.html(t[1]),r.html(t[2])}}])}(),Q1=function(){function r(e,t,n){ue(this,r),i=le(this,r,[e,t,n]);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table id="infos_table" class="measurement_value_table"></table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return v(r,N1),A(r,[{key:"update",value:function(){var e,t,n,i,r=this.elContent.find(".coordinates_table_container"),r=(r.empty(),r.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),this.elContent.find("#infos_table"));3!==this.measurement.points.length?r.empty():(i=this.measurement.points[0].position,e=this.measurement.points[1].position,t=this.measurement.points[2].position,t=(e=Potree.Utils.computeCircleCenter(i,e,t)).distanceTo(i),i=2*Math.PI*t,e="".concat((n=function(e){return Potree.Utils.addCommas(e.toFixed(3))})(e.x)," ").concat(n(e.y)," ").concat(n(e.z)),t=n(t),n=n(i),i='style="width: 100%; padding: 5px;"',r.html("\n\t\t\t<tr>\n\t\t\t\t<th ".concat(r='style="text-align: left"',">Center: </th>\n\t\t\t\t<td ").concat(i,"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td ").concat(i,' colspan="2">\n\t\t\t\t\t').concat(e,"\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th ").concat(r,">Radius: </th>\n\t\t\t\t<td ").concat(i,">").concat(t,"</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th ").concat(r,">Circumference: </th>\n\t\t\t\t<td ").concat(i,">").concat(n,"</td>\n\t\t\t</tr>\n\t\t")))}}])}(),j1=function(){function r(e,t,n){ue(this,r),i=le(this,r,[e,t,n]);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span id="height_label">Height: </span><br>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return v(r,N1),A(r,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position})));var e=this.measurement.points.slice().sort(function(e,t){return e.position.z-t.position.z}),t=e[0].position.clone(),e=e[e.length-1].position.clone(),t=t.z,e=(e=e.z-t).toFixed(3);this.elHeightLabel=this.elContent.find("#height_label"),this.elHeightLabel.html("<b>Height:</b> ".concat(e))}}])}(),W1=function(){function s(e,t,n){ue(this,s),i=le(this,s,[e,t,n]);var i,e=Potree.resourcePath+"/icons/copy.svg",n=Potree.resourcePath+"/icons/remove.svg",r=new Map([[Pf,"length"],[Df,"rx"]]).get(t.constructor),a=new Map([[Pf,"width"],[Df,"ry"]]).get(t.constructor),o=new Map([[Pf,"height"],[Df,"rz"]]).get(t.constructor);return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>α</th>\n\t\t\t\t\t\t<th>β</th>\n\t\t\t\t\t\t<th>γ</th>\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="angle_cell_alpha" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_betta" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_gamma" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t\t<img name="copyRotation" title="copy" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>').concat(r,"</th>\n\t\t\t\t\t\t<th>").concat(a,"</th>\n\t\t\t\t\t\t<th>").concat(o,'</th>\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="cell_length" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="cell_width" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="cell_height" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t\t<img name="copyScale" title="copy" class="button-icon" src="').concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t<br>\n\t\t\t\t<span style="font-weight: bold">Volume: </span>\n\t\t\t\t<span id="measurement_volume"></span>\n\n\t\t\t\t\x3c!--\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="volume_show" type="checkbox"/>\n\t\t\t\t\t\t<span>show volume</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>--\x3e\n\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="volume_clip" type="checkbox"/>\n\t\t\t\t\t\t<span>make clip volume</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\n\t\t\t\t<li style="margin-top: 10px">\n\t\t\t\t\t<input name="download_volume" type="button" value="prepare download" style="width: 100%" />\n\t\t\t\t\t<div name="download_message"></div>\n\t\t\t\t</li>\n\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<li style="display: grid; grid-template-columns: auto auto; grid-column-gap: 5px; margin-top: 10px">\n\t\t\t\t\t<input id="volume_reset_orientation" type="button" value="reset orientation"/>\n\t\t\t\t\t<input id="volume_make_uniform" type="button" value="make uniform"/>\n\t\t\t\t</li>\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="').concat(n,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elDownloadButton=i.elContent.find("input[name=download_volume]"),i.propertiesPanel.viewer.server?i.elDownloadButton.click(function(){return i.download()}):i.elDownloadButton.hide(),i.elCopyRotation=i.elContent.find("img[name=copyRotation]"),i.elCopyRotation.click(function(){var e=i.measurement.rotation.toArray().slice(0,3).map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),i.elCopyScale=i.elContent.find("img[name=copyScale]"),i.elCopyScale.click(function(){var e=i.measurement.scale.toArray().map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeVolume(t)}),i.elContent.find("#volume_reset_orientation").click(function(){t.rotation.set(0,0,0)}),i.elContent.find("#volume_make_uniform").click(function(){var e=(t.scale.x+t.scale.y+t.scale.z)/3;t.scale.set(e,e,e)}),i.elCheckClip=i.elContent.find("#volume_clip"),i.elCheckClip.click(function(e){i.measurement.clip=e.target.checked}),i.elCheckShow=i.elContent.find("#volume_show"),i.elCheckShow.click(function(e){i.measurement.visible=e.target.checked}),i.propertiesPanel.addVolatileListener(t,"position_changed",i._update),i.propertiesPanel.addVolatileListener(t,"orientation_changed",i._update),i.propertiesPanel.addVolatileListener(t,"scale_changed",i._update),i.propertiesPanel.addVolatileListener(t,"clip_changed",i._update),i.update(),i}return v(s,N1),A(s,[{key:"download",value:(e=J(X().mark(function e(){var t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,R;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(m=this.measurement,A=[],m=m.matrixWorld,g=new Oe(.5,0,0).applyMatrix4(m),o=new Oe(-.5,0,0).applyMatrix4(m),l=new Oe(0,.5,0).applyMatrix4(m),u=new Oe(0,-.5,0).applyMatrix4(m),p=new Oe(0,0,.5).applyMatrix4(m),m=new Oe(0,0,-.5).applyMatrix4(m),v=(new Oe).subVectors(o,g).normalize(),a=v.clone().multiplyScalar(-1),s=(new Oe).subVectors(u,l).normalize(),d=s.clone().multiplyScalar(-1),h=(new Oe).subVectors(m,p).normalize(),f=h.clone().multiplyScalar(-1),v=[(new ir).setFromNormalAndCoplanarPoint(v,g),(new ir).setFromNormalAndCoplanarPoint(a,o),(new ir).setFromNormalAndCoplanarPoint(s,l),(new ir).setFromNormalAndCoplanarPoint(d,u),(new ir).setFromNormalAndCoplanarPoint(h,p),(new ir).setFromNormalAndCoplanarPoint(f,m)],t=[],n=0,i=v;n<i.length;n++)r=[(r=i[n]).normal.toArray(),r.constant].join(","),r="[".concat(r,"]"),t.push(r);g="["+t.join(",")+"]",A.push(g),a=A.join(","),o=[],s=q(this.viewer.scene.pointclouds),e.prev=23,s.s();case 25:if((l=s.n()).done){e.next=39;break}if((c=l.value).visible){e.next=29;break}return e.abrupt("continue",37);case 29:d=c.pcoGeometry.offset.clone(),h=(u=new Me).makeTranslation.apply(u,Fe(d.multiplyScalar(-1).toArray())),p=c.matrixWorld,f=(new Me).multiplyMatrices(p,h),m="".concat(window.location.pathname,"/../").concat(c.pcoGeometry.url),v={path:m,transform:f.elements},g=JSON.stringify(v),o.push(g);case 37:e.next=25;break;case 39:e.next=44;break;case 41:e.prev=41,e.t0=e.catch(23),s.e(e.t0);case 44:return e.prev=44,s.f(),e.finish(44);case 47:return A=o.join(","),y=this.elContent.find("div[name=download_message]"),w=function(e){y.html('<div style="color: #ff0000">ERROR: '.concat(e,"</div>"))},b=function(e){y.html("".concat(e))},x=null,E="".concat(viewer.server,"/create_regions_filter?pointclouds=[").concat(A,"]®ions=[").concat(a,"]"),b("estimating results ..."),e.next=56,fetch(E);case 56:return E=e.sent,e.next=59,E.json();case 59:if((C=e.sent).handle){e.next=65;break}return w(C.message),e.abrupt("return");case 65:x=C.handle;case 66:B="".concat(viewer.server,"/check_regions_filter?handle=").concat(x),M=function(n){return new Promise(function(e,t){setTimeout(function(){e()},n)})},S=function(e){var t=e.progress,e=e.estimate,t=t["processed points"]/e.points,e=parseInt(100*t);b("progress: ".concat(e,"%"))},T=function(e){var t="downloads ready: <br>";t+="<ul>";for(var n=0;n<e.pointclouds.length;n++){var i="".concat(viewer.server,"/download_regions_filter_result?handle=").concat(x,"&index=").concat(n);t+='<li><a href="'.concat(i,'">result_').concat(n,".las</a> </li>\n")}var r="".concat(viewer.server,"/download_regions_filter_report?handle=").concat(x);t+='<li> <a href="'.concat(r,'">report.json</a> </li>\n'),b(t+="</ul>")},_=function(e){e="Unexpected Response. <br>status: ".concat(e.status," <br>message: ").concat(e.message);b(e)},P=function(e){e="ERROR: ".concat(e.message);throw w(e),new Error(e)},D=Date.now();case 73:return e.next=76,fetch(B);case 76:return k=e.sent,e.next=79,k.json();case 79:"ERROR"!==(I=e.sent).status?e.next=84:(P(I),e.next=94);break;case 84:"FILTERING"!==I.status?e.next=88:(S(I),e.next=94);break;case 88:if("FINISHED"===I.status)return T(I),e.abrupt("break",100);e.next=93;break;case 93:_(I);case 94:return k=(Date.now()-D)/1e3,R=k<10?100:1e3,e.next=98,M(R);case 98:e.next=73;break;case 100:case"end":return e.stop()}},e,this,[[23,41,44,47]])})),function(){return e.apply(this,arguments)})},{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container"),e=(e.empty(),e.append(this.createCoordinatesTable([this.measurement.position])),this.measurement.rotation.toVector3()),t=(e=(e=(e=e.toArray()).map(function(e){return 180*e/Math.PI})).map(function(e){return e.toFixed(1)+"°"}),this.elContent.find("#angle_cell_alpha")),n=this.elContent.find("#angle_cell_betta"),i=this.elContent.find("#angle_cell_gamma");t.html(e[0]),n.html(e[1]),i.html(e[2]);t=(t=this.measurement.scale.toArray()).map(function(e){return ne.addCommas(e.toFixed(2))}),n=this.elContent.find("#cell_length"),i=this.elContent.find("#cell_width"),e=this.elContent.find("#cell_height"),n.html(t[0]),i.html(t[1]),e.html(t[2]),n=this.elContent.find("#measurement_volume"),i=this.measurement.getVolume();n.html(ne.addCommas(i.toFixed(2))),this.elCheckClip.prop("checked",this.measurement.clip),this.elCheckShow.prop("checked",this.measurement.visible)}}]);var e}(),J1=function(){function a(e,i,t){ue(this,a),n=le(this,a,[e,i,t]);var n,e=Potree.resourcePath+"/icons/remove.svg",r=(n.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span style="display:flex">\n\t\t\t\t\t<span style="display:flex; align-items: center; padding-right: 10px">Width: </span>\n\t\t\t\t\t<input id="sldProfileWidth" name="sldProfileWidth" value="5.06" style="flex-grow: 1; width:100%">\n\t\t\t\t</span>\n\t\t\t\t<br>\n\n\t\t\t\t<li style="margin-top: 10px">\n\t\t\t\t\t<input name="download_profile" type="button" value="prepare download" style="width: 100%" />\n\t\t\t\t\t<div name="download_message"></div>\n\t\t\t\t</li>\n\n\t\t\t\t<br>\n\n\t\t\t\t<input type="button" id="show_2d_profile" value="show 2d profile" style="width: 100%"/>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),n.elRemove=n.elContent.find("img[name=remove]"),n.elRemove.click(function(){n.viewer.scene.removeProfile(i)}),n.elDownloadButton=n.elContent.find("input[name=download_profile]"),n.propertiesPanel.viewer.server?n.elDownloadButton.click(function(){return n.download()}):n.elDownloadButton.hide(),n.elContent.find("#sldProfileWidth"));r.spinner({min:0,max:1e7,step:.01,numberFormat:"n",start:function(){},spin:function(e,t){var n=r.spinner("value");i.setWidth(n)},change:function(e,t){var n=r.spinner("value");i.setWidth(n)},stop:function(e,t){var n=r.spinner("value");i.setWidth(n)},incremental:function(e){var t=r.spinner("value"),n=r.spinner("option","step");return Math.max(1,parseInt(.05*t/n))}}),r.spinner("value",i.getWidth()),r.spinner("widget").css("width","100%");return n.propertiesPanel.addVolatileListener(i,"width_changed",function(e){r.spinner("value")!==i.getWidth()&&r.spinner("value",i.getWidth())}),n.elContent.find("#show_2d_profile").click(function(){n.propertiesPanel.viewer.profileWindow.show(),n.propertiesPanel.viewer.profileWindowController.setProfile(i)}),n.propertiesPanel.addVolatileListener(i,"marker_added",n._update),n.propertiesPanel.addVolatileListener(i,"marker_removed",n._update),n.propertiesPanel.addVolatileListener(i,"marker_moved",n._update),n.update(),n}return v(a,N1),A(a,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points))}},{key:"download",value:(e=J(X().mark(function e(){var t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,O,U,N,z,G,H,V,R,L,F;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:E=this.measurement,t=[],C=E.getSegments(),n=E.width,i=q(C);try{for(i.s();!(r=i.n()).done;){for(a=r.value,o=a.start.clone().multiply(new Oe(1,1,0)),s=a.end.clone().multiply(new Oe(1,1,0)),l=(new Oe).addVectors(o,s).multiplyScalar(.5),u=(new Oe).subVectors(s,o).normalize(),c=(new Oe).subVectors(o,s).normalize(),d=new Oe(0,0,1),h=(new Oe).crossVectors(u,d),p=(new Oe).crossVectors(c,d),console.log(p),f=h.clone().multiplyScalar(.5*n).add(l),m=p.clone().multiplyScalar(.5*n).add(l),v=[(new ir).setFromNormalAndCoplanarPoint(u,o),(new ir).setFromNormalAndCoplanarPoint(c,s),(new ir).setFromNormalAndCoplanarPoint(p,f),(new ir).setFromNormalAndCoplanarPoint(h,m)],g=[],A=0,y=v;A<y.length;A++)b=[(w=y[A]).normal.toArray(),w.constant].join(","),b="[".concat(b,"]"),g.push(b);x="["+g.join(",")+"]",t.push(x)}}catch(e){i.e(e)}finally{i.f()}E=t.join(","),C=[],B=q(this.viewer.scene.pointclouds),e.prev=9,B.s();case 11:if((M=B.n()).done){e.next=25;break}if((M=M.value).visible){e.next=15;break}return e.abrupt("continue",23);case 15:I=M.pcoGeometry.offset.clone(),S=(S=new Me).makeTranslation.apply(S,Fe(I.multiplyScalar(-1).toArray())),I=M.matrixWorld,I=(new Me).multiplyMatrices(I,S),S="".concat(window.location.pathname,"/../").concat(M.pcoGeometry.url),S={path:S,transform:I.elements},I=JSON.stringify(S),C.push(I);case 23:e.next=11;break;case 25:e.next=30;break;case 27:e.prev=27,e.t0=e.catch(9),B.e(e.t0);case 30:return e.prev=30,B.f(),e.finish(30);case 33:return S=C.join(","),T=this.elContent.find("div[name=download_message]"),_=function(e){T.html('<div style="color: #ff0000">ERROR: '.concat(e,"</div>"))},P=function(e){T.html("".concat(e))},D=null,I="".concat(viewer.server,"/create_regions_filter?pointclouds=[").concat(S,"]®ions=[").concat(E,"]"),P("estimating results ..."),e.next=42,fetch(I);case 42:return R=e.sent,e.next=45,R.json();case 45:if((k=e.sent).handle){e.next=51;break}return _(k.message),e.abrupt("return");case 51:D=k.handle;case 52:O="".concat(viewer.server,"/check_regions_filter?handle=").concat(D),U=function(n){return new Promise(function(e,t){setTimeout(function(){e()},n)})},N=function(e){var t=e.progress,e=e.estimate,t=t["processed points"]/e.points,e=parseInt(100*t);P("progress: ".concat(e,"%"))},z=function(e){var t="downloads ready: <br>";t+="<ul>";for(var n=0;n<e.pointclouds.length;n++){var i="".concat(viewer.server,"/download_regions_filter_result?handle=").concat(D,"&index=").concat(n);t+='<li><a href="'.concat(i,'">result_').concat(n,".las</a> </li>\n")}var r="".concat(viewer.server,"/download_regions_filter_report?handle=").concat(D);t+='<li> <a href="'.concat(r,'">report.json</a> </li>\n'),P(t+="</ul>")},G=function(e){e="Unexpected Response. <br>status: ".concat(e.status," <br>message: ").concat(e.message);P(e)},H=function(e){e="ERROR: ".concat(e.message);throw _(e),new Error(e)},V=Date.now();case 59:return e.next=62,fetch(O);case 62:return R=e.sent,e.next=65,R.json();case 65:"ERROR"!==(L=e.sent).status?e.next=70:(H(L),e.next=80);break;case 70:"FILTERING"!==L.status?e.next=74:(N(L),e.next=80);break;case 74:if("FINISHED"===L.status)return z(L),e.abrupt("break",86);e.next=79;break;case 79:G(L);case 80:return F=(Date.now()-V)/1e3,F=F<10?100:1e3,e.next=84,U(F);case 84:e.next=59;break;case 86:case"end":return e.stop()}},e,this,[[9,27,30,33]])})),function(){return e.apply(this,arguments)})}]);var e}(),q1=function(){return A(function e(t,n){var i=this,n=(ue(this,e),this.viewer=t,this.propertiesPanel=n,this._update=function(){i.update()},Potree.resourcePath+"/icons/copy.svg");this.elContent=$('\n\t\t<div class="propertypanel_content">\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">position</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="camera_position_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_position_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_position_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_camera_position" style="width: 25%">\n\t\t\t\t\t\t<img name="copyPosition" title="copy" class="button-icon" src="'.concat(n,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">target</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="camera_target_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_target_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_target_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_camera_target" style="width: 25%">\n\t\t\t\t\t\t<img name="copyTarget" title="copy" class="button-icon" src="').concat(n,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t')),this.elCopyPosition=this.elContent.find("img[name=copyPosition]"),this.elCopyPosition.click(function(){var e=i.viewer.scene.getActiveCamera().position.toArray().map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.elCopyTarget=this.elContent.find("img[name=copyTarget]"),this.elCopyTarget.click(function(){var e=i.viewer.scene.view.getPivot().toArray().map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.propertiesPanel.addVolatileListener(t,"camera_changed",this._update),this.update()},[{key:"update",value:function(){var e=this.viewer.scene.getActiveCamera(),t=this.viewer.scene.view,e=e.position.toArray().map(function(e){return ne.addCommas(e.toFixed(3))}),e=(this.elContent.find("#camera_position_x").html(e[0]),this.elContent.find("#camera_position_y").html(e[1]),this.elContent.find("#camera_position_z").html(e[2]),t.getPivot().toArray().map(function(e){return ne.addCommas(e.toFixed(3))}));this.elContent.find("#camera_target_x").html(e[0]),this.elContent.find("#camera_target_y").html(e[1]),this.elContent.find("#camera_target_z").html(e[2])}}])}(),Y1=function(){return A(function e(t,n,i){var r=this,t=(ue(this,e),this.viewer=t,this.propertiesPanel=n,this.annotation=i,this._update=function(){r.update()},"".concat(Potree.resourcePath,"/icons/copy.svg"));this.elContent=$('\n\t\t<div class="propertypanel_content">\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">position</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="annotation_position_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="annotation_position_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="annotation_position_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_annotation_position" style="width: 25%">\n\t\t\t\t\t\t<img name="copyPosition" title="copy" class="button-icon" src="'.concat(t,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t</table>\n\n\t\t\t<div>\n\n\t\t\t\t<div class="heading">Title</div>\n\t\t\t\t<div id="annotation_title" contenteditable="true">\n\t\t\t\t\tAnnotation Title\n\t\t\t\t</div>\n\n\t\t\t\t<div class="heading">Description</div>\n\t\t\t\t<div id="annotation_description" contenteditable="true">\n\t\t\t\t\tA longer description of this annotation. \n\t\t\t\t\t\tCan be multiple lines long. TODO: the user should be able\n\t\t\t\t\t\tto modify title and description. \n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t</div>\n\t\t')),this.elCopyPosition=this.elContent.find("img[name=copyPosition]"),this.elCopyPosition.click(function(){var e=r.annotation.position.toArray().map(function(e){return e.toFixed(3)}).join(", ");ne.clipboardCopy(e),r.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.elTitle=this.elContent.find("#annotation_title").html(i.title),this.elDescription=this.elContent.find("#annotation_description").html(i.description),this.elTitle[0].addEventListener("input",function(){var e=r.elTitle.html();i.title=e},!1),this.elDescription[0].addEventListener("input",function(){var e=r.elDescription.html();i.description=e},!1),this.update()},[{key:"update",value:function(){var e=this.annotation,t=this.elContent,n=this.elTitle,i=this.elDescription,r=e.position.toArray().map(function(e){return ne.addCommas(e.toFixed(3))});t.find("#annotation_position_x").html(r[0]),t.find("#annotation_position_y").html(r[1]),t.find("#annotation_position_z").html(r[2]),n.html(e.title),i.html(e.description)}}])}(),X1=function(){return A(function e(l,t,u){ue(this,e),this.viewer=l,this.propertiesPanel=t,this.animation=u,this.elContent=$('\n\t\t\t<div class="propertypanel_content">\n\t\t\t\t<span id="animation_keyframes"></span>\n\n\t\t\t\t<span>\n\n\t\t\t\t\t<span style="display:flex">\n\t\t\t\t\t\t<span style="display:flex; align-items: center; padding-right: 10px">Duration: </span>\n\t\t\t\t\t\t<input name="spnDuration" value="5.0" style="flex-grow: 1; width:100%">\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span>Time: </span><span id="lblTime"></span> <div id="sldTime"></div>\n\n\t\t\t\t\t<input name="play" type="button" value="play"/>\n\t\t\t\t\t<input name="pause" type="button" value="pause"/>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t'),this.elContent.find("input[name=play]").click(function(){u.play()}),this.elContent.find("input[name=pause]").click(function(){u.pause()});function n(){function o(e){var t=$('\n\t\t\t\t\t<div style="display: flex; margin: 0.2em 0em">\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t\t<input type="button" name="add" value="insert control point" />\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t</div>\n\t\t\t\t');t.find("input[name=add]").click(function(){u.createControlPoint(e,{position:l.scene.view.position,target:l.scene.view.getPivot()}),u.changeCallback()}),c.append(t)}c.empty();var s=0;o(s),u.posCurve.points.forEach(function(e){var t,n,i,r,a;t=s,n=$('\n\t\t\t\t\t<div style="display: flex; margin: 0.2em 0em">\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="assign" src="'.concat(Potree.resourcePath,'/icons/assign.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="move" src="').concat(Potree.resourcePath,'/icons/circled_dot.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span style="flex-grow: 0; width: 1.5em; height: 1.5em"></span>\n\t\t\t\t\t\t<span style="flex-grow: 0; font-size: 1.5em">keyframe</span>\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="delete" src="').concat(Potree.resourcePath,'/icons/remove.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t')),i=n.find("img[name=assign]"),r=n.find("img[name=move]"),a=n.find("img[name=delete]"),i.click(function(){u.posCurve.points[t].copy(l.scene.view.position),u.targets[t].position.copy(l.scene.view.getPivot()),u.changeCallback(t)}),r.click(function(){l.scene.view.position.copy(u.posCurve.points[t]),l.scene.view.lookAt(u.targets[t].position)}),a.click(function(){u.removeControlPoint(t),u.changeCallback()}),c.append(n),o(++s)})}this.elContent.find("#sldTime").slider({value:0,min:0,max:1,step:.001,slide:function(e,t){u.set(t.value),u.updateFrustum()}});var i=this.elContent.find("input[name=spnDuration]"),c=(i.spinner({min:0,max:300,step:.01,numberFormat:"n",start:function(){},spin:function(e,t){var n=i.spinner("value");u.setDuration(n)},change:function(e,t){var n=i.spinner("value");u.setDuration(n)},stop:function(e,t){var n=i.spinner("value");u.setDuration(n)},incremental:function(e){var t=i.spinner("value"),n=i.spinner("option","step");return Math.max(1,parseInt(.05*t/n))}}),i.spinner("value",u.getDuration()),i.spinner("widget").css("width","100%"),this.elContent.find("#animation_keyframes"));n(),u.addEventListener("controlpoint_added",n),u.addEventListener("controlpoint_removed",n)},[{key:"update",value:function(){}}])}(),K1=function(){return A(function e(t,n){ue(this,e),this.container=t,this.viewer=n,this.object=null,this.cleanupTasks=[],this.scene=null},[{key:"setScene",value:function(e){this.scene=e}},{key:"set",value:function(e){if(this.object!==e){this.object=e;var t,n=q(this.cleanupTasks);try{for(n.s();!(t=n.n()).done;)(0,t.value)()}catch(e){n.e(e)}finally{n.f()}this.cleanupTasks=[],this.container.empty(),e instanceof gm?this.setPointCloud(e):e instanceof im||e instanceof If||e instanceof _f?this.setMeasurement(e):e instanceof Aa?this.setCamera(e):e instanceof pv?this.setAnnotation(e):e instanceof U1&&this.setCameraAnimation(e)}}},{key:"addVolatileListener",value:function(e,t,n){e.addEventListener(t,n),this.cleanupTasks.push(function(){e.removeEventListener(t,n)})}},{key:"setPointCloud",value:function(f){function e(e){s.html(m.size.toFixed(2)),o.slider({value:m.size})}function t(e){u.html(m.minSize.toFixed(2)),l.slider({value:m.minSize})}function n(){var e=Object.keys(Pm)[m.shape];h.selectmenu().val(e).selectmenu("refresh")}function i(){var e=m.backfaceCulling;p.prop("checked",e)}function r(e){A.html(m.opacity.toFixed(2)),g.slider({value:m.opacity})}var a=this,m=f.material,v=$('\n\t\t\t<div class="scene_content selectable">\n\t\t\t\t<ul class="pv-menu-list">\n\n\t\t\t\t<li>\n\t\t\t\t<span data-i18n="appearance.point_size"></span>: <span id="lblPointSize"></span> <div id="sldPointSize"></div>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t<span data-i18n="appearance.min_point_size"></span>: <span id="lblMinPointSize"></span> <div id="sldMinPointSize"></div>\n\t\t\t\t</li>\n\n\t\t\t\t\x3c!-- SIZE TYPE --\x3e\n\t\t\t\t<li>\n\t\t\t\t\t<label for="optPointSizing" class="pv-select-label" data-i18n="appearance.point_size_type">Point Sizing </label>\n\t\t\t\t\t<select id="optPointSizing" name="optPointSizing">\n\t\t\t\t\t\t<option>FIXED</option>\n\t\t\t\t\t\t<option>ATTENUATED</option>\n\t\t\t\t\t\t<option>ADAPTIVE</option>\n\t\t\t\t\t</select>\n\t\t\t\t</li>\n\n\t\t\t\t\x3c!-- SHAPE --\x3e\n\t\t\t\t<li>\n\t\t\t\t\t<label for="optShape" class="pv-select-label" data-i18n="appearance.point_shape"></label><br>\n\t\t\t\t\t<select id="optShape" name="optShape">\n\t\t\t\t\t\t<option>SQUARE</option>\n\t\t\t\t\t\t<option>CIRCLE</option>\n\t\t\t\t\t\t<option>PARABOLOID</option>\n\t\t\t\t\t</select>\n\t\t\t\t</li>\n\n\t\t\t\t<li id="materials_backface_container">\n\t\t\t\t<label><input id="set_backface_culling" type="checkbox" /><span data-i18n="appearance.backface_culling"></span></label>\n\t\t\t\t</li>\n\t\t\t\t\n\t\t\t\t\x3c!-- OPACITY --\x3e\n\t\t\t\t<li><span data-i18n="appearance.point_opacity"></span>:<span id="lblOpacity"></span><div id="sldOpacity"></div></li>\n\n\t\t\t\t<div class="divider">\n\t\t\t\t\t<span>Attribute</span>\n\t\t\t\t</div>\n\n\t\t\t\t<li>\n\t\t\t\t\t<select id="optMaterial" name="optMaterial"></select>\n\t\t\t\t</li>\n\n\t\t\t\t<div id="materials.composite_weight_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Attribute Weights</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>RGB: <span id="lblWeightRGB"></span> <div id="sldWeightRGB"></div>\t</li>\n\t\t\t\t\t<li>Intensity: <span id="lblWeightIntensity"></span> <div id="sldWeightIntensity"></div>\t</li>\n\t\t\t\t\t<li>Elevation: <span id="lblWeightElevation"></span> <div id="sldWeightElevation"></div>\t</li>\n\t\t\t\t\t<li>Classification: <span id="lblWeightClassification"></span> <div id="sldWeightClassification"></div>\t</li>\n\t\t\t\t\t<li>Return Number: <span id="lblWeightReturnNumber"></span> <div id="sldWeightReturnNumber"></div>\t</li>\n\t\t\t\t\t<li>Source ID: <span id="lblWeightSourceID"></span> <div id="sldWeightSourceID"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.rgb_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>RGB</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>Gamma: <span id="lblRGBGamma"></span> <div id="sldRGBGamma"></div>\t</li>\n\t\t\t\t\t<li>Brightness: <span id="lblRGBBrightness"></span> <div id="sldRGBBrightness"></div>\t</li>\n\t\t\t\t\t<li>Contrast: <span id="lblRGBContrast"></span> <div id="sldRGBContrast"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.extra_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Extra Attribute</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li><span data-i18n="appearance.extra_range"></span>: <span id="lblExtraRange"></span> <div id="sldExtraRange"></div></li>\n\n\t\t\t\t\t<li>Gamma: <span id="lblExtraGamma"></span> <div id="sldExtraGamma"></div></li>\n\t\t\t\t\t<li>Brightness: <span id="lblExtraBrightness"></span> <div id="sldExtraBrightness"></div></li>\n\t\t\t\t\t<li>Contrast: <span id="lblExtraContrast"></span> <div id="sldExtraContrast"></div></li>\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t<div id="materials.matcap_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>MATCAP</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div id="matcap_scheme_selection" style="display: flex; flex-wrap: wrap;"> </div>\n\t\t\t\t\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.color_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Color</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<input id="materials.color.picker" />\n\t\t\t\t</div>\n\n\n\t\t\t\t<div id="materials.elevation_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Elevation</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li><span data-i18n="appearance.elevation_range"></span>: <span id="lblHeightRange"></span> <div id="sldHeightRange"></div>\t</li>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<selectgroup id="gradient_repeat_option">\n\t\t\t\t\t\t\t<option id="gradient_repeat_clamp" value="CLAMP">Clamp</option>\n\t\t\t\t\t\t\t<option id="gradient_repeat_repeat" value="REPEAT">Repeat</option>\n\t\t\t\t\t\t\t<option id="gradient_repeat_mirrored_repeat" value="MIRRORED_REPEAT">Mirrored Repeat</option>\n\t\t\t\t\t\t</selectgroup>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span>Gradient Scheme:</span>\n\t\t\t\t\t\t<div id="elevation_gradient_scheme_selection" style="display: flex; padding: 1em 0em">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.transition_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Transition</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>transition: <span id="lblTransition"></span> <div id="sldTransition"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.intensity_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Intensity</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>Range: <span id="lblIntensityRange"></span> <div id="sldIntensityRange"></div>\t</li>\n\t\t\t\t\t<li>Gamma: <span id="lblIntensityGamma"></span> <div id="sldIntensityGamma"></div>\t</li>\n\t\t\t\t\t<li>Brightness: <span id="lblIntensityBrightness"></span> <div id="sldIntensityBrightness"></div>\t</li>\n\t\t\t\t\t<li>Contrast: <span id="lblIntensityContrast"></span> <div id="sldIntensityContrast"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.gpstime_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>GPS Time</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t<div id="materials.index_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Indices</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t'),o=(v.i18n(),this.container.append(v),v.find("#sldPointSize")),s=v.find("#lblPointSize"),l=(o.slider({value:m.size,min:0,max:3,step:.01,slide:function(e,t){m.size=t.value}}),this.addVolatileListener(m,"point_size_changed",e),e(),v.find("#sldMinPointSize")),u=v.find("#lblMinPointSize"),c=(l.slider({value:m.size,min:0,max:3,step:.01,slide:function(e,t){m.minSize=t.value}}),this.addVolatileListener(m,"point_size_changed",t),t(),Object.keys(_m)[m.pointSizeType]),d=v.find("#optPointSizing"),h=(d.selectmenu(),d.val(c).selectmenu("refresh"),d.selectmenu({change:function(e,t){m.pointSizeType=_m[t.item.value]}}),v.find("#optShape")),p=(h.selectmenu({change:function(e,t){t=t.item.value;m.shape=Pm[t]}}),this.addVolatileListener(m,"point_shape_changed",n),n(),v.find("#set_backface_culling")),c=(p.click(function(){m.backfaceCulling=p.prop("checked")}),this.addVolatileListener(m,"backface_changed",i),i(),$("#materials_backface_container")),d=(c.css("display","none"),f.pcoGeometry.pointAttributes),g=(!!d.hasNormals&&d.hasNormals()&&c.css("display","block"),v.find("#sldOpacity")),A=v.find("#lblOpacity");g.slider({value:m.opacity,min:0,max:1,step:.001,slide:function(e,t){m.opacity=t.value}});this.addVolatileListener(m,"opacity_changed",r),r();var y,d=f.pcoGeometry.pointAttributes.attributes,d=((c=[]).push.apply(c,Fe(d.map(function(e){return e.name}))),c.indexOf("intensity")),w=(0<=d&&c.splice(d+1,0,"intensity gradient"),c.push("elevation","color","matcap","indices","level of detail","composite"),["POSITION_CARTESIAN","position"]),c=c.filter(function(e){return!w.includes(e)}),b=v.find("#optMaterial"),x=q(c);try{for(x.s();!(y=x.n()).done;){var E=y.value,C=$("<option>".concat(E,"</option>"));b.append(C)}}catch(e){x.e(e)}finally{x.f()}function B(e,t){var n=b.selectmenu().val(),i=(m.activeAttributeName=n,f.getAttribute(n)),r=(!!(i="intensity gradient"===n?f.getAttribute("intensity"):i)&&["intensity","intensity gradient"].includes(i.name)?(f.material.intensityRange[0]===1/0&&(f.material.intensityRange=i.range),a=(r=U(i.range,2))[0],r=r[1],v.find("#sldIntensityRange").slider({range:!0,min:a,max:r,step:.01,values:[a,r],slide:function(e,t){var n=t.values[0],t=t.values[1];m.intensityRange=[n,t]}})):i&&(r=(a=U(i.range,2))[0],a=a[1],o=(o=m.getRange(i.name))||Fe(i.range),"number"==typeof r)&&"number"==typeof a&&v.find("#sldExtraRange").slider({range:!0,min:r,max:a,step:.01,values:o,slide:function(e,t){var t=U(t.values,2),n=t[0],t=t[1];m.setRange(i.name,[n,t])}}),$("#materials\\.composite_weight_container")),a=$("#materials\\.elevation_container"),o=$("#materials\\.rgb_container"),s=$("#materials\\.extra_container"),l=$("#materials\\.color_container"),u=$("#materials\\.intensity_container"),c=$("#materials\\.index_container"),d=$("#materials\\.transition_container"),h=$("#materials\\.gpstime_container"),p=$("#materials\\.matcap_container");c.css("display","none"),u.css("display","none"),a.css("display","none"),o.css("display","none"),s.css("display","none"),l.css("display","none"),r.css("display","none"),d.css("display","none"),p.css("display","none"),h.css("display","none"),"composite"===n?(r.css("display","block"),a.css("display","block"),o.css("display","block"),u.css("display","block")):"elevation"===n?a.css("display","block"):"RGB and Elevation"===n?(o.css("display","block"),a.css("display","block")):"rgba"===n?o.css("display","block"):"color"===n?l.css("display","block"):"intensity"===n||"intensity gradient"===n?u.css("display","block"):"indices"===n?c.css("display","block"):"matcap"===n?p.css("display","block"):"classification"!==n&&("gps-time"===n?h.css("display","block"):"number of returns"===n||"return number"===n||["source id","point source id"].includes(n)||s.css("display","block"))}function M(){b.val(m.activeAttributeName).selectmenu("refresh")}b.selectmenu({change:B});this.addVolatileListener(m,"point_color_type_changed",M),this.addVolatileListener(m,"active_attribute_changed",M),M(),B();var S,d=Object.keys(Potree.Gradients).map(function(e){return{name:e,values:wm[e]}}),T=v.find("#elevation_gradient_scheme_selection"),_=q(d);try{for(_.s();!(S=_.n()).done;)!function(){var e=S.value,t=$('\n\t\t\t\t\t<span style="flex-grow: 1;">\n\t\t\t\t\t</span>\n\t\t\t\t'),n=Potree.Utils.createSvgGradient(e.values);n.setAttributeNS(null,"class","button-icon"),t.append($(n)),t.click(function(){m.gradient=wm[e.name]}),T.append(t)}()}catch(e){_.e(e)}finally{_.f()}for(var c=[{name:"Normals",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_normal+y.jpg")},{name:"Basic 1",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_1.jpg")},{name:"Basic 2",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_2.jpg")},{name:"Basic Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_dark.jpg")},{name:"Basic Side",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_side.jpg")},{name:"Ceramic Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/ceramic_dark.jpg")},{name:"Ceramic Lightbulb",icon:"".concat(Potree.resourcePath,"/icons/matcap/ceramic_lightbulb.jpg")},{name:"Clay Brown",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_brown.jpg")},{name:"Clay Muddy",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_muddy.jpg")},{name:"Clay Studio",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_studio.jpg")},{name:"Resin",icon:"".concat(Potree.resourcePath,"/icons/matcap/resin.jpg")},{name:"Skin",icon:"".concat(Potree.resourcePath,"/icons/matcap/skin.jpg")},{name:"Jade",icon:"".concat(Potree.resourcePath,"/icons/matcap/jade.jpg")},{name:"Metal_ Anisotropic",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_anisotropic.jpg")},{name:"Metal Carpaint",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_carpaint.jpg")},{name:"Metal Lead",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_lead.jpg")},{name:"Metal Shiny",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_shiny.jpg")},{name:"Pearl",icon:"".concat(Potree.resourcePath,"/icons/matcap/pearl.jpg")},{name:"Toon",icon:"".concat(Potree.resourcePath,"/icons/matcap/toon.jpg")},{name:"Check Rim Light",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_rim_light.jpg")},{name:"Check Rim Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_rim_dark.jpg")},{name:"Contours 1",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_1.jpg")},{name:"Contours 2",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_2.jpg")},{name:"Contours 3",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_3.jpg")},{name:"Reflection Check Horizontal",icon:"".concat(Potree.resourcePath,"/icons/matcap/reflection_check_horizontal.jpg")},{name:"Reflection Check Vertical",icon:"".concat(Potree.resourcePath,"/icons/matcap/reflection_check_vertical.jpg")}],F=v.find("#matcap_scheme_selection"),P=0,D=c;P<D.length;P++)!function(){var e=D[P],t=$('\n\t\t\t\t\t\t<img src="'.concat(e.icon,'" class="button-icon" style="width: 25%;" />\n\t\t\t\t'));t.click(function(){m.matcap=e.icon.substring(e.icon.lastIndexOf("/"))}),F.append(t)}();v.find("#sldRGBGamma").slider({value:m.rgbGamma,min:0,max:4,step:.01,slide:function(e,t){m.rgbGamma=t.value}}),v.find("#sldRGBContrast").slider({value:m.rgbContrast,min:-1,max:1,step:.01,slide:function(e,t){m.rgbContrast=t.value}}),v.find("#sldRGBBrightness").slider({value:m.rgbBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.rgbBrightness=t.value}}),v.find("#sldExtraGamma").slider({value:m.extraGamma,min:0,max:4,step:.01,slide:function(e,t){m.extraGamma=t.value}}),v.find("#sldExtraBrightness").slider({value:m.extraBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.extraBrightness=t.value}}),v.find("#sldExtraContrast").slider({value:m.extraContrast,min:-1,max:1,step:.01,slide:function(e,t){m.extraContrast=t.value}}),v.find("#sldHeightRange").slider({range:!0,min:0,max:1e3,step:.01,values:[0,1e3],slide:function(e,t){m.heightMin=t.values[0],m.heightMax=t.values[1]}}),v.find("#sldIntensityGamma").slider({value:m.intensityGamma,min:0,max:4,step:.01,slide:function(e,t){m.intensityGamma=t.value}}),v.find("#sldIntensityContrast").slider({value:m.intensityContrast,min:-1,max:1,step:.01,slide:function(e,t){m.intensityContrast=t.value}}),v.find("#sldIntensityBrightness").slider({value:m.intensityBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.intensityBrightness=t.value}}),v.find("#sldWeightRGB").slider({value:m.weightRGB,min:0,max:1,step:.01,slide:function(e,t){m.weightRGB=t.value}}),v.find("#sldWeightIntensity").slider({value:m.weightIntensity,min:0,max:1,step:.01,slide:function(e,t){m.weightIntensity=t.value}}),v.find("#sldWeightElevation").slider({value:m.weightElevation,min:0,max:1,step:.01,slide:function(e,t){m.weightElevation=t.value}}),v.find("#sldWeightClassification").slider({value:m.weightClassification,min:0,max:1,step:.01,slide:function(e,t){m.weightClassification=t.value}}),v.find("#sldWeightReturnNumber").slider({value:m.weightReturnNumber,min:0,max:1,step:.01,slide:function(e,t){m.weightReturnNumber=t.value}}),v.find("#sldWeightSourceID").slider({value:m.weightSourceID,min:0,max:1,step:.01,slide:function(e,t){m.weightSourceID=t.value}}),v.find("#materials\\.color\\.picker").spectrum({flat:!0,showInput:!0,preferredFormat:"rgb",cancelText:"",chooseText:"Apply",color:"#".concat(m.color.getHexString()),move:function(e){e=e.toRgb(),e=(new Se).setRGB(e.r/255,e.g/255,e.b/255);m.color=e},change:function(e){e=e.toRgb(),e=(new Se).setRGB(e.r/255,e.g/255,e.b/255);m.color=e}}),this.addVolatileListener(m,"color_changed",function(){v.find("#materials\\.color\\.picker").spectrum("set","#".concat(m.color.getHexString()))});function I(){var e,t=f.getAttribute("position"),n=(t=t?(e=(n=t.range[0][2])-.2*(n=(t=t.range[1][2])-n),t+.2*n):(t=[f.pcoGeometry.tightBoundingBox,f.getBoundingBoxWorld()].find(function(e){return void 0!==e}),f.updateMatrixWorld(!0),n=(t=ne.computeTransformedBoundingBox(t,f.matrixWorld)).max.z-t.min.z,e=t.min.z-.2*n,t.max.z+.2*n),m.elevationRange);v.find("#lblHeightRange").html("".concat(n[0].toFixed(2)," to ").concat(n[1].toFixed(2))),v.find("#sldHeightRange").slider({min:e,max:t,values:n})}function k(){var e=m.activeAttributeName,t=f.getAttribute(e);null!=t&&"number"==typeof(e=null==(e=m.getRange(e))?t.range:e)[0]&&"number"==typeof e[1]&&(e?(t="".concat(e[0].toFixed(2)," to ").concat(e[1].toFixed(2)),v.find("#lblExtraRange").html(t)):v.find("could not deduce range"))}function R(){var e=m.intensityGamma,t=m.intensityContrast,n=m.intensityBrightness;O(),v.find("#lblIntensityGamma").html(e.toFixed(2)),v.find("#lblIntensityContrast").html(t.toFixed(2)),v.find("#lblIntensityBrightness").html(n.toFixed(2)),v.find("#sldIntensityGamma").slider({value:e}),v.find("#sldIntensityContrast").slider({value:t}),v.find("#sldIntensityBrightness").slider({value:n})}function L(){var e=m.rgbGamma,t=m.rgbContrast,n=m.rgbBrightness;v.find("#lblRGBGamma").html(e.toFixed(2)),v.find("#lblRGBContrast").html(t.toFixed(2)),v.find("#lblRGBBrightness").html(n.toFixed(2)),v.find("#sldRGBGamma").slider({value:e}),v.find("#sldRGBContrast").slider({value:t}),v.find("#sldRGBBrightness").slider({value:n})}var O=function(){var e=m.intensityRange;v.find("#lblIntensityRange").html("".concat(parseInt(e[0])," to ").concat(parseInt(e[1])))},d=(I(),v.find("#sldHeightRange").slider("option","min"),v.find("#sldHeightRange").slider("option","max"),v.find("#gradient_repeat_option")),c=(d.selectgroup({title:"Gradient"}),d.find("input").click(function(e){a.viewer.setElevationGradientRepeat(Sm[e.target.value])}),Object.keys(Sm).filter(function(e){return Sm[e]===a.viewer.elevationGradientRepeat}));d.find("input[value=".concat(c,"]")).trigger("click");this.addVolatileListener(m,"material_property_changed",k),this.addVolatileListener(m,"material_property_changed",I),this.addVolatileListener(m,"material_property_changed",R),this.addVolatileListener(m,"material_property_changed",L),k(),I(),R(),L()}},{key:"setMeasurement",value:function(e){var t={DISTANCE:{panel:z1},AREA:{panel:H1},POINT:{panel:G1},ANGLE:{panel:V1},HEIGHT:{panel:j1},PROFILE:{panel:J1},VOLUME:{panel:W1},CIRCLE:{panel:Q1},OTHER:{panel:G1}},n=new((n=e)instanceof im?!n.showDistances||n.showArea||n.showAngles?n.showDistances&&n.showArea&&!n.showAngles?t.AREA:1===n.maxMarkers?t.POINT:n.showDistances||n.showArea||!n.showAngles?n.showHeight?t.HEIGHT:n.showCircle?t.CIRCLE:t.OTHER:t.ANGLE:t.DISTANCE:n instanceof If?t.PROFILE:n instanceof _f?t.VOLUME:void 0).panel(this.viewer,e,this);this.container.append(n.elContent)}},{key:"setCamera",value:function(e){var t=new q1(this.viewer,this);this.container.append(t.elContent)}},{key:"setAnnotation",value:function(e){e=new Y1(this.viewer,this,e);this.container.append(e.elContent)}},{key:"setCameraAnimation",value:function(e){e=new X1(this.viewer,this,e);this.container.append(e.elContent)}}])}();function Z1(e){for(var e=e.toFixed(3),t=(e=(e+="").split("."))[0],e=1<e.length?"."+e[1]:"",n=/(\d+)(\d{3})/;n.test(t);)t=t.replace(n,"$1,$2");return t+e}var $1=function(){return A(function e(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(ue(this,e),this.element=document.createElement("div"),this.labels=[],this.sliders=[],this.range=null!=t.range?t.range:[0,1],this.slide=null!=t.slide?t.slide:null,this.step=null!=t.step?t.step:1e-4,null!=t.levels?t.levels:1),i=0;i<n;i++)this.addLevel()},[{key:"setRange",value:function(e){this.range=Fe(e);var t=this.sliders[0];$(t).slider({min:e[0],max:e[1]});for(var n=1;n<this.sliders.length;n++){var i=this.sliders[n-1],r=this.sliders[n],i=Fe($(i).slider("option","values"));$(r).slider({min:i[0],max:i[1]})}this.updateLabels()}},{key:"setValues",value:function(e){var t,n=q(this.sliders);try{for(n.s();!(t=n.n()).done;){var i=t.value;$(i).slider({values:Fe(e)})}}catch(e){n.e(e)}finally{n.f()}this.updateLabels()}},{key:"addLevel",value:function(){var e,o=this,t=document.createElement("li"),n=document.createTextNode("Range: "),i=document.createElement("span"),r=document.createElement("div"),s=this.sliders.length,a=0,l=0;l=(0===this.sliders.length?(a=(e=U(this.range,2))[0],e):(e=this.sliders[this.sliders.length-1],a=(e=U($(e).slider("option","values"),2))[0],e))[1],$(r).slider({range:!0,min:a,max:l,step:this.step,values:[a,l],slide:function(e,t){for(var n,i=o.sliders.length,r=s+1;r<i;r++){var a=o.sliders[r];$(a).slider({range:!0,min:t.values[0],max:t.values[1],values:Fe(t.values)})}o.slide&&(n=Fe(t.values),o.slide({target:o,range:o.range,values:n})),o.updateLabels()}}),t.append(n,i,r),this.sliders.push(r),this.labels.push(i),this.element.append(t),this.updateLabels()}},{key:"removeLevel",value:function(){}},{key:"updateSliders",value:function(){}},{key:"updateLabels",value:function(){for(var e=this.sliders.length,t=0;t<e;t++){var n=this.sliders[t],i=this.labels[t],n=U($(n).slider("option","values"),2),r=n[0],n=n[1],r=Z1(r),n=Z1(n),r="".concat(r," to ").concat(n);i.innerHTML=r}}}])}(),eb=function(){function e(t){var n;ue(this,e),(n=le(this,e)).viewer=t,n.renderer=t.renderer,n.originalCam=t.scene.getActiveCamera(),n.shearCam=t.scene.getActiveCamera().clone(),n.shearCam.rotation.set(n.originalCam.rotation.toArray()),n.shearCam.updateProjectionMatrix(),n.shearCam.updateProjectionMatrix=function(){return n.shearCam.projectionMatrix},n.image=null,n.fadeFactor=20,n.fovDelta=0,n.fovMin=.1,n.fovMax=120,n.shear=[0,0],n.elUp=$('<input type="button" value="🡅" style="position: absolute; top: 10px; left: calc(50%); z-index: 1000" />'),n.elRight=$('<input type="button" value="🡆" style="position: absolute; top: calc(50%); right: 10px; z-index: 1000" />'),n.elDown=$('<input type="button" value="🡇" style="position: absolute; bottom: 10px; left: calc(50%); z-index: 1000" />'),n.elLeft=$('<input type="button" value="🡄" style="position: absolute; top: calc(50%); left: 10px; z-index: 1000" />'),n.elExit=$('<input type="button" value="Back to 3D view" style="position: absolute; bottom: 10px; right: 10px; z-index: 1000" />'),n.elExit.click(function(){n.release()}),n.elUp.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[1]+=.1*e}),n.elRight.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[0]+=.1*e}),n.elDown.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[1]-=.1*e}),n.elLeft.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[0]-=.1*e}),n.scene=null,n.sceneControls=new Fs;return n.addEventListener("mousewheel",function(e){n.fovDelta+=-e.delta}),n}return v(e,mm),A(e,[{key:"hasSomethingCaptured",value:function(){return null!==this.image}},{key:"capture",value:function(e){this.hasSomethingCaptured()||(this.image=e,this.originalFOV=this.viewer.getFOV(),this.originalControls=this.viewer.getControls(),this.viewer.setControls(this),this.viewer.scene.overrideCamera=this.shearCam,e=this.viewer.renderer.domElement,e=$(e.parentElement),this.shear=[0,0],e.append(this.elUp),e.append(this.elRight),e.append(this.elDown),e.append(this.elLeft),e.append(this.elExit))}},{key:"release",value:function(){this.image=null,this.viewer.scene.overrideCamera=null,this.elUp.detach(),this.elRight.detach(),this.elDown.detach(),this.elLeft.detach(),this.elExit.detach(),this.viewer.setFOV(this.originalFOV),this.viewer.setControls(this.originalControls)}},{key:"setScene",value:function(e){this.scene=e}},{key:"update",value:function(e){var t=this.viewer.getFOV(),n=t*(1+ +this.fovDelta/10),n=Math.max(this.fovMin,n),t=(n=Math.min(this.fovMax,n))/t,i=this.viewer.inputHandler.mouse,r=this.viewer.renderer.getSize(new Re),i=[i.x/r.x,(r.y-i.y)/r.y],r=r.x/r.y,a=2*Math.tan(Be.degToRad(n/2)),r=r*a,r=[this.shear[0]-.5*r,this.shear[0]+.5*r],a=[this.shear[1]-.5*a,this.shear[1]+.5*a],t=1-t,r=[(1-t)*this.shear[0]+t*((1-i[0])*r[0]+i[0]*r[1]),(1-t)*this.shear[1]+t*((1-i[1])*a[0]+i[1]*a[1])],t=(this.shear=r,this.viewer.setFOV(n),this.originalCam),i=this.shearCam,r=(t.fov=n,t.updateMatrixWorld(),t.updateProjectionMatrix(),i.copy(t),(a=i.rotation).set.apply(a,Fe(t.rotation.toArray())),i.updateMatrixWorld(),i.projectionMatrix.copy(t.projectionMatrix),U(this.shear,2)),n=r[0],a=r[1],t=(new Me).set(1,0,n,0,0,1,a,0,0,0,1,0,0,0,0,1),r=i.projectionMatrix;r.multiply(t),i.projectionMatrixInverse.copy(r).invert(),i.projectionMatrix.elements.reduce(function(e,t){return e+t},0);this.fovDelta*=0}}])}();var tb,nb,ib,rb,ab,ob,sb,lb,ub,cb,db,hb,pb,fb,mb=new Nu(1,1),vb=new Wl,gb=(vb.vertices.push(new Oe(-.5,-.5,0),new Oe(.5,-.5,0),new Oe(.5,.5,0),new Oe(-.5,.5,0),new Oe(-.5,-.5,0)),function(){return A(function e(t){ue(this,e),this.id=t,this.fov=1,this.position=new Oe,this.rotation=new Oe,this.width=0,this.height=0,this.fov=1;(t=new ga({uniforms:{tColor:{value:new Zn},uNear:{value:0},uOpacity:{value:1}},vertexShader:"\n\tuniform float uNear;\n\tvarying vec2 vUV;\n\tvarying vec4 vDebug;\n\t\n\tvoid main(){\n\t\tvDebug = vec4(0.0, 1.0, 0.0, 1.0);\n\t\tvec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\n\t\t// make sure that this mesh is at least in front of the near plane\n\t\tmodelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear;\n\t\tgl_Position = projectionMatrix * modelViewPosition;\n\t\tvUV = uv;\n\t}\n\t",fragmentShader:"\n\tuniform sampler2D tColor;\n\tuniform float uOpacity;\n\tvarying vec2 vUV;\n\tvarying vec4 vDebug;\n\tvoid main(){\n\t\tvec4 color = texture2D(tColor, vUV);\n\t\tgl_FragColor = color;\n\t\tgl_FragColor.a = uOpacity;\n\t}\n\t",side:ve})).side=ve;var n=new wl({color:65280});this.mesh=new Q(mb,t),this.line=new Ml(vb,n),this.texture=null,this.mesh.orientedImage=this},[{key:"set",value:function(e,t,n,i){var t=t.map(Be.degToRad),r=((r=this.position).set.apply(r,Fe(e)),(r=this.mesh.position).set.apply(r,Fe(e)),(r=this.rotation).set.apply(r,Fe(t)),(e=this.mesh.rotation).set.apply(e,Fe(t)),U(n,2));this.width=r[0],this.height=r[1],this.mesh.scale.set(this.width/this.height,1,1),this.fov=i,this.updateTransform()}},{key:"updateTransform",value:function(){var e=this.mesh,t=this.line,n=this.fov,i=(e.updateMatrixWorld(),e.getWorldDirection()),n=Be.degToRad(n/2),n=-.5/Math.tan(n),i=i.clone().multiplyScalar(n);e.position.add(i),t.position.copy(e.position),t.scale.copy(e.scale),t.rotation.copy(e.rotation)}}])}()),Ab=function(){function t(){var e;return ue(this,t),(e=le(this,t)).node=null,e.cameraParams=null,e.imageParams=null,e.images=null,e._visible=!0,e}return v(t,mm),A(t,[{key:"visible",get:function(){return this._visible},set:function(e){if(this._visible!==e){var t,n=q(this.images);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.mesh.visible=e,i.line.visible=e}}catch(e){n.e(e)}finally{n.f()}this._visible=e,this.dispatchEvent({type:"visibility_changed",images:this})}}}])}(),Lh=function(){function D(){ue(this,D)}return A(D,null,[{key:"loadCameraParams",value:(n=J(X().mark(function e(t){var n,i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return n=e.sent,e.next=5,n.text();case 5:return n=e.sent,r=new DOMParser,r=r.parseFromString(n,"application/xml"),o=parseInt(r.getElementsByTagName("width")[0].textContent),i=parseInt(r.getElementsByTagName("height")[0].textContent),r=parseFloat(r.getElementsByTagName("f")[0].textContent),a=i/2/r,a=2*Be.radToDeg(Math.atan(a)),o={path:t,width:o,height:i,f:r,fov:a},e.abrupt("return",o);case 15:case"end":return e.stop()}},e)})),function(e){return n.apply(this,arguments)})},{key:"loadImageParams",value:(t=J(X().mark(function e(t){var n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if((n=e.sent).ok){e.next=6;break}return console.error("failed to load ".concat(t)),e.abrupt("return");case 6:return e.next=8,n.text();case 8:i=e.sent,i=i.split(/\r?\n/),r=[],a=1;case 12:if(a<i.length){if((o=i[a]).startsWith("#"))return e.abrupt("continue",21);e.next=16}else e.next=24;break;case 16:if((s=o.split(/\s+/)).length<6)return e.abrupt("continue",21);e.next=19;break;case 19:l={id:s[0],x:Number.parseFloat(s[1]),y:Number.parseFloat(s[2]),z:Number.parseFloat(s[3]),omega:Number.parseFloat(s[4]),phi:Number.parseFloat(s[5]),kappa:Number.parseFloat(s[6])},r.push(l);case 21:a++,e.next=12;break;case 24:return e.abrupt("return",r);case 25:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})},{key:"load",value:(i=J(X().mark(function e(t,a,s){var n,o,i,l,u,r,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=performance.now(),e.next=3,Promise.all([D.loadCameraParams(t),D.loadImageParams(a)]);case 3:i=e.sent,i=U(i,2),o=i[0],i=i[1],l=new eb(s),u=new bh,P=performance.now(),console.log(P-n),r=o.width,c=o.height,d=[],(h=new Z).name="oriented_images",p=q(i);try{for(p.s();!(f=p.n()).done;)m=f.value,v=m.x,g=m.y,A=m.z,y=m.omega,w=m.phi,b=m.kappa,x=new gb(m.id),E=[v,g,A],C=[y,w,b],B=[r,c],x.set(E,C,B,o.fov),h.add(x.mesh),h.add(x.line),d.push(x)}catch(e){p.e(e)}finally{p.f()}return S=M=null,P=function(e){performance.now();M&&M.line.material.color.setRGB(0,1,0),e.preventDefault();var t,n,i=s.renderer.domElement.getBoundingClientRect(),e=[e.clientX,e.clientY],e=[(e[0]-i.left)/i.width,(e[1]-i.top)/i.height],i=ie(Re,e),e=s.scene.getActiveCamera(),i=new Oe(2*i.x-1,-2*i.y+1),r=d.map(function(e){return e.mesh}),i=(u.setFromCamera(i,e),u.intersectObjects(r)),e=!1,i=(M=0<i.length?((r=i[0].object.orientedImage).line.material.color.setRGB(1,0,0),e=M!==r,r):null,null===S&&null!==M);null===S||null!==M&&!e||(s.scene.removePolygonClipVolume(S),S=null),(i||e)&&(r=M,(e=new ya(i=o.fov,o.width/o.height,1,1e6)).rotation.order=s.scene.getActiveCamera().rotation.order,e.rotation.copy(r.mesh.rotation),t=(r=r.mesh).getWorldDirection(),r=r.position,i=Be.degToRad(i/2),i=.5/Math.tan(i),t=r.clone().add(t.clone().multiplyScalar(i)),i=r.clone().sub(t),(new Oe).addVectors(t,i.clone().multiplyScalar(s.getMoveSpeed())),e.position.copy(t),r=new Potree.PolygonClipVolume(e),i=new Q,t=new Q,e=new Q,n=new Q,i.position.set(-1,-1,0),t.position.set(1,-1,0),e.position.set(1,1,0),n.position.set(-1,1,0),r.markers.push(i,t,e,n),r.initialized=!0,s.scene.addPolygonClipVolume(r),S=r),performance.now()},T=function(e){console.log("move to image "+e.id);var t,n=e.mesh,i=e.position.clone(),r=n.position.clone();s.scene.view.setView(i,r,500,function(){l.capture(e)}),null===e.texture&&(t=e,i="".concat(Potree.resourcePath,"/images/loading.jpg"),(new Gc).load(i,function(e){null===t.texture&&(t.texture=e,t.mesh.material.uniforms.tColor.value=e,n.material.needsUpdate=!0)}),r="".concat(a,"/../").concat(t.id),(new Gc).load(r,function(e){t.texture=e,t.mesh.material.uniforms.tColor.value=e,n.material.needsUpdate=!0}))},_=function(e){l.hasSomethingCaptured()||M&&T(M)},s.renderer.domElement.addEventListener("mousemove",P,!1),s.renderer.domElement.addEventListener("mousedown",_,!1),s.addEventListener("update",function(){for(var e=0,t=d;e<t.length;e++){var n=t[e],i=(n.mesh.matrixWorld,n.width/n.height),r=s.scene.getActiveCamera(),a=n.mesh.getWorldPosition(new Oe),a=r.position.distanceTo(a),o=Be.degToRad(1),a=a*Math.tan(o),a=Math.max(a,1);n.mesh.scale.set(a*i,a,1),n.line.scale.set(a*i,a,1),n.mesh.material.uniforms.uNear.value=r.near}}),(P=new Ab).node=h,P.cameraParamsPath=t,P.imageParamsPath=a,P.cameraParams=o,P.imageParams=i,P.images=d,Potree.debug.moveToImage=T,e.abrupt("return",P);case 34:case"end":return e.stop()}},e)})),function(e,t,n){return i.apply(this,arguments)})}]);var i,t,n}(),yb={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},wb={isSpaceSeparator:function(e){return"string"==typeof e&&yb.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&("a"<=e&&e<="z"||"A"<=e&&e<="Z"||"$"===e||"_"===e||yb.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&("a"<=e&&e<="z"||"A"<=e&&e<="Z"||"0"<=e&&e<="9"||"$"===e||"_"===e||""===e||""===e||yb.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};function bb(){if(tb[rb])return String.fromCodePoint(tb.codePointAt(rb))}function r(){var e=bb();return"\n"===e?(ab++,ob=0):e?ob+=e.length:ob++,e&&(rb+=e.length),e}var xb={default:function(){switch(fb){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void r();case"/":return r(),void(cb="comment");case void 0:return r(),Eb("eof")}if(!wb.isSpaceSeparator(fb))return xb[nb]();r()},comment:function(){switch(fb){case"*":return r(),void(cb="multiLineComment");case"/":return r(),void(cb="singleLineComment")}throw _b(r())},multiLineComment:function(){switch(fb){case"*":return r(),void(cb="multiLineCommentAsterisk");case void 0:throw _b(r())}r()},multiLineCommentAsterisk:function(){switch(fb){case"*":return void r();case"/":return r(),void(cb="default");case void 0:throw _b(r())}r(),cb="multiLineComment"},singleLineComment:function(){switch(fb){case"\n":case"\r":case"\u2028":case"\u2029":return r(),void(cb="default");case void 0:return r(),Eb("eof")}r()},value:function(){switch(fb){case"{":case"[":return Eb("punctuator",r());case"n":return r(),Cb("ull"),Eb("null",null);case"t":return r(),Cb("rue"),Eb("boolean",!0);case"f":return r(),Cb("alse"),Eb("boolean",!1);case"-":case"+":return"-"===r()&&(pb=-1),void(cb="sign");case".":return db=r(),void(cb="decimalPointLeading");case"0":return db=r(),void(cb="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return db=r(),void(cb="decimalInteger");case"I":return r(),Cb("nfinity"),Eb("numeric",1/0);case"N":return r(),Cb("aN"),Eb("numeric",NaN);case'"':case"'":return hb='"'===r(),db="",void(cb="string")}throw _b(r())},identifierNameStartEscape:function(){if("u"!==fb)throw _b(r());r();var e=Bb();switch(e){case"$":case"_":break;default:if(wb.isIdStartChar(e))break;throw Db()}db+=e,cb="identifierName"},identifierName:function(){switch(fb){case"$":case"_":case"":case"":return void(db+=r());case"\\":return r(),void(cb="identifierNameEscape")}if(!wb.isIdContinueChar(fb))return Eb("identifier",db);db+=r()},identifierNameEscape:function(){if("u"!==fb)throw _b(r());r();var e=Bb();switch(e){case"$":case"_":case"":case"":break;default:if(wb.isIdContinueChar(e))break;throw Db()}db+=e,cb="identifierName"},sign:function(){switch(fb){case".":return db=r(),void(cb="decimalPointLeading");case"0":return db=r(),void(cb="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return db=r(),void(cb="decimalInteger");case"I":return r(),Cb("nfinity"),Eb("numeric",pb*(1/0));case"N":return r(),Cb("aN"),Eb("numeric",NaN)}throw _b(r())},zero:function(){switch(fb){case".":return db+=r(),void(cb="decimalPoint");case"e":case"E":return db+=r(),void(cb="decimalExponent");case"x":case"X":return db+=r(),void(cb="hexadecimal")}return Eb("numeric",0*pb)},decimalInteger:function(){switch(fb){case".":return db+=r(),void(cb="decimalPoint");case"e":case"E":return db+=r(),void(cb="decimalExponent")}if(!wb.isDigit(fb))return Eb("numeric",pb*Number(db));db+=r()},decimalPointLeading:function(){if(!wb.isDigit(fb))throw _b(r());db+=r(),cb="decimalFraction"},decimalPoint:function(){switch(fb){case"e":case"E":return db+=r(),void(cb="decimalExponent")}if(!wb.isDigit(fb))return Eb("numeric",pb*Number(db));db+=r(),cb="decimalFraction"},decimalFraction:function(){switch(fb){case"e":case"E":return db+=r(),void(cb="decimalExponent")}if(!wb.isDigit(fb))return Eb("numeric",pb*Number(db));db+=r()},decimalExponent:function(){switch(fb){case"+":case"-":return db+=r(),void(cb="decimalExponentSign")}if(!wb.isDigit(fb))throw _b(r());db+=r(),cb="decimalExponentInteger"},decimalExponentSign:function(){if(!wb.isDigit(fb))throw _b(r());db+=r(),cb="decimalExponentInteger"},decimalExponentInteger:function(){if(!wb.isDigit(fb))return Eb("numeric",pb*Number(db));db+=r()},hexadecimal:function(){if(!wb.isHexDigit(fb))throw _b(r());db+=r(),cb="hexadecimalInteger"},hexadecimalInteger:function(){if(!wb.isHexDigit(fb))return Eb("numeric",pb*Number(db));db+=r()},string:function(){switch(fb){case"\\":return r(),void(db+=function(){switch(bb()){case"b":return r(),"\b";case"f":return r(),"\f";case"n":return r(),"\n";case"r":return r(),"\r";case"t":return r(),"\t";case"v":return r(),"\v";case"0":if(r(),wb.isDigit(bb()))throw _b(r());return"\0";case"x":return r(),function(){var e="",t=bb();if(wb.isHexDigit(t)&&(e+=r(),t=bb(),wb.isHexDigit(t)))return e+=r(),String.fromCodePoint(parseInt(e,16));throw _b(r())}();case"u":return r(),Bb();case"\n":case"\u2028":case"\u2029":return r(),"";case"\r":return r(),"\n"===bb()&&r(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw _b(r())}return r()}());case'"':return hb?(r(),Eb("string",db)):void(db+=r());case"'":return hb?void(db+=r()):(r(),Eb("string",db));case"\n":case"\r":throw _b(r());case"\u2028":case"\u2029":e=fb,console.warn("JSON5: '".concat(Ib(e),"' in strings is not valid ECMAScript; consider escaping"));break;case void 0:throw _b(r())}var e;db+=r()},start:function(){switch(fb){case"{":case"[":return Eb("punctuator",r())}cb="value"},beforePropertyName:function(){switch(fb){case"$":case"_":return db=r(),void(cb="identifierName");case"\\":return r(),void(cb="identifierNameStartEscape");case"}":return Eb("punctuator",r());case'"':case"'":return hb='"'===r(),void(cb="string")}if(!wb.isIdStartChar(fb))throw _b(r());db+=r(),cb="identifierName"},afterPropertyName:function(){if(":"===fb)return Eb("punctuator",r());throw _b(r())},beforePropertyValue:function(){cb="value"},afterPropertyValue:function(){switch(fb){case",":case"}":return Eb("punctuator",r())}throw _b(r())},beforeArrayValue:function(){if("]"===fb)return Eb("punctuator",r());cb="value"},afterArrayValue:function(){switch(fb){case",":case"]":return Eb("punctuator",r())}throw _b(r())},end:function(){throw _b(r())}};function Eb(e,t){return{type:e,value:t,line:ab,column:ob}}function Cb(e){var t,n=q(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(bb()!==i)throw _b(r());r()}}catch(e){n.e(e)}finally{n.f()}}function Bb(){for(var e="",t=4;0<t--;){var n=bb();if(!wb.isHexDigit(n))throw _b(r());e+=r()}return String.fromCodePoint(parseInt(e,16))}var Mb={start:function(){if("eof"===sb.type)throw Pb();Sb()},beforePropertyName:function(){switch(sb.type){case"identifier":case"string":return lb=sb.value,void(nb="afterPropertyName");case"punctuator":return void Tb();case"eof":throw Pb()}},afterPropertyName:function(){if("eof"===sb.type)throw Pb();nb="beforePropertyValue"},beforePropertyValue:function(){if("eof"===sb.type)throw Pb();Sb()},beforeArrayValue:function(){if("eof"===sb.type)throw Pb();("punctuator"===sb.type&&"]"===sb.value?Tb:Sb)()},afterPropertyValue:function(){if("eof"===sb.type)throw Pb();switch(sb.value){case",":return void(nb="beforePropertyName");case"}":Tb()}},afterArrayValue:function(){if("eof"===sb.type)throw Pb();switch(sb.value){case",":return void(nb="beforeArrayValue");case"]":Tb()}},end:function(){}};function Sb(){var e,t;switch(sb.type){case"punctuator":switch(sb.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=sb.value}void 0===ub?ub=e:(t=ib[ib.length-1],Array.isArray(t)?t.push(e):t[lb]=e),nb=null!==e&&"object"===O(e)?(ib.push(e),Array.isArray(e)?"beforeArrayValue":"beforePropertyName"):null==(t=ib[ib.length-1])?"end":Array.isArray(t)?"afterArrayValue":"afterPropertyValue"}function Tb(){ib.pop();var e=ib[ib.length-1];nb=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function _b(e){return kb((void 0===e?"JSON5: invalid end of input at ":"JSON5: invalid character '".concat(Ib(e),"' at ")).concat(ab,":").concat(ob))}function Pb(){return kb("JSON5: invalid end of input at ".concat(ab,":").concat(ob))}function Db(){return ob-=5,kb("JSON5: invalid identifier character at ".concat(ab,":").concat(ob))}function Ib(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};return t[e]||(e<" "?"\\x"+("00"+(t=e.charCodeAt(0).toString(16))).substring(t.length):e)}function kb(e){e=new SyntaxError(e);return e.lineNumber=ab,e.columnNumber=ob,e}var Rb,Lb={parse:function(e,t){for(tb=String(e),nb="start",ib=[],ab=1,ub=lb=sb=void(ob=rb=0);sb=function(){for(cb="default",db="",hb=!1,pb=1;;){fb=bb();var e=xb[cb]();if(e)return e}}(),Mb[nb](),"eof"!==sb.type;);return"function"==typeof t?function e(t,n,i){var r=t[n];if(null!=r&&"object"===O(r))for(var a in r){var o=e(r,a,i);void 0===o?delete r[a]:r[a]=o}return i.call(t,n,r)}({"":ub},"",t):ub},stringify:function(e,t,n){var i,l,c=[],d="",h="";if(null==t||"object"!==O(t)||Array.isArray(t)||(n=t.space,l=t.quote,t=t.replacer),"function"==typeof t)i=t;else if(Array.isArray(t)){var r,p=[],a=q(t);try{for(a.s();!(r=a.n()).done;){var o=r.value,s=void 0;"string"==typeof o?s=o:("number"==typeof o||o instanceof String||o instanceof Number)&&(s=String(o)),void 0!==s&&p.indexOf(s)<0&&p.push(s)}}catch(e){a.e(e)}finally{a.f()}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),"number"==typeof n?0<n&&(n=Math.min(10,Math.floor(n)),h=" ".substr(0,n)):"string"==typeof n&&(h=n.substr(0,10)),f("",{"":e});function f(e,t){var n=t[e];switch(null!=n&&("function"==typeof n.toJSON5?n=n.toJSON5(e):"function"==typeof n.toJSON&&(n=n.toJSON(e))),(n=i?i.call(t,e,n):n)instanceof Number?n=Number(n):n instanceof String?n=String(n):n instanceof Boolean&&(n=n.valueOf()),n){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof n?m(n):"number"==typeof n?String(n):"object"===O(n)?(Array.isArray(n)?function(e){if(0<=c.indexOf(e))throw TypeError("Converting circular structure to JSON5");c.push(e);for(var t=d,n=(d+=h,[]),i=0;i<e.length;i++){var r=f(String(i),e);n.push(void 0!==r?r:"null")}{var a;a=0===n.length?"[]":""===h?"["+n.join(",")+"]":(a=",\n"+d,a=n.join(a),"[\n"+d+a+",\n"+t+"]")}return c.pop(),d=t,a}:function(e){if(0<=c.indexOf(e))throw TypeError("Converting circular structure to JSON5");c.push(e);var t,n,i=d,r=(d+=h,p||Object.keys(e)),a=[],o=q(r);try{for(o.s();!(t=o.n()).done;){var s,l=t.value,u=f(l,e);void 0!==u&&(s=function(e){if(0===e.length)return m(e);var t=String.fromCodePoint(e.codePointAt(0));if(!wb.isIdStartChar(t))return m(e);for(var n=t.length;n<e.length;n++)if(!wb.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return m(e);return e}(l)+":",""!==h&&(s+=" "),a.push(s+=u))}}catch(e){o.e(e)}finally{o.f()}r=0===a.length?"{}":""===h?"{"+(n=a.join(","))+"}":(r=",\n"+d,n=a.join(r),"{\n"+d+n+",\n"+i+"}");return c.pop(),d=i,r})(n):void 0}function m(e){for(var n={"'":.1,'"':.2},t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},i="",r=0;r<e.length;r++){var a,o=e[r];switch(o){case"'":case'"':n[o]++,i+=o;continue;case"\0":if(wb.isDigit(e[r+1])){i+="\\x00";continue}}t[o]?i+=t[o]:i+=o<" "?"\\x"+("00"+(a=o.charCodeAt(0).toString(16))).substring(a.length):o}var s=l||Object.keys(n).reduce(function(e,t){return n[e]<n[t]?e:t});return s+(i=i.replace(new RegExp(s,"g"),t[s]))+s}}},Fb=function(){return A(function e(t){ue(this,e),this.viewer=t,this.measuringTool=t.measuringTool,this.profileTool=t.profileTool,this.volumeTool=t.volumeTool,this.dom=$("#sidebar_root")},[{key:"createToolIcon",value:function(e,t,n){e=$('\n\t\t\t<img src="'.concat(e,'"\n\t\t\t\tstyle="width: 32px; height: 32px"\n\t\t\t\tclass="button-icon"\n\t\t\t\tdata-i18n="').concat(t,'" />\n\t\t'));return e.click(n),e}},{key:"init",value:function(){"merge"==Potree.settings.editType?(this.initMergeBar(),this.initToolbar(),this.initScene(),this.initNavigation()):(this.initAccordion(),this.initAppearance(),this.initToolbar(),this.initScene(),this.initNavigation(),this.initFilters(),this.initSettings(),"pano"!=Potree.settings.editType?(this.initAlignment(),this.initClipModel(),this.initSiteModel(),this.initParitcle(),this.initClippingModel()):this.initPanosEdit()),$("#potree_version_number").html(Potree.version.major+"."+Potree.version.minor+Potree.version.suffix)}},{key:"initAlignment",value:function(){function e(n,i){return function(){var e=$('#alignment li[name="selectPointCloud"] input:checked');Array.from(e).forEach(function(t){var e=viewer.scene.pointclouds.find(function(e){return e.name==t.name});n(e,i)})}}var t=viewer.modules.Alignment,n=$("#alignment"),i=n.find('[name="transform"] button');i.eq(0).on("click",e(t.rotate,10)),i.eq(1).on("click",e(t.rotate,1)),i.eq(2).on("click",e(t.rotate,.1)),i.eq(3).on("click",e(t.rotate,-10)),i.eq(4).on("click",e(t.rotate,-1)),i.eq(5).on("click",e(t.rotate,-.1)),i.eq(6).on("click",e(t.translate,new Oe(-1,0,0))),i.eq(7).on("click",e(t.translate,new Oe(1,0,0))),i.eq(8).on("click",e(t.translate,new Oe(0,-1,0))),i.eq(9).on("click",e(t.translate,new Oe(0,1,0))),i.eq(10).on("click",e(t.translate,new Oe(0,0,-1))),i.eq(11).on("click",e(t.translate,new Oe(0,0,1))),n.find("#startAlignment").on("click",function(){t.enter()}),n.find("#exitAlignment").on("click",function(){t.save(),t.leave()}),n.find("#rotTool").on("click",function(){t.switchHandle("rotate")}),n.find("#moveTool").on("click",function(){t.switchHandle("translate")})}},{key:"initMergeBar",value:function(){var e=$("#mergeModel"),t=(e.find("button"),viewer.modules.MergeEditor),i=!1;e.find('ul[name="model"] li button').on("click",function(e){var t,n;return i?console.log("还在加载",i):(e=$(e.target),t=e.parent().attr("name"),"select"==e.attr("name")?Potree.selectModel(t):void("添加"==e.text()?(n=Date.now(),Potree.addModel(t,function(){i=!1;var e=Date.now();console.log("加载完毕",t,"用时",(e-n)/1e3,"s")}),i=t):(Potree.removeModel(t),e.text("添加"))))}),e.find('li button[name="splitScreen"]').on("click",function(e){e=$(e.target);"分屏"==e.text()?(e.text("恢复"),t.enterSplit()):(e.text("分屏"),t.leaveSplit())});e.find('li button[name="tag"]').on("click",function(e){$(e.target);viewer.tagTool.startInsertion()})}},{key:"initClippingModel",value:function(){var e=this,t=viewer.modules.clipping,n=$("#clipping"),i=n.find('[name="operation"] button[name="add"] '),r=n.find('[name="operation"] button[name="switchView"] '),a=n.find(' button[name="enter"] '),o=n.find(' button[name="exit"] '),s=n.find('[name="list"] ul ');a.on("click",function(){t.enter(),n.find("li[name=operation]").css("display","block"),n.find("li[name=list]").css("display","block")}),o.on("click",function(){t.leave(),n.find("li[name=operation]").css("display","none"),n.find("li[name=list]").css("display","none")}),r.on("click",function(){t.switchView("top"==t.activeViewName?"mainView":"top")}),n.find('[name="operation"] button[name="translation"] ').on("click",function(){t.setTranMode("translation")}),n.find('[name="operation"] button[name="rotation"] ').on("click",function(){t.setTranMode("rotation")}),n.find('[name="operation"] button[name="scale"] ').on("click",function(){t.setTranMode("scale")}),i.on("click",function(){var t=e.volumeTool.startInsertion({clip:!0,clipTask:Potree.ClipTask.SHOW_OUTSIDE}),n=$("<li><button name='changeTask'>不可见</button><button name='chose'>选择</button><button name='delete'>删除</button></li>");s.append(n),n.find("button[name=changeTask]").on("click",function(e){"不可见"==e.target.innerText?(t.clipTask=Potree.ClipTask.SHOW_INSIDE,e.target.innerText="可见"):(t.clipTask=Potree.ClipTask.SHOW_OUTSIDE,e.target.innerText="不可见"),t.update()}),n.find("button[name=chose]").on("click",function(e){viewer.transformObject(t)}),n.find("button[name=delete]").on("click",function(e){n.remove(),viewer.scene.removeVolume(t)})}),n.find("button[name=save]").on("click",function(e){t.saveClipData()})}},{key:"addAlignmentButton",value:function(e){var t=$('#alignment li[name="selectPointCloud"]>div'),e=$(' <input name="'.concat(e.name,'" class="editCheckbox" type="checkbox" >\n \n <label for="showingLabels">').concat(e.name,"</label>"));t.append(e)}},{key:"initClipModel",value:function(){var e=viewer.modules.Clip,t=$("#clipModel").find("button");t.eq(0).on("click",e.enter.bind(e)),t.eq(1).on("click",e.download.bind(e)),t.eq(2).on("click",e.leave.bind(e))}},{key:"initSiteModel",value:function(){var e=viewer.modules.SiteModel,t=$("#siteModel");t.find('button[name="start"] ').on("click",e.enter.bind(e)),t.find('button[name="exit"] ').on("click",e.leave.bind(e)),t.find('button[name="building"] ').on("click",e.startInsertion.bind(e,"building")),t.find('button[name="floor"] ').on("click",function(){e.addFloor(e.buildings[0],"top")}),t.find('button[name="room"] ').on("click",function(){e.startInsertion("room",e.buildings[0].buildChildren[0])}),t.find('button[name="digHole"] ').on("click",function(){e.selected&&e.startInsertion("hole",e.selected)}),t.find('button[name="selectBuilding"] ').on("click",function(){e.selectEntity(e.buildings[0])}),t.find('button[name="selectFloor"] ').on("click",function(){e.selectEntity(e.buildings[0].buildChildren[0])}),t.find('button[name="selectRoom"] ').on("click",function(){e.selectEntity(e.buildings[0].buildChildren[0].buildChildren[0])}),t.find('button[name="removeFirstBuilding"] ').on("click",function(){e.removeEntity(e.buildings[0])}),t.find('button[name="removeFirstFloor"] ').on("click",function(){e.removeEntity(e.buildings[0].buildChildren[0])}),t.find('button[name="removeFirstRoom"] ').on("click",function(){e.removeEntity(e.buildings[0].buildChildren[0].buildChildren[0])}),t.find('button[name="removeFirstHole"] ').on("click",function(){e.selected.removeHole(e.selected.holes[0])}),t.find('button[name="removeFirstMarker"] ').on("click",function(){e.selected.removeMarker(0)})}},{key:"initParitcle",value:function(){var e=viewer.modules.ParticleEditor,t=$("#particle");t.find('button[name="addFire"] ').on("click",function(){e.startInsertion("fire+smoke")}),t.find('button[name="addExplode"] ').on("click",function(){e.startInsertion("explode")})}},{key:"initPanosEdit",value:function(){var e=viewer.modules.PanoEditor,t=viewer.modules.Alignment,n=$("#panos");n.find('button[name="save"] ').on("click",function(){console.log("saveData",e.exportSavingData())}),n.find('button[name="translate"] ').on("click",function(){t.switchHandle("translate")}),n.find('button[name="rotate"] ').on("click",function(){t.switchHandle("rotate")}),n.find('button[name="topView"] ').on("click",function(){e.switchView("top")}),n.find('button[name="sideView"] ').on("click",function(){e.switchView("right")}),n.find('button[name="3DView"] ').on("click",function(){e.switchView("mainView")}),n.find('button[name="addLink"] ').on("click",function(){e.setLinkOperateState("addLink",!0)}),n.find('button[name="removeLink"] ').on("click",function(){e.setLinkOperateState("removeLink",!0)}),n.find('button[name="getCloser"] ').on("click",function(){e.setZoomInState(!0)})}},{key:"initToolbar",value:function(){var n=this,e=$("#tools"),e=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/angle.png","[title]tt.angle_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showAngles:!0,showArea:!1,closed:!0,maxMarkers:3,minMarkers:3,measureType:"Angle"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/point.svg","[title]tt.point_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showAngles:!1,showCoordinates:!0,showEdges:!1,showArea:!1,closed:!0,maxMarkers:1,minMarkers:1,measureType:"Point"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]tt.distance_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!1,closed:!1,minMarkers:2,maxMarkers:2,measureType:"Distance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!1,closed:!1,minMarkers:2,measureType:"MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]MulDistance Ring",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({closed:!0,minMarkers:3,measureType:"MulDistance Ring"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]Ver MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({measureType:"Ver MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]Hor MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({measureType:"Hor MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/height.svg","[title]tt.height_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showHeight:!0,showArea:!1,closed:!1,maxMarkers:2,minMarkers:2,measureType:"Ver Distance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/circle.svg","[title]tt.circle_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showHeight:!1,showArea:!1,showCircle:!0,showEdges:!1,closed:!1,maxMarkers:3,minMarkers:3,measureType:"Circle"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/azimuth.svg","Azimuth",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showHeight:!1,showArea:!1,showCircle:!1,showEdges:!1,showAzimuth:!0,closed:!1,maxMarkers:2,minMarkers:2,measureType:"Azimuth"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]tt.area_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]Hor Area",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Hor Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]Ver Area",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Ver Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_freedom_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,measureType:"Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_horizontal_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,faceDirection:"horizontal",measureType:"Hor Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_vertical_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,faceDirection:"vertical",measureType:"Ver Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]prism",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({measureType:"MulDistance Ring",unit:"metric"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/volume.svg","[title]tt.volume_measurement",function(){var t=n.volumeTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/sphere_distances.svg","[title]tt.volume_measurement",function(){var t=n.volumeTool.startInsertion({type:qy}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/profile.svg","[title]tt.height_profile",function(){$("#menu_measurements").next().slideDown();var t=n.profileTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/annotation.svg","[title]tt.annotation",function(){$("#menu_measurements").next().slideDown();var t=n.viewer.annotationTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("annotations").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/reset_tools.svg","[title]tt.remove_all_measurement",function(){n.viewer.scene.removeAllMeasurements()})),$("#measurement_options_show")),t=(e.selectgroup({title:"Show/Hide labels"}),e.find("input").click(function(e){e="SHOW"===e.target.value;n.measuringTool.showLabels=e}),this.measuringTool.showLabels?"SHOW":"HIDE");e.find("input[value=".concat(t,"]")).trigger("click")}},{key:"initScene",value:function(){function t(e){var t=e.pointcloud,e="".concat(Potree.resourcePath,"/icons/cloud.svg"),n=w(b,t.name,e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function n(e){var e=e.measurement,t=ne.getMeasurementIcon(e);w(x,e.name,t,e)}function i(e){var t=e.volume,e=ne.getMeasurementIcon(t),n=w(x,t.name,e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function r(e){var e=e.profile,t=ne.getMeasurementIcon(e);w(x,e.name,t,e)}function e(e){var e=e.animation,t="".concat(Potree.resourcePath,"/icons/camera_animation.svg");w(E,"animation",t,e)}function a(e){var t=e.images,e="".concat(Potree.resourcePath,"/icons/picture.svg"),n=w(C,"images",e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function o(e){var t=e.images,e="".concat(Potree.resourcePath,"/icons/picture.svg"),n=w(C,"360° images",e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function s(e){var t,e=e.geopackage,n="".concat(Potree.resourcePath,"/icons/triangle.svg"),i=$("#jstree_scene"),r=q(e.node.children);try{for(r.s();!(t=r.n()).done;){var a=t.value,o=a.name,s=i.jstree("create_node","vectors",{text:o,icon:n,object:a,data:a},"last",!1,!1);i.jstree(a.visible?"check_node":"uncheck_node",s)}}catch(e){r.e(e)}finally{r.f()}}function l(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.measurement.uuid});y.jstree("delete_node",e.id)}var u,c=this,d=$("#menu_scene"),F=d.next().find("#scene_objects"),O=d.next().find("#scene_object_properties"),d=d.next().find("#scene_export"),h="".concat(Potree.resourcePath,"/icons/file_geojson.svg"),p="".concat(Potree.resourcePath,"/icons/file_dxf.svg"),f="".concat(Potree.resourcePath,"/icons/file_potree.svg"),m=(d.append('\n\t\t\t\tExport: <br>\n\t\t\t\t<a href="#" download="measure.json"><img name="geojson_export_button" src="'.concat(h,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t\t<a href="#" download="measure.dxf"><img name="dxf_export_button" src="').concat(p,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t\t<a href="#" download="potree.json5"><img name="potree_export_button" src="').concat(f,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t')),d.find("img[name=geojson_export_button]").parent()),v=(m.click(function(e){var t=c.viewer.scene,t=[].concat(Fe(t.measurements),Fe(t.profiles),Fe(t.volumes));0<t.length?(t=P1.toString(t),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"})),m.attr("href",t)):(c.viewer.postError("nothing to export"),e.preventDefault())}),d.find("img[name=dxf_export_button]").parent()),g=(v.click(function(e){var t=c.viewer.scene,t=[].concat(Fe(t.measurements),Fe(t.profiles),Fe(t.volumes));0<t.length?(t=D1.toString(t),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"})),v.attr("href",t)):(c.viewer.postError("no measurements to export"),e.preventDefault())}),d.find("img[name=potree_export_button]").parent()),A=(g.click(function(e){var t=Potree.saveProject(c.viewer),t=Lb.stringify(t,null,"\t"),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"}));g.attr("href",t)}),new K1(O,this.viewer)),y=(A.setScene(this.viewer.scene),localStorage.removeItem("jstree"),$('<div id="jstree_scene"></div>')),w=(F.append(y),y.jstree({plugins:["checkbox","state"],core:{dblclick_toggle:!1,state:{checked:!0},check_callback:!0,expand_selected_onload:!0},checkbox:{keep_selected_style:!0,three_state:!1,whole_node:!1,tie_selection:!1}}),function(e,t,n,i){e=y.jstree("create_node",e,{text:t,icon:n,data:i},"last",!1,!1);return i.visible?y.jstree("check_node",e):y.jstree("uncheck_node",e),e}),b=y.jstree("create_node","#",{text:"<b>Point Clouds</b>",id:"pointclouds"},"last",!1,!1),x=y.jstree("create_node","#",{text:"<b>Measurements</b>",id:"measurements"},"last",!1,!1),h=y.jstree("create_node","#",{text:"<b>Annotations</b>",id:"annotations"},"last",!1,!1),E=y.jstree("create_node","#",{text:"<b>Other</b>",id:"other"},"last",!1,!1),p=y.jstree("create_node","#",{text:"<b>Vectors</b>",id:"vectors"},"last",!1,!1),C=y.jstree("create_node","#",{text:"<b> Images</b>",id:"images"},"last",!1,!1),U=(y.jstree("check_node",b),y.jstree("check_node",x),y.jstree("check_node",h),y.jstree("check_node",E),y.jstree("check_node",p),y.jstree("check_node",C),y.on("create_node.jstree",function(e,t){y.jstree("open_all")}),y.on("select_node.jstree",function(e,t){t=t.node.data;A.set(t),c.viewer.inputHandler.deselectAll(),t instanceof Wy&&c.viewer.inputHandler.toggleSelection(t),$(c.viewer.renderer.domElement).focus()}),y.on("deselect_node.jstree",function(e,t){A.set(null)}),y.on("delete_node.jstree",function(e,t){A.set(null)}),y.on("dblclick",".jstree-anchor",function(e){var t,n,i=$.jstree.reference(e.target).get_node(e.target).data;e.target.classList.contains("jstree-checkbox")||(i instanceof gm?(e=c.viewer.getBoundingBox([i]),(n=new Z).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof iy?(e=i.points.map(function(e){return e.position}),0==(n=(new K).setFromPoints(e)).getSize(new Oe).length()&&(n.min=n.max.clone(),n.expandByVector(new Oe(1,1,1))),(e=new Z).boundingBox=n,c.viewer.zoomTo(e,2,500)):i instanceof If?(n=i.points,0<(e=(new K).setFromPoints(n)).getSize(new Oe).length()&&((n=new Z).boundingBox=e,c.viewer.zoomTo(n,1,500))):i instanceof Wy?0<(e=i.boundingBox.clone().applyMatrix4(i.matrixWorld)).getSize(new Oe).length()&&((n=new Z).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof pv?i.moveHere(c.viewer.scene.getActiveCamera()):i instanceof rm?(e=i.camera.getWorldDirection(new Oe),i.camera instanceof Ad?(e.multiplyScalar(i.camera.right),t=(new Oe).addVectors(i.camera.position,e),c.viewer.setCameraMode(Cm.ORTHOGRAPHIC)):i.camera instanceof ya&&(e.multiplyScalar(c.viewer.scene.view.radius),t=(new Oe).addVectors(i.camera.position,e),c.viewer.setCameraMode(Cm.PERSPECTIVE)),c.viewer.scene.view.position.copy(i.camera.position),c.viewer.scene.view.lookAt(t)):"SpotLight"===i.type?(n=0<i.distance?i.distance/4:5e3,e=i.position,t=(new Oe).addVectors(e,i.getWorldDirection(new Oe).multiplyScalar(n)),c.viewer.scene.view.position.copy(i.position),c.viewer.scene.view.lookAt(t)):i instanceof Z?0<(e=(new K).setFromObject(i)).getSize(new Oe).length()&&((n=new Z).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof gb||i instanceof W0||0 instanceof Geopackage)}),y.on("uncheck_node.jstree",function(e,t){t=t.node.data;t&&(t.visible=!1)}),y.on("check_node.jstree",function(e,t){t=t.node.data;t&&(t.visible=!0)}),this.viewer.scene.addEventListener("pointcloud_added",t),this.viewer.scene.addEventListener("measurement_added",n),this.viewer.scene.addEventListener("profile_added",r),this.viewer.scene.addEventListener("volume_added",i),this.viewer.scene.addEventListener("camera_animation_added",e),this.viewer.scene.addEventListener("oriented_images_added",a),this.viewer.scene.addEventListener("360_images_added",o),this.viewer.scene.addEventListener("geopackage_added",s),this.viewer.scene.addEventListener("polygon_clip_volume_added",i),this.viewer.scene.annotations.addEventListener("annotation_added",function(e){var n=e.annotation,e="".concat(Potree.resourcePath,"/icons/annotation.svg"),t=c.annotationMapping.get(n.parent),t=w(t,n.title,e,n);c.annotationMapping.set(n,t),n.addEventListener("annotation_changed",function(e){var t=$("#jstree_scene").jstree().get_json("annotations").children.find(function(e){return e.data.uuid===n.uuid});$.jstree.reference(t.id).rename_node(t.id,n.title)})}),this.viewer.scene.addEventListener("measurement_removed",l),this.viewer.scene.addEventListener("volume_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.volume.uuid});y.jstree("delete_node",e.id)}),this.viewer.scene.addEventListener("polygon_clip_volume_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.volume.uuid});y.jstree("delete_node",e.id)}),this.viewer.scene.addEventListener("profile_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.profile.uuid});y.jstree("delete_node",e.id)}),"".concat(Potree.resourcePath,"/icons/annotation.svg")),f=(this.annotationMapping=new Map,this.annotationMapping.set(this.viewer.scene.annotations,h),this.viewer.scene.annotations.traverseDescendants(function(e){var t=c.annotationMapping.get(e.parent),t=w(t,e.title,U,e);c.annotationMapping.set(e,t)}),this.viewer.scene),B=q(f.pointclouds);try{for(B.s();!(u=B.n()).done;){var N=u.value;t({pointcloud:N})}}catch(e){B.e(e)}finally{B.f()}var M,S=q(f.measurements);try{for(S.s();!(M=S.n()).done;){var z=M.value;n({measurement:z})}}catch(e){S.e(e)}finally{S.f()}for(var T=0,_=[].concat(Fe(f.volumes),Fe(f.polygonClipVolumes));T<_.length;T++){var G=_[T];i({volume:G})}var P,D=q(f.cameraAnimations);try{for(D.s();!(P=D.n()).done;)e({animation:P.value})}catch(e){D.e(e)}finally{D.f()}var H,I=q(f.orientedImages);try{for(I.s();!(H=I.n()).done;)a({images:H.value})}catch(e){I.e(e)}finally{I.f()}var V,k=q(f.images360);try{for(k.s();!(V=k.n()).done;)o({images:V.value})}catch(e){k.e(e)}finally{k.f()}var Q,R=q(f.geopackages);try{for(R.s();!(Q=R.n()).done;)s({geopackage:Q.value})}catch(e){R.e(e)}finally{R.f()}var j,L=q(f.profiles);try{for(L.s();!(j=L.n()).done;){var W=j.value;r({profile:W})}}catch(e){L.e(e)}finally{L.f()}w(E,"Camera",null,new Aa),this.viewer.addEventListener("scene_changed",function(e){A.setScene(e.scene),e.oldScene.removeEventListener("pointcloud_added",t),e.oldScene.removeEventListener("measurement_added",n),e.oldScene.removeEventListener("profile_added",r),e.oldScene.removeEventListener("volume_added",i),e.oldScene.removeEventListener("polygon_clip_volume_added",i),e.oldScene.removeEventListener("measurement_removed",l),e.scene.addEventListener("pointcloud_added",t),e.scene.addEventListener("measurement_added",n),e.scene.addEventListener("profile_added",r),e.scene.addEventListener("volume_added",i),e.scene.addEventListener("polygon_clip_volume_added",i),e.scene.addEventListener("measurement_removed",l)})}},{key:"initClippingTool",value:function(){var n=this,e=(this.viewer.addEventListener("cliptask_changed",function(e){console.log("TODO")}),this.viewer.addEventListener("clipmethod_changed",function(e){console.log("TODO")}),$("#cliptask_options")),t=(e.selectgroup({title:"Clip Task"}),e.find("input").click(function(e){n.viewer.setClipTask(Bm[e.target.value])}),Object.keys(Bm).filter(function(e){return Bm[e]===n.viewer.clipTask})),e=(e.find("input[value=".concat(t,"]")).trigger("click"),$("#clipmethod_options")),t=(e.selectgroup({title:"Clip Method"}),e.find("input").click(function(e){n.viewer.setClipMethod(Mm[e.target.value])}),Object.keys(Mm).filter(function(e){return Mm[e]===n.viewer.clipMethod})),e=(e.find("input[value=".concat(t,"]")).trigger("click"),$("#clipping_tools")),i=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip_volume.svg","[title]tt.clip_volume",function(){var t=n.volumeTool.startInsertion({clip:!0}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip-polygon.svg","[title]tt.clip_polygon",function(){var t=n.viewer.clippingTool.startInsertion({type:"polygon"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),new Ny(this.viewer));e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip-screen.svg","[title]tt.screen_clip_box",function(){var t,e;n.viewer.scene.getActiveCamera()instanceof Ad?(t=i.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid}),$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)):n.viewer.postMessage("Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.",{duration:2e3})})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/remove.svg","[title]tt.remove_all_clipping_volumes",function(){n.viewer.scene.removeAllClipVolumes()}))}},{key:"initFilters",value:function(){this.initClassificationList(),this.initReturnFilters(),this.initGPSTimeFilters(),this.initPointSourceIDFilters()}},{key:"initReturnFilters",value:function(){function e(e){var t=(n=U(i.viewer.filterReturnNumberRange,2))[0],n=n[1];a[0].innerHTML="".concat(t," to ").concat(n),r.slider({values:[t,n]})}function t(e){var t=(n=U(i.viewer.filterNumberOfReturnsRange,2))[0],n=n[1];s[0].innerHTML="".concat(t," to ").concat(n),o.slider({values:[t,n]})}var i=this,n=$("#return_filter_panel"),r=n.find("#sldReturnNumber"),a=n.find("#lblReturnNumber"),o=(r.slider({range:!0,min:0,max:7,step:1,values:[0,7],slide:function(e,t){i.viewer.setFilterReturnNumberRange(t.values[0],t.values[1])}}),this.viewer.addEventListener("filter_return_number_range_changed",e),e(),n.find("#sldNumberOfReturns")),s=n.find("#lblNumberOfReturns");o.slider({range:!0,min:0,max:7,step:1,values:[0,7],slide:function(e,t){i.viewer.setFilterNumberOfReturnsRange(t.values[0],t.values[1])}});this.viewer.addEventListener("filter_number_of_returns_range_changed",t),t()}},{key:"initGPSTimeFilters",value:function(){var i=this,e=$("#gpstime_filter_panel"),r=new $1({levels:4,slide:function(e){var t;(t=i.viewer).setFilterGPSTimeRange.apply(t,Fe(e.values))}}),a=!1,n=(this.viewer.addEventListener("update",function(e){var t=i.viewer.getGpsTimeExtent(),n=t[0]!==1/0;!a&&n&&($("#gpstime_multilevel_range_container")[0].prepend(r.element),n=i.viewer.getGpsTimeExtent(),r.setRange(n),r.setValues(n),a=!0),r.setRange(t)}),e.find("#txtGpsTime")),e=e.find("#btnFindGpsTime"),o=null;n.on("input",function(e){var t=n.val();isNaN(t)?(o=null,n.css("background-color","#ff9999")):(t=parseFloat(t),o=t,n.css("background-color",""))}),e.click(function(){null!==o&&viewer.moveToGpsTimeVicinity(o)})}},{key:"initPointSourceIDFilters",value:function(){var n=this,i=$("#pointsourceid_filter_panel"),r=new $1({levels:4,range:[0,65535],precision:1,slide:function(e){e=e.values;n.viewer.setFilterPointSourceIDRange(e[0],e[1])}}),a=!1;this.viewer.addEventListener("update",function(e){var t=n.viewer.filterPointSourceIDRange;a||(i[0].prepend(r.element),a=!0,r.setValues(t))})}},{key:"initClassificationList",value:function(){function e(){for(var e in n(),c.viewer.classifications)t(e,c.viewer.classifications[e].name);i()}var c=this,d=$("#classificationList"),t=function(t,e){var n=c.viewer.classifications[t],i="colorPickerClassification_"+t,r=n.visible?"checked":"",r=$('\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap; display: flex">\n\t\t\t\t\t\t<input id="'.concat("chkClassification_"+t,'" type="checkbox" ').concat(r,'/>\n\t\t\t\t\t\t<span style="flex-grow: 1">').concat(e,'</span>\n\t\t\t\t\t\t<input id="').concat(i,'" style="zoom: 0.5" />\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\t\t\t')),e=r.find("input"),i=r.find("#".concat(i)),e=(e.click(function(e){c.viewer.setClassificationVisibility(t,e.target.checked)}),n.color.map(function(e){return 255*e}).join(", ")),e="rgb(".concat(e,")");i.spectrum({color:e,showInput:!0,preferredFormat:"rgb",cancelText:"",chooseText:"Apply",move:function(e){e=e.toRgb(),e=[e.r/255,e.g/255,e.b/255,1];n.color=e},change:function(e){e=e.toRgb(),e=[e.r/255,e.g/255,e.b/255,1];n.color=e}}),d.append(r)},n=function(){var e=$('\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="toggleClassificationFilters" type="checkbox" checked/>\n\t\t\t\t\t\t<span>show/hide all</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\t\t\t');e.find("input").click(function(e){c.viewer.toggleAllClassificationsVisibility()}),d.append(e)},i=function(){var e=$('\n\t\t\t\t<li>\n\t\t\t\t\t<input type="button" value="invert" />\n\t\t\t\t</li>\n\t\t\t');e.find("input").click(function(){for(var e=c.viewer.classifications,t=0,n=Object.keys(e);t<n.length;t++){var i=n[t],r=e[i];c.viewer.setClassificationVisibility(i,!r.visible)}}),d.append(e)};e(),this.viewer.addEventListener("classifications_changed",function(){d.empty(),e()}),this.viewer.addEventListener("classification_visibility_changed",function(){for(var e=0,t=Object.keys(c.viewer.classifications);e<t.length;e++){var n=t[e],i=c.viewer.classifications[n];d.find("#chkClassification_".concat(n)).prop("checked",i.visible)}for(var r=0,a=0,o=0,s=Object.keys(c.viewer.classifications);o<s.length;o++){var l=s[o];c.viewer.classifications[l].visible&&r++,a++}var u=r===a;d.find("#toggleClassificationFilters").prop("checked",u)})}},{key:"initAccordion",value:function(){for(var i=this,r=($(".accordion > h3").each(function(){var e=$(this),t=$(this).next();t.hide(),e.click(function(){t.slideToggle()})}),[["EN","en"],["FR","fr"],["DE","de"],["JP","jp"],["ES","es"],["SE","se"],["ZH","zh"]]),a=$("#potree_languages"),o=0;o<r.length;o++)!function(){var e=U(r[o],2),t=e[0],n=e[1],e=$("<a>".concat(t,"</a>"));e.click(function(){return i.viewer.setLanguage(n)}),0===o&&e.css("margin-left","30px"),a.append(e),o<r.length-1&&a.append($(document.createTextNode(" - ")))}()}},{key:"initAppearance",value:function(){var n=this,t=this.dom.find("#sldPointBudget"),e=(t.slider({value:this.viewer.getPointBudget(),min:1e5,max:1e7,step:1e3,slide:function(e,t){n.viewer.setPointBudget(t.value)}}),this.dom.find("#sldFOV").slider({value:this.viewer.getFOV(),min:20,max:100,step:1,slide:function(e,t){n.viewer.setFOV(t.value)}}),$("#sldEDLRadius").slider({value:this.viewer.getEDLRadius(),min:1,max:4,step:.01,slide:function(e,t){n.viewer.setEDLRadius(t.value)}}),$("#sldEDLStrength").slider({value:this.viewer.getEDLStrength(),min:0,max:5,step:.01,slide:function(e,t){n.viewer.setEDLStrength(t.value)}}),$("#sldEDLOpacity").slider({value:this.viewer.getEDLOpacity(),min:0,max:1,step:.01,slide:function(e,t){n.viewer.setEDLOpacity(t.value)}}),this.viewer.addEventListener("point_budget_changed",function(e){$("#lblPointBudget")[0].innerHTML=ne.addCommas(n.viewer.getPointBudget()),t.slider({value:n.viewer.getPointBudget()})}),this.viewer.addEventListener("fov_changed",function(e){$("#lblFOV")[0].innerHTML=parseInt(n.viewer.getFOV()),$("#sldFOV").slider({value:n.viewer.getFOV()})}),this.viewer.addEventListener("use_edl_changed",function(e){$("#chkEDLEnabled")[0].checked=n.viewer.getEDLEnabled()}),this.viewer.addEventListener("edl_radius_changed",function(e){$("#lblEDLRadius")[0].innerHTML=n.viewer.getEDLRadius().toFixed(1),$("#sldEDLRadius").slider({value:n.viewer.getEDLRadius()})}),this.viewer.addEventListener("edl_strength_changed",function(e){$("#lblEDLStrength")[0].innerHTML=n.viewer.getEDLStrength().toFixed(1),$("#sldEDLStrength").slider({value:n.viewer.getEDLStrength()})}),this.viewer.addEventListener("background_changed",function(e){$("input[name=background][value='"+n.viewer.getBackground()+"']").prop("checked",!0)}),$("#lblPointBudget")[0].innerHTML=ne.addCommas(this.viewer.getPointBudget()),$("#lblFOV")[0].innerHTML=parseInt(this.viewer.getFOV()),$("#lblEDLRadius")[0].innerHTML=this.viewer.getEDLRadius().toFixed(1),$("#lblEDLStrength")[0].innerHTML=this.viewer.getEDLStrength().toFixed(1),$("#chkEDLEnabled")[0].checked=this.viewer.getEDLEnabled(),$("#background_options")),e=(e.selectgroup(),e.find("input").click(function(e){n.viewer.setBackground(e.target.value)}),this.viewer.getBackground());try{$("input[name=background_options][value=".concat(e,"]")).trigger("click")}catch(e){}$("#chkEDLEnabled").click(function(){n.viewer.setEDLEnabled($("#chkEDLEnabled").prop("checked"))})}},{key:"initNavigation",value:function(){function t(e){return Math.pow((e-o.x)/o.y,.25)}var n=this,e=$("#navigation"),i=$("#sldMoveSpeed"),r=$("#lblMoveSpeed"),a=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/earth_controls_1.png","[title]tt.earth_control",function(){n.viewer.setControls(n.viewer.earthControls)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/fps_controls.svg","[title]tt.flight_control",function(){n.viewer.setControls(n.viewer.fpControls),n.viewer.fpControls.lockElevation=!1})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/helicopter_controls.svg","[title]tt.heli_control",function(){n.viewer.setControls(n.viewer.fpControls),n.viewer.fpControls.lockElevation=!0})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/orbit_controls.svg","[title]tt.orbit_control",function(){n.viewer.setControls(n.viewer.orbitControls)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/focus.svg","[title]tt.focus_control",function(){n.viewer.fitToScreen()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/navigation_cube.svg","[title]tt.navigation_cube_control",function(){n.viewer.toggleNavigationCube()})),e.append(this.createToolIcon(Potree.resourcePath+"/images/compas.svg","[title]tt.compass",function(){var e=!n.viewer.compass.isVisible();n.viewer.compass.setVisible(e)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/camera_animation.svg","[title]tt.camera_animation",function(){var e=U1.defaultFromView(n.viewer);viewer.scene.addCameraAnimation(e)})),e.append("<br>"),e.append(this.createToolIcon(Potree.resourcePath+"/icons/left.svg","[title]tt.left_view_control",function(){n.viewer.setLeftView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/right.svg","[title]tt.right_view_control",function(){n.viewer.setRightView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/front.svg","[title]tt.front_view_control",function(){n.viewer.setFrontView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/back.svg","[title]tt.back_view_control",function(){n.viewer.setBackView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/top.svg","[title]tt.top_view_control",function(){n.viewer.setTopView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/bottom.svg","[title]tt.bottom_view_control",function(){n.viewer.setBottomView()})),$('\n\t\t\t<selectgroup id="camera_projection_options">\n\t\t\t\t<option id="camera_projection_options_perspective" value="PERSPECTIVE">Perspective</option>\n\t\t\t\t<option id="camera_projection_options_orthigraphic" value="ORTHOGRAPHIC">Orthographic</option>\n\t\t\t</selectgroup>\n\t\t')),e=(e.append(a),a.selectgroup({title:"Camera Projection"}),a.find("input").click(function(e){n.viewer.setCameraMode(Cm[e.target.value])}),Object.keys(Cm).filter(function(e){return Cm[e]===n.viewer.scene.cameraMode})),o=(a.find("input[value=".concat(e,"]")).trigger("click"),new Re(1,1e4));i.slider({value:t(this.viewer.getMoveSpeed()),min:0,max:1,step:.01,slide:function(e,t){n.viewer.setMoveSpeed((t=t.value,Math.pow(t,4)*o.y+o.x))}}),this.viewer.addEventListener("move_speed_changed",function(e){r.html(n.viewer.getMoveSpeed().toFixed(1)),i.slider({value:t(n.viewer.getMoveSpeed())})}),r.html(this.viewer.getMoveSpeed().toFixed(1))}},{key:"initSettings",value:function(){var n=this,e=($("#sldMinNodeSize").slider({value:this.viewer.getMinNodeSize(),min:0,max:1e3,step:.01,slide:function(e,t){n.viewer.setMinNodeSize(t.value)}}),this.viewer.addEventListener("minnodesize_changed",function(e){$("#lblMinNodeSize").html(parseInt(n.viewer.getMinNodeSize())),$("#sldMinNodeSize").slider({value:n.viewer.getMinNodeSize()})}),$("#lblMinNodeSize").html(parseInt(this.viewer.getMinNodeSize())),$("#splat_quality_options")),t=(e.selectgroup({title:"Splat Quality"}),e.find("input").click(function(e){"standard"===e.target.value?n.viewer.useHQ=!1:"hq"===e.target.value&&(n.viewer.useHQ=!0)}),this.viewer.useHQ?"hq":"standard");e.find("input[value=".concat(t,"]")).trigger("click"),$("#show_bounding_box").click(function(){n.viewer.setShowBoundingBox($("#show_bounding_box").prop("checked"))}),$("#set_freeze").click(function(){n.viewer.setFreeze($("#set_freeze").prop("checked"))})}}])}(),Ob=function(){function n(e){var t;return ue(this,n),(t=le(this,n)).viewer=e,t.renderer=e.renderer,t.sg=new ju(.1),t.sm=new cc,t.s=new Q(t.sg,t.sm),t}return v(n,mm),A(n,[{key:"startInsertion",value:function(){function t(e){e.button===oe.LEFT?o.finish():e.button===oe.RIGHT&&o.cancel()}var n=this,i=this.viewer.renderer.domElement,r=new pv({position:[589748.27,231444.54,753.675],title:"Annotation Title",description:"Annotation Description"}),a=(this.dispatchEvent({type:"start_inserting_annotation",annotation:r}),this.viewer.scene.annotations),o=(a.add(r),{cancel:null,finish:null}),s=(o.cancel=function(e){a.remove(r),i.removeEventListener("mouseup",t,!0)},o.finish=function(e){i.removeEventListener("mouseup",t,!0)},i.addEventListener("mouseup",t,!0),function(e){e=ne.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds,{pickClipped:!0});e&&(n.s.position.copy(e.location),r.position.copy(e.location))}),l=function(e){viewer.scene.scene.remove(n.s),n.s.removeEventListener("drag",s),n.s.removeEventListener("drop",l)};return this.s.addEventListener("drag",s),this.s.addEventListener("drop",l),this.viewer.scene.scene.add(this.s),this.viewer.inputHandler.startDragging(this.s),r}},{key:"update",value:function(){}},{key:"render",value:function(){}}])}(),Ub={priorityEvent:[{zoomInCloud:"zoom-in"},{hoverPano:"pointer"},{connectPano:"url({Potree.resourcePath}/images/connect.png),auto"},{disconnectPano:"url({Potree.resourcePath}/images/connect-dis.png),auto"},{hoverLine:"pointer"},{hoverTranHandle:"grab"},{movePointcloud:"move"},{polygon_isIntersectSelf:"not-allowed"},{polygon_AtWrongPlace:"not-allowed"},{delPoint:'url("https://4dkk.4dage.com/v4-test/www/sdk/images/polygon_mark/pic_pen_sub.png"), auto'},{markerMove:"grab"},{addPoint:'url("https://4dkk.4dage.com/v4-test/www/sdk/images/polygon_mark/pic_pen_add.png"), auto'},{mapClipMove:"move"},{mapClipRotate:"url({Potree.resourcePath}/images/rotate-cursor.png),auto"},{rotatePointcloud:"url({Potree.resourcePath}/images/rotate-cursor.png),auto"},{siteModelFloorDrag:"row-resize"},{addSth:"cell"}],list:[],currentCursorIndex:null,init:function(e,t){var n=this;this.priorityEvent.forEach(function(e){for(var t in e)e[t]=j.replaceAll(e[t],"{Potree.resourcePath}",Potree.resourcePath)}),this.domElements=t.map(function(e){return e.renderArea}),e.addEventListener("CursorChange",function(e){"add"==e.action?n.add(e.name):n.remove(e.name)})},add:function(t){var e=this.priorityEvent.find(function(e){return e[t]});e?this.list.includes(t)||(this.judge({addItem:e,name:t}),this.list.push(t)):console.error("CursorDeal 未定义优先级 name:"+t)},remove:function(e){e=this.list.indexOf(e);-1<e&&(this.list.splice(e,1),this.judge())},judge:function(){var e,i,r=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};t.addItem?((e=this.priorityEvent.indexOf(t.addItem))<this.currentCursorIndex||null==this.currentCursorIndex)&&(this.domElements.forEach(function(e){return e.style.cursor=t.addItem[t.name]}),this.currentCursorIndex=e):(i={index:1/0,cursor:null},this.list.forEach(function(t){var e=r.priorityEvent.find(function(e){return e[t]}),n=r.priorityEvent.indexOf(e);n<i.index&&(i.index=n,i.cursor=e[t])}),this.currentCursorIndex=i.index,this.domElements.forEach(function(e){return e.style.cursor=i.cursor||""}))}},Nb=function(){function e(){return ue(this,e),le(this,e)}return v(e,Qn),A(e,[{key:"splitStart",value:function(i){for(var r=this,a=(this.splited=!0,[]),o=[viewer.mainViewport],e=(viewer.mapViewer&&o.push(viewer.mapViewer.viewports[0]),i.length),s=0;s<e;s++)!function(){var e,t=i[s],n=o.find(function(e){return e.name==(t.name2||t.name)});n&&((e=n).left=t.left,e.bottom=t.bottom,e.width=t.width,e.height=t.height),e||(n=new ff,t.limitBound&&(n.limitBound=t.limitBound),t.direction&&(n.direction=t.direction),e=new og(n,r.getOrthoCamera(),t),t.viewContainsPoints&&(e.viewContainsPoints=t.viewContainsPoints)),"OrthographicCamera"==e.camera.type&&(e.targetPlane=new ir,e.shiftTarget=new Oe),e.fitMargin=t.margin,a.push(e)}();return viewer.viewports=a,viewer.updateScreenSize({forceUpdateSize:!0}),a.forEach(function(e){"MainView"!=e.name&&r.viewportFitBound(e,viewer.bound.boundingBox,viewer.bound.center,0,e.fitMargin)}),a}},{key:"unSplit",value:function(){this.splited=!1,this.unfocusViewport(),viewer.inputHandler.hoverViewport=null,viewer.viewports=[viewer.mainViewport],viewer.mainViewport.width=1,viewer.mainViewport.height=1,viewer.mainViewport.left=0,viewer.mainViewport.bottom=0,viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"viewportFitBound",value:function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=4<arguments.length?arguments[4]:void 0,a=e.view,o={bound:t},t=this.getViewBound(e,t),s=t.boundSize,t=t.boundCenter;e.targetPlane.setFromNormalAndCoplanarPoint(a.direction.clone(),t),e.targetPlane.projectPoint(n,e.shiftTarget),o.endPosition=this.getPosOutOfModel(e,s),o.margin=r||{x:30,y:30},a.moveOrthoCamera(e,o,i)}},{key:"getViewBound",value:function(e,t){t?(n=t.getSize(new Oe),i=t.getCenter(new Oe)):(n=(r=viewer.bound).boundSize,i=r.center,t=r.boundingBox);var n,i,r=[];return this.focusCenter&&r.push(this.focusCenter),e.viewContainsPoints&&r.push.apply(r,Fe(e.viewContainsPoints)),r.length&&(t=t.clone(),r.forEach(function(e){t.expandByPoint(e)}),n=t.getSize(new Oe),i=t.getCenter(new Oe)),{boundSize:n,boundCenter:i}}},{key:"getPosOutOfModel",value:function(e,t){t=2*(t=t||this.getViewBound(e).boundSize).length();return e.shiftTarget.clone().sub(e.view.direction.clone().multiplyScalar(10+t))}},{key:"updateCameraOutOfModel",value:function(){var r=this;viewer.viewports.forEach(function(e,t){var n,i;e.camera.isOrthographicCamera&&(n=(i=r.getViewBound(e)).boundSize,i=i.boundCenter,r.setShiftTarget(e,i),i=r.getPosOutOfModel(e,n),e.view.position.copy(i))})}},{key:"setShiftTarget",value:function(e,t){e.targetPlane||(e.targetPlane=new ir,e.shiftTarget=new Oe),e.targetPlane.setFromNormalAndCoplanarPoint(e.view.direction,t),e.targetPlane.projectPoint(e.view.position,e.shiftTarget)}},{key:"rotateSideCamera",value:function(e,t){var n=this.getViewBound(e),i=n.boundSize,n=n.boundCenter,n=this.focusCenter||n,r=(this.setShiftTarget(e,n),(new Oe).subVectors(n,e.shiftTarget)),t=(new Me).makeRotationAxis(new Oe(0,0,1),t);e.view.direction=e.view.direction.applyMatrix4(t),r.applyMatrix4(t),e.shiftTarget.subVectors(n,r),e.view.position=this.getPosOutOfModel(e,i)}},{key:"getOrthoCamera",value:function(){var e=new Ad(-100,100,100,100,.01,1e4);return e.up.set(0,0,1),e}},{key:"focusOnViewport",value:function(n){var i=this;viewer.viewports.forEach(function(e,t){e.name==n?(i.focusInfo={name:n,left:e.left,bottom:e.bottom,height:e.height,width:e.width},e.left=0,e.bottom=0,e.height=1,e.width=1):e.active=!1}),viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"unfocusViewport",value:function(){var n=this;this.focusInfo&&(viewer.viewports.forEach(function(e,t){n.focusInfo.name==e.name&&(e.left=n.focusInfo.left,e.bottom=n.focusInfo.bottom,e.height=n.focusInfo.height,e.width=n.focusInfo.width),e.active=!0}),viewer.updateScreenSize({forceUpdateSize:!0}),this.focusInfo=null)}}])}(),zb=["","⅛","¼","⅜","½","⅝","¾","⅞"],Gb=function(){return A(function e(t,n,i,r){ue(this,e),this.name=t,this.symbol=n,this.base=i,this.factor=r},[{key:"toBase",value:function(e){return e*this.factor}},{key:"fromBase",value:function(e){return e/this.factor}}])}(),Hb={MILLIMETER:["Millimeter","mm"],CENTIMETER:["Centimeter","cm"],METER:["Meter","m"],KILOMETER:["Kilometer","km"],INCH:["Inch","in"],FOOT:["Foot","ft"],MILE:["Mile","mi"],SQUAREMETER:["SquareMeter","m²"],SQUAREFOOT:["SquareFoot","ft²"],CUBICMETER:["CubicMeter","m³"],CUBICFOOT:["CubicFoot","ft³"],BYTE:["Byte","B"],KILOBYTE:["Kilobyte","kB"],MEGABYTE:["Megabyte","MB"],GIGABYTE:["Gigabyte","GB"],TERABYTE:["Terabyte","TB"],PETABYTE:["Petabyte","PB"],init:function(){var e,t,n=new Gb(Hb.METER[0],Hb.METER[1],void 0,1),i=new Gb(Hb.SQUAREMETER[0],Hb.SQUAREMETER[1],void 0,1),r=new Gb(Hb.CUBICMETER[0],Hb.CUBICMETER[1],void 0,1),a=new Gb(Hb.BYTE[0],Hb.BYTE[1],void 0,1),i=(Hb.DISTANCE=((t={}).metric=((e={})[Hb.MILLIMETER[0]]=new Gb(Hb.MILLIMETER[0],Hb.MILLIMETER[1],n,.001),e[Hb.CENTIMETER[0]]=new Gb(Hb.CENTIMETER[0],Hb.CENTIMETER[1],n,.01),e[Hb.METER[0]]=n,e[Hb.KILOMETER[0]]=new Gb(Hb.KILOMETER[0],Hb.KILOMETER[1],n,1e3),e),t.imperial=((e={})[Hb.INCH[0]]=new Gb(Hb.INCH[0],Hb.INCH[1],n,.0254),e[Hb.FOOT[0]]=new Gb(Hb.FOOT[0],Hb.FOOT[1],n,.3048),e[Hb.MILE[0]]=new Gb(Hb.MILE[0],Hb.MILE[1],n,1609.344),e),t),Hb.AREA=((n={}).metric=((e={})[Hb.SQUAREMETER[0]]=i,e),n.imperial=((t={})[Hb.SQUAREFOOT[0]]=new Gb(Hb.SQUAREFOOT[0],Hb.SQUAREFOOT[1],i,.092903),t),n),Hb.VOLUME=((e={}).metric=((i={})[Hb.CUBICMETER[0]]=r,i),e.imperial=((t={})[Hb.CUBICFOOT[0]]=new Gb(Hb.CUBICFOOT[0],Hb.CUBICFOOT[1],r,.0283168),t),e),(n={})[Hb.BYTE[0]]=a,n[Hb.KILOBYTE[0]]=new Gb(Hb.KILOBYTE[0],Hb.KILOBYTE[1],a,1e3),n[Hb.MEGABYTE[0]]=new Gb(Hb.MEGABYTE[0],Hb.MEGABYTE[1],a,1e6),n[Hb.GIGABYTE[0]]=new Gb(Hb.GIGABYTE[0],Hb.GIGABYTE[1],a,1e9),n[Hb.TERABYTE[0]]=new Gb(Hb.TERABYTE[0],Hb.TERABYTE[1],a,1e12),n[Hb.PETABYTE[0]]=new Gb(Hb.PETABYTE[0],Hb.PETABYTE[1],a,1e15),n);Hb.DATA=((r={}).metric=i,r.imperial=i,r)},getUnitsOfMeasurementByDomain:function(e){return this[e.toUpperCase()]},getUnitsOfMeasurementByDomainAndSystem:function(e,t){e=this.getUnitsOfMeasurementByDomain(e);if(e.hasOwnProperty(t.toLowerCase()))return e[t.toLowerCase()];console.error(n+" measurement system is not supported.")},getDefaultUnitByDomainAndSystem:function(e,t){switch(e.toUpperCase()){case"DISTANCE":switch(t.toLowerCase()){case"metric":return this.DISTANCE.metric[this.METER[0]];case"imperial":return this.DISTANCE.imperial[this.FOOT[0]];default:console.error(t+" measurement system is not supported.")}case"AREA":switch(t.toLowerCase()){case"metric":return this.AREA.metric[this.SQUAREMETER[0]];case"imperial":return this.AREA.imperial[this.SQUAREFOOT[0]];default:console.error(t+" measurement system is not supported.")}case"VOLUME":switch(t.toLowerCase()){case"metric":return this.VOLUME.metric[this.CUBICMETER[0]];case"imperial":return this.VOLUME.imperial[this.CUBICFOOT[0]];default:console.error(t+" measurement system is not supported.")}case"DATA":switch(t.toLowerCase()){case"metric":return this.DATA.metric[this.BYTE[0]];case"imperial":return this.DATA.imperial[this.BYTE[0]];default:console.error(t+" measurement system is not supported.")}default:console.error(e+" measurement domain is not supported.")}}},Vb=A(function e(){ue(this,e),this.LOCAL_STORAGE_KEY="iv_unit_key",Hb.init(),this.unitSystems=["metric","imperial"],this.defaultSystem="metric"}),Qb=function(){return A(function e(){ue(this,e),this.UnitService=new Vb},[{key:"scopedConvert",value:function(e,t){return this.convert(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,3<arguments.length?arguments[3]:void 0,4<arguments.length?arguments[4]:void 0)}},{key:"convert",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,i=3<arguments.length?arguments[3]:void 0,r=4<arguments.length&&void 0!==arguments[4]&&arguments[4],a=(5<arguments.length?arguments[5]:void 0)[i],o=a.minFactor,a=a.restrictUnit,t=this.getMostRelevantMeasurement(t,i||this.UnitService.currentSystem,e,o,a);return this.getFormattedMeasurementString(t[0],t[1],n,r)}},{key:"convertBack",value:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0;return e?(n=Hb.getDefaultUnitByDomainAndSystem(t,"metric"),t=this.getMostRelevantMeasurement2(t,r,e,a),this.getFormattedMeasurementString(t[0],n,i)):""}},{key:"getFormattedMeasurementString",value:function(e,t,n,i){i=i&&t.name===Hb.FOOT[0]?this.formatImperialDistance(12*e):i&&t.name===Hb.INCH[0]?this.formatImperialDistance(e):e.toLocaleString(void 0,{minimumFractionDigits:n,maximumFractionDigits:n})+" "+t.symbol;return i}},{key:"formatImperialDistance",value:function(e){var e=Math.round(8*e),t=Math.floor(e/8),n=Math.floor(t/12),t=t-12*n,e=zb[Math.abs(e%8)],t=0==t&&""!==e?"":t;return""!==t&&""!==e&&(e=" "+e),0!==n?n+"' "+t+e+'"':""+t+e+'"'}},{key:"getMostRelevantMeasurement",value:function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=4<arguments.length?arguments[4]:void 0,o=[],s=Hb.getUnitsOfMeasurementByDomainAndSystem(e,t);for(i in s)o.push(s[i]);e=o,t=(e=1<e.length?o.filter(a?function(e){return e.name==a}:function(e){return e.factor>=r}):e).reduce(function(e,t){return t.fromBase(n)<e.fromBase(n)&&1<=t.fromBase(n)?t:e});return t?[t.fromBase(n),t]:void 0}},{key:"getMostRelevantMeasurement2",value:function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=[],o=Hb.getUnitsOfMeasurementByDomainAndSystem(e,t);for(i in o)a.push(o[i]);e=a.filter(function(e){return e.factor>=r}).reduce(function(e,t){return t.toBase(n)<e.toBase(n)&&1<=t.toBase(n)?t:e});return e?[e.toBase(n),e]:void 0}}])}(),jb=new Gc,Wb=new Se(yv.clip.color),Jb={width2d:40},qb=1,Yb=function(){function o(e,t){ue(this,o);var e={points:Xb(e=e.clone().setZ(0),t,0),closed:!0,atPlane:!0,isRect:!0,dimension:"2d"},n=le(this,o,["mapClipBox",e]);n.angle=0,n.createRotateBar(),n.edgeMarkers=[],n.initData(e);var i;n.areaPlane.addEventListener("mouseover",function(){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"mapClipMove"})}),n.areaPlane.addEventListener("mouseleave",function(){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipMove"})});return n.areaPlane.addEventListener("drag",function(e){var t,e=e.intersect.orthoIntersect;i&&(t=(new Oe).subVectors(e,i).setZ(0),n.center.add(t),n.updatePoints(),n.dispatchEvent({type:"repos"})),i=e.clone()}),n.areaPlane.addEventListener("drop",function(e){i=null}),Potree.Utils.setObjectLayers(n,"mapObjects"),n}return v(o,HA),A(o,[{key:"getScale",value:function(){return new Oe(this.points[0].distanceTo(this.points[1]),this.points[1].distanceTo(this.points[2]),1)}},{key:"addMarker",value:function(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=new uv({mat:this.getMarkerMaterial("default"),pickOrder:qb,sizeInfo:Jb,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipBox_marker"}),i=(n.renderOrder=3,av.createLine([new Oe,new Oe],{color:Wb})),r=new uv({mat:this.getMarkerMaterial("default"),pickOrder:qb,sizeInfo:Jb,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipBox_edgePoint"}),a=(r.addEventListener("mouseover",function(e){t.setMarkerSelected(e.object,!0,"single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),r.addEventListener("mouseleave",function(e){t.setMarkerSelected(e.object,!1,"single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),{lastPos:null});r.addEventListener("drag",this.dragEdge.bind(this,a)),r.addEventListener("drop",this.dropEdge.bind(this,a)),this.edgeMarkers.push(r),this.add(r),n.dispatchEvent("addHoverEvent"),I(o,"addMarker",this,3)([{point:e.point,marker:n,edge:i}])}},{key:"dragEdge",value:function(e,t){var n,i="mapViewport"==t.dragViewport.name,r=t.intersect.orthoIntersect;r&&e.lastPos&&-1!==(t=this.edgeMarkers.indexOf(t.drag.object))&&(n=te.getNormal2d({p1:this.points[t],p2:this.points[(t+1)%4]}),n=(new Oe).subVectors(r,e.lastPos).setZ(0).projectOnVector(n).setZ(0),n=(new Oe).addVectors(this.points[t],n),this.dragChange(n,t,i)),e.lastPos=r.clone()}},{key:"dropEdge",value:function(e,t){e.lastPos=null,this.setMarkerSelected(t.drag.object,!1,"single")}},{key:"createAreaPlane",value:function(){var e=new R({color:Wb,side:ve,opacity:.3,transparent:!0,depthTest:!1});return I(o,"createAreaPlane",this,3)([e])}},{key:"getMarkerMaterial",value:function(e){return Rb||(Rb={default:new R({transparent:!0,color:Wb,opacity:.8,map:jb.load(Potree.resourcePath+"/textures/whiteCircle.png")}),select:new R({transparent:!0,color:Wb,opacity:1,map:jb.load(Potree.resourcePath+"/textures/whiteCircle.png")})},o.markerMats=Rb),Rb[e]}},{key:"setMarkerSelected",value:function(e,t,n){e.material="hover"==t?this.getMarkerMaterial("select"):this.getMarkerMaterial("default"),viewer.mapViewer.dispatchEvent("content_changed")}},{key:"createRotateBar",value:function(){function e(){a.material.opacity=t,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipRotate"}),viewer.mapViewer.dispatchEvent("content_changed")}var i,r=this,t=.7,n=new Z,a=new uv({mat:new R({side:ve,opacity:t,transparent:!0,depthTest:!1,map:jb.load(Potree.resourcePath+"/textures/rotation_circle.png")}),root:n,sizeInfo:Jb,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipRotateBar"}),o=(a.position.set(0,2.5,0),a.scale.set(2,2,2),a.addEventListener("mouseover",function(){a.material.opacity=1,viewer.dispatchEvent({type:"CursorChange",action:"add",name:"mapClipRotate"}),viewer.mapViewer.dispatchEvent("content_changed")}),a.addEventListener("mouseleave",e),this.addEventListener("dispose",e),a.addEventListener("drag",function(e){var t,n,e=e.intersect.orthoIntersect;i&&(n=(new Oe).subVectors(i,r.center).setZ(0),t=(new Oe).subVectors(e,r.center).setZ(0),n=te.getAngle(n,t,"z"),r.angle+=n,r.rotateBar.rotation.z=r.angle,r.updatePoints(),r.dispatchEvent({type:"rotate",angle:r.angle})),i=e.clone()}),a.addEventListener("drop",function(){i=null,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipRotate"})}),av.createLine([new Oe,new Oe(0,1.5,0)],{color:Wb}));n.add(a),n.add(o),this.add(n),this.rotateBar=n,this.rotateBar.bar=a}},{key:"updatePoints",value:function(e){this.points=Xb(this.center,e||this.getScale(),this.angle),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0})}},{key:"update",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=(I(o,"update",this,3)([e]),(new Oe).addVectors(this.points[0],this.points[1]).multiplyScalar(.5));this.rotateBar.position.copy(e),this.rotateBar.bar.waitUpdate();for(var t=0;t<4;t++){var n=this.points[t],i=this.points[(t+1)%4],n=(new Oe).addVectors(n,i).multiplyScalar(.5);this.updateMarker(this.edgeMarkers[t],n)}}},{key:"dispose",value:function(){I(o,"dispose",this,3)([]),this.dispatchEvent("dispose"),this.rotateBar.bar.dispose()}}])}();function Xb(t,e,n){var n=2<arguments.length&&void 0!==n?n:0,e=[new Oe(-e.x/2,+e.y/2,0),new Oe(+e.x/2,+e.y/2,0),new Oe(+e.x/2,-e.y/2,0),new Oe(-e.x/2,-e.y/2,0)],i=(new Me).makeRotationAxis(new Oe(0,0,1),n);return e.forEach(function(e){e.applyMatrix4(i),e.add(t)}),e}function Kb(e){var t;return ox||((t=Vx.load(Potree.resourcePath+"/textures/gridmap.png")).wrapS=t.wrapT=ut,ox={dataset:new oc({color:812922,side:ve,opacity:.2,transparent:!0,depthTest:!1,wireframe:!0}),building:new oc({color:812922,metalness:.2,roughness:.8,side:ve,opacity:.1,transparent:!0,depthTest:!0}),buildingSelect:new oc({color:36582,metalness:0,roughness:1,side:ve,opacity:.1,transparent:!0,depthTest:!0}),floor:new oc({color:11708469,metalness:.1,roughness:1,side:ve,opacity:.05,transparent:!0,depthTest:!0}),floorSelect:new sv({map:t,color:16707151,side:ve,opacity:1,transparent:!0,useDepth:!0,clipDistance:1,occlusionDistance:1,maxClipFactor:.9,backColor:"#efe"}),room:new oc({color:"#ff44ee",metalness:0,roughness:1,side:ve,opacity:.08,transparent:!0,depthTest:!1}),roomSelect:new sv({map:t,color:"#ff44ee",side:ve,opacity:1,transparent:!0,useDepth:!0,clipDistance:1,occlusionDistance:.5,maxClipFactor:.8,backColor:"#ff88dd"})}),ox[e]}function Zb(F,e,l){function t(){if(n.dragging)return n.pointerMove(),{stopContinue:!0}}var n=this,i=(void 0===e&&(console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'),e=document),Z.call(this),this.visible=!1,this.domElement=e,new $b(l)),u=(this.add(i),this._gizmo=i,new ex),r=(this.add(u),this),c=(this.options=l,D("camera",F),D("object",void 0),D("enabled",!0),D("axis",null),D("mode","translate"),D("translationSnap",null),D("rotationSnap",null),D("scaleSnap",null),D("space","world"),D("size",1),D("dragging",!1),D("showX",!0),D("showY",!0),D("showZ",!0),{type:"change"}),a={type:"mouseDown"},o={type:"mouseUp",mode:r.mode},O={type:"objectChange"},d=new bh,h=new Oe,p=new Oe,f=new ii,m={X:new Oe(1,0,0),Y:new Oe(0,1,0),Z:new Oe(0,0,1)},v=new Oe,g=new Oe,A=new Oe,y=new Oe,w=new Oe,b=new Oe,x=0,s=new Oe,E=new ii,U=new Oe,N=new Oe,z=new ii,C=new ii,G=new Oe,B=new Oe,H=new ii,V=new Oe,M=new Oe,S=new ii,T=new ii,Q=new Oe,_=new Oe,j=new Oe,P=new ii,W=new Oe;function D(t,e){var n=e;Object.defineProperty(r,t,{get:function(){return void 0!==n?n:e},set:function(e){n!==e&&(n=e,u[t]=e,i[t]=e,r.dispatchEvent({type:t+"-changed",value:e}),r.dispatchEvent(c))}}),r[t]=e,u[t]=e,i[t]=e}function I(e){r.enabled&&r.pointerHover()}function k(e){r.enabled&&(r.pointerHover(),r.pointerDown())}function R(e){r.enabled&&this.dragging&&r.pointerMove()}function L(e){r.enabled&&r.pointerUp()}D("worldPosition",M),D("worldPositionStart",B),D("worldQuaternion",S),D("worldQuaternionStart",H),D("cameraPosition",s),D("cameraQuaternion",E),D("pointStart",v),D("pointEnd",g),D("rotationAxis",y),D("rotationAngle",x),D("eye",_),e.addEventListener("mousedown",k,!1),e.addEventListener("touchstart",k,!1),e.addEventListener("mousemove",I,!1),e.addEventListener("touchmove",I,!1),e.addEventListener("touchmove",R,!1),document.addEventListener("mouseup",L,!1),e.addEventListener("touchend",L,!1),e.addEventListener("touchcancel",L,!1),e.addEventListener("touchleave",L,!1),this.addEventListener("dragging",t,{importance:10}),viewer.addEventListener("global_drag",t,{importance:10}),this.setRotateMethod=function(e){this.rotateMethod=e},this.dispose=function(){e.removeEventListener("mousedown",k),e.removeEventListener("touchstart",k),e.removeEventListener("mousemove",I),e.removeEventListener("mousemove",R),e.removeEventListener("touchmove",I),e.removeEventListener("touchmove",R),document.removeEventListener("mouseup",L),e.removeEventListener("touchend",L),e.removeEventListener("touchcancel",L),e.removeEventListener("touchleave",L),this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})},this.attach=function(e){return this.object=e,this.visible=!0,viewer.dispatchEvent("content_changed"),this},this.detach=function(){return this.object=void 0,this.visible=!1,this.axis=null,viewer.dispatchEvent("content_changed"),this},this.updateMatrixWorld=function(){var e;this.visible&&(void 0!==this.object&&(this.object.updateMatrixWorld(),this.object.parent.matrixWorld.decompose(N,z,G),this.object.matrixWorld.decompose(M,S,Q),this.object.boundingBox&&((e=this.object.boundingBox.clone().applyMatrix4(this.object.matrixWorld)).getCenter(M),this.pivotOnBottom)&&M.setZ(e.min.z),C.copy(z).invert(),T.copy(S).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(s,E,U),"OrthographicCamera"==this.camera.type?_.copy(this.view.direction):_.copy(s).sub(M).normalize(),Z.prototype.updateMatrixWorld.call(this))},this.pointerHover=function(){var e,t,n;viewer.inputHandler.pointer;void 0===this.object||this.dragging||(e=this.axis,n=(t=viewer.inputHandler.getMouseDirection()).origin,t=t.direction,d.set(n,t),Potree.Utils.setCameraLayers(d,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),n=d.intersectObjects(i.picker[this.mode].children.filter(function(e){return e.visible}),!0)[0]||!1,this.axis=n?n.object.name:null,e!=this.axis&&viewer.dispatchEvent("content_changed"))},this.pointerDown=function(){var e,t;viewer.inputHandler.pointer;void 0!==this.object&&!0!==this.dragging&&null!==this.axis&&(e=(t=viewer.inputHandler.getMouseDirection()).origin,t=t.direction,d.set(e,t),Potree.Utils.setCameraLayers(d,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),(e=d.intersectObjects([u],!0)[0]||!1)&&(t=this.space,"scale"===this.mode?t="local":"E"!==this.axis&&"XYZE"!==this.axis&&"XYZ"!==this.axis||(t="world"),"local"===t&&"rotate"===this.mode&&(t=this.rotationSnap,"X"===this.axis&&t&&(this.object.rotation.x=Math.round(this.object.rotation.x/t)*t),"Y"===this.axis&&t&&(this.object.rotation.y=Math.round(this.object.rotation.y/t)*t),"Z"===this.axis)&&t&&(this.object.rotation.z=Math.round(this.object.rotation.z/t)*t),this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),j.copy(this.object.position),P.copy(this.object.quaternion),W.copy(this.object.scale),this.object.matrixWorld.decompose(B,H,V),this.object.boundingBox&&this.object.boundingBox.getCenter(B).applyMatrix4(this.object.matrixWorld),v.copy(e.point).sub(B)),this.dragging=!0,a.mode=this.mode,this.dispatchEvent(a))},this.pointerMove=function(){var e=viewer.inputHandler.pointer,t=this.axis,n=this.mode,i=this.object,r=this.space;if("scale"===n?r="local":"E"!==t&&"XYZE"!==t&&"XYZ"!==t||(r="world"),void 0!==i&&null!==t&&!1!==this.dragging&&(void 0===e.button||0===e.button)){var e=viewer.inputHandler.getMouseDirection(),a=e.origin,e=e.direction,a=(d.set(a,e),Potree.Utils.setCameraLayers(d,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),d.intersectObjects([u],!0)[0]||!1);if(!1!==a){if(g.copy(a.point).sub(B),"translate"===n)A.copy(g).sub(v),"local"===r&&"XYZ"!==t&&A.applyQuaternion(T),-1===t.indexOf("X")&&(A.x=0),-1===t.indexOf("Y")&&(A.y=0),-1===t.indexOf("Z")&&(A.z=0),("local"===r&&"XYZ"!==t?(i.scale.x<0&&(A.x*=-1),i.scale.y<0&&(A.y*=-1),i.scale.z<0&&(A.z*=-1),A.applyQuaternion(P)):A.applyQuaternion(C)).divide(G),i.position.copy(A).add(j),this.translationSnap&&("local"===r&&(i.position.applyQuaternion(f.copy(P).invert()),-1!==t.search("X")&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),-1!==t.search("Y")&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),-1!==t.search("Z")&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.position.applyQuaternion(P)),"world"===r)&&(i.parent&&i.position.add(h.setFromMatrixPosition(i.parent.matrixWorld)),-1!==t.search("X")&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),-1!==t.search("Y")&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),-1!==t.search("Z")&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.parent)&&i.position.sub(h.setFromMatrixPosition(i.parent.matrixWorld)),i.dispatchEvent({type:"position_changed"});else if("scale"===n)-1!==t.search("XYZ")?(o=g.length()/v.length(),g.dot(v)<0&&(o*=-1),l.NoScaleZ?p.set(o,o,1):p.set(o,o,o)):-1!==t.search("XY")?(o=g.length()/v.length(),g.dot(v)<0&&(o*=-1),p.set(o,o,1)):(h.copy(v),p.copy(g),h.applyQuaternion(T),p.applyQuaternion(T),p.divide(h),-1===t.search("X")&&(p.x=1),-1===t.search("Y")&&(p.y=1),-1===t.search("Z")&&(p.z=1)),i.scale.copy(W).multiply(p),this.scaleSnap&&(-1!==t.search("X")&&(i.scale.x=Math.round(i.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==t.search("Y")&&(i.scale.y=Math.round(i.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==t.search("Z"))&&(i.scale.z=Math.round(i.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap),i.dispatchEvent({type:"scale_changed"});else if("rotate"===n){if(2==this.rotateMethod)if("E"===t)y.copy(_),x=g.angleTo(v),w.copy(v).normalize(),b.copy(g).normalize(),x*=b.cross(w).dot(_)<0?1:-1;else{"XYZE"===t?(A.copy(g).sub(v),y.copy(A).cross(_).normalize()):y.copy(m[t]);var e=new Oe,a=(e.copy(B),"local"===r?y.clone().applyQuaternion(S):y),o=(new ir).setFromNormalAndCoplanarPoint(a,e),n=viewer.inputHandler.getMouseDirection(),s=n.origin,n=n.direction,s=(d.set(s,n),d.ray.intersectPlane(o,new Oe));if(s){n=s.clone().sub(e);if(!this.rotateStart)return void(this.rotateStart={v1:n});o=this.rotateStart.v1;if(x=te.getAngle(o,n,a),Number.isNaN(x))return;this.rotateStart.v1=n}}else{A.copy(g).sub(v);s=2/M.distanceTo(h.setFromMatrixPosition(this.camera.matrixWorld));"E"===t?(y.copy(_),x=g.angleTo(v),w.copy(v).normalize(),b.copy(g).normalize(),x*=b.cross(w).dot(_)<0?1:-1):"XYZE"===t?(y.copy(A).cross(_).normalize(),x=A.dot(h.copy(y).cross(this.eye))*s):"X"!==t&&"Y"!==t&&"Z"!==t||(y.copy(m[t]),h.copy(m[t]),"local"===r&&h.applyQuaternion(S),x=A.dot(h.cross(_).normalize())*s),this.rotationSnap&&(x=Math.round(x/this.rotationSnap)*this.rotationSnap),this.rotationAngle=x}("local"===r&&"E"!==t&&"XYZE"!==t?(i.scale[t.toLowerCase()]<0&&(x*=-1),i.quaternion.copy(P),i.quaternion.multiply(f.setFromAxisAngle(y,x))):(y.applyQuaternion(C),i.quaternion.copy(f.setFromAxisAngle(y,x)),i.quaternion.multiply(P))).normalize(),2==this.rotateMethod&&"E"!=t&&P.copy(i.quaternion),i.dispatchEvent({type:"rotation_changed"})}this.dispatchEvent(c),this.dispatchEvent(O),viewer.dispatchEvent("content_changed")}}},this.pointerUp=function(e){this.dragging&&null!==this.axis&&(o.mode=this.mode,this.dispatchEvent(o),this.rotateStart=null),this.dragging=!1},this.onPointerDown=k,this.onPointerMove=R,this.onPointerUp=L,this.getMode=function(){return r.mode},this.setMode=function(e){r.mode=e},this.setTranslationSnap=function(e){r.translationSnap=e},this.setRotationSnap=function(e){r.rotationSnap=e},this.setScaleSnap=function(e){r.scaleSnap=e},this.setSize=function(e){r.size=e},this.setSpace=function(e){r.space=e},this.update=function(){console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}}function $b(s){Z.call(this),this.type="TransformControlsGizmo";var e=new R({depthTest:!(this.hideAxis={}),depthWrite:!1,transparent:!0,side:ve,fog:!1}),t=new wl({depthTest:!1,depthWrite:!1,transparent:!0,fog:!1}),n=e.clone(),i=(n.opacity=.15,e.clone());i.opacity=.1;(x=e.clone()).color.set(16711680);var r=e.clone(),a=(r.color.set(65280),e.clone()),o=(a.color.set(255),e.clone()),l=(o.opacity=.35,o.color.set(53501),o.clone());function u(e,t){for(var n=new V,i=[],r=0;r<=64*t;++r)i.push(0,Math.cos(r/32*Math.PI)*e,Math.sin(r/32*Math.PI)*e);return n.setAttribute("position",new H(new Float32Array(i),3)),n}function c(e){var t,n=new Z;for(t in e)for(var i=e[t].length;i--;){var r=e[t][i][0].clone(),a=e[t][i][1],o=e[t][i][2],s=e[t][i][3],l=e[t][i][4],l=(r.name=t,r.tag=l,a&&r.position.set(a[0],a[1],a[2]),o&&r.rotation.set(o[0],o[1],o[2]),s&&r.scale.set(s[0],s[1],s[2]),r.updateMatrix(),r.geometry.clone());l.applyMatrix4(r.matrix),r.geometry=l,r.renderOrder=1/0,r.position.set(0,0,0),r.rotation.set(0,0,0),r.scale.set(1,1,1),n.add(r)}return n}l.color.set(16776960),(g=o.clone()).color.set(65535),(A=o.clone()).color.set(16711935),e.clone().color.set(16776960);(e=t.clone()).color.set(16711680);var d=t.clone(),h=(d.color.set(65280),t.clone());h.color.set(255),(w=t.clone()).color.set(65535);(y=t.clone()).color.set(16711935);var p=t.clone();p.color.set(16776960),(t=t.clone()).color.set(7895160);(b=p.clone()).opacity=.25;var f=new Xl(0,.05,.2,12,1,!1),m=new da(.125,.125,.125),v=new V,f=(v.setAttribute("position",new H(new Float32Array([0,0,0,1,0,0]),3)),{X:[[new Q(f,x),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new Ml(v,e)]],Y:[[new Q(f,r),[0,1,0],null,null,"fwd"],[new Ml(v,d),null,[0,0,Math.PI/2]]],Z:[[new Q(f,a),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new Ml(v,h),null,[0,-Math.PI/2,0]]],XY:[[new Q(new _a(.295,.295),l.clone()),[.15,.15,0]],[new Ml(v,p),[.18,.3,0],null,[.125,1,1]],[new Ml(v,p),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new Q(new _a(.295,.295),g.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new Ml(v,w),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new Ml(v,w),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new Q(new _a(.295,.295),A.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new Ml(v,y),[.18,0,.3],null,[.125,1,1]],[new Ml(v,y),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]}),g={X:[[new Q(new Xl(.2,0,1,4,1,!1),n),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new Q(new Xl(.2,0,1,4,1,!1),n),[0,.6,0]]],Z:[[new Q(new Xl(.2,0,1,4,1,!1),n),[0,0,.6],[Math.PI/2,0,0]]],XY:[[new Q(new _a(.4,.4),n),[.2,.2,0]]],YZ:[[new Q(new _a(.4,.4),n),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new Q(new _a(.4,.4),n),[.2,0,.2],[-Math.PI/2,0,0]]]},A={START:[[new Q(new Lu(.01,2),i),null,null,null,"helper"]],END:[[new Q(new Lu(.01,2),i),null,null,null,"helper"]],DELTA:[[new Ml(((w=new V).setAttribute("position",new H(new Float32Array([0,0,0,1,1,1]),3)),w),i),null,null,null,"helper"]],X:[[new Ml(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ml(v,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ml(v,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},y=s.rotFullCircle?1:.5,w={X:[[new Ml(u(1,y),e)],[new Q(new Lu(.04,0),x),[0,0,.99],null,[1,3,1]]],Y:[[new Ml(u(1,y),d),null,[0,0,-Math.PI/2]],[new Q(new Lu(.04,0),r),[0,0,.99],null,[3,1,1]]],Z:[[new Ml(u(1,y),h),null,[0,Math.PI/2,0]],[new Q(new Lu(.04,0),a),[.99,0,0],null,[1,3,1]]],E:[[new Ml(u(1.25,1),b),null,[0,Math.PI/2,0]],[new Q(new Xl(.03,0,.15,4,1,!1),b),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new Q(new Xl(.03,0,.15,4,1,!1),b),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new Q(new Xl(.03,0,.15,4,1,!1),b),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new Q(new Xl(.03,0,.15,4,1,!1),b),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new Ml(u(1,1),t),null,[0,Math.PI/2,0]]]},y={AXIS:[[new Ml(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},b={X:[[new Q(new Xu(1,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new Q(new Xu(1,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new Q(new Xu(1,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new Q(new Xu(1.25,.1,2,24),n)]],XYZE:[[new Q(new Qu(.7,10,8),n)]]},t={X:[[new Q(m,x),[.8,0,0],[0,0,-Math.PI/2]],[new Ml(v,e),null,null,[.8,1,1]]],Y:[[new Q(m,r),[0,.8,0]],[new Ml(v,d),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new Q(m,a),[0,0,.8],[Math.PI/2,0,0]],[new Ml(v,h),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new Q(m,l),[.85,.85,0],null,[2,2,.2]],[new Ml(v,p),[.855,.98,0],null,[.125,1,1]],[new Ml(v,p),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],XYZY:[[new Q(new da(.125,.125,.125),o.clone()),[0,1.1,0]]]},x={X:[[new Q(new Xl(.2,0,.8,4,1,!1),n),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new Q(new Xl(.2,0,.8,4,1,!1),n),[0,.5,0]]],Z:[[new Q(new Xl(.2,0,.8,4,1,!1),n),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new Q(m,n),[.85,.85,0],null,[3,3,.2]]],XYZY:[[new Q(new da(.2,.2,.2),n),[0,1.1,0]]]},e={X:[[new Ml(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Ml(v,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Ml(v,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},E=new Oe(0,0,0),C=new Oi,B=new Oe(0,1,0),M=new Oe(0,0,0),S=new Me,T=new ii,_=new ii,P=new ii,D=new Oe(1,0,0),I=new Oe(0,1,0),k=new Oe(0,0,1);this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=c(f)),this.add(this.gizmo.rotate=c(w)),this.add(this.gizmo.scale=c(t)),this.add(this.picker.translate=c(g)),this.add(this.picker.rotate=c(b)),this.add(this.picker.scale=c(x)),this.add(this.helper.translate=c(A)),this.add(this.helper.rotate=c(y)),this.add(this.helper.scale=c(e)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1,this.updateMatrixWorld=function(){if(this.parent.visible){var e=this.space,t="local"===(e="scale"===this.mode?"local":e)?this.worldQuaternion:P,n=(this.gizmo.translate.visible="translate"===this.mode,this.gizmo.rotate.visible="rotate"===this.mode,this.gizmo.scale.visible="scale"===this.mode,this.helper.translate.visible="translate"===this.mode,this.helper.rotate.visible="rotate"===this.mode,this.helper.scale.visible="scale"===this.mode,[]);n=(n=(n=n.concat(this.picker[this.mode].children)).concat(this.gizmo[this.mode].children)).concat(this.helper[this.mode].children);for(var i=0;i<n.length;i++){var r,a,o=n[i];this.hideAxis[this.mode]&&this.hideAxis[this.mode].some(function(e){return o.name.includes(e.toUpperCase())})?Potree.Utils.updateVisible(o,"hidden",!1):(r=!0,o.rotation.set(0,0,0),o.position.copy(this.worldPosition),a="OrthographicCamera"==this.camera.type?800/this.camera.zoom:this.worldPosition.distanceTo(this.cameraPosition),o.scale.set(1,1,1).multiplyScalar(a*this.size/7),"helper"===o.tag?(r=!1,"AXIS"===o.name?(o.position.copy(this.worldPositionStart),r=!!this.axis,"X"===this.axis&&(T.setFromEuler(C.set(0,0,0)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye)))&&(r=!1),"Y"===this.axis&&(T.setFromEuler(C.set(0,0,Math.PI/2)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(I).applyQuaternion(t).dot(this.eye)))&&(r=!1),"Z"===this.axis&&(T.setFromEuler(C.set(0,Math.PI/2,0)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye)))&&(r=!1),"XYZE"===this.axis&&(T.setFromEuler(C.set(0,Math.PI/2,0)),B.copy(this.rotationAxis),o.quaternion.setFromRotationMatrix(S.lookAt(M,B,I)),o.quaternion.multiply(T),r=this.dragging),"E"===this.axis&&(r=!1)):"START"===o.name?(o.position.copy(this.worldPositionStart),r=this.dragging):"END"===o.name?(o.position.copy(this.worldPosition),r=this.dragging):"DELTA"===o.name?(o.position.copy(this.worldPositionStart),o.quaternion.copy(this.worldQuaternionStart),E.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),E.applyQuaternion(this.worldQuaternionStart.clone().invert()),o.scale.copy(E),r=this.dragging):(o.quaternion.copy(t),this.dragging?o.position.copy(this.worldPositionStart):o.position.copy(this.worldPosition),this.axis&&(r=-1!==this.axis.search(o.name))),Potree.Utils.updateVisible(o,"hidden",!!r)):(o.quaternion.copy(t),"translate"===this.mode||"scale"===this.mode?(s.dontHideWhenFaceCamera||("X"!==o.name&&"XYZX"!==o.name||.99<Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"Y"!==o.name&&"XYZY"!==o.name||.99<Math.abs(B.copy(I).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"Z"!==o.name&&"XYZZ"!==o.name||.99<Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"XY"===o.name&&Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"YZ"===o.name&&Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"XZ"===o.name&&Math.abs(B.copy(I).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1)),-1!==o.name.search("X")&&B.copy(D).applyQuaternion(t).dot(this.eye)<0&&(o.scale.x*=-1),-1!==o.name.search("Y")&&B.copy(I).applyQuaternion(t).dot(this.eye)<0&&(o.scale.y*=-1),-1!==o.name.search("Z")&&B.copy(k).applyQuaternion(t).dot(this.eye)<0&&(o.scale.z*=-1)):"rotate"===this.mode&&(_.copy(t),B.copy(this.eye).applyQuaternion(T.copy(t).invert()),-1!==o.name.search("E")&&o.quaternion.setFromRotationMatrix(S.lookAt(this.eye,M,I)),"X"===o.name&&(T.setFromAxisAngle(D,Math.atan2(-B.y,B.z)),T.multiplyQuaternions(_,T),o.quaternion.copy(T)),"Y"===o.name&&(T.setFromAxisAngle(I,Math.atan2(B.x,B.z)),T.multiplyQuaternions(_,T),o.quaternion.copy(T)),"Z"===o.name)&&(T.setFromAxisAngle(k,Math.atan2(B.y,B.x)),T.multiplyQuaternions(_,T),o.quaternion.copy(T)),r=(r=(r=(r=r&&(-1===o.name.indexOf("X")||this.showX))&&(-1===o.name.indexOf("Y")||this.showY))&&(-1===o.name.indexOf("Z")||this.showZ))&&(-1===o.name.indexOf("E")||this.showX&&this.showY&&this.showZ),Potree.Utils.updateVisible(o,"hidden",!!r),o.material._opacity=o.material._opacity||o.material.opacity,o.material._color=o.material._color||o.material.color.clone(),o.material.color.copy(o.material._color),o.material.opacity=o.material._opacity,this.enabled?this.axis&&(o.name===this.axis||this.axis.split("").some(function(e){return o.name===e})?o.material.opacity=1:o.material.opacity*=.25,o.material.color.lerp(new Se(1,1,1),.5)):(o.material.opacity*=.5,o.material.color.lerp(new Se(1,1,1),.5))))}Z.prototype.updateMatrixWorld.call(this)}}}function ex(e){Q.call(this,new _a(1e5,1e5,2,2),new R({color:"#ff0000",visible:!1,wireframe:!1,side:ve,transparent:!0,opacity:.2})),this.type="TransformControlsPlane";var t=new Oe(1,0,0),n=new Oe(0,1,0),i=new Oe(0,0,1),r=new Oe,a=new Oe,o=new Oe,s=new Me,l=new ii;this.updateMatrixWorld=function(){if(this.visible){var e=this.space;switch(this.position.copy(this.worldPosition),"scale"===this.mode&&(e="local"),t.set(1,0,0).applyQuaternion("local"===e?this.worldQuaternion:l),n.set(0,1,0).applyQuaternion("local"===e?this.worldQuaternion:l),i.set(0,0,1).applyQuaternion("local"===e?this.worldQuaternion:l),o.copy(n),this.mode){case"translate":case"scale":switch(this.axis){case"X":o.copy(this.eye).cross(t),a.copy(t).cross(o);break;case"Y":o.copy(this.eye).cross(n),a.copy(n).cross(o);break;case"Z":o.copy(this.eye).cross(i),a.copy(i).cross(o);break;case"XY":a.copy(i);break;case"YZ":a.copy(t);break;case"XZ":o.copy(i),a.copy(n);break;default:a.set(0,0,0)}break;default:a.set(0,0,0)}0===a.length()?this.quaternion.copy(this.cameraQuaternion):(s.lookAt(r.set(0,0,0),a,o),this.quaternion.setFromRotationMatrix(s)),Z.prototype.updateMatrixWorld.call(this)}}}function tx(e){return(cx=cx||{"fire+smoke":av.createFatLineMat($.extend(wE,{color:yE["fire+smoke"],lineWidth:2})),smoke:av.createFatLineMat($.extend(wE,{color:yE.smoke,lineWidth:2})),explode:av.createFatLineMat($.extend(wE,{color:yE.explode,lineWidth:2}))})[e]}function nx(e){var t;return dx||(t=new Gc,dx={"fire+smoke":new sv($.extend(wE,{map:t.load(Potree.resourcePath+"/textures/icon-fire.png"),color:yE["fire+smoke"]})),smoke:new sv($.extend(wE,{map:t.load(Potree.resourcePath+"/textures/icon-smoke.png"),color:yE.smoke})),explode:new sv($.extend(wE,{map:t.load(Potree.resourcePath+"/textures/icon-explode.png"),color:yE.explode}))}),dx[e]}function ix(r,a,o){return new Promise(function(e){var n,i,t;return!Ex||(t=Date.now())-NE<500?e():(NE=t,null==a?a=Tx:(n=0,i=1,a instanceof Function&&(a=a()),r.forEach(function(e){var t=i*e[0]+n*(1-e[0]),e=i*e[1]+n*(1-e[1]);n=t,i=e}),t=i*a+n*(1-a),"loadpoints"==o&&Potree.settings.isTest&&console.log("notify pro",t,o),Ex.notify(t),Tx=t,isNaN(t)&&console.log("nan")),void setTimeout(e,5))})}var rx,ax,ox,sx,lx,ux,cx,dx,hx,px,fx,mx,vx,gx,Ax,yx,wx,bx,xx,Ex,Cx,Bx,Mx,Sx,Tx,_x,Px,Dx,Ix,kx,Rx,Lx,Fx,Ox,Ux=[{name:"top",axis:["x","y"],direction:new Oe(0,0,-1),openCount:0},{name:"front",axis:["x","z"],direction:new Oe(0,1,0),openCount:0},{name:"mainView",openCount:0}],Nx={bus:new Qn,selectedDatasets:[],changeCallback:function(e){var t,n=this;"mainView"!=this.activeViewName&&this.splitScreenTool.updateCameraOutOfModel(),Potree.settings.isOfficial&&this.showMap&&(t=function(){var e=n.getIntersectPointcloud();j.getDifferenceSet(e,n.selectedDatasets).length&&(n.selectedDatasets=e,n.bus.dispatchEvent({type:"updateSelectedDatasets",selectedDatasets:e.map(function(e){return e.dataset_id})}))},e?t():j.intervalTool.isWaiting("clipSelectedDatasets",t,300))},enter:function(){var n=this;this.initViews(),this.previousView={position:viewer.images360.position,target:viewer.scene.view.getPivot(),displayMode:Potree.settings.displayMode,ifShowMarker:Potree.settings.ifShowMarker};var i,r,e=this.getPointcloud().bound,t=e.getSize(new Oe),e=this.getTarget(e.getCenter(new Oe)),t=new Oe(16,16,t.z),a=viewer.scene.view.direction.clone().setZ(0).multiplyScalar(-16),o=(new Oe).addVectors(e,a);Potree.settings.displayMode="showPointCloud",viewer.setView({position:o,target:e,duration:300,callback:function(){}}),viewer.setLimitFar(!1),this.box=new Jy({clip:!0}),this.box.clipTask=Bm.SHOW_INSIDE_Big,this.box.showBox=!1,this.box.name="ClipBox",this.box.position.copy(e),this.box.scale.copy(t),viewer.controls.setTarget(this.box.position),this.splitScreenTool.focusCenter=this.box.position,this.box.addEventListener("position_changed",function(e){n.showMap&&(n.mapBox.center.setX(n.box.position.x),n.mapBox.center.setY(n.box.position.y),n.mapBox.updatePoints()),n.changeCallback()}),this.box.addEventListener("scale_changed",function(e){var t;n.showMap&&(t=n.box.scale,n.mapBox.updatePoints(t)),n.changeCallback()}),this.box.addEventListener("orientation_changed",function(e){n.showMap&&(n.mapBox.angle=n.box.rotation.z,n.mapBox.rotateBar.rotation.z=n.mapBox.angle,n.mapBox.updatePoints()),n.changeCallback()}),viewer.scene.addVolume(this.box),this.showMap&&(i=function(){n.box.rotation.x=0,n.box.rotation.y=0},this.mapBox=new Yb(e,t),viewer.mapViewer.scene.add(this.mapBox),this.mapBox.addEventListener("repos",function(e){n.box.position.setX(n.mapBox.center.x),n.box.position.setY(n.mapBox.center.y),i(),n.changeCallback()}),this.mapBox.addEventListener("dragChange",function(e){var t=n.mapBox.getScale();n.box.scale.setX(t.x),n.box.scale.setY(t.y),n.box.position.setX(n.mapBox.center.x),n.box.position.setY(n.mapBox.center.y),i(),n.changeCallback()}),this.mapBox.addEventListener("rotate",function(e){n.box.rotation.z=n.mapBox.angle,i(),n.changeCallback()})),this.switchView("mainView"),Potree.settings.unableNavigate=!0,Potree.settings.ifShowMarker=!1,Potree.Utils.updateVisible(viewer.measuringTool.scene,"clipModel",!1),viewer.inputHandler.toggleSelection(this.box),viewer.inputHandler.fixSelection=!0,viewer.transformationTool.setModeEnable(["scale","translation","rotation"]),viewer.transformationTool.frame.material.color.set(Potree.config.clip.color),viewer.setPointStandardMat(!0),this.showMap&&(r=!1,this.events={flyToPos:function(e){e.position;var t=n.box.position,e=(o=e.position,null==e.duration?1e3:e.duration);viewer.scene.view.setView({position:o,duration:e,target:t})},mapVisiChange:function(e){r=e.visible;setTimeout(function(){var e,t,n,i=Nx.box.boundingBox.clone().applyMatrix4(Nx.box.matrixWorld);r?(0==viewer.fpVisiDatasets.length&&(t=(e=0==(e=viewer.scene.pointclouds.filter(function(e){return e.visible})).length?viewer.scene.pointclouds:e).map(function(e,t){return[-viewer.scene.view.position.distanceToSquared(e.bound2),t]}),e=e[(t=t.sort(function(e,t){return e[0]-t[0]}))[0][1]],viewer.flyToDataset({pointcloud:e,duration:0})),0!=Nx.switchMapCount&&Potree.Utils.getPos2d(viewer.scene.view.position,viewer.mapViewer.viewports[0],viewer.mapViewer.renderArea).inSight&&Potree.Utils.isInsideFrustum(i,viewer.mapViewer.camera)||((t=i.clone()).expandByPoint(viewer.scene.view.position),e=t.getSize(new Oe),t=t.getCenter(new Oe),n=viewer.mainViewport.resolution.clone().multiplyScalar(.3),viewer.mapViewer.moveTo(t,e,100,n)),Nx.switchMapCount++):Potree.Utils.isInsideFrustum(i,viewer.scene.getActiveCamera())||viewer.focusOnObject({boundingBox:i},"boundingBox",100)},100)}},this.switchMapCount=0,this.bus.addEventListener("flyToPos",this.events.flyToPos),viewer.mapViewer.addEventListener("forceVisible",this.events.mapVisiChange)),this.editing=!0,setTimeout(function(){n.changeCallback(!0)},1)},leave:function(){viewer.inputHandler.fixSelection=!1,viewer.scene.removeVolume(this.box),this.showMap&&this.mapBox.dispose(),this.switchView("mainView"),Potree.settings.unableNavigate=!1,Potree.settings.ifShowMarker=this.previousView.ifShowMarker,Potree.Utils.updateVisible(viewer.measuringTool.scene,"clipModel",!0),viewer.setView(this.previousView),viewer.setLimitFar(!0),viewer.setPointStandardMat(!1),viewer.controls.setTarget(null),this.splitScreenTool.focusCenter=null,Ux.forEach(function(e){return e.openCount=0}),this.showMap&&(this.bus.removeEventListener("flyToPos",this.events.flyToPos),viewer.mapViewer.removeEventListener("forceVisible",this.events.mapVisiChange),this.events=null),this.editing=!1},initViews:function(){if(this.views)this.views.top.pitch=-Math.PI,this.views.top.yaw=0,this.views.front.pitch=0,this.views.front.yaw=0;else{this.views={},this.cameras={},this.orthoCamera=new Ad(-100,100,100,100,.01,1e4),this.orthoCamera.up.set(0,0,1),this.splitScreenTool=new Nb,this.targetPlane=viewer.mainViewport.targetPlane=new ir,this.shiftTarget=viewer.mainViewport.shiftTarget=new Oe;for(var e=0;e<2;e++){var t=Ux[e],n=new ff;this.views[t.name]=n,this.cameras[t.name]=this.orthoCamera,n.name=t.name,n.direction=t.direction}this.views.mainView=viewer.mainViewport.view,this.cameras.mainView=viewer.mainViewport.camera}},switchView:function(t){var e,n,i,r,a,o,s;this.activeViewName!=t&&(e=this.views[t],n=this.cameras[t],i=Ux.find(function(e){return e.name==t}),(s=viewer.bound).boundSize,r=s.center,s.boundingBox,this.lastViewName=this.activeViewName,this.activeViewName=t,s=this.views[this.lastViewName],a=this.cameras[this.lastViewName],viewer.mainViewport.view=e,viewer.mainViewport.camera=n,a&&(s.zoom=a.zoom),e.zoom&&(n.zoom=e.zoom),viewer.updateScreenSize({forceUpdateSize:!0}),e.applyToCamera(n),s=Nx.box.boundingBox.clone().applyMatrix4(Nx.box.matrixWorld),Potree.Utils.isInsideFrustum(s,n)||(o=!0),"mainView"==t?0==i.openCount&&(o=!1):(this.targetPlane.setFromNormalAndCoplanarPoint(e.direction.clone(),r),this.targetPlane.projectPoint(e.position,this.shiftTarget),0==i.openCount&&(o=!0),this.lastViewName,o||this.splitScreenTool.updateCameraOutOfModel(),viewer.mainViewport.rotateSide="front"==t),o&&this.focusOnObject(this.box),i.openCount++)},focusOnObject:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;"mainView"==this.activeViewName?viewer.focusOnObject({boundingBox:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},"boundingBox",t):this.orthoMoveFit(e.position,{bound:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},t)},transform:function(e,t,n){this.box[e][t]+=n},setModeEnable:function(t,n){var i=[];["scale","translation","rotation"].forEach(function(e){e==t?n&&i.push(e):viewer.transformationTool.modesEnabled[e]&&i.push(e)}),viewer.transformationTool.setModeEnable(i),viewer.dispatchEvent("content_changed")},rotateSideCamera:function(e){e=Be.degToRad(e)-viewer.mainViewport.view.yaw;this.splitScreenTool.rotateSideCamera(viewer.mainViewport,e)},orthoMoveFit:function(e,t,n){var i={x:.4*viewer.mainViewport.resolution.x,y:.4*viewer.mainViewport.resolution.y};this.splitScreenTool.viewportFitBound(viewer.mainViewport,t.bound,e,n,i)},getPointcloud:function(){var e=viewer.scene.pointclouds.filter(function(e){return 0<e.panos.length});return 0==e.length&&(e=viewer.scene.pointclouds),j.sortByScore(e,[],[function(e){var t=e.bound.getCenter(new Oe);return e.bound.getSize(new Oe).length()/2/viewer.images360.position.distanceTo(t)}])[0].item},getTarget:function(e){var t=new Oe,n=viewer.images360.position,n=j.find(viewer.images360.panos,[],[W0.sortFunctions.floorDisSquaredToPoint(n)]);return n?(t.copy(n.position),t.setZ(e.z)):t.copy(e),t},download:function(){var e,n=this;return 0==this.getIntersectPointcloud().length?null:((e=viewer.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")})).sort(function(e,t){return e.dataset_id-t.dataset_id}),{transformation_matrix:e.map(function(t){return{id:t.dataset_id,matrix:n.getTransformationMatrix(t).elements,visiMatrixes:t.material.clipBoxes_in.map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),unVisiMatrixes:t.material.clipBoxes_out.map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),modelMatrix:(new Me).copy(t.transformMatrix).transpose().elements}}),aabb:"b-0.5 -0.5 -0.5 0.5 0.5 0.5"})},downloadNoCrop:function(){var e=viewer.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")}),e=(e.sort(function(e,t){return e.dataset_id-t.dataset_id}),{transformation_matrix:e.map(function(e){return{id:e.dataset_id,matrix:(new Me).elements,modelMatrix:(new Me).copy(e.transformMatrix).transpose().elements}}),aabb:"b-12742000 -12742000 -12742000 12742000 12742000 12742000"});return console.log(e),e},getTransformationMatrix:function(e,t){t=t||this.box.matrixWorld.clone().invert();return(new Me).multiplyMatrices(t,e.transformMatrix).transpose()},getIntersectPointcloud:function(){var t=this;return viewer.scene.pointclouds.filter(function(e){if(e.intersectBox(t.box.matrixWorld))return!0})},getRulerBound:function(){var e,t,n,i,r,a=viewer.mainViewport.camera;if(a.isOrthographicCamera)return e=a.right/a.zoom,t=a.top/a.zoom,n=[],i=new K,Nx.box.children[0].geometry.vertices.forEach(function(e){e=e.clone().applyMatrix4(Nx.box.matrixWorld),n.push(e),e=e.clone().applyMatrix4(a.matrixWorldInverse);i.expandByPoint(e)}),r=new Re(i.min.x,i.max.y),{left:(r=new Re(-r.x,r.y)).x-e,right:r.x+e,bottom:r.y+t,top:r.y-t}},screenshot:(rx=J(X().mark(function e(v,g){var A,t=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return A=2<t.length&&void 0!==t[2]?t[2]:"像素 : 米",e.abrupt("return",new Promise(function(a,e){if(Nx.screenshoting)return e();var o=viewer.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")}),t=viewer.mainViewport.camera,e=Potree.browser.urlHasValue("clipMinWidth",!0)||1024,n=(viewer.inputHandler.deselectAll(),Nx.box.visible=!1,Nx.screenshoting=!0,new ev),s=(n.pointSizeType=Potree.PointSizeType.FIXED,n.size=Potree.browser.urlHasValue("clipPointSize",!0)||1,n.uniforms.minSize.value=.1,n.activeAttributeName="rgba",n.clipBoxBig_in=o[0].material.clipBoxBig_in,n.shaderNeedsUpdate=!0,n.bigClipInBox=o[0].material.bigClipInBox,o.map(function(e){var t=e.material;return e.material=n,t})),i=Nx.box.boundingBox.clone().applyMatrix4(Nx.box.matrixWorld),r=[],l=new K,u=(Nx.box.children[0].geometry.vertices.forEach(function(e){e=e.clone().applyMatrix4(Nx.box.matrixWorld),r.push(e),e=e.clone().applyMatrix4(t.matrixWorldInverse);l.expandByPoint(e)}),l.getSize(new Oe)),c=Potree.browser.urlHasValue("clipZoom",!0)||80,d=u.x*c,h=u.y*c,c=Math.max(d,h),p=1,e=(8192<c?p=8192/c:c<e&&(p=e/c),d*=p,h*=p,n.size*=p,1!=p&&console.log("宽度缩放倍数",p),d=Math.round(d),h=Math.round(h),[{boundingBox:i,points:r},"boundingBox",0,{dontChangeCamDir:!0,dontMoveMap:!0,boundScale:1}]),c=Be.clamp(Math.sqrt(35e6/u.z)*p,1024,4096),i=d/c,p=h/c,c=(1<i||1<p)&&{wc:Math.ceil(i),hc:Math.ceil(p)},f=(console.log({wc:i,hc:p,w:d,h:h}),u.x/d),m="1 : ".concat(f.toFixed(4),"(").concat(A,")"),i=viewer.startScreenshot({type:"default",bgOpacity:0,focusObjectInfo:e,maxTimeForPointLoad:3e5,pointDensity:"screenshot2",splitRenderInfo:c,beforeScreenshot:function(){var e;v&&(e=Nx.getRulerBound(),Object.assign(v,e))}},d,h,1);i.getImagePromise;i.finishPromise.done(function(e){var e=e.dataUrl,r=(viewer.inputHandler.toggleSelection(Nx.box),Nx.box.visible=!0,new Image);r.src=e,r.onload=J(X().mark(function e(){var t,n,i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=te.linearClamp(d,[100,700,8e3],[12,20,30]),t={left:v?76:40,right:v?30:40,bottom:v?20+2*i:40+2*i,top:v?60:40},n=-Math.min(2.5*i,v?t.bottom:.9*t.bottom)/h,(n={bottomRatioToImg:n,horizonCenter:!0,textColor:v?{r:0,g:0,b:0,a:1}:{r:255,g:255,b:255,a:1},textBorderColor:{r:30,g:30,b:30,a:1},textBorderThick:v?0:1,fontsize:i,fontWeight:v?"normal":"Bold",outputCanvas:!!v,bgColor:v?{r:255,g:255,b:255,a:255}:null}).bgMargin={left:t.left+g,bottom:t.bottom+g,right:t.right+g,top:t.top+g},v&&(v.left-=t.left*f,v.right+=t.right*f,v.top-=t.top*f,v.bottom+=t.bottom*f),e.next=8,Potree.Utils.imgAddText(r,m,n);case 8:i=e.sent,o.forEach(function(e,t){return e.material=s[t]}),Nx.screenshoting=!1,viewer.viewports=[viewer.mainViewport],a(i);case 13:case"end":return e.stop()}},e)}))})}));case 3:case"end":return e.stop()}},e)})),function(e,t){return rx.apply(this,arguments)})},zx=[{left:.5,bottom:.5,width:.5,height:.5,name:"MainView",active:!0},{left:0,bottom:.5,width:.5,height:.5,name:"top",name2:"mapViewport",axis:["x","y"],direction:new Oe(0,0,-1),active:!0},{left:.5,bottom:0,width:.5,height:.5,name:"right",axis:["y","z"],direction:new Oe(1,0,0),active:!0},{left:0,bottom:0,width:.5,height:.5,name:"back",axis:["x","z"],direction:new Oe(0,-1,0),active:!0}],Gx=new Nb,Hx=(Gx.split=function(){viewer.scene.getActiveCamera();function t(){var t=this;viewer.dealBeforeRender=!0,viewer.scene.pointclouds.forEach(function(e){"MainView"==t.name?(e.material.activeAttributeName=n.colorType,e.material.useFilterByNormal=!1,e.changePointOpacity(n.opacity.get(e)),Potree.settings.pointDensity="fourViewportsMain"):(e.material.activeAttributeName="color",e.material.useFilterByNormal=!0,Potree.settings.pointDensity="fourViewports",e.changePointOpacity("mapViewport"==t.name?.5:.1)),viewer.images360.panos.forEach(function(e){"mapViewport"==t.name?Potree.Utils.updateVisible(e.marker,"showOnMap",!0,1,"add"):Potree.Utils.updateVisible(e.marker,"showOnMap",!1,1,"cancel")})}),viewer.dealBeforeRender=!1}var e=viewer.bound,e=(e.boundSize,e.center,viewer.setLimitFar(!1),viewer.mapViewer.attachToMainViewer(!0,"split4Screens","dontSet"),viewer.renderer.clear(),this.splitStart(zx)),n=(viewer.mapViewer.viewports[0].noPointcloud=!1,this.statesBefore={pointDensity:Potree.settings.pointDensity,displayMode:Potree.settings.displayMode,position:viewer.images360.position,target:viewer.scene.view.getPivot(),currentPano:viewer.images360.currentPano},viewer.setPointStandardMat(!0,null,!0),{opacity:new Map});new Map,viewer.scene.pointclouds.forEach(function(e){n.opacity.set(e,e.temp.pointOpacity),n.colorType=e.material.activeAttributeName});e.forEach(function(e){e.beforeRender=t,new m1(e,viewer.renderArea,{domStyle:{top:"22px",right:"mapViewport"==e.name?"30px":"2px",width:"80px",height:"80px"}})}),this.enableMap(!1),this.enableFloorplan(!1),viewer.mapViewer.setViewLimit("null"),Potree.settings.displayMode="showPointCloud"},Gx.recover=function(){viewer.viewports.forEach(function(e){e.axis.dispose()}),this.unSplit(),viewer.mapViewer.viewports[0].beforeRender=null,viewer.setView({position:this.statesBefore.position,target:this.statesBefore.target,currentPano:this.statesBefore.currentPano,duration:300,callback:function(){}}),viewer.mainViewport.beforeRender=null,viewer.setLimitFar(!0);var e=viewer.mapViewer.viewports[0];viewer.mapViewer.attachToMainViewer(!1),e.noPointcloud=!0,this.enableMap(Potree.settings.mapEnable),this.enableFloorplan(Potree.settings.floorplanEnable),this.floorplanListener&&(viewer.mapViewer.mapLayer.removeEventListener("floorplanLoaded",this.floorplanListener),this.floorplanListener=null),Potree.settings.pointDensity=this.statesBefore.pointDensity,Potree.settings.isOfficial||(Potree.settings.displayMode=this.statesBefore.displayMode),viewer.scene.pointclouds.forEach(function(e){e.material.useFilterByNormal=!1}),viewer.setPointStandardMat(!1),viewer.mapViewer.setViewLimit("standard"),viewer.images360.panos.forEach(function(e){Potree.Utils.updateVisible(e.marker,"showOnMap",!1,1,"cancel")})},Gx.updateMapViewerBG=function(){var e=viewer.mapViewer.viewports[0];this.splited&&(this.floorplanEnabled||this.mapEnabled)?(e.background="overlayColor",e.backgroundColor=new Se(0,0,0),e.backgroundOpacity=.5):(e.background=null,e.backgroundColor=null,e.backgroundOpacity=null),viewer.mapViewer.mapChanged=!0,viewer.mapViewer.needUpdate=!0},Gx.setFloorplanDisplay=function(e){e.floorplan.setEnable(1<arguments.length&&void 0!==arguments[1]&&arguments[1])},Gx.enableMap=function(e){viewer.mapViewer.mapLayer.maps.find(function(e){return"map"==e.name}).setEnable(!!e),this.mapEnabled=e,this.updateMapViewerBG()},Gx.enableFloorplan=function(t){var n=this,e=viewer.mapViewer.mapLayer.maps.filter(function(e){return e.name.includes("floorplan")});this.floorplanListener&&viewer.mapViewer.mapLayer.removeEventListener("floorplanLoaded",this.floorplanListener),this.floorplanListener=function(e){n.setFloorplanDisplay(e,t)},viewer.mapViewer.mapLayer.addEventListener("floorplanLoaded",this.floorplanListener),t?e.forEach(function(e){return n.setFloorplanDisplay({floorplan:e},!0)}):e.forEach(function(e){return n.setFloorplanDisplay({floorplan:e},!1)}),t&&0==e.length&&Potree.loadMapEntity("all",!0),this.floorplanEnabled=t,this.updateMapViewerBG()},Gx.focusOnPointCloud=function(e){e.bound.getSize(new Oe);var t=e.bound.getCenter(new Oe),n=e.panosBound&&e.panosBound.center;this.focusOnObject(e.bound,t,n),viewer.flyToDataset({pointcloud:e,dontMoveMap:!0,duration:0})},Gx.focusOnObject=function(t,n,e){var i=this;viewer.viewports.forEach(function(e){"MainView"!=e.name&&i.viewportFitBound(e,t,n)})},{SplitScreen:Gx,handleState:null,bus:new Qn,applyTemp:function(t){var e=viewer.scene.pointclouds.find(function(e){return e.dataset_id+e.name==t.sid});e.orientationUser=t.orientationUser,e.translateUser=t.translateUser,this.setMatrix(e)},getTemp:function(e){return(e=e||viewer.scene.pointclouds).map(function(e){return{sid:e.dataset_id+e.name,orientationUser:e.orientationUser,translateUser:e.translateUser.clone()}})},init:function(){function e(e){var t;!e.drag&&o.editing&&(t=Hx.handleState,e.hoverViewport.alignment&&t&&e.hoverViewport.alignment[t]?"translate"==t?e.intersect&&e.intersect.location?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}):"rotate"==t&&(e.intersect&&e.intersect.location?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})):(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})))}var a,o=this;this.history=new ay({applyData:function(e){return e.forEach(function(e){Hx.applyTemp(e)}),!0},getData:function(e){return Hx.getTemp(e)}}),viewer.fpControls.addEventListener("transformPointcloud",function(t){if(t.pointclouds[0].dataset_id==Potree.settings.originDatasetId)return o.bus.dispatchEvent("forbitMoveOriginDataset");var n,i,e,r;o.history.beforeChange(t.pointclouds),a=a||{pointclouds:t.pointclouds},"translate"==o.handleState?t.pointclouds.forEach(function(e){return Hx.translate(e,t.moveVec)}):"rotate"==o.handleState&&("pano"==Potree.settings.editType?(n=t.pointclouds[0].translateUser,t.intersect.equals(n)||(a.vecStart?(e=(new Oe).subVectors(t.intersect,n).setZ(0),e=te.getAngle(a.vecStart,e,"z"),i=a.orientationUser+e-a.pointclouds[0].orientationUser,a.pointclouds.forEach(function(e){Hx.rotateAround(n,e,null,i)})):(a.orientationUser=t.pointclouds[0].orientationUser,a.vecStart=(new Oe).subVectors(t.intersectStart,n).setZ(0)))):(e=t.pointclouds[0].translateUser,t.intersect.equals(e)||(a.vecStart?(r=(new Oe).subVectors(t.intersect,e).setZ(0),r=te.getAngle(a.vecStart,r,"z"),r=a.orientationUser+r-a.pointclouds[0].orientationUser,Hx.rotate(a.pointclouds[0],null,r)):(a.orientationUser=t.pointclouds[0].orientationUser,a.vecStart=(new Oe).subVectors(t.intersectStart,e).setZ(0)))))}),viewer.fpControls.addEventListener("end",function(e){a&&o.history.afterChange(a.pointclouds),a=null});viewer.addEventListener("global_mousemove",e),viewer.addEventListener("global_drop",e),viewer.addEventListener("updateModelBound",function(e){o.editing&&o.SplitScreen.updateCameraOutOfModel()})},setMatrix:function(e){var t=e.position,n=e.translateUser,i=e.orientationUser,t=(new Me).setPosition(t),i=(new Me).makeRotationAxis(new Oe(0,0,1),i),n=(new Me).setPosition(n),n=(new Me).multiplyMatrices(n,i);e.transformMatrix=n.clone(),e.transformInvMatrix.copy(e.transformMatrix).invert(),e.rotateMatrix=i,e.rotateInvMatrix.copy(i).invert(),e.panos.forEach(function(e){return e.transformByPointcloud()}),n=(new Me).multiplyMatrices(n,t),e.matrix=n,e.updateMatrixWorld(!0),this.editing&&Hx.changeCallBack&&Hx.changeCallBack(),e.spriteNodeRoot&&e.spriteNodeRoot.matrixWorld.copy(e.matrixWorld),viewer.boundNeedUpdate=!0,e.getPanosBound(),viewer.dispatchEvent("content_changed")},rotateAround:function(e,t,n,i){var i=null!=i?i:Be.degToRad(n),e=(new Oe).subVectors(t.translateUser,e),r=(new Me).makeRotationAxis(new Oe(0,0,1),i),r=e.clone().applyMatrix4(r),r=(new Oe).subVectors(r,e);this.rotate(t,n,i),this.translate(t,r)},rotate:function(e,t,n){n=null!=n?n:Be.degToRad(t);e.orientationUser+=n,Hx.setMatrix(e)},translate:function(e,t){e.translateUser.add(t),Hx.setMatrix(e)},enter:function(){this.originData=this.getTemp(),this.SplitScreen.split({alignment:!0}),viewer.viewports.find(function(e){return"mapViewport"==e.name}).alignment={rotate:!0,translate:!0},viewer.viewports.find(function(e){return"right"==e.name}).alignment={translate:!0,translateVec:new Oe(0,0,1)},viewer.viewports.find(function(e){return"back"==e.name}).alignment={translate:!0,translateVec:new Oe(0,0,1)},this.editing=!0,viewer.updateFpVisiDatasets()},leave:function(){var t=this;this.switchHandle(null),this.originData.forEach(function(e){t.applyTemp(e)}),this.SplitScreen.recover(),this.editing=!1,this.history.clear(),viewer.updateFpVisiDatasets(),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})},switchHandle:function(e){this.handleState=e,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"}),this.bus.dispatchEvent({type:"switchHandle",state:e})},save:function(){function e(){t.originData=t.getTemp(),viewer.scene.measurements.forEach(function(e){return e.transformByPointcloud()}),viewer.images360.updateCube(viewer.bound)}var t=this,n=viewer.scene.pointclouds.map(function(e){var t=viewer.transform.lonlatToLocal.inverse(e.translateUser.clone()),n=viewer.scene.pointclouds.find(function(e){return e.dataset_id==Potree.settings.originDatasetId});return{id:e.dataset_id,orientation:e.orientationUser,location:[t.x,t.y,t.z+n.datasetData.location[2]]}});return Potree.settings.isOfficial||e(),{data:n,callback:e}}}),Vx=new Gc,Qx={width2d:35},jx=new Se("#FFF"),Wx=function(){function r(e){var n;return ue(this,r),e.dimension="3d",(n=le(this,r,["siteModel_"+e.buildType,e])).midMarkers=[],n.buildChildren=[],n.holes=[],n.parentHoles=[],n.mats={},n.panos=n.panos||[],n.center,"floor"==n.buildType&&(n.points=e.points=n.buildParent.points,n.buildParent.holes.forEach(function(e){var t=new r({buildType:"hole",buildParent:n,originHole:e,ifDraw:n.ifDraw||Potree.settings.drawEntityData});n.parentHoles.push(t),n.add(t),t.points=e.points})),"room"!=n.buildType&&"hole"!=n.buildType||(n.restrictArea=n.buildParent),n.buildParent&&(n.dontDragFloorHeight=n.buildParent.dontDragFloorHeight),"hole"!=n.buildType&&(n.box=n.createBox(),n.add(n.box),n.box.visible=!!n.ifDraw),n.ifDraw&&(n.createPrismLines(jx),n.lineMesh.visible=!1,Potree.Utils.setObjectLayers(n.lineMesh,"bothMapAndScene"),n.addEventListener("dragChange",function(e){n.updateTwoMidMarker(e.index)})),n.initData(e),n}return v(r,HA),A(r,[{key:"initData",value:function(e){e.ifDraw?I(r,"initData",this,3)([e]):e.points&&(this.points=e.points)}},{key:"intersectPointcloudVolume",value:function(e){return this.intersectPointcloudArea(e)*this.coverPointcloudHeight(e)}},{key:"coverPointcloudHeight",value:function(e,t){var e=e.bound,n=this.getRealZ(),i=n.zMin,n=n.zMax,r=Math.min(i,e.min.z),a=Math.max(n,e.max.z),n=n-i,i=n+(e.max.z-e.min.z)-(a-r);return t?i/n:i}},{key:"intersectPointcloudArea",value:function(e,t){var n,i,r,a,o,s=this.getBound(),l=e.bound;return s.intersectsBox(l)?(s=e.getUnrotBoundPoint(),n=0,l=this.getArea(),e=Math.abs(te.getArea(s)),te.getPolygonsMixedRings([this.points,s]).forEach(function(e){n+=e.area}),i=0,o=this.holes.concat(this.parentHoles),(r=a=0)<o.length&&(a=this.getHolesArea(),o=[].concat([s]),te.getPolygonsMixedRings(o).forEach(function(e){r+=e.area}),i=a+e-r),s=l+e-n-i,t?{toEntity:s/this.getArea(!0),toPointcloud:s/e}:s):0}},{key:"addHole",value:function(){var n=this,i=new r({buildType:"hole",zMin:this.zMin,zMax:this.zMax,points:0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],buildParent:this,ifDraw:this.ifDraw||Potree.settings.drawEntityData});return this.holes.push(i),"building"==this.buildType&&this.buildChildren.forEach(function(e){var t=new r({buildType:"hole",zMin:n.zMin,zMax:n.zMax,buildParent:e,originHole:i,ifDraw:n.ifDraw||Potree.settings.drawEntityData});e.parentHoles.push(t),e.add(t),t.points=i.points}),this.add(i),this.update(),i}},{key:"removeHole",value:function(e){var i=this,t=(e.dispose(),"building"==this.buildType&&this.buildChildren.forEach(function(e){var t=e.parentHoles.find(function(e){return e.originHole==i}),n=e.parentHoles.indexOf(t);-1<n&&e.parentHoles.splice(n,1),t.dispose()}),this.holes.indexOf(e));-1<t&&this.holes.splice(t,1),this.remove(e),this.update()}},{key:"createBox",value:function(){var e=new Wl,e=(this.mats.boxDefault=Kb(this.buildType),this.mats.boxSelected=Kb(this.buildType+"Select"),new Q(e,this.mats.boxDefault));return e.name="buildingBox","floor"==this.buildType?Potree.Utils.setObjectLayers(e,"siteModelMapUnvisi"):Potree.Utils.setObjectLayers(e,"bothMapAndScene"),e}},{key:"addMarker",value:function(){var t,n,i=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if("floor"!=this.buildType)return t=new uv({mat:this.getMarkerMaterial("default"),renderOrder:3,sizeInfo:Qx,dontFixOrient:!0,name:"building_marker"}),Potree.Utils.setObjectLayers(t,"siteModeOnlyMapVisi"),e.marker=t,I(r,"addMarker",this,3)([e]),this.selected||Potree.Utils.updateVisible(t,"select",!1),n=function(e){t.addEventListener("click",function(e){i.dispatchEvent({type:"clickMarker",marker:t})}),t.addEventListener("clickSelect",function(e){i.setMarkerSelected(t,e.state?"select":"unselect")}),t.removeEventListener("addHoverEvent",n)},t.addEventListener("addHoverEvent",n),this.isNew||t.dispatchEvent("addHoverEvent"),t}},{key:"removeMarker",value:function(e){var t=this;I(r,"removeMarker",this,3)([e]),this.isNew||(this.midMarkers.forEach(function(e){return t.remove(e)}),this.midMarkers=[],this.addMidMarkers()),this.update(),2==this.points.length&&this.box&&(this.box.geometry=new Wl)}},{key:"addMidMarker",value:function(e,t){var i,r=this;if("floor"!=this.buildType)return i=new uv({mat:this.getMarkerMaterial("midPrepare"),sizeInfo:Qx,dontFixOrient:!0,name:"building_midMarker"}),this.midMarkers=[].concat(Fe(this.midMarkers.slice(0,e)),[i],Fe(this.midMarkers.slice(e,this.midMarkers.length))),i.renderOrder=3,Potree.Utils.setObjectLayers(i,"siteModeOnlyMapVisi"),i.addEventListener("drag",function(e){r.dispatchEvent("startDragging");var t=r.midMarkers.indexOf(i),n=r.addMarker({index:t+1,point:i.position.clone()});r.addMidMarker(t+1,new Oe),r.updateTwoMidMarker(t+1),r.setMarkerSelected(i,"unhover"),viewer.inputHandler.startDragging(n,{})}),i.addEventListener("mouseover",function(e){r.setMarkerSelected(e.object,"hover","single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),i.addEventListener("mouseleave",function(e){r.setMarkerSelected(e.object,"unhover","single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),this.add(i),this.updateMarker(i,t),this.selected||Potree.Utils.updateVisible(i,"select",!1),i}},{key:"addMidMarkers",value:function(){var i=this,r=this.points.length;this.points.forEach(function(e,t){var n=i.points[(t+1)%r],e=(new Oe).addVectors(e,n).multiplyScalar(.5);i.addMidMarker(t,e)})}},{key:"updateTwoMidMarker",value:function(e){var t,n,i,r;this.midMarkers.length&&(r=this.points.length,t=this.points[(e-1+r)%r],n=this.points[(e+1)%r],i=this.points[e],t=(new Oe).addVectors(t,i).multiplyScalar(.5),n=(new Oe).addVectors(n,i).multiplyScalar(.5),i=this.midMarkers[(e-1+r)%r],r=this.midMarkers[e],this.updateMarker(i,t),this.updateMarker(r,n))}},{key:"dispose",value:function(){I(r,"dispose",this,3)([]),this.box&&this.box.geometry.dispose(),this.lineMesh&&this.lineMesh.geometry.dispose(),this.holes.forEach(function(e){return e.dispose()}),this.parentHoles.forEach(function(e){return e.dispose()}),this.dispatchEvent("dispose")}},{key:"updateBox",value:function(){var e,t;this.box&&(this.box.geometry.dispose(),e="room"==this.buildType?.11:"floor"==this.buildType?.082:.2,3<=this.points.length)&&(t=this.holes.concat(this.parentHoles).filter(function(e){return 2<e.points.length}).map(function(e){return e.points}),this.box.geometry=ov.getExtrudeGeo(this.points,t,{depth:this.zMax-this.zMin-e,UVGenerator:new Jx}),"building"==this.buildType?this.box.position.z=this.zMin-e/2:this.box.position.z=this.zMin+e/2)}},{key:"update",value:function(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};I(r,"update",this,3)(["floor"!=this.buildType&&e.ifUpdateMarkers]),this.points.length;this.originHole&&(this.points=this.originHole.points),"hole"==this.buildType&&(this.zMin=this.buildParent.zMin,this.zMax=this.buildParent.zMax),e.dontUpdateBox||("hole"==this.buildType?("building"==this.buildParent.buildType&&this.buildParent.buildChildren.forEach(function(e){e=e.parentHoles.find(function(e){return e.originHole==t});e&&e.update()}),this.buildParent):this).updateBox(),this.updatePrismLines(),e.dontUpdateChildren||("building"==this.buildType&&this.buildChildren.forEach(function(e){e.points=t.points,e.update()}),this.holes.concat(this.parentHoles).forEach(function(e){e.update({dontUpdateBox:!0})}))}},{key:"getHolesArea",value:function(){var e,t=this.holes.concat(this.parentHoles),n=0;return 2<=t.length?(e=t.map(function(e){return e.points}),(e=te.getPolygonsMixedRings(e,!0)).forEach(function(e){n+=e.area}),e=e.map(function(e){return e.points})):(e=t.map(function(e){return e.points})).forEach(function(e){return n+=Math.abs(te.getArea(e))}),n}},{key:"getArea",value:function(e){return Math.abs(te.getArea(this.points))-(e?this.getHolesArea():0)}},{key:"getVolume",value:function(e){var t=this.getRealZ(),n=t.zMin,t=t.zMax-n;return isNaN(t)&&(t=0),this.getArea(e)*t}},{key:"getRealZ",value:function(){if("building"==this.buildType)var e=this.buildChildren[this.buildChildren.length-1],t=this.buildChildren[0],t=t?t.zMin:0,e=e?e.zMax:0;else{if("hole"==this.buildType)return this.buildParent.getRealZ();t=this.zMin,e=this.zMax}return{zMin:t,zMax:e}}},{key:"getBound",value:function(){var t=new K,e=this.getRealZ(),n=e.zMin,i=e.zMax;return("floor"==this.buildType?this.buildParent:this).points.forEach(function(e){t.expandByPoint(e.clone().setZ(n)),t.expandByPoint(e.clone().setZ(i))}),t}},{key:"getMarkerMaterial",value:function(e){return(ax=ax||{default:new R({transparent:!0,color:jx,opacity:.8,map:Vx.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),midPrepare:new R({transparent:!0,color:jx,opacity:.4,map:Vx.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),hover:new R({transparent:!0,color:jx,opacity:1,map:Vx.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),select:new R({transparent:!0,color:new Se("#00C8AF"),opacity:1,map:Vx.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1})})[e]}},{key:"setMarkerSelected",value:function(e,t,n){"select"==t?(e.selected=!0,e.material=this.getMarkerMaterial("select")):"unselect"==t?(e.selected=!1,e.material=this.getMarkerMaterial("default")):e.selected||("hover"==t?e.material=this.getMarkerMaterial("hover"):"unhover"==t&&(e.name.includes("mid")?e.material=this.getMarkerMaterial("midPrepare"):e.material=this.getMarkerMaterial("default")))}},{key:"select",value:function(){this.selected||(this.box&&(this.box.material=this.mats.boxSelected),"building"==this.buildType||"floor"==this.buildType?(this.buildChildren.forEach(function(e){e.lineMesh.visible=!0}),"floor"==this.buildType&&(Potree.Utils.setObjectLayers(this.box,"bothMapAndScene"),Potree.Utils.setObjectLayers(this.buildParent.box,"siteModelMapUnvisi"))):"room"==this.buildType&&(Potree.Utils.setObjectLayers(this.buildParent.box,"bothMapAndScene"),Potree.Utils.setObjectLayers(this.buildParent.buildParent.box,"siteModelMapUnvisi")),this.lineMesh.visible=!0,this.markers&&this.markers.forEach(function(e){return Potree.Utils.updateVisible(e,"select",!0)}),this.midMarkers&&this.midMarkers.forEach(function(e){return Potree.Utils.updateVisible(e,"select",!0)}),this.holes.concat(this.parentHoles).forEach(function(e){return e.select()}),this.selected=!0,this.dispatchEvent({type:"select"}))}},{key:"unselect",value:function(){this.selected&&(this.box&&(this.box.material=this.mats.boxDefault),"building"==this.buildType||"floor"==this.buildType?(this.buildChildren.forEach(function(e){e.lineMesh.visible=!1}),"floor"==this.buildType&&(Potree.Utils.setObjectLayers(this.box,"siteModelMapUnvisi"),Potree.Utils.setObjectLayers(this.buildParent.box,"bothMapAndScene"))):"room"==this.buildType&&(Potree.Utils.setObjectLayers(this.buildParent.box,"siteModelMapUnvisi"),Potree.Utils.setObjectLayers(this.buildParent.buildParent.box,"bothMapAndScene")),this.lineMesh.visible=!1,this.markers&&this.markers.forEach(function(e){return Potree.Utils.updateVisible(e,"select",!1)}),this.midMarkers&&this.midMarkers.forEach(function(e){return Potree.Utils.updateVisible(e,"select",!1)}),this.holes.concat(this.parentHoles).forEach(function(e){return e.unselect()}),this.selected=!1,this.dispatchEvent({type:"unselect"}))}},{key:"ifContainsPoint",value:function(e){var t=this,n=this.getRealZ(),i=n.zMin,n=n.zMax;if(!(e.z<i||e.z>n))return i=this.holes.concat(this.parentHoles).filter(function(e){return e!=t&&2<e.points.length}).map(function(e){return e.points}),!!te.isPointInArea(this.points,i,e)}}])}(),Jx=function(){return A(function e(){ue(this,e),this.a=new Oe,this.b=new Oe,this.c=new Oe,this.d=new Oe},[{key:"generateTopUV",value:function(e,t,n,i,r){return[new Re(t[3*n],t[3*n+1]),new Re(t[3*i],t[3*i+1]),new Re(t[3*r],t[3*r+1])]}},{key:"generateSideWallUV",value:function(e,t,n,i,r,a){this.a.set(t[3*n],t[3*n+1],t[3*n+2]),this.b.set(t[3*i],t[3*i+1],t[3*i+2]),this.c.set(t[3*r],t[3*r+1],t[3*r+2]),this.d.set(t[3*a],t[3*a+1],t[3*a+2]),n=this.a.x!==this.b.x,i=n?this.b:this.d,r=this.a.distanceTo(i),t=i.distanceTo(this.c);return[new Re(this.a.x,0),n?new Re(this.a.x+r,0):new Re(this.a.x,t),new Re(this.a.x+r,t),n?new Re(this.a.x,t):new Re(this.a.x+r,0)]}}])}(),qx={zMin:-yv.map.cameraHeight,zMax:yv.map.cameraHeight},Yx={bus:new Qn,entities:[],buildings:[],meshGroup:new Z,inEntity:null,lastPos:new Oe(1/0,1/0,1/0),init:function(){var n=this;viewer.scene.scene.add(this.meshGroup),this.meshGroup.name="siteModel",this.SplitScreen=Gx,"pano"!=Potree.settings.editType&&(this.createHeightPull(),this.history=new ay({applyData:function(e){if(e.entity.parent&&e.entity.selected)return(e=Potree.Common.CloneObject(e)).entity.reDraw(),e.entity.initData(e),e.isNew||e.entity.addMidMarkers(),e.entity.isNew=e.isNew,e.entity.dispatchEvent("changeByHistory"),!0},getData:function(e){return{entity:e,points:e.points.map(function(e){return e.clone()}),ifDraw:!0,isNew:e.isNew}}}),Potree.settings.isTest&&viewer.addEventListener("allLoaded",function(){viewer.scene.pointclouds.forEach(function(e){var t=e.getUnrotBoundPoint(),t=new Wx({name:"数据集tightBound_"+e.dataset_id,points:t,buildType:"dataset",zMax:e.bound.max.z,zMin:e.bound.min.z,ifDraw:!0});n.meshGroup.add(t)})}),Potree.settings.isOfficial&&viewer.addEventListener("camera_changed",function(e){e.changeInfo&&e.changeInfo.positionChanged&&n.updateEntityAt()}),viewer.inputHandler.addEventListener("keydown",function(e){var t;e.keyCode!=Ym.BACKSPACE&&e.keyCode!=Ym.DELETE||n.selectedMarker&&(t=(e=n.selectedMarker.parent).markers.indexOf(n.selectedMarker),e.removeMarker(t),e.points.length<2)&&n.startInsertion("resume",e)}),this.bus.addEventListener("updated",function(){j.intervalTool.isWaiting("siteModelUpdated",function(){n.changedCallback()},500)}))},changedCallback:function(){this.findPanos(),this.findEntityForDataset(),this.updateEntityAt(!0)},updateEntityAt:function(i){function e(){var n,e,t=viewer.mainViewport.view.position;r.pauseUpdateEntity||(r.lastPos.copy(t),a?(n=[],a.points.forEach(function(e){var t=r.pointInWhichEntity(e,"floor"),e=n.find(function(e){return e.entity==t});e?e.count++:n.push({entity:t,count:1})}),n.sort(function(e,t){return t.count-e.count}),n[0]&&(e=n[0].entity)):(t="showPanos"==Potree.settings.displayMode?viewer.images360.currentPano:t,e=r.pointInWhichEntity(t,"room")),(i||r.inEntity!=e)&&(r.inEntity,r.inEntity=e,r.bus.dispatchEvent({type:"buildingChange",entity:e}),t=r.currentFloor,e=e?"floor"==e.buildType?e:"room"==e.buildType?e.buildParent:null:null,i||e!=t)&&(r.currentFloor=e,r.bus.dispatchEvent({type:"FloorChange",currentFloor:e})),i=!1)}var r=this,a=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).measure;i?e():j.intervalTool.isWaiting("sitemodelCameraInterval",e,500)},enter:function(){Potree.Log("sitemodel enter"),this.clear(),this.editing=!0,viewer.updateFpVisiDatasets();var e=viewer.mapViewer.viewports[0];this.SplitScreen.split({siteModel:!0}),viewer.viewports.forEach(function(e){"mapViewport"!=e.name&&e.layersAdd("siteModelMapUnvisi"),"right"!=e.name&&"back"!=e.name||e.layersAdd("siteModeSideVisi")}),viewer.images360.panos.forEach(function(e){Potree.Utils.setObjectLayers(e.marker,"siteModelMapUnvisi")}),e.layersAdd("siteModeOnlyMapVisi")},leave:function(){Potree.Log("sitemodel leave");var e=viewer.mapViewer.viewports[0];this.SplitScreen.recover(),viewer.viewports.forEach(function(e){"mapViewport"!=e.name&&e.layersRemove("siteModelMapUnvisi"),"right"!=e.name&&"back"!=e.name||e.layersRemove("siteModeSideVisi")}),viewer.images360.panos.forEach(function(e){Potree.Utils.setObjectLayers(e.marker,"sceneObjects")}),e.layersRemove("siteModeOnlyMapVisi"),this.clear(),this.editing=!1,this.updateEntityAt(!0),viewer.updateFpVisiDatasets()},addFloor:function(e,t,n,i){var r,a;0==e.buildChildren.length?r=(a=e.zMin)+Potree.config.siteModel.floorHeightDefault:"bottom"==t?a=(r=e.buildChildren[0].zMin)-Potree.config.siteModel.floorHeightDefault:r=(a=e.buildChildren[e.buildChildren.length-1].zMax)+Potree.config.siteModel.floorHeightDefault;t=new Wx({buildType:"floor",zMin:a,zMax:r,buildParent:e,sid:n,name:i,ifDraw:!0});return t.update(),this.addEntity(t,e),this.selected==e&&(e.unselect(),e.select()),this.bus.dispatchEvent("updated"),t},startInsertion:function(i,e,t,n,r,a){var o,s,l,u,c,d=this,h=viewer.mapViewer.viewports[0],p=("resume"==i&&(l=!0,i=(u=e).buildType,u.reDraw(0),u.isNew=!0),l||("hole"==i||"room"==i?(o=e.zMin,s=e.zMax):"building"==i&&(e=null,o=viewer.bound.boundingBox.min.z,s=viewer.bound.boundingBox.min.z),"hole"==i?((u=e.addHole()).isNew=!0,this.selectEntity(e),u.select(),console.log("挖洞 ",u.uuid)):((u=new Wx({buildType:i,zMin:o,zMax:s,buildParent:e,sid:t,name:n,ifDraw:!0})).isNew=!0,this.selectEntity(u)),this.addEntity(u,e)),function(e){var t;e.button==oe.LEFT?(d.history.beforeChange(u),t=u.addMarker({point:u.points[u.points.length-1].clone()}),d.history.afterChange(u),u.continueDrag(t,e)):e.button===oe.RIGHT&&(e.pressDistance<Potree.config.clickMaxDragDis?m(e):u.continueDrag(null,e))}),f=function(){viewer.removeEventListener("cancel_insertions",v),u.removeEventListener("unselect",v),clearTimeout(c),u.editStateChange(!1),r&&r(u),viewer.dispatchEvent("endBuildEntity")},m=function(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return n.remove?(f(),d.removeEntity(u)):n.remain||n.finish||n.remove||!(u.markers.length<=3)?(f(),n.remain||!n.remove&&3<u.markers.length?(u.removeMarker(u.points.length-1),u.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),"room"==i&&d.fitPullBox(),u.isNew=!1,u.addMidMarkers(),t=u.getBound().getCenter(new Oe),viewer.controls.setTarget(t,2)):d.removeEntity(u),u):(u.reDraw(1),Potree.Utils.updateVisible(u.markers[0],"unMove",!1),u.addEventListener("dragChange",e=function(){Potree.Utils.updateVisible(u.markers[0],"unMove",!0),u.removeEventListener("dragChange",e)}),void u.continueDrag(u.markers[0],n))},v=function(e){u.removeEventListener("unselect",v),viewer.inputHandler.drag?(viewer.inputHandler.drag.object.dispatchEvent({type:"drop",drag:viewer.inputHandler.drag,viewer:viewer,pressDistance:0,button:oe.RIGHT}),viewer.inputHandler.drag.object.isDragging=!1):m({remain:!0}),viewer.inputHandler.drag=null},g=(viewer.dispatchEvent("cancel_insertions"),viewer.addEventListener("cancel_insertions",v),setTimeout(function(){u.isNew&&u.addEventListener("unselect",v)},1),u.addMarker({point:new Oe(0,0,0)})),A=(Potree.Utils.updateVisible(g,"unMove",!1),function(){Potree.Utils.updateVisible(g,"unMove",!0),u.removeEventListener("dragChange",A)});u.addEventListener("dragChange",A),g.isDragging=!0,viewer.inputHandler.startDragging(g,{dragViewport:h,endDragFun:p,notPressMouse:!0}),viewer.dispatchEvent("startBuildEntity");return u.addEventListener("changeByHistory",function(e){var t;u.isNew&&(t=u.markers[u.points.length-1],viewer.inputHandler.startDragging(t,{dragViewport:h,endDragFun:p,notPressMouse:!0}),t=viewer.inputHandler.intersect&&(viewer.inputHandler.intersect.orthoIntersect||viewer.inputHandler.intersect.location))&&u.dragChange(t.clone(),u.points.length-1)}),u},getPreDealData:function(e,t,n,i,r,a){var o=this,s=viewer.bound.boundingBox;return"building"==r&&i?(console.log("空间模型未编辑过, 初始化了一个"),e=[new Oe(s.min.x,s.min.y,0),new Oe(s.max.x,s.min.y,0),new Oe(s.max.x,s.max.y,0),new Oe(s.min.x,s.max.y,0)],t=s.min.z,n=s.max.z):(e=e.map(function(e){return o.transform(e,"fromDataset")}),"floor"==r&&i&&(t=s.min.z,n=s.max.z)),{points:e,zMax:n,zMin:t}},resetFromData:function(t){var e,n=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[],a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return i=n.getPreDealData(i,a,o,n.autoBuild,t.buildType,t.buildParent),a=i.points,o=i.zMax,e=i.zMin,"floor"!=t.buildType&&(t.points=a),"room"==t.buildType?(t.zMin=e,t.zMax=o):"floor"==t.buildType&&(i=t.zMin+(o-e),Yx.changeZ(t,"zMax",i)),t.holes.forEach(function(e){t.removeHole(e)}),r.forEach(function(e){e=e.map(function(e){return n.transform(e,"fromDataset")});t.addHole(e).addMidMarkers()}),t.update(),t},createFromData:function(e,t,n,i){var r,a,o,s=this,l=4<arguments.length&&void 0!==arguments[4]?arguments[4]:[],u=5<arguments.length&&void 0!==arguments[5]?arguments[5]:[],c=6<arguments.length?arguments[6]:void 0,d=7<arguments.length?arguments[7]:void 0,h=8<arguments.length?arguments[8]:void 0,p=9<arguments.length?arguments[9]:void 0,f=10<arguments.length?arguments[10]:void 0;if("building"==e||"floor"==e||"room"==e)return l=(a=s.getPreDealData(l,c,d,h,e,t)).points,d=a.zMax,c=a.zMin,r=[],p&&p.forEach(function(e){e=viewer.images360.getPano(e,"sid");e&&r.push(e)}),f=null!=f?viewer.images360.getPano(f,"sid"):null,s.editing||"floor"!=e||f||(r=t.panos,f=t.flagPano),a={buildType:e,points:l,name:i,sid:n,zMin:c,zMax:d,buildParent:t,ifDraw:s.editing||Potree.settings.drawEntityData,panos:r,flagPano:f,autoBuild:h},o=new Wx(a),Yx.addEntity(o,t),!s.editing||"building"!=e&&"room"!=e||o.addMidMarkers(),u.forEach(function(e){e=e.map(function(e){return s.transform(e,"fromDataset")}),e=o.addHole(e);s.editing&&e.addMidMarkers()}),o},transform:function(e,t){return"pano"==Potree.settings.editType?(new Oe).copy(e).setZ(0):"toDataset"==t?(t=Potree.Utils.datasetPosTransform({toDataset:!0,position:e.clone(),datasetId:Potree.settings.originDatasetId}),(new Re).copy(t)):(t=(new Oe).copy(e).setZ(0),Potree.Utils.datasetPosTransform({fromDataset:!0,position:t,datasetId:Potree.settings.originDatasetId}))},addEntity:function(t,e){function n(e){i.selectedMarker&&t.markers.includes(i.selectedMarker)&&(i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=null)}var i=this;"hole"!=t.buildType&&(this.meshGroup.add(t),this.entities.push(t),("building"==t.buildType?this.buildings:e.buildChildren).push(t)),"room"==t.buildType?t.addEventListener("marker_dropped",function(){i.fitPullBox()}):"floor"==t.buildType&&(this.updateBuildingZ(e),e.dispatchEvent({type:"addFloor"})),t.addEventListener("clickMarker",function(e){i.selectedMarker==e.marker?(i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=null):(i.selectedMarker&&i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=e.marker,i.selectedMarker.dispatchEvent({type:"clickSelect",state:!0}))}),t.addEventListener("removeMarker",function(e){i.selectedMarker==e.marker&&(i.selectedMarker=null)});t.addEventListener("dispose",n),t.addEventListener("unselect",n),this.bus.dispatchEvent("updated"),t.addEventListener("startDragging",function(){i.history.beforeChange(t)}),t.addEventListener("marker_dropped",function(){i.bus.dispatchEvent("updated"),i.history.afterChange(t)})},removeEntity:function(e){var t,n=this;this.entities.includes(e)&&(console.log("删除实体:",e.buildType,e.sid),this.selected==e&&(this.height_pull_box&&(this.height_pull_box.visible=!1),this.selectEntity(null)),"building"==e.buildType?-1<(t=this.buildings.indexOf(e))&&this.buildings.splice(t,1):-1<(t=e.buildParent.buildChildren.indexOf(e))&&(e.buildParent.buildChildren.splice(t,1),"floor"==e.buildType)&&0==t&&this.updateBuildingZ(e.buildParent),-1<(t=this.entities.indexOf(e))&&this.entities.splice(t,1),e.dispose(),e.buildChildren.slice().forEach(function(e){return n.removeEntity(e)}),this.bus.dispatchEvent("updated"))},updateBuildingZ:function(e){e.buildChildren=e.buildChildren.sort(function(e,t){return e.zMin-t.zMin}),e.buildChildren[0]&&(e.zMin=e.zMax=e.buildChildren[0].zMin),this.editing&&e.update({dontUpdateChildren:!0}),e.dispatchEvent("updateBuildingZ")},selectEntity:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];viewer.dispatchEvent("content_changed"),!1===t?(e.unselect(),this.selected==e&&(this.selected=null),viewer.controls.setTarget(null,2)):this.selected==e||e&&"hole"==e.buildType||(this.selected&&this.selected.unselect(),this.height_pull_box&&(this.height_pull_box.visible=!1),e?(e.select(),e.isNew||(t=e.getBound().getCenter(new Oe),viewer.controls.setTarget(t,2))):viewer.controls.setTarget(null,2),!(this.selected=e)||e.dontDragFloorHeight||"floor"!=e.buildType&&"room"!=e.buildType||(this.height_pull_box&&(this.height_pull_box.visible=!0),this.fitPullBox()),e&&!e.isNew&&("building"==e.buildType||"room"==e.buildType)&&e.points.length<2&&this.startInsertion("resume",e))},fitPullBox:function(){var e,t;this.height_pull_box&&this.selected&&("floor"==this.selected.buildType||"room"==this.selected.buildType)&&((t=new K).expandByObject(this.selected.box),e=t.getCenter(new Oe),t=t.getSize(new Oe),this.height_pull_box.scale.copy(t),this.height_pull_box.position.copy(e))},changeZ:function(e,t,n){var i,r,a,o;"floor"==e.buildType?(a=e.buildParent.buildChildren.indexOf(e),"zMax"==t?(o=e.buildParent.buildChildren[a+1],e.zMax=Math.min(qx.zMax,n),r=e.zMin+.5,e.zMax<r?e.zMax=r:o&&(i=o.zMax-.5,e.zMax>i)&&(e.zMax=i),o&&(o.zMin=e.zMax,o.update(),o.dispatchEvent({type:"changeHeight"}))):(o=e.buildParent.buildChildren[a-1],e.zMin=Math.max(qx.zMin,n),i=e.zMax-.5,e.zMin>i?e.zMin=i:o&&(r=o.zMin+.5,e.zMin<r)&&(e.zMin=r),o&&(o.zMax=e.zMin,o.update(),o.dispatchEvent({type:"changeHeight"})),0==a&&this.updateBuildingZ(e.buildParent))):"room"==e.buildType&&(o=e.buildParent.zMax-e.buildParent.zMin,"zMax"==t?(r=e.zMin+.5,i=e.zMin+o,e.zMax=Be.clamp(n,r,i)):(r=e.zMax-o,i=e.zMax-.5,e.zMin=Be.clamp(n,r,i))),e.update(),e.dispatchEvent({type:"changeHeight"}),this.fitPullBox(),this.bus.dispatchEvent("updated")},createHeightPull:function(){function e(e){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"siteModelFloorDrag"})}function t(e){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"siteModelFloorDrag"})}function n(e){var t,n=e.intersect.orthoIntersect;null!=a?(t=n.z-a,"floor"!=o.selected.buildType&&"room"!=o.selected.buildType||(e.target==u?(null==r&&(r=o.selected.zMax),o.changeZ(o.selected,"zMax",r+t)):(null==r&&(r=o.selected.zMin),o.changeZ(o.selected,"zMin",r+t)))):a=n.z}function i(e){r=a=null}var r,a,o=this,s=new da(1,1,.25),l=new R({color:"#F00",opacity:0,transparent:!0,depthTest:!1,side:2}),u=new Q(s,l),s=new Q(s,l);u.name="height_pull_box_up",s.name="height_pull_box_down",this.height_pull_box=new Z,this.height_pull_box.name="height_pull_box",this.height_pull_box.add(u),this.height_pull_box.add(s),this.height_pull_box.visible=!1,this.meshGroup.add(this.height_pull_box),u.position.set(0,0,.5),s.position.set(0,0,-.5),Potree.Utils.setObjectLayers(this.height_pull_box,"siteModeSideVisi");u.addEventListener("mousemove",e),s.addEventListener("mousemove",e),u.addEventListener("mouseleave",t),s.addEventListener("mouseleave",t),u.addEventListener("drag",n),s.addEventListener("drag",n),u.addEventListener("drop",i),s.addEventListener("drop",i)},pointInWhichEntity:function(o,e,t){function s(e,t){var n=o instanceof Oe?e.ifContainsPoint(o):e.panos.includes(o);if(n){if((!l||u[l.buildType]<u[e.buildType])&&(l=e),e.buildType==t)return e;for(var i=0,r=e.buildChildren.length;i<r;i++){var a=s(e.buildChildren[i]);if(a)return a}}}var l,u={building:0,floor:1,room:2},n=j.sortByScore(this.buildings,[function(e){return s(e,"building")}],[function(e){var e=e.getBound(),t=e.getCenter(new Oe),t=(o instanceof Oe?o:o.position).distanceTo(t);return e.getSize(new Oe).length()/2/t}]),n=n&&n[0]&&1<n[0].score&&n[0].item;return"building"!=e&&n?s(n,e)||l:n},findPanos:function(){this.entities.forEach(function(t){t.panos=[],t.flagPano=null,viewer.images360.panos.forEach(function(e){t.ifContainsPoint(e.position)&&t.panos.push(e)})}),this.entities.forEach(function(e){var t,n=e.panos;0!=n.length&&(t=e.getBound().getCenter(new Oe),t=[W0.scoreFunctions.distanceSquared({position:t})],(n=j.sortByScore(n,[],t))&&n.length?e.flagPano=n[0].item:console.error("no flagPano??"))})},findEntityForDataset:function(){var r=this;viewer.scene.pointclouds.forEach(function(e){for(var t=e.getVolume(),n=r.buildings;;){var i=function(r,e,a){var o=[];return e.forEach(function(e){var t=e.intersectPointcloudVolume(r),n=e.panos.filter(function(e){return r.panos.includes(e)}).length,i=t/a;0<r.panos.length&&(i+=n/r.panos.length),o.push({entity:e,volume:t,panoCount:n,score:i})}),o.sort(function(e,t){return t.score-e.score}),o}(e,n,t);if(0==i.length||i[0].volume/t<1e-4&&i[0].volume<3){if(i[0]&&"room"==i[0].entity.buildType){e.belongToEntity=i[0].entity;break}e.belongToEntity=null;break}if(0==(n=i[0].entity.buildChildren).length){e.belongToEntity=i[0].entity;break}}})},clear:function(){this.selectEntity(null);for(var e=this.entities.length,t=0;t<e;t++)this.entities[t].dispose();this.entities=[],this.buildings=[],this.inEntity=null},gotoEntity:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1e3,i=this.entities.find(function(e){return e.sid==t});if(!i)return console.error("没找到entity ");if("showPanos"==Potree.settings.displayMode){if(e&&i.panos.length){if(i.panos.includes(viewer.images360.currentPano))return"posNoChange";var r=viewer.scene.getActiveCamera().position,r=[W0.scoreFunctions.distanceSquared({position:r})],r=j.sortByScore(i.panos,[],r)[0].item}else{if(!i.flagPano)return console.log("没有flagPano");r=i.flagPano}if(r==viewer.images360.currentPano)return"posNoChange";viewer.images360.flyToPano(r)}else{if(e&&i.ifContainsPoint(viewer.images360.position))return"posNoChange";r=i.getBound(),e=r.getCenter(new Oe),i=r.getSize(new Oe);if(viewer.modules.Clip&&viewer.modules.Clip.editing)viewer.modules.Clip.bus.dispatchEvent({type:"flyToPos",position:e});else{if(te.closeTo(e,viewer.images360.position))return"posNoChange";viewer.scene.view.setView({position:e,duration:n})}viewer.mapViewer.moveTo(e,i,n)}return!0},focusEntity:function(t){var e=this.entities.find(function(e){return e.sid==t}).getBound(),n=e.getCenter(new Oe);this.SplitScreen.focusOnObject(e,n),this.gotoEntity(t,!1,0)},removeIlligalArchi:function(){var t=this,n=[];this.entities.forEach(function(e){e.points.length<3&&n.push(e)}),n.forEach(function(e){return t.removeEntity(e)})}},Xx=function(){function o(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.2,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1;return ue(this,o),n=n||new Se("white"),e=e||10,t=t||100,i=i||8e3,(e=le(this,o,[new _a(2,2,1,1),new ga({side:ve,uniforms:{uSize1:{value:e},uSize2:{value:t},opacity1:{value:r},opacity2:{value:a},uColor:{value:n},uDistance:{value:i}},transparent:!0,vertexShader:"\n \n varying vec3 worldPosition;\n \n uniform float uDistance;\n \n void main() {\n \n vec3 pos = position.xyz * uDistance;\n pos.xy += cameraPosition.xy;\n \n worldPosition = pos;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n \n }\n ",fragmentShader:"\n \n varying vec3 worldPosition;\n \n uniform float uSize1;\n uniform float uSize2;\n uniform float opacity1;\n uniform float opacity2;\n uniform vec3 uColor;\n uniform float uDistance;\n \n \n \n float getGrid(float size) {\n \n vec2 r = worldPosition.xy / size;\n \n \n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y);\n \n \n return 1.0 - min(line, 1.0);\n }\n //为何侧面看不到线,因为mesh的正侧面都看不到?\n\n void main() {\n \n \n float d = 1.0 - min(distance(cameraPosition.xy, worldPosition.xy) / uDistance, 1.0);\n \n float g1 = getGrid(uSize1);\n float g2 = getGrid(uSize2);\n \n \n gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, 3.0));\n //gl_FragColor.a = mix(0.5 * gl_FragColor.a, gl_FragColor.a, g2);\n gl_FragColor.a = mix(opacity1 * gl_FragColor.a, opacity2 * gl_FragColor.a, g2);\n \n \n if ( gl_FragColor.a <= 0.0 ) discard;\n \n \n }\n \n ",extensions:{derivatives:!0}})])).frustumCulled=!1,e}return v(o,Q),A(o)}(),Kx=(Zb.prototype=Object.assign(Object.create(Z.prototype),{constructor:Zb,isTransformControls:!0}),$b.prototype=Object.assign(Object.create(Z.prototype),{constructor:$b,isTransformControlsGizmo:!0}),ex.prototype=Object.assign(Object.create(Q.prototype),{constructor:ex,isTransformControlsPlane:!0}),new Gc),Zx=(Kx.crossOrigin="anonymous",[{left:0,bottom:0,width:.5,height:1,name:"top",axis:["x","y"],direction:new Oe(0,0,-1),active:!0,limitBound:new K(new Oe(-1/0,-1/0,1),new Oe(1/0,1/0,5e3)),margin:{x:50,y:150}},{left:.5,bottom:0,width:.5,height:1,name:"right",axis:["y","z"],direction:new Oe(1,0,0),active:!0,viewContainsPoints:[new Oe(0,0,0)],margin:{x:300,y:250}}]),$x={bus:new Qn,SplitScreen:new Nb,init:function(){function e(e){viewer.outlinePass.edgeStrength=0}function t(e){viewer.outlinePass.edgeStrength=o}var n=this,i=(this.history=new ay({applyData:function(e){if(e.object.parent)return(e=Potree.Common.CloneObject(e)).matrix.decompose(e.object.position,e.object.quaternion,e.object.scale),e.object.boundCenter.copy(e.boundCenter),e.object.dispatchEvent("changeByHistory"),e.object.dispatchEvent("transformChanged"),viewer.dispatchEvent("content_changed"),!0},getData:function(e){return{object:e,matrix:e.matrixWorld.clone(),boundCenter:e.boundCenter.clone()}}}),Potree.settings.notAdditiveBlending=!0,this.ground=new Xx(1,1e4,new Se("#eee"),1e4,.2,.3)),r=(viewer.scene.scene.add(i),av.createLine([new Oe(-1e4,0,0),new Oe(1e4,0,0)],{color:"#aaa"})),a=av.createLine([new Oe(0,-1e4,0),new Oe(0,1e4,0)],{mat:r.material}),o=(i.renderOrder=Potree.config.renderOrders.model+1,i.add(r),i.add(a),i.material.opacity=.9,i.material.polygonOffset=!0,i.material.polygonOffsetFactor=100,i.material.polygonOffsetUnits=10,i.material.depthWrite=!1,r.material.polygonOffset=!0,r.material.polygonOffsetFactor=130,r.material.polygonOffsetUnits=10,r.material.depthWrite=!1,viewer.outlinePass.edgeStrength);this.transformControls=new Zb(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0}),this.transformControls.setSize(1.5),viewer.scene.scene.add(this.transformControls),this.transformControls._gizmo.hideAxis={rotate:["e"]},this.transformControls.setRotateMethod(2),this.transformControls2=new Zb(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0}),this.transformControls2.setSize(1.5),viewer.scene.scene.add(this.transformControls2),Potree.Utils.setObjectLayers(this.transformControls2,"layer2");this.transformControls.addEventListener("mouseDown",e),this.transformControls2.addEventListener("mouseDown",e),this.transformControls.addEventListener("mouseUp",t),this.transformControls2.addEventListener("mouseUp",t),this.transformControls.addEventListener("mouseDown",function(){n.history.beforeChange(n.selected)}),this.transformControls.addEventListener("mouseUp",function(){n.history.afterChange(n.selected)}),this.secondCompass=new f1(null),viewer.setControls(viewer.orbitControls),viewer.orbitControls.constantlyForward=!0,viewer.addEventListener("global_single_click",function(e){n.noNeedSelection||viewer.scene.cameraAnimations.some(function(e){return e.onUpdate})||e.drag&&e.drag.notPressMouse||viewer.mainViewport.view.isFlying()||n.split||e.clickElement||(e.intersect&&(e=e.intersect.object||e.intersect.pointcloud,n.getAllObjects().includes(e))&&n.selected!=e?n.selectModel(e):n.selectModel(null))}),viewer.inputHandler.addEventListener("keydown",function(e){"h"==e.event.key.toLowerCase()&&(n.fadeOutlineAuto=!n.fadeOutlineAuto,n.showModelOutline(n.selected,!!n.selected))}),viewer.outlinePass.enabled=!0,viewer.composer.scaleRatio=1,viewer.composer.readTarget=!1,viewer.mainViewport.camera.near=.05,viewer.addEventListener("updateModelBound",function(e){n.split&&n.SplitScreen.updateCameraOutOfModel()});function s(e){if(n.split&&n.selected&&n.transformState&&("top"==e.dragViewport.name||"translate"==n.transformState)&&("global_mousedown"==e.type&&(e.intersect.pointclouds.includes(n.selected)||e.intersect.allElements.some(function(e){return e.object==n.selected}))&&(l={},viewer.outlinePass.edgeStrength=0),"global_drag"==e.type)&&l){if("translate"==n.transformState){var t=Potree.Utils.getOrthoCameraMoveVec(e.drag.pointerDelta,e.dragViewport.camera);n.selected.position.add(t),n.selected.dispatchEvent("position_changed")}else if("rotate"==n.transformState){t=(new Oe).subVectors(e.intersect.orthoIntersect||e.intersect.location,n.selected.boundCenter).setZ(0);if(null==l.lastVec)return void(l.lastVec=t);e=te.getAngle(l.lastVec,t,"z"),t=(l.lastVec=t,(new ii).setFromAxisAngle(new Oe(0,0,1),e));n.selected.quaternion.premultiply(t),n.selected.dispatchEvent("rotation_changed")}return{stopContinue:!0}}}var l;viewer.addEventListener("global_mousedown",s),viewer.addEventListener("global_drag",s,{importance:10}),viewer.addEventListener("global_mousemove",function(e){!n.split||!n.transformState||e.drag||"top"!=e.hoverViewport.name&&"translate"!=n.transformState||(e.intersect.pointclouds.includes(n.selected)||e.intersect.allElements.some(function(e){return e.object==n.selected})?"translate"==n.transformState?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}):n.clearTranCursor())}),viewer.addEventListener("global_drop",function(e){l=null,n.clearTranCursor(),viewer.outlinePass.edgeStrength=o}),viewer.addEventListener("camera_changed",function(){j.intervalTool.isWaiting("updateMemoryUsage",function(){n.updateMemoryUsage()},1e3)}),viewer.addEventListener("setDisplay",this.updateMemoryUsage.bind(this))},clearTranCursor:function(){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})},enterSplit:function(){this.split=!0,this.selected?this.SplitScreen.focusCenter=this.selected.boundCenter:this.SplitScreen.focusCenter=null,this.SplitScreen.splitStart(Zx),this.beforeSplit={pointDensity:Potree.settings.pointDensity},Potree.settings.pointDensity="fourViewports",viewer.setControls(viewer.fpControls);var e=viewer.viewports.find(function(e){return"right"==e.name}),t=viewer.viewports.find(function(e){return"top"==e.name});t.alignment=!0,e.rotateSide=!0,e.skyboxFixPos=!0,e.skyboxMinZoom=10,e.skyboxRenderFun=function(){viewer.skybox.scene.children[0].rotation.copy(e.camera.rotation)},t.skyboxRenderFun=function(){viewer.skybox.scene.children[0].rotation.set(0,0,0)},viewer.viewports[1].layersAdd("layer2"),viewer.viewports[0].layersAdd("layer1"),Potree.Utils.setObjectLayers(this.transformControls,"layer1"),this.transformControls.view=viewer.viewports[0].view,this.transformControls.camera=viewer.viewports[0].camera,this.transformControls._gizmo.hideAxis={translate:["z"],rotate:["x","y","z"]},this.transformControls2.view=viewer.viewports[1].view,this.transformControls2.camera=viewer.viewports[1].camera,this.transformControls2._gizmo.hideAxis={translate:["x","y"],rotate:["x","y","z"]},this.secondCompass.changeViewport(viewer.viewports[0]),this.secondCompass.setDomPos(),this.secondCompass.setDisplay(!0),viewer.compass.changeViewport(viewer.viewports[1]),viewer.compass.setDomPos()},leaveSplit:function(){this.split=!1,this.SplitScreen.unSplit(),viewer.setControls(viewer.orbitControls),Potree.settings.pointDensity=this.beforeSplit.pointDensity,this.transformControls.camera=viewer.viewports[0].camera,this.transformControls.view=viewer.viewports[0].view,this.transformControls._gizmo.hideAxis={rotate:["e"]},Potree.Utils.setObjectLayers(this.transformControls,"sceneObjects"),viewer.compass.changeViewport(viewer.viewports[0]),viewer.compass.setDomPos(),this.secondCompass.setDisplay(!1)},rotateSideCamera:function(e){this.SplitScreen.rotateSideCamera(viewer.viewports.find(function(e){return"right"==e.name}),e)},setTransformState:function(e){this.transformState=e,this.clearTranCursor()},getAllObjects:function(){return viewer.objs.children.concat(viewer.scene.pointclouds)},getModel:function(t){return this.getAllObjects().find(function(e){return e.dataset_id==t})},removeModel:function(e){this.selected==e&&this.selectModel(null);function t(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()}e.isPointcloud?(t(e),viewer.scene.removePointCloud(e)):(e.traverse(function(e){t(e)}),viewer.objs.remove(e),this.updateMemoryUsage())},selectModel:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;if(e||(e=this.selected,t=!1),t){if(this.selected){if(this.selected==e)return;var r=!!this.transformControls.object;this.selectModel(this.selected,!1,n,i),r&&this.transformControls.attach(e)}this.selected=e,$x.focusOn(e,500,!!n),this.showModelOutline(e)}else{if(this.selected!=e)return;this.showModelOutline(e,!1),this.selected=null,this.transformControls.detach()}!i&&e&&e.dispatchEvent({type:"changeSelect",selected:t})},showModelOutline:function(e,t){if(this.fadeOutlineAuto){if(!1===t)return viewer.outlinePass.selectedObjects=[],void clearTimeout(this.timer);viewer.outlinePass.selectedObjects=[e],this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){viewer.outlinePass.selectedObjects=[],viewer.dispatchEvent("content_changed")},1e3)}else viewer.outlinePass.selectedObjects=!1===t?[]:[e];viewer.dispatchEvent("content_changed")},focusOn:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,n=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],i=3<arguments.length?arguments[3]:void 0,r=(e instanceof Array||(e=[e]),new K),e=(e.forEach(function(e){r.union(e.boundingBox.clone().applyMatrix4(e.matrixWorld))}),r.getSize(new Oe).length());Potree.settings.cameraFar=Math.max(Potree.settings.cameraFar,3*e),n?viewer.focusOnObject({boundingBox:r},"boundingBox",t,{dontLookUp:i,dontChangeCamDir:!0}):(e=viewer.inputHandler.intersect?viewer.inputHandler.intersect.location:r.getCenter(new Oe))&&(viewer.mainViewport.view.radius=viewer.mainViewport.camera.position.distanceTo(e))},moveBoundCenterTo:function(e,t){t=(new Oe).subVectors(t,e.boundCenter);e.position.add(t)},getBoundCenter:function(e){e.boundCenter||(e.boundCenter=new Oe),e.boundingBox.getCenter(e.boundCenter).applyMatrix4(e.matrixWorld)},setModelBtmHeight:function(e,t){var n,i;null==t?t=e.btmHeight:e.btmHeight=t,null!=e.btmHeight&&(e.updateMatrixWorld(),n=(i=e.boundingBox.clone().applyMatrix4(e.matrixWorld)).getSize(new Oe),i=i.getCenter(new Oe),t=t+n.z/2,e.position.z+=t-i.z)},computeBtmHeight:function(e){e.updateMatrixWorld();var t=e.boundingBox.clone().applyMatrix4(e.matrixWorld),n=t.getSize(new Oe),t=t.getCenter(new Oe);e.btmHeight=t.z-n.z/2},maintainBoundXY:function(e){e.updateMatrixWorld();var t=e.boundCenter.clone(),n=(this.getBoundCenter(e),e.boundCenter.clone()),n=(new Re).subVectors(t,n);e.position.x+=n.x,e.position.y+=n.y,e.boundCenter.copy(t)},maintainBoundCenter:function(e){e.updateMatrixWorld();var t=e.boundCenter.clone(),n=(this.getBoundCenter(e),e.boundCenter.clone()),n=(new Oe).subVectors(t,n);e.position.add(n),e.boundCenter.copy(t)},modelTransformCallback:function(r){r.updateMatrixWorld(),r.matrixWorld.equals(r.lastMatrixWorld)||(viewer.scene.measurements.forEach(function(n){var i;n.points_datasets.forEach(function(e,t){e==r.dataset_id&&(i=!0,n.points[t]=Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:e,position:n.dataset_points[t].clone()}),n.updateMarker(n.markers[t],n.points[t]))}),i&&(n.getPoint2dInfo(n.points),n.update(),n.setSelected(!1))}),r.lastMatrixWorld=r.matrixWorld.clone(),viewer.dispatchEvent("content_changed"),viewer.mapViewer&&Potree.settings.showObjectsOnMap&&viewer.mapViewer.dispatchEvent("content_changed"))},changeOpacity:function(e,t){var n=null!=e.dataset_id;e.isPointcloud?e.changePointOpacity(t):e.traverse(function(e){e.material&&(null==e.material.originOpacity&&(e.material.originOpacity=e.material.opacity),e.material.opacity=e.material.originOpacity*t,e.material.opacity<1?(e.material.transparent=!0,e.renderOrder=Potree.config.renderOrders.model+1):(e.material.transparent=!1,e.renderOrder=Potree.config.renderOrders.model),e.material.depthWrite=.3<e.material.opacity)}),n&&(e.opacity=t),viewer.dispatchEvent("content_changed")},modelAdded:function(e){var t=this;e.addEventListener("isVisible",function(e){"overlinePass"!=e.reason&&viewer.addEventListener("update",function(){t.updateMemoryUsage()},{once:!0})}),this.updateMemoryUsage()},updateMemoryUsage:function(){var e=Potree.config.tiles3DMaxMemory+100,t=0,n=(viewer.objs.children.forEach(function(e){"glb"==e.fileType||"obj"==e.fileType?e.traverse(function(e){e.geometry&&(t+=e.geometry.attributes.position.count)}):e.fileType}),1e-4*t),i=12e-6*Potree.numVisiblePoints,r=(Potree.lru.numPoints,1e-4*viewer.tiles3dVisiVCount),r=(viewer.tiles3dMemoryUsage,Potree.pointBudget=Math.max(3e4,Math.round((e-n-r)/6e-5)),e-Math.round(n+i));Potree.settings.tiles3DMaxMemory=Be.clamp(r,30,Potree.config.tiles3DMaxMemory)},setGroundPlaneImg:function(n,e,t){var i,r=this,e=(this.goundScale=e||1,this.goundAngle=t||0,this.curGroundImgSrc);this.curGroundImgSrc=n;n?e==n&&this.groundPlane.material.map.image?(t=.03*this.goundScale,i=(e=this.groundPlane.material.map.image).width,e=e.height,this.groundPlane.scale.set(i*t,e*t),viewer.dispatchEvent("content_changed"),this.groundPlane.rotation.z=Be.degToRad(this.goundAngle)):(i=Kx.load(n,function(e){var t;r.curGroundImgSrc==n&&(t=.03*r.goundScale,r.groundPlane.scale.set(e.image.width*t,e.image.height*t),r.groundPlane.rotation.z=Be.degToRad(r.goundAngle),viewer.dispatchEvent("content_changed"))}),Potree.Utils.makeTexDontResize(i),this.groundPlane?this.groundPlane.material.map=i:(this.groundPlane=new Q(new _a(1,1,1),new R({map:i,side:2})),viewer.scene.scene.add(this.groundPlane),this.groundPlane.position.z=.1),Potree.Utils.updateVisible(this.groundPlane,"show",!0)):this.groundPlane&&Potree.Utils.updateVisible(this.groundPlane,"show",!1)}},eE=new Gc,tE=new _a(1,1),nE={nearBound:.1,farBound:25,minSize:50,maxSize:200},iE=function(){function t(){var e;return ue(this,t),(e=le(this,t)).route=[],e.curve=[],e.scenePoints=[],e.sceneMeshGroup=new Z,e.mapMeshGroup=new Z,e.generateDeferred,viewer.addEventListener("loadPointCloudDone",e.init.bind(e)),e.lastResult,e.datasetIds=[],e}return v(t,Qn),A(t,[{key:"init",value:function(){var n,i,e,r=this;this.inited||(i=new Re,viewer.mapViewer.addEventListener("camera_changed",function(e){var t;r.routeStart&&r.routeEnd&&((t=e.viewport.camera).zoom==n&&i.equals(e.viewport.resolution)||j.intervalTool.isWaiting("routeCameraInterval",function(){t.zoom==n&&i.equals(e.viewport.resolution)||(r.updateMapArrows(!0),n=t.zoom,i.copy(e.viewport.resolution))},vf.isMobile()?500:200))}),viewer.addEventListener("camera_changed",function(e){r.routeStart&&r.routeEnd&&e.changeInfo.positionChanged&&j.intervalTool.isWaiting("routeCameraInterval2",function(){r.updateArrowDisplay()},1e3)}),(e={shadowMat:new R({transparent:!0,depthTest:!1,map:eE.load(Potree.resourcePath+"/textures/pano_instruction_bottomMarker.png")}),sphereMat:new R({transparent:!0,depthTest:!1,map:eE.load(Potree.resourcePath+"/textures/whiteCircle.png")}),hatMats:{start:new R({transparent:!0,depthTest:!1,map:eE.load(Potree.resourcePath+"/textures/pano_instruction_start_route.png")}),end:new R({transparent:!0,depthTest:!1,map:eE.load(Potree.resourcePath+"/textures/pano_instruction_target_reached.png")})}}).shadowMat.map.anisotropy=4,this.poleStart=this.createPole(e,"start"),this.poleEnd=this.createPole(e,"end"),this.sceneMeshGroup.add(this.poleStart),this.sceneMeshGroup.add(this.poleEnd),(e=eE.load(Potree.resourcePath+"/textures/routePoint_panorama.png")).anisotropy=4,this.arrow=new Q(tE,new R({transparent:!0,depthTest:!1,map:e})),this.arrow.scale.set(.5,.5,.5),Potree.Utils.setObjectLayers(this.arrow,"sceneObjects"),this.arrows=new Z,this.sceneMeshGroup.add(this.arrows),Potree.Utils.setObjectLayers(this.sceneMeshGroup,"sceneObjects"),viewer.scene.scene.add(this.sceneMeshGroup),this.sceneMeshGroup.visible=!1,this.poleStart.visible=!1,this.poleEnd.visible=!1,e=eE.load(Potree.resourcePath+"/textures/routePoint_map_fsna.png"),this.mapArrowMats={default:new R({transparent:!0,depthTest:!1,map:e}),fade:new R({transparent:!0,depthTest:!1,map:e,opacity:.4})},this.mapArrow=new Q(tE,this.mapArrowMats.default),this.mapArrow.scale.set(.5,.5,.5),this.mapArrows=new Z,this.mapArrows.name="mapArrows",this.mapMeshGroup.add(this.mapArrows),this.mapMeshGroup.name="mapRouteLayer",this.mapMeshGroup.visible=!1,viewer.mapViewer.dispatchEvent({type:"add",object:this.mapMeshGroup,name:"route"}),this.mapArrow.layers.mask=this.mapArrows.layers.mask,viewer.modules.SiteModel.bus.addEventListener("FloorChange",function(){r.routeStart&&r.routeEnd&&r.updateOpacityAtMap()}),this.inited=!0)}},{key:"updateOpacityAtMap",value:function(){var n=this,i=viewer.modules.SiteModel.currentFloor;this.mapArrows.children.forEach(function(e,t){t=n.mapPoints[t].clone(),t.z+=.3,t=i&&i.ifContainsPoint(t);e.material=t?n.mapArrowMats.default:n.mapArrowMats.fade}),viewer.mapViewer.dispatchEvent("content_changed")}},{key:"createPole",value:function(e,t){var n=new Z,i=(n.name="pole_"+t,new Q(tE,e.shadowMat));i.scale.set(.5,.5,.5);n.add(i);for(var r=0;r<6;r++){var a=new uv({mat:e.sphereMat,renderOrder:3});a.position.set(0,0,1.5/7*(r+1)),a.scale.set(.05,.05,.05),n.add(a)}t=new uv({mat:e.hatMats[t],sizeInfo:nE,renderOrder:4});return t.position.set(0,0,1.5),t.scale.copy(i.scale),n.add(t),n.hatSphere=t,n}},{key:"addTestArrow",value:function(){}},{key:"addArrow",value:function(e){var t=this.arrow.clone();t.position.copy(e),this.arrows.add(t)}},{key:"addMapArrow",value:function(e){var t=this.mapArrow.clone();t.position.copy(e).setZ(0),this.mapArrows.add(t)}},{key:"setArrowDir",value:function(e,t){var n=e[t],e=e[t+1],t=e?e.position:this.endPolePos,e=(new Oe).subVectors(n.position,t).setZ(0),t=Math.atan2(e.y,e.x)+Math.PI/2;n.rotation.z=t}},{key:"setRouteStart",value:function(e,t,n){this.routeStart&&e&&this.routeStart.equals(e)||(this.routeStart=e&&(new Oe).copy(e),t&&this.routeStart&&(this.routeStart.setZ(this.getZAtMap()),this.bus)&&this.bus.emit("reposStartMarker",this.routeStart),console.log("setRouteStart",this.routeStart&&this.routeStart.toArray()),this.datasetIds[0]=n,this.poleStart.visible=!!e,e&&this.poleStart.position.copy(this.routeStart),e&&this.poleStart.hatSphere.waitUpdate(),this.generateRoute(),viewer.dispatchEvent("content_changed"))}},{key:"setStartPole",value:function(e){this.startPolePos=e,this.bus&&this.bus.emit("reposStartMarker",e)}},{key:"setRouteEnd",value:function(e,t,n){this.routeEnd&&e&&this.routeEnd.equals(e)||(this.routeEnd=e&&(new Oe).copy(e),t&&this.routeEnd&&(this.routeEnd.setZ(this.getZAtMap()),this.bus)&&this.bus.emit("reposEndMarker",this.routeEnd),console.log("setRouteEnd",this.routeEnd&&this.routeEnd.toArray()),this.datasetIds[1]=n,this.poleEnd.visible=!!e,e&&this.poleEnd.position.copy(this.routeEnd),e&&this.poleEnd.hatSphere.waitUpdate(),this.generateRoute(),viewer.dispatchEvent("content_changed"))}},{key:"getZAtMap",value:function(){var e=j.sortByScore(viewer.images360.panos,[],[function(e){return-Math.abs(e.position.z-viewer.images360.position.z)}]),e=e&&e[0]&&e[0].item;return e?e.floorPosition.z:viewer.bound.boundingBox.min.z+1}},{key:"setEndPole",value:function(e){this.endPolePos=e,this.bus&&this.bus.emit("reposEndMarker",e)}},{key:"getSourceProjectionIndex",value:function(e){e=e.findIndex(function(e){return e.instruction&&"source_projection_to_navgraph"===e.instruction.type});return e<0?0:e}},{key:"getDestinationProjectionIndex",value:function(e){var t=e.findIndex(function(e){return e.instruction&&"destination_projection_to_navgraph"===e.instruction.type});return t<0?e.length-1:t}},{key:"generateRoute",value:function(){var a=this;if(this.sceneMeshGroup.visible=!0,this.routeStart&&this.routeEnd){var i=viewer.scene.pointclouds.find(function(e){return e.dataset_id==Potree.settings.originDatasetId}),r=function(){a.routeLength=a.route.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0);var e=Math.max(2,Math.round(+a.routeLength)),t=new Xc(a.route),t=(t.curveType="chordal",(a.curve=t).getSpacedPoints(e)),e=(t.splice(0,1),t.pop(),a.scenePoints=t,a.updateMapArrows(),a.displayRoute(),new Re(1,1)),n=new Bh,t=(a.route.forEach(function(e){n.expandByPoint(e)}),n.getSize(new Re)),i=new Re(115,40),r=viewer.mapViewer.viewports[0].resolution2,r=r.x*r.y,r=(32e4<r&&i.multiplyScalar(r/32e4),t.clone().divide(viewer.mapViewer.viewports[0].resolution2).multiply(i)),i=(t.add(r),n.getCenter(new Re));t.x=Math.max(t.x,e.x),t.y=Math.max(t.y,e.y);viewer.mapViewer.moveTo(i,t,1e3),a.bus.emit("gotResult",{dis:a.routeLength})};if(Potree.fileServer){var t=function(e){var t,n;e.data?(e=e.data,a.clearRoute(),(t=e.length)<2?(console.log("路径点数为"+t+",直接取起点和终点连线"),a.route=[a.routeStart,a.routeEnd]):(t=a.getSourceProjectionIndex(e),n=a.getDestinationProjectionIndex(e),e.slice(t,n+1).forEach(function(e,t){e=e.location.slice(0);(e=(new Oe).fromArray(e)).z-=i.datasetData.location[2],a.route.push(e)})),a.setStartPole(a.route[0]),a.setEndPole(a.route[a.route.length-1]),r()):(console.log("没有数据"),t=e&&4002==e.code?e:a.routeStart.distanceTo(a.routeEnd)<1?{code:500,msg:"距离太短,无法规划路线"}:{code:500,msg:"超出数据集范围,无法规划路线"},a.clearRoute(),a.setStartPole(a.routeStart),a.setEndPole(a.routeEnd),a.displayRoute(),a.bus&&a.bus.emit("gotResult",t))};if(this.lastResult&&(this.lastResult.data||4002!=this.lastResult.data.code)){var e=j.CloneObject(this.lastResult.data);if(this.lastResult.routeStart.equals(this.routeStart)&&this.lastResult.routeEnd.equals(this.routeEnd)?o=!0:this.lastResult.routeStart.equals(this.routeEnd)&&this.lastResult.routeEnd.equals(this.routeStart)&&(o=!0,e.data)&&(e.data=this.lastResult.data.data.slice(0).reverse()),o)return console.log("直接用上次的结果"),setTimeout(function(){t(e)},1)}var n,o=this.routeStart.clone(),s=this.routeEnd.clone(),l={source_longitude:o.x,source_latitude:o.y,source_z:o.z+i.datasetData.location[2],destination_longitude:s.x,destination_latitude:s.y,destination_z:s.z+i.datasetData.location[2]},u="/laser/route/".concat(Potree.settings.number,"/getRoute/").concat(Potree.settings.originDatasetId,"?");for(n in l)u+=n+"="+l[n]+"&";Potree.fileServer.get(u).then(function(e){a.routeStart&&a.routeEnd&&(a.lastResult={routeStart:a.routeStart.clone(),routeEnd:a.routeEnd.clone(),data:e},t(e))})}else this.clearRoute(),this.route=[this.routeStart,this.routeEnd],r()}}},{key:"updateMapArrows",value:function(e){var t,n,i;0!=this.route.length&&(t=viewer.mapViewer.camera.zoom,n=300<viewer.mapViewer.viewports[0].resolution.y,(i=Math.max(2,Math.round(this.routeLength*t/(n?35:30))))!=this.mapPoints.length+1)&&((i=this.curve.getSpacedPoints(i)).splice(0,1),i.pop(),this.mapPoints=i,this.mapArrow.scale.set(i=(n?26:22)/t,i,i),e&&(this.clearRoute({resetMap:!0}),this.displayRoute({resetMap:!0})),this.updateOpacityAtMap())}},{key:"updateArrowDisplay",value:function(){var n;0!=this.scenePoints.length&&(n=viewer.scene.getActiveCamera().position,this.arrows.children.forEach(function(e,t){e.position.distanceTo(n)<10?e.visible=!0:e.visible=!1}),viewer.dispatchEvent("content_changed"))}},{key:"displayRoute",value:function(){var n=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).resetMap||(this.poleStart.position.copy(this.startPolePos||this.routeStart),this.poleEnd.position.copy(this.endPolePos||this.routeEnd),this.scenePoints.forEach(function(e){return n.addArrow(e)}),this.arrows.children.forEach(function(e,t){return n.setArrowDir(n.arrows.children,t)})),this.sceneMeshGroup.visible=!0,this.mapMeshGroup.visible=!0,this.mapPoints.forEach(function(e){return n.addMapArrow(e)}),this.mapArrows.children.forEach(function(e,t){return n.setArrowDir(n.mapArrows.children,t)}),viewer.mapViewer.dispatchEvent({type:"content_changed"}),this.updateArrowDisplay()}},{key:"clearRoute",value:function(){var t=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).resetMap||(this.routeLength=0,this.route=[],this.scenePoints=[],this.mapPoints=[],this.arrows.children.slice(0).forEach(function(e){t.arrows.remove(e)})),this.mapArrows.children.slice(0).forEach(function(e){t.mapArrows.remove(e)}),this.sceneMeshGroup.visible=!1,this.mapMeshGroup.visible=!1,viewer.mapViewer.dispatchEvent({type:"content_changed"}),viewer.dispatchEvent("content_changed")}},{key:"clear",value:function(){console.log("导航clear"),this.routeStart=null,this.routeEnd=null,this.clearRoute()}}])}(),rE=[{name:"top",axis:["x","y"],direction:new Oe(0,0,-1),openCount:0}],aE=function(){function t(){var e;return ue(this,t),(e=le(this,t)).views={},e.cameras={},e.orthoCamera=new Ad(-100,100,100,100,.01,1e4),e.orthoCamera.up.set(0,0,1),e}return v(t,Qn),A(t,[{key:"init",value:function(){var n=this;this.inited||(this.initViews(),this.inited=!0,this.prepareRecord=!0,this.activeViewName="mainView",this.events={transfromCallback:function(e){n.adjustCamHeight()},selectCallback:function(e){n.adjustCamHeight();var t="mainView"!=n.activeViewName||0<e.selection.length;Potree.settings.unableNavigate&&!t?setTimeout(function(){Potree.settings.unableNavigate="mainView"!=n.activeViewName||0<e.selection.length},300):Potree.settings.unableNavigate=t},onkeydown:function(e){8!=e.keyCode&&46!=e.keyCode||viewer.inputHandler.selection[0]&&viewer.scene.removeVolume(viewer.inputHandler.selection[0])}})}},{key:"initViews",value:function(){this.splitScreenTool=new Nb;for(var e=0;e<1;e++){var t=rE[e],n=new ff;this.views[t.name]=n,this.cameras[t.name]=this.orthoCamera,n.direction=t.direction}this.views.mainView=viewer.mainViewport.view,this.cameras.mainView=viewer.mainViewport.camera}},{key:"switchView",value:function(t){var e,n,i,r,a,o,s;this.activeViewName!=t&&(e=this.views[t],n=this.cameras[t],i=rE.find(function(e){return e.name==t}),(a=viewer.bound).boundSize,r=a.center,a=a.boundingBox,this.lastViewName=this.activeViewName,this.activeViewName=t,o=this.views[this.lastViewName],s=this.cameras[this.lastViewName],viewer.mainViewport.view=e,viewer.mainViewport.camera=n,s&&(o.zoom=s.zoom),"mainView"==t?Potree.settings.unableNavigate=!1:(Potree.settings.unableNavigate=!0,0==i.openCount&&(this.orthoMoveFit(r,{bound:a},0),this.camHeightOutOfModel=e.position.z),i.openCount++,this.adjustCamHeight(),e.zoom&&(n.zoom=e.zoom)),viewer.updateScreenSize({forceUpdateSize:!0}),viewer.inputHandler.selection.length)&&this.focusOnObject(viewer.inputHandler.selection[0])}},{key:"focusOnObject",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;"mainView"==this.activeViewName?viewer.focusOnObject({boundingBox:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},"boundingBox",t):this.orthoMoveFit(e.position,{bound:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},t),this.adjustCamHeight()}},{key:"orthoMoveFit",value:function(e,t,n){var i={x:.4*viewer.mainViewport.resolution.x,y:.4*viewer.mainViewport.resolution.y};this.splitScreenTool.viewportFitBound(viewer.mainViewport,t.bound,e,n,i)}},{key:"adjustCamHeight",value:function(){var e,t;"top"==this.activeViewName&&(e=this.views.top,t=viewer.inputHandler.selection.length?(t=viewer.inputHandler.selection[0]).boundingBox.clone().applyMatrix4(t.matrixWorld).max.z:this.camHeightOutOfModel,e.position.z=t)}},{key:"enter",value:function(){this.init(),viewer.transformationTool.setModeEnable(["translation"]),viewer.transformationTool.frame.material.visible=!1,this.targetPlane=viewer.mainViewport.targetPlane=new ir,this.shiftTarget=viewer.mainViewport.shiftTarget=new Oe,this.getAllBoxes().forEach(function(e){Potree.Utils.updateVisible(e,"hidden",!0)}),viewer.transformationTool.history.clear(),viewer.transformationTool.addEventListener("transformed",this.events.transfromCallback),viewer.inputHandler.addEventListener("selection_changed",this.events.selectCallback),viewer.inputHandler.addEventListener("keydown",this.events.onkeydown),this.setPointLevelAuto();var e=viewer.scene.pointclouds.find(function(e){return e.dataset_id==Potree.settings.originDatasetId});viewer.scene.pointclouds.forEach(function(e){e.dataset_id!=Potree.settings.originDatasetId?(Potree.Utils.updateVisible(e,"enterClipping",!1),e.panos.forEach(function(e){return e.setEnable(!1)})):Potree.Utils.updateVisible(e,"enterClipping",!0,1,"add")}),viewer.flyToDataset({pointcloud:e,duration:0})}},{key:"enter2",value:function(){viewer.transformationTool.setModeEnable(["translation"]),viewer.transformationTool.frame.material.visible=!1,viewer.transformationTool.history.clear()}},{key:"leave",value:function(){viewer.transformationTool.setModeEnable(["scale","translation","rotation"]),viewer.transformationTool.frame.material.visible=!0,this.switchView("mainView"),this.getAllBoxes().forEach(function(e){Potree.Utils.updateVisible(e,"hidden",!1)}),viewer.transformationTool.removeEventListener("transformed",this.events.transfromCallback),viewer.inputHandler.removeEventListener("selection_changed",this.events.selectCallback),viewer.transformObject(null),viewer.transformationTool.history.clear(),viewer.scene.pointclouds.forEach(function(e){e.dataset_id!=Potree.settings.originDatasetId?(Potree.Utils.updateVisible(e,"enterClipping",!0),e.panos.forEach(function(e){return e.setEnable(!0)})):Potree.Utils.updateVisible(e,"enterClipping",!1,0,"cancel")})}},{key:"setTranMode",value:function(e){this.tranMode=e,viewer.transformationTool.setModeEnable([e]),viewer.dispatchEvent("content_changed")}},{key:"setPointLevelAuto",value:function(){viewer.setPointBudget(5e6),Potree.settings.sizeFitToLevel=!0,viewer.setPointLevels()}},{key:"getAllBoxes",value:function(){return viewer.scene.volumes.filter(function(e){return e.clip&&e instanceof Potree.BoxVolume})}},{key:"getCalcData",value:function(){var n=viewer.modules.Clip;return{transformation_matrix:viewer.scene.pointclouds.filter(function(e){return e.dataset_id==Potree.settings.originDatasetId}).map(function(t){return{id:t.dataset_id,matrix:(new Me).elements,visiMatrixes:t.material.clipBoxes_in.filter(function(e){return!e.box.isNew}).map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),unVisiMatrixes:t.material.clipBoxes_out.filter(function(e){return!e.box.isNew}).map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),modelMatrix:(new Me).elements}}),aabb:"b-12742000 -12742000 -12742000 12742000 12742000 12742000"}}},{key:"saveClipData",value:function(e){viewer.clipUnabled;return(e||this.getAllBoxes()).filter(function(e){return!e.isNew}).map(function(e){return{clipTask:e.clipTask,position:Potree.Utils.datasetPosTransform({position:e.position,toDataset:!0,datasetId:Potree.settings.originDatasetId}).toArray(),rotation:Potree.Utils.datasetRotTransform({rotation:e.rotation,toDataset:!0,datasetId:Potree.settings.originDatasetId,getRotation:!0}).toArray().slice(0,3),scale:e.scale.toArray()}})}},{key:"loadFromData",value:function(){(0<arguments.length&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){var t=new Potree.BoxVolume({clip:!0,clipTask:e.clipTask});t.scale.fromArray(e.scale),t.position.fromArray(e.position),t.rotation.fromArray(e.rotation),t.position.copy(Potree.Utils.datasetPosTransform({position:t.position,fromDataset:!0,datasetId:Potree.settings.originDatasetId})),t.rotation.copy(Potree.Utils.datasetRotTransform({rotation:t.rotation,fromDataset:!0,datasetId:Potree.settings.originDatasetId,getRotation:!0})),viewer.scene.addVolume(t),viewer.volumeTool.scene.add(t)})}}])}(),oE=(new da(1,1,1,1),new R({wireframe:!0,color:"#ffffff"}),function(){function a(e){var t,n;for(n in ue(this,a),t=le(this,a),e)t[n]=e[n];t.strength=t.strength||1,t.radius=e.radius||1,t.height=e.height||5,t.computeParams(),t.geometry=t.createGeometry(t.radius,t.height,t.particleCount),null==t.color&&(t.color=16724480),t.createMaterial(),t.velocity=new Oe,t.acceleration=new Oe,t.angle=0,t.angleVelocity=0,t.angleAcceleration=0,t.size=16,t.opacity=1,t.age=0,t.alive=0,t.sizeTween=null,t.colorTween=null,t.opacityTween=null,t.setSize({viewport:viewer.mainViewport}),t.setFov(viewer.fov);function i(e){"MainView"==e.viewport.name&&t.setSize(e)}function r(e){t.setFov(e.fov)}return viewer.addEventListener("resize",i),viewer.addEventListener("fov_changed",r),t.addEventListener("dispose",function(){viewer.removeEventListener("resize",i),viewer.removeEventListener("fov_changed",r)}),t}return v(a,Fl),A(a,[{key:"computeParams",value:function(){var e=(this.curve?this.curve.wholeLength:0)+2*this.radius;this.size=.3+2.7*Be.smoothstep(this.radius,.3,10),this.particleCount=Math.ceil(e*Math.sqrt(this.strength*this.height)*this.radius/(this.size*this.size)*25)}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"getBound",value:function(e){var n=this,i=(this.boundPoints=[],new K),t=.13*this.size+.3,e=(e.forEach(function(e){var t=e.clone();t.z+=n.height,i.expandByPoint(e),i.expandByPoint(t),n.boundPoints.push(e,t)}),this.radius+t);i.expandByVector(new Oe(e,e,t)),this.boundingBox=i}},{key:"createGeometry",value:function(e,t,n){for(var i,r,a=new V,o=(1<this.positions.length?(i=Math.ceil(this.curve.wholeLength/.2)+1,i=(r=this.curve.getSpacedPoints(i)).length,this.getBound(r)):this.getBound(this.positions),new Float32Array(3*n)),s=new Float32Array(n),l=new Float32Array(n),u=new Float32Array(n),c=0;c<n;c++){var d,h,p=(new Oe).copy(1<this.positions.length?r[Math.floor(c/n*i)]:this.positions[0]);u[c]=p.z,0===c?(o[3*c+0]=p.x,o[3*c+1]=p.y,o[3*c+2]=p.z):(d=Math.sqrt(Math.random())*e,h=2*Math.random()*Math.PI,o[3*c+0]=p.x+Math.cos(h)*d,o[3*c+1]=p.y+Math.sin(h)*d,o[3*c+2]=p.z+(e-d)/e*t/2+t/2,l[c]=.25*(4*Math.random()|0),s[c]=Math.random())}return a.setAttribute("centerHeight",new H(u,1)),a.setAttribute("position",new H(o,3)),a.setAttribute("randam",new H(s,1)),a.setAttribute("sprite",new H(l,1)),a}},{key:"updateGeometry",value:function(){this.computeParams(),this.geometry.dispose(),this.geometry=this.createGeometry(this.radius,this.height,this.particleCount),this.material.uniforms.size.value=this.size}},{key:"createMaterial",value:function(){var e=new ga({uniforms:{color:{type:"c",value:new Se(this.color)},size:{type:"f",value:this.size},u_sampler:{type:"t",value:sx=sx||(new Gc).load(Potree.resourcePath+"/textures/fire.png")},time:{type:"f",value:0},heightOfNearPlane:{type:"f",value:0},height:{type:"f",value:this.height}},vertexShader:"\n attribute float randam;\n attribute float sprite;\n attribute float centerHeight; //add\n \n //uniform float fireHeight; //add \n uniform float time;\n uniform float size;\n uniform float heightOfNearPlane;\n \n \n \n \n //varying float heightRatio;\n varying float vSprite;\n varying float vOpacity; \n float PI = 3.14;\n\n float quadraticIn( float t ) \n { \n float tt = t * t;\n return tt * tt; \n //变化曲线 越来越快\n } \n \n void main() {\n float progress = fract( time + ( 2.0 * randam - 1.0 ) );\n float progressNeg = 1.0 - progress;\n float ease = quadraticIn( progress );\n float influence = sin( PI * ease );\n //vec3 newPosition = position * vec3( 1.0, 1.0 , ease);\n vec3 newPosition = position;\n newPosition.z = (newPosition.z - centerHeight) * ease + centerHeight;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );\n gl_PointSize = ( heightOfNearPlane * size ) / gl_Position.w;\n vOpacity = min( influence * 4.0, 1.0 ) * progressNeg;\n vSprite = sprite;\n \n //heightRatio = (newPosition.z - centerHeight) / fireHeight ;\n \n }\n",fragmentShader:"\n uniform vec3 color;\n uniform sampler2D u_sampler;\n\n varying float vSprite;\n varying float vOpacity;\n //varying float heightRatio;\n\n void main() \n {\n \n \n vec2 texCoord = vec2(gl_PointCoord.x * 0.25 + vSprite, gl_PointCoord.y);\n \n gl_FragColor = vec4( texture2D( u_sampler, texCoord ).xyz * color * vOpacity, 1.0 );\n \n \n }\n",blending:ye,depthTest:!0,depthWrite:!1,transparent:!0});this.material=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"update",value:function(e){Potree.Utils.getObjVisiByReason(this,"force")&&(Potree.Utils.isInsideFrustum(this.boundingBox,viewer.scene.getActiveCamera())?(Potree.Utils.updateVisible(this,"isInsideFrustum",!0),this.material.uniforms.time.value=(this.material.uniforms.time.value+(e*=1))%1,viewer.dispatchEvent("content_changed")):Potree.Utils.updateVisible(this,"isInsideFrustum",!1))}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}])}()),sE=function(){return A(function e(t,n){ue(this,e),this.times=t||[],this.values=n||[]},[{key:"lerp",value:function(e){if(0!=this.times.length){for(var t,n=0,i=this.times.length;n<i&&e>this.times[n];)n++;return 0==n?this.values[0]:n==i?this.values[i-1]:(t=(e-this.times[n-1])/(this.times[n]-this.times[n-1]),this.values[0]instanceof Oe?this.values[n-1].clone().lerp(this.values[n],t):this.values[n-1]+t*(this.values[n]-this.values[n-1]))}}},{key:"clone",value:function(){return j.CloneClassObject(this)}}])}(),lE=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,e),this.position=new Oe,this.velocity=new Oe,this.angle=0,this.angleVelocity=0,this.angleAcceleration=0,this.size=16,this.color=new Se,this.opacity=1,this.age=0,this.alive=0,this.lastChangeVage=0,this.sizeTween=t.sizeTween||new sE([0,1],[32,128]),this.opacityTween=t.opacityTween||new sE([.8,2],[.5,0]),this.colorTween=t.colorTween||new sE([.4,1],[new Oe(0,0,.2),new Oe(0,0,.5)])},[{key:"update",value:function(e){this.position.add(this.velocity.clone().multiplyScalar(e)),this.velocity.multiplyScalar(1+this.acceleration*e),this.angle+=.01745329251*this.angleVelocity*e,this.angleVelocity+=.01745329251*this.angleAcceleration*e,this.age+=e,0<this.sizeTween.times.length&&(this.size=this.sizeTween.lerp(this.age/this.deathAge)),0<this.colorTween.times.length&&(e=this.colorTween.lerp(this.age/this.deathAge),this.color=(new Se).setHSL(e.x,e.y,e.z)),0<this.opacityTween.times.length&&(this.opacity=this.opacityTween.lerp(this.age/this.deathAge)),viewer.dispatchEvent("content_changed")}}])}(),uE="\n attribute vec3 customColor;\n attribute float customOpacity;\n attribute float customSize;\n attribute float customAngle;\n attribute float customVisible; \n uniform float heightOfNearPlane;\n \n \n varying vec4 vColor;\n varying float vAngle;\n void main()\n {\n if ( customVisible > 0.5 ) \t\t\t\t\n vColor = vec4( customColor, customOpacity ); \n else\t\t\t\t\t\t\t\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\t\t\n \n vAngle = customAngle;\n\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n //gl_PointSize = customSize * ( 300.0 / length( mvPosition.xyz ) ); \n gl_Position = projectionMatrix * mvPosition;\n gl_PointSize = ( heightOfNearPlane * customSize ) / gl_Position.w;\n \n \n }\n",cE=(Object.freeze({CUBE:1,SPHERE:2}),new da(1,1,1,1),new R({wireframe:!0,color:"#ffffff"}),{positions:[],positionStyle:"sphere",positionBase:new Oe(0,0,0),positionSpread:new Oe(1,1,0),radius:1,velocityStyle:"cube",velocityBase:new Oe(0,0,.5),velocitySpread:new Oe(1,1,.3),accelerationBase:.3,accelerationSpread:.6,speedBase:.1,speedSpread:.5,angleBase:0,angleSpread:360,angleVelocityBase:1,angleVelocitySpread:30,angleAccelerationBase:1,angleAccelerationSpread:5,sizeBase:0,sizeSpread:0,sizeTween:[[0,.3,1],[.3,1.4,6]],colorBase:new Oe(0,1,.5),colorSpread:new Oe(0,0,0),colorTween:new sE([.2,1],[new Oe(0,0,.4),new Oe(0,0,.1)]),opacityBase:.1,opacitySpread:.2,opacityTween:[[0,.1,.9,1],[.1,.4,.03,0]],strength:1,particleDeathAge:3,height:3}),dE=(new Q(new Qu(.03,5,5),new R({color:"white",depthTest:!1})),function(){function o(){var t,e,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};for(e in ue(this,o),(t=le(this,o)).blendStyle=Ae,t.emitterAge=0,n=$.extend({},cE,n)){var i=n[e];i instanceof Array&&i[0]instanceof Array?t[e]=ie(sE,Fe(i)):i instanceof Oe||i instanceof Se?t[e]=i.clone():t[e]=i}t.defaultSizeTween=t.sizeTween.clone(),t.defaultOpacityTween=t.opacityTween.clone(),t.geometry=new V,t.computeParams(),t.createMaterial(),t.createGeometry(),t.dynamic=!0,t.sortParticles=!0,t.frustumCulled=!1,n.position&&t.position.copy(n.position),t.setSize({viewport:viewer.mainViewport}),t.setFov(viewer.fov);function r(e){"MainView"==e.viewport.name&&t.setSize(e)}function a(e){t.setFov(e.fov)}return viewer.addEventListener("resize",r),viewer.addEventListener("fov_changed",a),t.addEventListener("dispose",function(){viewer.removeEventListener("resize",r),viewer.removeEventListener("fov_changed",a)}),t}return v(o,Fl),A(o,[{key:"computeParams",value:function(){var e=(this.curve?this.curve.wholeLength:0)+2*this.radius,t=("cube"==this.positionStyle&&this.positionSpread.set(this.radius,this.radius,0),this.velocityBase.set(0,0,(this.height-.5*this.accelerationBase*this.particleDeathAge*this.particleDeathAge)/this.particleDeathAge),this.velocityBase.z=Math.max(0,this.velocityBase.z),this.particleCount=Math.ceil(e*Math.sqrt(this.strength*this.height*this.radius)),this.particleCount=Math.max(5,this.particleCount),+Be.smoothstep(this.strength,.01,1)+1),n=(this.sizeTween.values=this.defaultSizeTween.values.map(function(e){return e*t}),1+.5*Be.smoothstep(this.strength,.01,1));this.opacityTween.values=this.defaultOpacityTween.values.map(function(e){return e*n})}},{key:"reStart",value:function(){this.emitterAge=0,this.createGeometry()}},{key:"updateGeometry",value:function(){this.computeParams(),this.reStart()}},{key:"createParticle",value:function(e){var t,n,i=new lE({sizeTween:this.sizeTween,opacityTween:this.opacityTween,colorTween:this.colorTween}),r=(i.deathAge=this.particleDeathAge,i.center=e,"cube"==this.positionStyle&&(i.position=this.randomVector3(this.positionBase,this.positionSpread)),"sphere"==this.positionStyle&&(r=2*Math.random()-1,n=2*Math.PI*Math.random(),t=Math.sqrt(1-r*r),r=new Oe(t*Math.cos(n),r,.2*Math.abs(t*Math.sin(n))),i.position=(new Oe).addVectors(this.positionBase,r.multiplyScalar(this.radius))),i.position.add(e),"cube"==this.velocityStyle&&(i.velocity=this.randomVector3(this.velocityBase,this.velocitySpread)),"sphere"==this.velocityStyle&&(t=new Oe(0,0,1),n=this.randomValue(this.speedBase,this.speedSpread),i.velocity=t.normalize().multiplyScalar(n)),i.acceleration=this.randomValue(this.accelerationBase,this.accelerationSpread),i.angle=this.randomValue(this.angleBase,this.angleSpread),i.angleVelocity=this.randomValue(this.angleVelocityBase,this.angleVelocitySpread),i.angleAcceleration=this.randomValue(this.angleAccelerationBase,this.angleAccelerationSpread),i.size=this.randomValue(this.sizeBase,this.sizeSpread),this.randomVector3(this.colorBase,this.colorSpread));return i.color=(new Se).setHSL(r.x,r.y,r.z),i.opacity=this.randomValue(this.opacityBase,this.opacitySpread),i.age=0,i.alive=0,i}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"getBound",value:function(e){var n=this,i=(this.boundPoints=[],new K),t=.11*this.sizeTween.values.slice().sort(function(e,t){return t-e})[0],r=.5+t,e=(e.forEach(function(e){var t=e.clone();t.z+=n.height,i.expandByPoint(e),i.expandByPoint(t),n.boundPoints.push(e,t)}),this.radius+r);i.expandByVector(new Oe(e,e,0)),i.min.z-=t,i.max.z+=r,this.boundingBox=i}},{key:"createGeometry",value:function(){this.particleArray=[];var e,i,r,t,n=[],a=[],o=[],s=[],l=[],u=[];1<this.positions.length?(e=Math.ceil(this.curve.wholeLength/.6)+1,e=(i=this.curve.getSpacedPoints(e)).length,r=i.slice(),t=function(e){var t=Math.random(),t=Math.floor(r.length*t),n=r[t];return 1==r.length?r=i.slice():r.splice(t,1),n},this.getBound(i)):this.getBound(this.positions);for(var c=0;c<this.particleCount;c++){var d=(new Oe).copy(1<this.positions.length?t(c):this.positions[0]);this.particleArray[c]=this.createParticle(d),n[3*c]=this.particleArray[c].position.x,n[3*c+1]=this.particleArray[c].position.y,n[3*c+2]=this.particleArray[c].position.z,a[3*c]=this.particleArray[c].color.r,a[3*c+1]=this.particleArray[c].color.g,a[3*c+2]=this.particleArray[c].color.b,o[c]=this.particleArray[c].alive,s[c]=this.particleArray[c].opacity,l[c]=this.particleArray[c].size,u[c]=this.particleArray[c].angle}this.geometry.setAttribute("position",new H(new Float32Array(n),3)),this.geometry.setAttribute("customColor",new H(new Float32Array(a),3)),this.geometry.setAttribute("customVisible",new H(new Float32Array(o),1)),this.geometry.setAttribute("customOpacity",new H(new Float32Array(s),1)),this.geometry.setAttribute("customSize",new H(new Float32Array(l),1)),this.geometry.setAttribute("customAngle",new H(new Float32Array(u),1))}},{key:"createMaterial",value:function(){this.material=new ga(Y(Y(Y(Y(Y(Y({uniforms:{u_sampler:{type:"t",value:lx=lx||(new Gc).load(Potree.resourcePath+"/textures/smokeparticle.png")},heightOfNearPlane:{type:"f",value:0}},vertexShader:uE},"vertexShader",uE),"fragmentShader","\n uniform sampler2D u_sampler;\n varying vec4 vColor;\t\n varying float vAngle; \n void main()\n {\n gl_FragColor = vColor;\n \n float c = cos(vAngle);\n float s = sin(vAngle);\n vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5, c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5); \n vec4 rotatedTexture = texture2D( u_sampler, rotatedUV );\n gl_FragColor = gl_FragColor * rotatedTexture; \n }\n"),"transparent",!0),"alphaTest",.5),"blending",this.blendStyle),"depthTest",this.blendStyle!=Ae)),this.setPerspective(this.fov,this.screenHeight)}},{key:"update",value:function(e){if(Potree.Utils.getObjVisiByReason(this,"force"))if(Potree.Utils.isInsideFrustum(this.boundingBox,viewer.scene.getActiveCamera())){Potree.Utils.updateVisible(this,"isInsideFrustum",!0),1<e&&console.log("update dt>1",e);for(var t,n=[],i=[],r=[],a=[],o=[],s=[],l=[],u=[],c=0;c<this.particleCount;c++)this.particleArray[c].alive&&("cube"==this.velocityStyle&&(t=Math.random(),this.particleArray[c].age-this.particleArray[c].lastChangeVage>this.particleDeathAge*t)&&(this.particleArray[c].velocity=this.randomVector3(this.velocityBase,this.velocitySpread),this.particleArray[c].lastChangeVage=this.particleArray[c].age),this.particleArray[c].update(e),this.particleArray[c].age>this.particleDeathAge&&(this.particleArray[c].alive=0,n.push(c),i.push((this.particleArray[c].age-this.particleDeathAge)%this.particleDeathAge)),r[3*c]=this.particleArray[c].position.x,r[3*c+1]=this.particleArray[c].position.y,r[3*c+2]=this.particleArray[c].position.z,a[3*c]=this.particleArray[c].color.r,a[3*c+1]=this.particleArray[c].color.g,a[3*c+2]=this.particleArray[c].color.b,o[c]=this.particleArray[c].alive,s[c]=this.particleArray[c].opacity,l[c]=this.particleArray[c].size,u[c]=this.particleArray[c].angle);if(this.geometry.setAttribute("position",new H(new Float32Array(r),3)),this.geometry.setAttribute("customColor",new H(new Float32Array(a),3)),this.geometry.setAttribute("customVisible",new H(new Float32Array(o),1)),this.geometry.setAttribute("customOpacity",new H(new Float32Array(s),1)),this.geometry.setAttribute("customSize",new H(new Float32Array(l),1)),this.geometry.setAttribute("customAngle",new H(new Float32Array(u),1)),this.geometry.attributes.customColor.needsUpdate=!0,this.geometry.attributes.customVisible.needsUpdate=!0,this.geometry.attributes.customOpacity.needsUpdate=!0,this.geometry.attributes.customSize.needsUpdate=!0,this.geometry.attributes.customAngle.needsUpdate=!0,this.emitterAge<this.particleDeathAge){var d=this.particleCount/this.particleDeathAge,h=Math.round(d*(this.emitterAge+0)),p=Math.round(d*(this.emitterAge+e));p>this.particleCount&&(p=this.particleCount);for(c=h;c<p;c++)this.particleArray[c].alive=1}for(var f=0;f<n.length;f++){c=n[f];this.particleArray[c]=this.createParticle(this.particleArray[c].center),this.particleArray[c].alive=1,this.particleArray[c].age=i[f],r[3*c]=this.particleArray[c].position.x,r[3*c+1]=this.particleArray[c].position.y,r[3*c+2]=this.particleArray[c].position.z}this.geometry.setAttribute("position",new H(new Float32Array(r),3)),this.geometry.attributes.position.needsUpdate=!0,this.emitterAge+=e}else Potree.Utils.updateVisible(this,"isInsideFrustum",!1)}},{key:"randomValue",value:function(e,t){var n=Math.random();return e*n+t*(1-n)}},{key:"randomVector3",value:function(e,t){var n=new Oe(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new Oe).addVectors(e,(new Oe).multiplyVectors(t,n))}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}])}()),hE=Math.PI/180,pE=function(){return A(function e(){ue(this,e),this.position=new Oe,this.velocity=new Oe,this.angle=0,this.angleVelocity=0,this.angleAcceleration=0,this.size=16,this.color=new Se,this.opacity=1,this.rebornCount=0,this.age=0,this.alive=0,this.deadAge=0,this.sizeTween=null,this.colorTween=null,this.opacityTween=null},[{key:"update",value:function(e){this.position.add(this.velocity.clone().multiplyScalar(e)),this.velocity.multiplyScalar(1+this.acceleration*e),this.angle+=this.angleVelocity*hE*e,this.angleVelocity+=this.angleAcceleration*hE*e,this.age+=e,0<this.sizeTween.times.length&&(this.size=this.sizeTween.lerp(this.age/this.deathAge)),0<this.colorTween.times.length&&(e=this.colorTween.lerp(this.age/this.deathAge),this.color=(new Se).setHSL(e.x,e.y,e.z)),0<this.opacityTween.times.length&&(this.opacity=this.opacityTween.lerp(this.age/this.deathAge)),viewer.dispatchEvent("content_changed")}}])}(),fE=new(function(){return A(function e(){ue(this,e)},[{key:"randomValue",value:function(e,t){var n=Math.random();return e*n+t*(1-n)}},{key:"randomVector3",value:function(e,t){var n=new Oe(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new Oe).addVectors(e,(new Oe).multiplyVectors(t,n))}}])}()),mE=1,vE=2,gE=(new Qu(1,10,4),new R({wireframe:!0,color:"#ffffff"}),{position:new Oe(0,0,1),positionShape:vE,positionRange:new Oe(1,1,1),radius:1.3,velocityShape:vE,velocity:new Oe(0,0,2),velocityRange:new Oe(0,0,3),speed:.4,speedRange:1,size:.4,sizeRange:2,sizeTween:[[0,.04,.2,1],[.1,1,6,8]],color:new Oe(1,1,1),colorRange:new Oe(0,0,0),colorTween:new sE,opacity:1,opacityRange:0,opacityTween:new sE([0,.06,.3,.8,1],[0,1,.3,.05,0]),blendMode:ye,acceleration:.5,accelerationRange:0,angle:0,angleRange:0,angleVelocity:0,angleVelocityRange:0,angleAcceleration:0,angleAccelerationRange:0,strength:1,particleDeathAge:.7,recycleTimes:3,particleSpaceTime:3}),AE=function(){function r(e){function t(e){"MainView"==e.viewport.name&&i.setSize(e)}function n(e){i.setFov(e.fov)}var i;ue(this,r),(i=le(this,r)).age=0,i.alive=!0,i.loop=!0,i.blendMode=Ae,i.setParameters(e),i.createParticles(),i.frustumCulled=!1,i.setSize({viewport:viewer.mainViewport}),i.setFov(viewer.fov);return viewer.addEventListener("resize",t),viewer.addEventListener("fov_changed",n),i.addEventListener("dispose",function(){viewer.removeEventListener("resize",t),viewer.removeEventListener("fov_changed",n)}),i}return v(r,Fl),A(r,[{key:"computeParams",value:function(){this.curve&&this.position.copy(this.curve.points[0]);var t=.8+9.2*Be.smoothstep(this.radius*this.strength,.2,20),e=(this.sizeTween.values=this.defaultSizeTween.values.map(function(e){return e*t}),this.particleCount=Math.ceil(this.strength*this.radius*5),this.speed=gE.speed*this.radius,this.speedRange=gE.speedRange*this.radius,console.log(this.particleCount),this.boundPoints=[],this.boundPoints.push(this.position.clone()),this.sizeTween.values.slice().sort(function(e,t){return t-e})[0]),e=this.radius+(.35*e+.5),n=new bi(this.position,e);this.boundingSphere=n,this.boundingBox=(new K).setFromCenterAndSize(this.position,new Oe(2*e,2*e,2*e))}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"reStart",value:function(){this.age=0,this.createParticles()}},{key:"setParameters",value:function(e){for(var t in e=$.extend({},gE,e)){var n=e[t];"position"==t?this.position.copy(n):n instanceof Array&&n[0]instanceof Array?this[t]=ie(sE,Fe(n)):n instanceof Oe||n instanceof Se?this[t]=n.clone():this[t]=n}this.defaultSizeTween=this.sizeTween.clone(),this.particles=[],this.age=0,this.alive=!0,this.geometry=new V,this.computeParams(),this.material=new ga({uniforms:{u_sampler:{value:this.texture||(ux=ux||(new Gc).load(Potree.resourcePath+"/textures/explode.png"))},heightOfNearPlane:{type:"f",value:0}},vertexShader:"\n attribute vec3 color;\n attribute float size;\n attribute float angle;\n attribute float opacity;\n attribute float visible;\n varying vec4 vColor;\n varying float vAngle;\n uniform float heightOfNearPlane;\n \n void main() {\n if(visible > 0.5) {\n vColor = vec4(color, opacity);\n } else {\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n vAngle = angle;\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n \n gl_PointSize = ( heightOfNearPlane * size ) / gl_Position.w;\n }\n",fragmentShader:"\n uniform sampler2D u_sampler;\n varying vec4 vColor;\n varying float vAngle;\n void main() {\n gl_FragColor = vColor;\n float u = cos(vAngle);\n float v = sin(vAngle);\n vec2 uv = vec2(\n u * (gl_PointCoord.x - 0.5) + v * (gl_PointCoord.y - 0.5) + 0.5, \n u * (gl_PointCoord.y - 0.5) - v * (gl_PointCoord.x - 0.5) + 0.5\n );\n vec4 texture = texture2D(u_sampler, uv);\n gl_FragColor = gl_FragColor * texture;\n }\n",transparent:!0,alphaTest:.5,depthTest:this.blendMode==Ae,blending:this.blendMode})}},{key:"createParticles",value:function(){this.particles=[];for(var e=this.particleCount,t=new Float32Array(3*e),n=new Float32Array(3*e),i=new Float32Array(e),r=new Float32Array(e),a=new Float32Array(e),o=new Float32Array(e),s=0;s<e;s++){var l=this.createParticle();this.particles[s]=l}this.geometry.setAttribute("position",new H(t,3)),this.geometry.setAttribute("color",new H(n,3)),this.geometry.setAttribute("angle",new H(r,1)),this.geometry.setAttribute("size",new H(i,1)),this.geometry.setAttribute("visible",new H(o,1)),this.geometry.setAttribute("opacity",new H(a,1))}},{key:"createParticle",value:function(){var e,t,n=new pE,i=(n.sizeTween=this.sizeTween,n.colorTween=this.colorTween,n.opacityTween=this.opacityTween,n.deathAge=this.particleDeathAge,this.positionShape==mE&&(n.position=fE.randomVector3(new Oe,this.positionRange)),this.positionShape==vE&&(i=2*Math.random()-1,t=2*Math.PI*Math.random(),e=Math.sqrt(1-i*i),i=new Oe(e*Math.cos(t),i,e*Math.sin(t)),n.position=i.multiplyScalar(this.radius)),this.velocityShape==mE&&(n.velocity=fE.randomVector3(this.velocity,this.velocityRange)),this.velocityShape==vE&&(e=(new Oe).addVectors(n.position,new Oe(0,0,2*this.radius)),t=fE.randomValue(this.speed,this.speedRange),n.velocity=e.normalize().multiplyScalar(t)),n.acceleration=fE.randomValue(this.acceleration,this.accelerationRange),n.angle=fE.randomValue(this.angle,this.angleRange),n.angleVelocity=fE.randomValue(this.angleVelocity,this.angleVelocityRange),n.angleAcceleration=fE.randomValue(this.angleAcceleration,this.angleAccelerationRange),n.size=fE.randomValue(this.size,this.sizeRange),fE.randomVector3(this.color,this.colorRange));return n.color=(new Se).setHSL(i.x,i.y,i.z),n.opacity=fE.randomValue(this.opacity,this.opacityRange),n}},{key:"update",value:function(e){if(Potree.Utils.getObjVisiByReason(this,"force")){if(0<this.delayStartTime)return this.delayStartTime-=e;if(Potree.Utils.isInsideFrustum(this.boundingSphere,viewer.scene.getActiveCamera())){Potree.Utils.updateVisible(this,"isInsideFrustum",!0),1<e&&console.log("update dt>1",e);for(var t=this.particleDeathAge,n=this.particleSpaceTime,i=[],r=[],a=[],o=this.geometry.attributes.position.array,s=this.geometry.attributes.opacity.array,l=this.geometry.attributes.visible.array,u=this.geometry.attributes.color.array,c=this.geometry.attributes.angle.array,d=this.geometry.attributes.size.array,h=0;h<this.particleCount;h++){var p,f=this.particles[h];f.alive?(f.update(e),f.age>t&&(f.alive=0,f.rebornCount>=this.recycleTimes?f.deadAge=f.age-t:(i.push(h),r.push(f.age-t),a.push(f.rebornCount+1))),o[3*h]=f.position.x,o[3*h+1]=f.position.y,o[3*h+2]=f.position.z,u[3*h]=f.color.r,u[3*h+1]=f.color.g,u[3*h+2]=f.color.b,l[h]=f.alive,s[h]=f.opacity,c[h]=f.angle,d[h]=f.size):f.rebornCount>=this.recycleTimes&&f.age>t&&(f.deadAge+=e),f.rebornCount>=this.recycleTimes&&f.age>t&&f.deadAge>=n&&(i.push(h),p=t*(this.recycleTimes+1)+n,r.push((f.deadAge-n)%p),a.push(0))}if(this.geometry.attributes.size.needsUpdate=!0,this.geometry.attributes.color.needsUpdate=!0,this.geometry.attributes.angle.needsUpdate=!0,this.geometry.attributes.visible.needsUpdate=!0,this.geometry.attributes.opacity.needsUpdate=!0,this.geometry.attributes.position.needsUpdate=!0,this.alive){if(this.age<t){var m=Math.round(this.particleCount*(this.age+0)/t),v=Math.round(this.particleCount*(this.age+e)/t);v>this.particleCount&&(v=this.particleCount);for(var g=m;g<v;g++)this.particles[g].alive=1}for(var A=0;A<i.length;A++){var y=i[A];this.particles[y]=this.createParticle(),this.particles[y].alive=1,this.particles[y].age=r[A],this.particles[y].rebornCount=a[A]}this.geometry.attributes.position.needsUpdate=!0,this.age+=e,this.age>this.deathAge&&!this.loop&&(this.alive=!1)}}else Potree.Utils.updateVisible(this,"isInsideFrustum",!1)}}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"updateGeometry",value:function(){this.computeParams(),this.reStart()}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}])}(),yE={"fire+smoke":16777215,smoke:16777215,explode:16777215},wE={clipDistance:100,occlusionDistance:60,maxClipFactor:.5,backColor:"#777",useDepth:!0,transparent:!0},bE={bus:new Qn,particleGroup:new Z,curveGroup:new Z,init:function(){this.particleGroup.name="particles",viewer.scene.scene.add(this.particleGroup),this.curveGroup.name="particles-curves",viewer.scene.scene.add(this.curveGroup)},addParticle:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return"fire"==t.type?e=new oE(t):"smoke"==t.type?e=new dE(t):"explode"==t.type&&(e=new AE(t)),this.particleGroup.add(e),e},removeParticle:function(e){e.dispose(),this.particleGroup.remove(e),e.curve.dispose()},update:function(t){this.particleGroup.children.forEach(function(e){return e.update(t)})},startInsertion:function(){var t=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"fire",i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=$.Deferred(),a=[],o=function(e){e&&r.resolve(a),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"addSth"}),viewer.removeEventListener("global_click",u),t.bus.removeEventListener("cancel_insertions",l)},s=new L1([],tx(n),yE[n],n+"_curve",{handleMat:nx(n)}),l=(this.curveGroup.add(s),i.curve=s,i.type=n,function(){console.log("cancel_insertions",s.uuid),s.dispose(),o(!1)}),u=(this.bus.dispatchEvent("cancel_insertions"),this.bus.addEventListener("cancel_insertions",l),function(e){if(e.button===oe.RIGHT)1<=s.points.length&&(a=t.createFromData(i),o(!0));else{e=e.intersect&&(e.intersect.orthoIntersect||e.intersect.location);if(e)return s.addPoint(e,null,!0),"explode"==n&&(a=t.createFromData(i),o(!0)),{stopContinue:!0}}});return viewer.addEventListener("global_click",u,{importance:10}),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"addSth"}),r.promise()},createFromData:function(e){var t,n=e.type,i=[],r=e.curve;return r||(r=new L1(e.points,tx(n),yE[n],n+"_curve",{handleMat:nx(n)}),this.curveGroup.add(r)),n.includes("fire")||n.includes("smoke")?(n.includes("fire")&&(t=this.addParticle({type:"fire",positions:r.points,curve:r,radius:e.radius,height:e.height,strength:e.strength}),i.push(t)),n.includes("smoke")&&(t=this.addParticle({type:"smoke",positions:r.points,curve:r,positionStyle:"sphere",strength:e.smokeStrength,radius:e.smokeRadius,height:e.smokeHeight}),i.push(t))):"explode"==n&&(t=this.addParticle({type:"explode",position:r.points[0],strength:e.strength,radius:e.radius,particleSpaceTime:e.particleSpaceTime,curve:r,delayStartTime:e.delayStartTime}),i.push(t)),r.addEventListener("dragCurvePoint",function(){j.intervalTool.isWaiting("particlePointChange",function(){i.forEach(function(e){return e.updateGeometry()}),r.dispatchEvent("sendUpdatePoints")},400)}),i}},xE={createAnimation:function(e){var t=new U1(viewer);if(e){t.name=e.name,t.duration=e.duration,t.useDurSlice=e.useDurSlice;var n,i=q(e.points);try{for(i.s();!(n=i.n()).done;){var r=n.value,a=(new Oe).copy(r.position),o=(new Oe).copy(r.target),s=r.time;t.createControlPoint(null,{position:a,target:o,duration:s})}}catch(e){i.e(e)}finally{i.f()}}return t.changeCallback(),viewer.scene.addCameraAnimation(t),t},removeAnimation:function(e){e.dispatchEvent("dispose"),viewer.scene.removeCameraAnimation(e)}},EE=new Gc,CE=(EE.crossOrigin="anonymous",(new ii).setFromAxisAngle(new Oe(0,0,1),Math.PI)),BE={},ME={},SE=3,TE=2,_E=1,PE="#c60",DE="#17c",IE={topView:{default:.4,selected:.6},sideView:{default:.2,selected:.5}},kE=[{name:"top",axis:["x","y"],direction:new Oe(0,0,-1),openCount:0},{name:"right",axis:["y","z"],direction:new Oe(1,0,0),openCount:0},{name:"mainView",openCount:0}],RE=new(function(){function t(){var e;return ue(this,t),(e=le(this,t)).panoGroup=[],e.viewports={},e.panoLink={},e.panoMeshs=new Z,e.lineMeshes=new Z,e.views={},e.cameras={},e.orthoCamera=new Ad(-100,100,100,100,.01,1e4),e.orthoCamera.up.set(0,0,1),e.selectedPano,e.selectedGroup,e.operation,e.visiblePanos=[],e.suggestLines=[],e}return v(t,Qn),A(t,[{key:"init",value:function(){var a=this;BE.default=av.createFatLineMat({color:"#eeeeee",lineWidth:2,depthTest:!1}),BE.hovered=av.createFatLineMat({color:"#00c8af",lineWidth:2,depthTest:!1}),BE.selected=av.createFatLineMat({color:"#00c8af",lineWidth:3,depthTest:!1}),BE.suggestLink=av.createFatLineMat({color:"#ff2222",lineWidth:4,dashed:!0,depthTest:!1}),mx=new R({map:EE.load(Potree.resourcePath+"/textures/whiteCircle.png"),color:"#ff2222",transparent:!0,depthTest:!1,depthWrite:!1}),this.initViews(),viewer.addEventListener("allLoaded",function(){hx=viewer.images360,px=viewer.modules.Alignment,fx=viewer.modules.SiteModel,a.panoMeshs.name="panoMeshs",viewer.scene.scene.add(a.panoMeshs),a.lineMeshes.name="lineMeshes",viewer.scene.scene.add(a.lineMeshes),Potree.settings.ifShowMarker=!1,a.transformControls=new Zb(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0,rotFullCircle:!0}),a.transformControls.setSize(1.5),viewer.scene.scene.add(a.transformControls),a.transformControls._gizmo.hideAxis={rotate:["x","y","e"]},a.transformControls.setRotateMethod(2),a.fakeMarkerForTran=new Q(new da(.3,.3,.3),new R({color:"#FFFFFF",opacity:.4,transparent:!0,visible:!1})),viewer.scene.scene.add(a.fakeMarkerForTran);function e(e){var t,n,i,r;"position"==e?(t=(new Oe).subVectors(a.fakeMarkerForTran.position,a.fakeMarkerForTran.oldState.position),a.selectedClouds.forEach(function(e){return px.translate(e,t)})):(n=a.selectedPano.position,i=(e=new Oe(0,1,0)).clone().applyQuaternion(a.fakeMarkerForTran.oldState.quaternion),e=e.clone().applyQuaternion(a.fakeMarkerForTran.quaternion),r=te.getAngle(i,e,"z"),a.selectedClouds.forEach(function(e){px.rotateAround(n,e,null,r)})),a.fakeMarkerForTran.oldState={position:a.fakeMarkerForTran.position.clone(),quaternion:a.fakeMarkerForTran.quaternion.clone()},px.history.beforeChange(a.selectedClouds)}a.fakeMarkerForTran.addEventListener("position_changed",e.bind(a,"position")),a.fakeMarkerForTran.addEventListener("rotation_changed",e.bind(a,"rotation")),a.transformControls.addEventListener("mouseUp",function(){px.history.afterChange(a.selectedClouds)}),px.history.addEventListener("undo",function(){a.updateTranCtl()}),a.initPanoLink(),a.addPanoMesh(),viewer.scene.pointclouds.forEach(function(e){e.material.color=DE}),viewer.setEDLEnabled(!0),viewer.setEDLRadius(3),viewer.setEDLStrength(.02),a.switchView("top");function t(){n&&i&&setTimeout(function(){var e;"all"==a.currentFloor&&((e=fx.entities.find(function(e){return"floor"==e.buildType&&e.panos.length}))||(e="all",console.log("没有一层有漫游点?!")),console.log("initDataDone"),console.log("gotoFloor 1"),a.gotoFloor(e))},1)}var n,i;fx.bus.addEventListener("initDataDone",function(){i=!0,t()},{once:!0}),a.addEventListener("panoVisiReady",function(){n=!0,t()},{once:!0}),px.bus.addEventListener("switchHandle",a.updateCursor.bind(a)),viewer.addEventListener("global_click",function(e){e.button===oe.RIGHT?(a.setLinkOperateState("addLink",!1),a.setLinkOperateState("removeLink",!1)):a.clickToZoomInEnabled&&("mainView"==a.activeViewName?viewer.controls.zoomToLocation(e.mouse):a.zoomIn(e.intersect.orthoIntersect,e.pointer),a.setZoomInState(!1))}),a.linkGuideLine=av.createLine([],{color:"#ddd",deshed:!0,dashSize:.1,gapSize:.05,depthTest:!1}),a.linkGuideLine.visible=!1,a.linkGuideLine.name="linkGuideLine",viewer.scene.scene.add(a.linkGuideLine),a.linkGuideLine.renderOrder=_E;viewer.addEventListener("global_mousemove",function(e){var t;if("addLink"!=a.operation||"top"!=a.activeViewName&&"mainView"!=a.activeViewName||!a.selectedPano)a.linkGuideLine.visible=!1;else{if("top"==a.activeViewName)t=e.intersect.orthoIntersect.clone().setZ(a.selectedPano.position.z);else if("mainView"==a.activeViewName){if(!e.intersect||!e.intersect.point)return;t=e.intersect.point.position}av.updateLine(a.linkGuideLine,[a.selectedPano.position,t]),a.linkGuideLine.visible=!0,viewer.dispatchEvent("content_changed")}}),a.panoReposCallback=function(){viewer.controls.setTarget(a.selectedPano.position)}})}},{key:"setTranMode",value:function(e){console.log("setTranMode",e),this.tranMode=e,"mainView"==this.activeViewName?(e&&this.transformControls.setMode(e),this.updateTranCtl()):px.switchHandle(e),this.updateIntersectEnable()}},{key:"updateIntersectEnable",value:function(){Potree.settings.intersectWhenHover=!!("mainView"==this.activeViewName||this.selectedPano&&this.tranMode)}},{key:"updateTranCtl",value:function(){if(!this.tranMode||!this.selectedPano||"mainView"!=this.activeViewName)return this.transformControls.detach();if(this.checkIfAllLinked({group:this.selectedGroup}))return this.dispatchEvent("needToDisConnect"),this.transformControls.detach();this.transformControls.attach(this.fakeMarkerForTran);var e=this.getPanoPose(this.selectedPano),t=e.position,e=e.quaternion;this.fakeMarkerForTran.position.copy(t),this.fakeMarkerForTran.quaternion.copy(e),this.fakeMarkerForTran.oldState={position:t.clone(),quaternion:e.clone()}}},{key:"initViews",value:function(){this.splitScreenTool=new Nb,this.targetPlane=viewer.mainViewport.targetPlane=new ir,this.shiftTarget=viewer.mainViewport.shiftTarget=new Oe;for(var e=0;e<2;e++){var t=kE[e],n=new ff;this.views[t.name]=n,this.cameras[t.name]=this.orthoCamera,n.name=t.name,n.direction=t.direction}this.views.mainView=viewer.mainViewport.view,this.cameras.mainView=viewer.mainViewport.camera}},{key:"switchView",value:function(n){var t,i,e,r,a,o=this,s=this.views[n],l=this.cameras[n],u=kE.find(function(e){return e.name==n}),c=viewer.bound,d=c.boundSize,c=c.center,h=(this.lastViewName=this.activeViewName,this.activeViewName=n,this.views[this.lastViewName]),p=this.cameras[this.lastViewName];viewer.mainViewport.view=s,viewer.mainViewport.camera=l,p&&(h.zoom=p.zoom),this.targetPlane.setFromNormalAndCoplanarPoint(s.direction.clone(),c),this.targetPlane.projectPoint(s.position,this.shiftTarget),s.position.copy(this.splitScreenTool.getPosOutOfModel(viewer.mainViewport)),s.zoom&&(l.zoom=s.zoom),viewer.updateScreenSize({forceUpdateSize:!0}),this.updateCursor(),"mainView"==n?(viewer.mainViewport.alignment=null,viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="rgba",e.material.useFilterByNormal=!1,e.changePointOpacity(1)}),Potree.Utils.updateVisible(viewer.reticule,"force",!0),h&&(s.copy(h),t=s.direction,e=hx.panos.filter(function(e){return e.circle.visible}),e=j.sortByScore(e,[],[function(e){return-(new Oe).subVectors(e.position,s.position).dot(t)}],!0))&&e[0]&&(a=p.top/p.zoom/Math.tan(Be.degToRad(l.fov/2)),s.position.add(t.clone().multiplyScalar(-e[0].score-a)),this.lastDisToPano=a),viewer.fpControls.lockKey=!1):("mainView"==this.lastViewName?(i=h.direction,e=hx.panos.filter(function(e){return e.circle.visible}),(a=j.sortByScore(e,[],[function(e){e=(new Oe).subVectors(e.position,h.position).dot(i);return e<0?10*e:-e},function(e){return 70*-(new Oe).subVectors(e.position,h.position).angleTo(i)}],!0))&&a[0]&&(r=(e=a[0].item.position.clone()).clone(),a=(new Oe).subVectors(a[0].item.position,h.position).dot(i),a=Math.abs(a)*Math.tan(Be.degToRad(p.fov/2)),l.zoom=l.top/a,l.updateProjectionMatrix(),"right"==n&&(s.direction=i.clone().setZ(0),this.targetPlane.setFromNormalAndCoplanarPoint(s.direction.clone(),c),this.targetPlane.projectPoint(s.position,this.shiftTarget),s.position.copy(this.splitScreenTool.getPosOutOfModel(viewer.mainViewport))),s.applyToCamera(l),e.project(p),r.project(l),1<e.z&&console.warn("选取的点在相机背后了!?"),e.x=Be.clamp(e.x,-.9,.9),e.y=Be.clamp(e.y,-.9,.9),a=(new Oe).subVectors(e,r),p=Potree.Utils.getOrthoCameraMoveVec(a,l),s.position.sub(p))):0==u.openCount&&this.viewportFitBound(n,d,c),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="color",e.material.useFilterByNormal=!0;var t="top"==n?IE.topView:IE.sideView;o.selectedPano&&o.selectedClouds.includes(e)?(e.changePointOpacity(t.selected,!0),e.material.color=PE):(e.changePointOpacity(t.default,!0),e.material.color=DE)}),Potree.Utils.updateVisible(viewer.reticule,"force",!1),"top"==n&&(viewer.mainViewport.alignment={rotate:!0,translate:!0}),"right"==n?(viewer.mainViewport.alignment={translate:!0,rotateSide:!0,translateVec:new Oe(0,0,1)},viewer.mainViewport.rotateSide=!0):viewer.mainViewport.rotateSide=!1,viewer.fpControls.lockKey=!0),this.updateTranCtl(),this.setTranMode(this.tranMode),this.setZoomInState(!1),this.updateIntersectEnable(),u.openCount++}},{key:"viewportFitBound",value:function(){var e=this;if(0==viewer.mainViewport.resolution.x||0==viewer.mainViewport.resolution.y)return setTimeout(function(){e.viewportFitBound()},10);this.gotoFloor(this.currentFloor,!0,0,null,!0)}},{key:"rotateSideCamera",value:function(e){this.splitScreenTool.rotateSideCamera(viewer.mainViewport,e)}},{key:"zoomIn",value:function(e,t){var n=viewer.mainViewport.camera;200<=n.zoom||viewer.mainViewport.view.zoomOrthoCamera(n,200,t,300)}},{key:"orthoMoveFit",value:function(e,t,n){this.splitScreenTool.viewportFitBound(viewer.mainViewport,t.bound,e,n,{x:200,y:230})}},{key:"setZoomInState",value:function(e,t){this.clickToZoomInEnabled=!!e,e?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"zoomInCloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"zoomInCloud"}),e||t||this.dispatchEvent({type:"operationCancel",operation:"zoomIn"})}},{key:"gotoFloor",value:function(e,t){var n,i,r,a=this,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:600,s=!(4<arguments.length&&void 0!==arguments[4])||arguments[4];this.currentFloor==(e=e||"all")&&!t||(this.currentFloor!=e&&(n=("all"==e?viewer.images360:e).panos,viewer.images360.panos.forEach(function(e){var t=n.includes(e);a.switchPanoVisible(e,t)})),this.updateLinesVisible(),this.selectedPano&&"all"!=e&&!e.panos.includes(this.selectedPano)&&this.selectedPano.circle.dispatchEvent("click"),this.selectedLine&&this.selectedLine.dispatchEvent("click"),"all"==e?(i=viewer.images360.bound.bounding,r=viewer.images360.bound.center):(r=(i=this.getPanosBound(e)).getCenter(new Oe),0==e.panos.length&&console.log(e.name,"floor无漫游点")),"mainView"!=this.activeViewName?s&&this.orthoMoveFit(r,{bound:i},o):"mainView"==this.activeViewName&&viewer.focusOnObject({boundingBox:i},"boundingBox"),this.currentFloor=e,this.dispatchEvent({type:"changeFloor",floor:e}))}},{key:"getPanosBound",value:function(e){var t;return e.panosBound||(0==e.panos.length?e.panosBound=viewer.images360.bound.bounding.clone():(t=new Oe(10,10,10),t=te.getBoundByPoints(e.panos.map(function(e){return e.position}),t),e.panosBound=t.bounding)),e.panosBound}},{key:"switchPanoVisible",value:function(e,t,n){var i;Potree.Utils.updateVisible(e.circle,"panoEditor",t),Potree.Utils.updateVisible(e,"panoEditor",t),Potree.Utils.updateVisible(e.pointcloud,"panoEditor",t),t?this.visiblePanos.includes(e)||this.visiblePanos.push(e):-1<(i=this.visiblePanos.indexOf(e))&&this.visiblePanos.splice(i,1),n&&(this.dispatchEvent("panoVisiReady"),this.updateLinesVisible()),n||this.dispatchEvent({type:"switchPanoVisible",pano:e,v:t})}},{key:"updateLinesVisible",value:function(){var i=this;this.lineMeshes.children.forEach(function(e){var t=e.name.split("-"),n=hx.getPano(t[0]),t=hx.getPano(t[1]);e.visible=i.visiblePanos.includes(n)||i.visiblePanos.includes(t)})}},{key:"updateCursor",value:function(){var e="mainView"!=this.activeViewName&&this.selectedPano?px.handleState:null;"rotate"==e?(viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"})):("translate"==e?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"}))}},{key:"setLinkOperateState",value:function(e,t,n){var i;t&&e==this.operation||!t&&e!=this.operation||(i=this.operation,this.operation=t?e:null,"removeLink"==this.operation&&(this.selectedLine&&this.selectedLine.dispatchEvent("click"),this.selectedPano),"addLink"!=this.operation&&(this.linkGuideLine.visible=!1),t||n||this.dispatchEvent({type:"operationCancel",operation:i}),"addLink"==this.operation?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"connectPano"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"connectPano"}),"removeLink"==this.operation?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"disconnectPano"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"disconnectPano"}),viewer.dispatchEvent("content_changed"))}},{key:"initPanoLink",value:function(){var n=this;hx.panos.forEach(function(e){n.panoLink[e.id]={},n.panoGroup.push([e])}),hx.panos.forEach(function(t){t.visibles.forEach(function(e){n.linkChange(t,hx.getPano(e,"index"),"add")})})}},{key:"linkChange",value:function(t,e,n){var i=this,r=[];if("add"==n){if(!e)return console.error("不支持add时pano1为空");this.panoLink[t.id][e.id]=this.panoLink[t.id][e.id]||{},this.panoLink[e.id][t.id]=this.panoLink[e.id][t.id]||{}}else if(e)this.panoLink[t.id][e.id]=!1,this.panoLink[e.id][t.id]=!1;else{for(var a in this.panoLink[t.id])this.panoLink[t.id][a]&&(this.panoLink[a][t.id]=!1,r.push(a));this.panoLink[t.id]={}}e?this.lineChange(t,e,n):r.forEach(function(e){i.lineChange(t,hx.getPano(e),n)}),this.groupChange(t,e,n),this.selectPano(this.selectedPano,!1,!0)}},{key:"lineChange",value:function(t,n,e){var i,r=this;"add"==e?this.panoLink[t.id][n.id].line||((i=av.createFatLine([t.position,n.position],{mat:BE.default})).name="".concat(t.id,"-").concat(n.id),i.renderOrder=i.pickOrder=_E,this.lineMeshes.add(i),(this.panoLink[t.id][n.id].line=this.panoLink[n.id][t.id].line=i).addEventListener("mouseover",function(){r.clickToZoomInEnabled||(r.selectedLine!=i&&(i.material=BE.hovered),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"hoverLine"}))}),i.addEventListener("mouseleave",function(){r.clickToZoomInEnabled||(r.selectedLine!=i&&(i.material=BE.default),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"hoverLine"}))}),i.addEventListener("click",function(e){if(!r.clickToZoomInEnabled)return"removeLink"==r.operation?(r.selectedLine==i&&r.selectLine(null),r.linkChange(t,n,"remove")):void r.selectLine(i)})):(e=this.lineMeshes.children.find(function(e){return e.name=="".concat(t.id,"-").concat(n.id)||e.name=="".concat(n.id,"-").concat(t.id)}))&&(this.lineMeshes.remove(e),e.geometry.dispose())}},{key:"groupChange",value:function(t,n,e){var i=this;"add"==e?j.pushToGroupAuto([t,n],this.panoGroup):(e=this.panoGroup.find(function(e){return e.includes(t)&&(e.includes(n)||!n)}))?(this.panoGroup.splice(this.panoGroup.indexOf(e),1),e.forEach(function(e){for(var t in i.panoGroup.push([e]),i.panoLink[e.id])i.panoLink[e.id][t]&&(t=hx.getPano(t),j.pushToGroupAuto([e,t],i.panoGroup))})):n?console.log("这两个pano原本就不在一个组",t.id,n.id):console.log("pano0不在任何组",t)}},{key:"selectLine",value:function(e){this.selectedLine!=e&&(this.selectedLine&&(this.selectedLine.material=BE.default),e&&(e.material=BE.selected),this.selectedLine=e)}},{key:"addPanoMesh",value:function(){function n(e){for(var t in e.position.copy(e.pano.position),i.panoLink[e.pano.id]){var n=i.panoLink[e.pano.id][t];n&&av.updateLine(n.line,[e.pano.position,hx.getPano(t).position])}e.waitUpdate()}var i=this,e=EE.load(Potree.resourcePath+"/textures/correct_n.png");(window.circleMats=ME).default_normal=new sv({map:e,color:16777215,transparent:!0,useDepth:!0,backColor:3407837,occlusionDistance:10,clipDistance:5,maxClipFactor:.8,maxOcclusionFactor:.8}),ME.default_rtk_on=ME.default_normal.clone(),ME.default_rtk_on.map=EE.load(Potree.resourcePath+"/textures/rtk-y-n.png"),ME.default_rtk_off=ME.default_normal.clone(),ME.default_rtk_off.map=EE.load(Potree.resourcePath+"/textures/rtk-f-n.png"),ME.selected_normal=ME.default_normal.clone(),ME.selected_normal.map=EE.load(Potree.resourcePath+"/textures/correct_s.png"),ME.selected_normal.useDepth=!1,ME.selected_rtk_on=ME.selected_normal.clone(),ME.selected_rtk_on.map=EE.load(Potree.resourcePath+"/textures/rtk-y-s.png"),ME.selected_rtk_off=ME.selected_normal.clone(),ME.selected_rtk_off.map=EE.load(Potree.resourcePath+"/textures/rtk-f-s.png"),ME.hovered_normal=ME.default_normal.clone(),ME.hovered_normal.color.set(65280),ME.hovered_normal.useDepth=!1,ME.hovered_rtk_on=ME.default_rtk_on.clone(),ME.hovered_rtk_on.color.set(65280),ME.hovered_rtk_on.useDepth=!1,ME.hovered_rtk_off=ME.default_rtk_off.clone(),ME.hovered_rtk_off.color.set(65280),ME.hovered_rtk_off.useDepth=!1;hx.panos.forEach(function(e){var t=new uv({mat:ME["default_"+i.getPanoRtkState(e)],sizeInfo:{minSize:50,maxSize:120,nearBound:2,farBound:10},renderOrder:TE,pickOrder:TE});t.pickDontCheckDis=!0,t.name="panoCircle",t.sid=e.id,(t.pano=e).circle=t,i.panoMeshs.add(t),n(t),e.addEventListener("rePos",n.bind(i,t));t.addEventListener("drag",function(e){if("translate"!=i.tranMode||"mainView"==i.activeViewName)return e.refuse();i.selectPano(t.pano),viewer.inputHandler.drag.object=null}),t.addEventListener("mouseover",function(){i.hoverPano(e,!0)}),t.addEventListener("mouseleave",function(){i.hoverPano(e,!1)}),t.addEventListener("click",function(){if(!i.clickToZoomInEnabled)return i.selectedPano==t.pano?i.selectPano(null):void("addLink"==i.operation&&i.selectedPano?i.linkChange(i.selectedPano,t.pano,"add"):i.selectPano(t.pano))})})}},{key:"hoverPano",value:function(e,t){this.clickToZoomInEnabled||(e&&t?this.hoveredPano==e||(this.hoveredPano&&this.hoverPano(this.hoveredPano,!1),(this.hoveredPano=e).hovered=!0,px.handleState&&this.selectedPano&&this.selectedPano==e)||("addLink"==this.operation&&this.selectedPano&&this.selectedPano!=e||viewer.dispatchEvent({type:"CursorChange",action:"add",name:"hoverPano"}),this.selectedPano!=e&&(e.circle.material=ME["hovered_"+this.getPanoRtkState(e)])):e&&!t?this.hoveredPano==e&&(e.hovered=!1,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"hoverPano"}),this.selectedPano!=e&&(e.circle.material=ME["default_"+this.getPanoRtkState(e)]),this.hoveredPano=null):this.hoveredPano&&this.hoverPano(this.hoveredPano,!1))}},{key:"selectPano",value:function(t,e,n){var i,r;this.selectedPano==t&&!n||(n=this.selectedPano,i="top"==this.activeViewName?IE.topView:IE.sideView,this.selectedPano&&(this.selectedPano.circle.material=ME["default_"+this.getPanoRtkState(this.selectedPano)],this.selectedPano.circle.renderOrder=TE,this.selectedPano.removeEventListener("rePos",this.panoReposCallback),"mainView"!=this.activeViewName)&&this.selectedClouds.forEach(function(e){e.changePointOpacity(i.default,!0),e.material.color=DE}),this.selectedPano=t||null,this.updateSelectGroup(),t?(this.selectedPano.circle.material=ME["selected_"+this.getPanoRtkState(this.selectedPano)],this.selectedPano.circle.renderOrder=this.selectedPano.circle.pickOrder=SE,viewer.controls.setTarget(this.selectedPano.position),this.selectedPano.addEventListener("rePos",this.panoReposCallback),"mainView"!=this.activeViewName&&this.selectedClouds.forEach(function(e){e.changePointOpacity(i.selected,!0),e.material.color=PE}),"all"!=this.currentFloor&&(r=(r=fx.entities.find(function(e){return"floor"==e.buildType&&e.panos.includes(t)}))||"all",this.gotoFloor(r,!1,600))):viewer.controls.setTarget(null),this.updateCursor(),this.updateTranCtl(),e?this.selectedPano&&("mainView"==this.activeViewName?(r=this.lastDisToPano||5,n&&(r=viewer.mainViewport.camera.position.distanceTo(n.position)),viewer.focusOnObject({position:this.selectedPano.position},"point",null,{distance:r})):this.orthoMoveFit(this.selectedPano.position,{},500)):this.dispatchEvent({type:"panoSelect",pano:t}),this.updateIntersectEnable(),viewer.dispatchEvent("content_changed"))}},{key:"getPanoRtkState",value:function(e){return e.panosData.has_rtk?e.rtkState?"rtk_on":"rtk_off":"normal"}},{key:"setPanoRtkState",value:function(e,t){e.rtkState=t,e.circle.material=ME[(this.selectedPano==e?"selected":"default")+"_"+this.getPanoRtkState(e)]}},{key:"updateSelectGroup",value:function(){var t=this;this.selectedGroup=this.panoGroup.find(function(e){return e.includes(t.selectedPano)}),this.selectedGroup&&(this.selectedGroup=[this.selectedPano].concat(Fe(this.selectedGroup.filter(function(e){return e!=t.selectedPano})))),this.selectedClouds=this.selectedPano?this.selectedGroup.map(function(e){return e.pointcloud}):[]}},{key:"checkIfCanSave",value:function(){for(var e in Potree.settings.datasetsPanos)if(!this.checkIfAllLinked({datasetId:e}))return void console.log("没有全部连通,不能保存。其中一个:",e);return!0}},{key:"checkIfAllLinked",value:function(e){var t;if(e.group){var n=e.group,i=e.group[0];if(!i)return;t=i.pointcloud.dataset_id}else if(e.datasetId&&(t=e.datasetId,!(n=this.panoGroup.find(function(e){return e[0].pointcloud.dataset_id==t}))))return;if(null!=t)return Potree.settings.datasetsPanos[t].panos.length==n.length}},{key:"getSuggestLinkPanos",value:function(){var e,h=this,p=[];Date.now();for(e in Potree.settings.datasetsPanos)!function(t){if(!h.checkIfAllLinked({datasetId:t}))for(var e=h.panoGroup.filter(function(e){return e[0].pointcloud.dataset_id==t}),n=(e=e.sort(function(e,t){return t.length-e.length}))[0].slice(),i=1,r=e.length;i<r;i++){for(var a=e[i],o={dis:1/0,panos:[]},s=0,l=n.length;s<l;s++)for(var u=0,c=a.length;u<c;u++){var d=n[s].position.distanceToSquared(a[u].position);d<o.dis&&(o.dis=d,o.panos=[n[s],a[u]])}p.push(o.panos),n.push.apply(n,Fe(a))}}(e);return p}},{key:"showSuggestLinkPanos",value:function(){function t(e){var t=new Q(e.circle.geometry,mx);t.name="suggest-circle",t.scale.set(i,i,i),t.renderOrder=100,e.circle.add(t)}var n=this,e=this.getSuggestLinkPanos(),i=.7;e.forEach(function(e){t(e[0]),t(e[1]);e=av.createFatLine([e[0].position,e[1].position],{mat:BE.suggestLink});n.suggestLines.push(e),e.renderOrder=_E,viewer.scene.scene.add(e)})}},{key:"getPanoPose",value:function(e){return{position:e.position.clone(),quaternion:(new ii).setFromRotationMatrix(e.panoMatrix).premultiply(CE)}}},{key:"exportSavingData",value:function(){var e,a=this,t={};for(e in Potree.settings.datasetsPanos){var n=Potree.settings.datasetsPanos[e].panos.map(function(e){var t,n=[];for(t in a.panoLink[e.id])a.panoLink[e.id][t]&&n.push(viewer.images360.getPano(t).index);var i=a.getPanoPose(e),r=i.position,i=i.quaternion;return Object.assign({},e.panosData,{uuid:e.uuid,pose:{translation:o(r),rotation:o(i)},visibles:n,use_rtk:!!e.rtkState})});t[e]={sweepLocations:n}}function o(e){e=te.toPrecision(e,6);return e instanceof ii?{x:e.x,y:e.y,z:e.z,w:e.w}:e instanceof Oe?{x:e.x,y:e.y,z:e.z}:void 0}return t}}])}()),LE=4096,FE=(Potree.config.pointDensity.screenshot.pointBudget," \n precision highp float;\n \n uniform vec2 boundZ;\n varying float heightPercent; \n \n\n float round(float number){\n return floor(number + 0.5);\n }\n \n \n \n \n \n void main() \n { \n vec3 worldPos = (modelMatrix * vec4(position, 1.0)).xyz; \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); \n \n float zMin = boundZ.x, zMax = boundZ.y ;\n heightPercent = (worldPos.z - zMin) / (zMax - zMin); \n \n \n }\n \n \n "),OE="\n precision highp float;\n varying float heightPercent; \n \n \n \n \n vec3 percentToByte(float num){\n //输出是0-1, shader精度不够,只够存3个数,因第四位总是0\n float a = 1.0;\n float result[4];\n for(int i=0;i<3;i++){\n a = i == 2 ? a/255.0 : a / 256.0 ; \n //分成256份,其中255份给当前位置,最后一份给后一个位置,而到了最后一个位置时没有下一个位置了所以只分成255份\n if(num > a){\n float c = num / a;\n float r = floor(c);\n r = min(255.0, r);\n result[i] = r;\n num -= r * a;\n }else{\n result[i] = 0.0;\n }\n } \n return vec3(result[0]/255.0, result[1]/255.0,result[2]/255.0); \n \n } \n \n \n void main() {\n \n gl_FragColor = vec4(percentToByte(heightPercent),1.0); \n \n \n }\n ",UE=[],NE=Date.now(),zE=function(){function t(){var e;return ue(this,t),(e=le(this,t)).camera=new Ad(-100,100,-100,100,.01,100),e.camera.up.set(0,0,1),Potree.Utils.setCameraLayers(e.camera,["model"]),e.view=new ff,e.viewport=new og(e.view,e.camera,{left:0,bottom:0,width:1,height:1}),e.renderTarget=new ti(1,1,{minFilter:N,magFilter:ht,format:It}),e.renderTarget2=new ti(1,1,{minFilter:N,magFilter:ht,format:It}),e.renderTarget2.texture.name="volumeCptModelTex",e.material=new ev,e.material.activeAttributeName="heightCpt",e.prisms=[],e.modelMat=new ga({uniforms:{boundZ:{type:"vec2",value:new Re}},vertexShader:FE,fragmentShader:OE,depthWrite:!0,depthTest:!0,transparent:!1,side:ve}),e.scene=new Fs,e}return v(t,Qn),A(t,[{key:"init",value:function(){var t=this,e=(viewer.scene.addEventListener("measurement_added",function(e){e.measurement.isPrism&&t.add(e.measurement)}),viewer.scene.addEventListener("measurement_removed",function(e){e.measurement.isPrism&&t.remove(e.measurement)}),this);this.events={transformCallback:function(){e.currentPrism&&(viewer.transformationTool.selection[0]==e.currentPrism.baseModel&&t.updateModelBound({modelChange:!0}),e.currentPrism.dispatchEvent("needsCompute"))}}}},{key:"enter",value:function(){this.entered=!0,viewer.measuringTool.history.clear(),this.oldStates={rotAroundPoint:Potree.settings.rotAroundPoint},Potree.settings.rotAroundPoint=!1,viewer.transformationTool.addEventListener("stopDrag",this.events.transformCallback),viewer.transformationTool.addEventListener("changeByHistory",this.events.transformCallback)}},{key:"leave",value:function(){this.entered=!1,Potree.settings.rotAroundPoint=this.oldStates.rotAroundPoint,this.setCurrentPrism(null),viewer.transformationTool.removeEventListener("stopDrag",this.events.transformCallback),viewer.transformationTool.removeEventListener("changeByHistory",this.events.transformCallback)}},{key:"add",value:function(e){this.prisms.push(e)}},{key:"remove",value:function(e){e=this.prisms.indexOf(e);-1<e&&this.prisms.splice(e,1)}},{key:"cancel",value:function(){this.computingObject&&(Cx=!0)}},{key:"startCompute",value:function(e,t){this.enter();var n=$.Deferred();n.done(function(e){console.log("done",e)}),n.fail(function(e){console.log("?fail????",e)}),e?(this.prisms[this.prisms.length-1].setBaseModel(e),this.setCurrentPrism(this.prisms[this.prisms.length-1]),t||this.compute(this.prisms[this.prisms.length-1])):this.compute(this.prisms[this.prisms.length-1],n)}},{key:"setCurrentPrism",value:function(e){var t=this;this.currentPrism&&this.currentPrism.removeEventListeners("updated"),(this.currentPrism=e)&&e.baseModel?(e.addEventListener("updated",function(){if(t.currentPrism!=e)return console.log("currentPrism changed? 侦听没删除");t.updateModelBound()}),this.updateModelBound({regetMap:!0})):viewer.scene.pointclouds.forEach(function(e){t.updateMatForModel(e.material)})}},{key:"setModelMat",value:function(e,t){var n=this;"recover"==t?e.traverse(function(e){return e.originMat_&&(e.material=e.originMat_)}):e.traverse(function(e){return e.material&&e.material!=n.modelMat&&(e.originMat_=e.material,e.material=n.modelMat)})}},{key:"updateModelBound",value:function(){var e,t=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=n.modelChange,n=n.regetMap,r=this.currentPrism,a=this.currentPrism.baseModel;a&&(a.currentBound=a.boundingBox.clone().applyMatrix4(a.matrixWorld),e=a.clipBound&&a.clipBound.clone(),a.clipBound=a.currentBound.clone(),a.clipBound.min.max(r.prismBound.min),a.clipBound.max.min(r.prismBound.max),a.clipBound.min.z=Math.min(a.currentBound.min.z,r.prismBound.min.z),a.clipBound.max.z=Math.max(a.currentBound.max.z,r.prismBound.max.z),this.modelMat.uniforms.boundZ.value.set(a.clipBound.min.z,a.clipBound.max.z),r=!e||!e.equals(a.clipBound),e=this.currentPrism.baseModel.clipBound.getSize(new Oe),this.boundSizeZero=e.x<=0||e.y<=0||e.z<=0,(i||n||r)&&!this.boundSizeZero&&this.setModelHeightMap(),viewer.scene.pointclouds.forEach(function(e){t.updateMatForModel(e.material,a)}))}},{key:"updateMatForModel",value:function(e,t){var n=e.uniforms.baseHeightAreaMap.value;t?(e.uniforms.baseHeightAreaMap.value=this.renderTarget2.texture,e.uniforms.baseHeightBoundZ.value.set(t.clipBound.min.z,t.clipBound.max.z),e.uniforms.baseHeightBoundXY.value.set(t.clipBound.min.x,t.clipBound.max.x,t.clipBound.min.y,t.clipBound.max.y)):e.uniforms.baseHeightAreaMap.value=null,n!=e.uniforms.baseHeightAreaMap.value&&(e.shaderNeedsUpdate=!0)}},{key:"setModelHeightMap",value:function(){var e=viewer.renderer.getRenderTarget(),t=this.currentPrism.baseModel.parent,n=this.currentPrism.baseModel.visible,i=this.currentPrism.baseModel.clipBound.getSize(new Oe),r=this.currentPrism.baseModel.clipBound.getCenter(new Oe),a=this.getResByBound(i,"forModel"),o=a.w,a=a.h;if(o<=0||a<=0)return console.error("w<=0 || h<=0!!!!!!!!!",o,a);this.camera.far=i.z+10,this.camera.right=o/2,this.camera.left=-this.camera.right,this.camera.top=a/2,this.camera.bottom=-this.camera.top,this.viewport.resolution.set(o,a),this.renderTarget2.setSize(o,a),viewer.renderer.setRenderTarget(this.renderTarget2),console.log("setModelHeightMap");o=new Oe,o.copy(r).setZ(this.currentPrism.baseModel.clipBound.max.z+this.camera.near+.1),this.view.pitch=-Math.PI/2,this.view.moveOrthoCamera(this.viewport,{boundSize:i,endPosition:o},0),this.view.applyToCamera(this.camera),this.scene.add(this.currentPrism.baseModel),this.setModelMat(this.currentPrism.baseModel),this.currentPrism.baseModel.visible=!0,a=viewer.renderer.getContext(),viewer.renderer.setClearColor(new Se("#000"),0),viewer.renderer.clear(),viewer.renderer.render(this.scene,this.camera),this.setModelMat(this.currentPrism.baseModel,"recover"),r=this.renderTarget2.width*this.renderTarget2.height;return Sx=new Uint8Array(4*r),a.readPixels(0,0,this.renderTarget2.width,this.renderTarget2.height,a.RGBA,a.UNSIGNED_BYTE,Sx),UE=[],window.needDownload&&(i=Potree.Utils.renderTargetToDataUrl(this.renderTarget2,this.renderTarget2.width,this.renderTarget2.height,viewer.renderer),j.downloadFile(i,(name||"screenshot")+"-"+Date.now()+".png")),t.add(this.currentPrism.baseModel),this.currentPrism.baseModel.visible=n,viewer.renderer.setRenderTarget(e),this.renderTarget2.texture.needsRebuild=!0,this.renderTarget2.texture}},{key:"getResByBound",value:function(e,t){var n=te.linearClamp(Math.max(e.x,e.y),[10,60,100,500,2e3],[150,60,40,6,3]),i=n*e.x,r=e.y*n,a=1,o=1;return(LE<i||LE<r)&&("forCompute"==t?(i/=a=Math.ceil(i/LE),r/=o=Math.ceil(r/LE)):"forModel"==t&&(r<i?r=(i=LE)*e.y/e.x:i=(r=LE)*e.x/e.y)),{w:i=Math.round(i),h:r=Math.round(r),pxPerMetric:n,cW:a,cH:o}}},{key:"compute",value:(i=J(X().mark(function e(y,t,a){var o,n,w,i,b,r,s,l,u,c,d,h,p,f,m,v,x,E,C,B,g,A,M,S,T,_,P,D=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!y||y.modelHaventLoad)return console.log("prism有问题"),e.abrupt("return",t.reject());e.next=3;break;case 3:if(this.computingObject)return e.abrupt("return",console.log("正在计算,请稍等"));e.next=5;break;case 5:if(o=this.currentPrism,y!=this.currentPrism&&this.setCurrentPrism(y),n=function(e,t){var n=e.highest,i=e.lowest,r=e.Vupper,e=e.Vlower;y&&y.setVolumeInfo({highest:n,lowest:i,Vupper:r,Vlower:e}),o!=y&&D.setCurrentPrism(o),t&&t.resolve(a&&a())},y.baseModel&&this.boundSizeZero)return e.abrupt("return",n({highest:0,lowest:0,Vupper:0,Vlower:0},t));e.next=10;break;case 10:if(this.computingObject={prism:y,model:y.baseModel},Ex=t,w=function(e,t){t||Ex.reject(Cx?"主动取消":e||""),D.computingObject=null,Ex=null,Cx=!1,e&&console.log("computeFinish",e),Potree.settings.displayMode=u.mode,Potree.settings.pointDensity=u.pointDensity,viewer.renderer.setRenderTarget(null),viewer.renderer.state.reset(),viewer.renderer.setScissorTest(!1),l.disable(l.SCISSOR_TEST),viewer.screenshoting=!1,viewer.mainViewport.active=!0,viewer.mapViewer&&(viewer.mapViewer.viewports[0].active=!0),viewer.magnifier.viewport.active=!0,viewer.pauseTestMaxLevel=!1},i=viewer.scene.pointclouds[0],b=new Oe,r=new Oe,l=viewer.renderer.getContext(),u={mode:Potree.settings.displayMode,pointDensity:Potree.settings.pointDensity},Bx=Date.now(),this.computingObject.model)for(gx=this.computingObject.model.clipBound.min.z,Ax=this.computingObject.model.clipBound.max.z,s=this.computingObject.model.clipBound,d=0;d<this.renderTarget2.width;d++){for(h=[],p=0;p<this.renderTarget2.height;p++)m=d+p*this.renderTarget2.width,f=Sx.slice(4*m,4*m+3),0==Sx[4*m+3]?h.push(null):(m=this.convertColorToHeight(f,gx,Ax),h.push(m));UE.push(h)}else for(vx=y.horizonZ,gx=y.zMin,Ax=y.zMax,s=new K,c=0;c<y.points.length;c++)s.expandByPoint(y.points[c]);if(yx=Ax,wx=gx,s.getCenter(b),s.getSize(r),this.boundSizeZero=r.x<=0||r.y<=0||r.z<=0,this.boundSizeZero)return n({highest:0,lowest:0,Vupper:0,Vlower:0},Ex),e.abrupt("return",w("finish",!0));e.next=27;break;case 27:b.z=Ax+this.camera.near+.1,this.camera.far=Ax-gx+10,viewer.screenshoting=!0,viewer.pauseTestMaxLevel=!0,M=this.getResByBound(r,"forCompute"),g=M.w,A=M.h,v=M.pxPerMetric,x=M.cW,E=M.cH,this.camera.right=g/2,this.camera.left=-this.camera.right,this.camera.top=A/2,this.camera.bottom=-this.camera.top,this.viewport.resolution.set(g,A),this.renderTarget.setSize(g,A),bx=r.x/(g*x),xx=Math.pow(bx,2),Potree.settings.displayMode="showPointCloud",Potree.settings.pointDensity="screenshot",viewer.mainViewport.active=!1,viewer.mapViewer&&(viewer.mapViewer.viewports[0].active=!1),viewer.magnifier.viewport.active=!1,this.computingObject.model?this.updateMatForModel(this.material,this.computingObject.model):this.updateMatForModel(this.material,null),M=y.clipBoxes.map(function(e){return{inverse:e.matrixWorld.clone().invert(),box:e}}),this.material.setClipBoxes(null,[],M,[],[y]),this.material.pointSizeType="FIXED",this.material.uniforms.minSize.value=.1,this.material.uniforms.orthoMaxSize.value=5,this.material.classification=i.material.classification,this.material.recomputeClassification(),this.material.shaderNeedsUpdate=!0,i.updateMaterial(this.material,null,this.camera,viewer.renderer,this.viewport.resolution),this.material.size=1,viewer.renderer.state.buffers.depth.setTest(this.material.depthTest),viewer.renderer.state.buffers.depth.setMask(this.material.depthWrite),viewer.renderer.state.setBlending(ge),A=this.renderTarget.width*this.renderTarget.height,Mx=new Uint8Array(4*A),viewer.renderer.setRenderTarget(this.renderTarget),C=[],(B=r.clone()).x/=x,B.y/=E,g=X().mark(function e(A){var t,n,i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=X().mark(function e(s){var l,i,r,u,c,d,a,h,p,f,m,v,o,t,n,g;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(l=[],i=(A*E+s)/(x*E),r=(A*E+s+1)/(x*E),Cx)return e.abrupt("return",{v:{v:w("23")}});e.next=4;break;case 4:return Potree.settings.pointDensity="screenshot",D.view.pitch=-Math.PI/2,u=new Oe(b.x+(A-x/2+.5)*B.x,b.y+(s-E/2+.5)*B.y,b.z),D.view.moveOrthoCamera(D.viewport,{boundSize:B,endPosition:u},0),n=D.computingObject.model?.7:.4,e.next=11,D.render({i:A,j:s,index:1,cW:x,cH:E,infos:l,notifyArea:[[i,r],[0,n]],computeFinish:w});case 11:if(Cx)return e.abrupt("return",{v:{v:w("2123")}});e.next=13;break;case 13:if(D.computingObject.model){e.next=17;break}return D.view.position.z=vx+D.camera.near,e.next=17,D.render({i:A,j:s,index:2,cW:x,cH:E,infos:l,notifyArea:[[i,r],[.4,.7]],computeFinish:w});case 17:c={index:{i:A,j:s},allFills:[],fillVupper:0,fillVlower:0,Vupper:0,Vlower:(l[1]||l[0]).Vlower,allDiffHeights:[],fillVupperCount:0,fillVlowerCount:0,infos:l},(d=[]).count=0,a=function(e,t){return Math.abs(e.u-t.u)<=1&&Math.abs(e.v-t.v)<=1},h=function(e,t){t[0]&&(t=t[0]);for(var n=e.length;0<=--n&&!(1<t.u-e[n].u&&1<Math.abs(t.v-e[n].v));)if(a(e[n],t))return!0},p=function(e,t){return l[0].allHeights[e]&&null!=l[0].allHeights[e][t]?l[0].allHeights[e][t]:c.allFills[e]&&c.allFills[e][t]},f=function(e,t){return 0<=e&&e<l[0].allHeights.length&&0<=t&&t<l[0].allHeights[0].length},m=function(e,t){for(var n=[[-1,0],[0,1],[1,0],[0,-1],[-1,-1],[1,-1],[-1,1],[1,1]],i=0,r=0,a=0;r<4&&i<8;){var o=n[i][0]+e,s=n[i][1]+t;if(f(o,s)){o=p(o,s);if(null!=o)r++,a+=o;else if(3<=i&&0==r)break}i++}if(0<r)return a/=r,c.allFills[e]||(c.allFills[e]=[]),c.allFills[e][t]=a},v=function(e,t,n){0<e?(c.Vupper+=e,t&&(c.fillVupper+=e,c.fillVupperCount+=n)):t&&(c.fillVlower-=e,c.fillVlowerCount+=n)},o=function(){var n=J(X().mark(function e(n,i){var r,a,t,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(r=l[0].allHeights[n][i])){e.next=17;break}if(!y){e.next=9;break}if(t=u.x-B.x/2+bx*(n+.5),o=u.y-B.y/2+bx*(i+.5),te.isPointInArea(y.points,null,{x:t,y:o})){e.next=7;break}return e.abrupt("return");case 7:e.next=11;break;case 9:if(null==D.getModelZByRes(n,i,x,E,A,s))return e.abrupt("return");e.next=11;break;case 11:if(a=!0,null==(r=m(n,i)))return d.cancel||1e3<d.count&&4<d[d.length-1][d[d.length-1].length-1].u-d[0][0].u?d.cancel=!0:j.pushToGroupAuto([{u:n,v:i}],d,null,h),d.count++,e.abrupt("return");e.next=17;break;case 17:if(d.length){if(Cx)return e.abrupt("return",w("12312"));e.next=20}else e.next=21;break;case 20:d.cancel?(d.count=0,d.length=0,d.cancel=!1):d.slice().forEach(function(e){var t;h(e,{u:n,v:i})&&(t=d.indexOf(e),d.splice(t,1),d.count-=e.length,e.forEach(function(e){c.allFills[e.u]||(c.allFills[e.u]=[]),c.allFills[e.u][e.v]=r}),t=r*e.length,v(t,a,e.length))});case 21:v(r,a,1);case 22:case"end":return e.stop()}},e)}));return function(e,t){return n.apply(this,arguments)}}(),Date.now(),t=X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=0;case 1:if(n<D.renderTarget.height){if(Cx)return e.abrupt("return",{v:{v:{v:w("1121")}}});e.next=4}else e.next=8;break;case 4:o(t,n);case 5:n++,e.next=1;break;case 8:return e.next=10,ix([[i,r],[.7,1]],function(){return t/D.renderTarget.width},"compute");case 10:case"end":return e.stop()}},e)}),g=0;case 30:if(g<D.renderTarget.width)return e.delegateYield(t(g),"t0",32);e.next=38;break;case 32:if(n=e.t0)return e.abrupt("return",n.v);e.next=35;break;case 35:g++,e.next=30;break;case 38:d.length&&console.log("waitFill怎么还有??",d),c.Vupper*=xx,c.fillVlower*=xx,c.fillVupper*=xx,c.Vlower+=c.fillVlower,C.push(c),Ex&&Ex.notify(r);case 45:case"end":return e.stop()}},e)}),i=0;case 2:if(i<E)return e.delegateYield(t(i),"t0",4);e.next=10;break;case 4:if(n=e.t0)return e.abrupt("return",n.v);e.next=7;break;case 7:i++,e.next=2;break;case 10:case"end":return e.stop()}},e)}),M=0;case 67:if(M<x)return e.delegateYield(g(M),"t0",69);e.next=75;break;case 69:if(A=e.t0)return e.abrupt("return",A.v);e.next=72;break;case 72:M++,e.next=67;break;case 75:P=_=T=S=0,C.forEach(function(e){S+=e.Vupper,T+=e.Vlower,_+=e.fillVlower,P+=e.fillVupper}),n({highest:wx,lowest:yx,Vupper:S,Vlower:T},Ex),w("finish",!0),console.log({Vupper:S,Vlower:T,oldVupper:S-P,oldVlower:T-_,highest:wx,lowest:yx,horizonZ:vx,wDelta:bx},C,this.viewport.resolution,{cW:x,cH:E},"cost:",Date.now()-Bx,"pxPerMetric",v,"boundSize",r);case 80:case"end":return e.stop()}},e,this)})),function(e,t,n){return i.apply(this,arguments)})},{key:"getModelZByRes",value:function(e,t,n,i,r,a){r=Math.round(r/n+e/this.renderTarget.width*this.renderTarget2.width),n=Math.round(a/i+t/this.renderTarget.height*this.renderTarget2.height);return UE[r][n]}},{key:"render",value:(e=J(X().mark(function e(){var t,f,m,n,v,g,A,y,w,b,x,E,C,c,d,B=this,i=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return f=(t=0<i.length&&void 0!==i[0]?i[0]:{}).i,m=t.j,n=t.index,v=t.cW,g=t.cH,A=t.reverseRow,y=t.infos,w=t.notifyArea,b=t.computeFinish,this.view.applyToCamera(this.camera),Potree.updatePointClouds(viewer.scene.pointclouds,this.camera,this.viewport.resolution),x=viewer.renderer.getContext(),E=function(e){var t=Potree.Utils.renderTargetToDataUrl(B.renderTarget,B.renderTarget.width,B.renderTarget.height,viewer.renderer);j.downloadFile(t,(e||"screenshot")+"-"+Bx+".png")},C=f+"-"+m+"-第"+n+"张",console.log("开始渲染",C),c=this.camera,d=this.viewport,e.abrupt("return",new Promise(function(r,h){var t,n,i,a,e,o,s,l=function(){var e=J(X().mark(function e(){var s,l,u,c,d,t,n,i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(x.clearColor(0,0,0,0),viewer.renderer.clear(!0,!0,!0),viewer.pRenderer.render(viewer.scene.scenePointCloud,B.camera,B.renderTarget,{material:B.material}),Cx)return e.abrupt("return",(h(),b("re 23")));e.next=5;break;case 5:Potree.settings.isTest&&E(C),x.readPixels(0,0,B.renderTarget.width,B.renderTarget.height,x.RGBA,x.UNSIGNED_BYTE,Mx),w.push([p,1]),l=s=0,u=[],c=[],d=[],t=X().mark(function e(t){var n,i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=[],i=0;case 2:if(i<B.renderTarget.height){if(r=A?B.renderTarget.height-i-1:i,r=t+r*B.renderTarget.width,a=Mx.slice(4*r,4*r+3),0==Mx[4*r+3]?n.push(null):(r=B.convertColorToHeight(a,gx,Ax),a=void 0,a=B.computingObject.model?(o=B.getModelZByRes(t,i,v,g,f,m),r-o):r-vx,r<yx&&(yx=r),wx<r&&(wx=r),(0<a?(s+=a,u):(l+=-a,c)).push(a),n.push(a)),Cx)return e.abrupt("return",{v:(h(),b("re 023"))});e.next=9}else e.next=12;break;case 9:i++,e.next=2;break;case 12:return d.push(n),e.next=15,ix(w,function(){return t/B.renderTarget.width},"readPixels get");case 15:case"end":return e.stop()}},e)}),i=0;case 12:if(i<B.renderTarget.width)return e.delegateYield(t(i),"t0",14);e.next=20;break;case 14:if(n=e.t0)return e.abrupt("return",n.v);e.next=17;break;case 17:i++,e.next=12;break;case 20:s*=xx,l*=xx,y.push({Vupper:s,Vlower:l,sDelta:xx,upperHeights:u,lowerHeights:c,allHeights:d}),r();case 24:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),p=te.linearClamp(B.camera.zoom,[1,1e3],[.8,.2]),u=[].concat(Fe(w),[[0,p]]);Potree.pointsLoading?(t=0,n=Date.now(),a=Math.round(te.linearClamp(Mx.length/B.camera.zoom/B.camera.zoom,[50,1e4],[1e3,15e3])),e=function(e){e&&l(),viewer.removeEventListener("update",o),viewer.removeEventListener("pointsLoaded",s)},o=function(){Potree.updatePointClouds(viewer.scene.pointclouds,c,d.resolution),ix(u,function(){var e;return t=!i&&Date.now()-n<a?(Date.now()-n)/a*.5:(i=i||Potree.unloadedGeometry.length,i=Math.max(Potree.unloadedGeometry.length,i),e=.5+.5*(1-Potree.unloadedGeometry.length/i),Math.max(t,e))},"loadpoints"),Cx&&(e(!1),h(),b("正在loadPoints,unloadedGeometry个数"+Potree.unloadedGeometry.length))},viewer.addEventListener("update",o),s=function(){console.warn("加载完毕"," numVisiblePoints",Potree.numVisiblePoints),e(!0)},viewer.addEventListener("pointsLoaded",s)):(ix(u,1),l())}));case 10:case"end":return e.stop()}},e,this)})),function(){return e.apply(this,arguments)})},{key:"convertColorToHeight",value:function(e,t,n){for(var i=0,r=1,a=0;a<3;a++)i+=(r=2==a?r/255:r/256)*e[a];return(n-t)*i+t}},{key:"getPointsize",value:function(e){return.01}},{key:"download",value:function(e){var t;return 0==this.prisms.length?null:((t=viewer.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")})).sort(function(e,t){return e.dataset_id-t.dataset_id}),{transformation_matrix:t.map(function(t){return{id:t.dataset_id,matrix:(new Me).elements,visiMatrixes:e.map(function(e){return{matrix:e.getTransformationMatrix(t).elements,points:e.points.map(function(e){return{x:e.x,y:e.y}})}}),modelMatrix:(new Me).copy(t.transformMatrix).transpose().elements}}),aabb:"b-12742000 -12742000 -12742000 12742000 12742000 12742000"})}}]);var e,i}(),GE=new Gc,HE=new Yl(1.45,100),VE=new Qu(.008,8,8),QE=Math.round(2<=window.devicePixelRatio?(1398784<=window.screen.width*window.screen.height?window.devicePixelRatio/1.2:window.devicePixelRatio/1.5)*(230/1.43):230/1.43),jE=new ff,WE=function(){function u(t){var n;ue(this,u),(n=le(this,u)).width=n.height=QE,n.camera=new ya(50,1,.01,1e4),n.camera.up=new Oe(0,0,1),n.viewport=new og(null,n.camera,{left:0,bottom:0,width:1,height:1,name:"magnifier",cameraLayers:["magnifierContent"],pixelRatio:1}),n.viewport.setResolution(n.width,n.height,0,0);function e(e){e.hoverViewport==t.mainViewport?(Potree.Utils.updateVisible(n,"atViewport",!0),n.update(e.intersect&&e.intersect.location)):Potree.Utils.updateVisible(n,"atViewport",!1)}var i,r,a,o=new Map,s=new Map,l=new Map;n.viewport.beforeRender=function(){t.scene.pointclouds.forEach(function(e){l.set(e,e.visible),e.visible=Potree.Utils.getObjVisiByReason(e,"datasetSelection"),o.set(e,e.temp.pointOpacity),s.set(e,e.temp.pointSize)}),i=Potree.settings.pointDensity,Potree.settings.pointDensity="magnifier",t.scene.pointclouds.forEach(function(e){r=e.material.pointSizeType,e.material.pointSizeType=Potree.config.material.pointSizeType,a=e.material.activeAttributeName,e.material.activeAttributeName="rgba",e.changePointOpacity(1)})},n.viewport.afterRender=function(){Potree.settings.pointDensity=i,t.scene.pointclouds.forEach(function(e){e.visible=l.get(e),e.material.pointSizeType=r,e.material.activeAttributeName=a,e.changePointOpacity(o.get(e))})},n.renderTarget=new ti(n.width,n.height,{minFilter:N,magFilter:N,format:It}),n.rtEDL=new ti(n.width,n.height,{minFilter:ht,magFilter:ht,format:It,type:Ct,depthTexture:new Gl(void 0,void 0,Et)}),n.mesh=new Q(HE,new R({side:ve,map:n.renderTarget.texture,transparent:!0,depthTest:!1})),n.overlayMesh=new Q(HE,new R({side:ve,map:GE.load(Potree.resourcePath+"/textures/crosshair.png"),transparent:!0,depthTest:!1})),n.targetPoint=new Z,n.targetPoint.add(new Q(VE,new R({color:"#ff0000",transparent:!0,opacity:.7}))),n.targetPoint.add(new Q(VE,new R({color:"#ff0000",transparent:!0,opacity:.3,depthTest:!1}))),n.targetPoint.name="magnifierPointTarget",t.scene.scene.add(n.targetPoint),Potree.Utils.setObjectLayers(n.targetPoint,"magnifierContent"),n.add(n.mesh),n.add(n.overlayMesh),n.position.set(-1e3,-1e3,-1e5),n.mesh.renderOrder=Potree.config.renderOrders.magnifier,n.overlayMesh.renderOrder=Potree.config.renderOrders.magnifier+1,n.aimPos,Potree.Utils.setObjectLayers(n,"magnifier"),t.addEventListener("camera_changed",function(e){e.viewport==t.mainViewport&&n.update()}),n.mesh.layers.set(Potree.config.renderLayers.magnifier),n.overlayMesh.layers.set(Potree.config.renderLayers.magnifier),n.dontRender=!1,t.addEventListener("global_drag",function(e){n.dontRender=!0}),t.addEventListener("global_drop",function(e){n.dontRender=!1}),t.addEventListener("global_mouseup",function(e){n.dontRender=!1});return t.addEventListener("global_mousemove",e),t.addEventListener("global_touchstart",e),t.addEventListener("updateMagnifier",e),n.addEventListener("setEnable",function(e){Potree.Utils.updateVisible(n,"enable",e.value),t.dispatchEvent("content_changed")}),Potree.settings.isOfficial?Potree.Utils.updateVisible(n,"enable",!1):(Potree.Utils.updateVisible(n,"measure",!1),t.addEventListener("measureMovePoint",function(){}),t.addEventListener("endMeasureMove",function(){Potree.Utils.updateVisible(n,"measure",!1),t.dispatchEvent("content_changed")})),n.addEventListener("isVisible",function(e){n.visible||(Potree.settings.pointDensity=Potree.settings.pointDensity)}),t.scene.view.addEventListener("flyingDone",function(){var e;n.visible&&(e=t.inputHandler.getIntersect({viewport:t.mainViewport,usePointcloud:!0,pickWindowSize:100}),n.update(e&&e.location))}),n}return v(u,Z),A(u,[{key:"update",value:function(e){var t,n,i,r,a,o=this.dontRender||!(e instanceof Oe)||"showPanos"==Potree.settings.displayMode&&viewer.images360.flying;(e=e instanceof Oe?e:this.aimPos)&&this.visible&&(n=(r=(t=viewer.scene.getActiveCamera()).position).distanceTo(e),a=(new Oe).subVectors(r,e).normalize(),n="OrthographicCamera"==t.type?2:1<n?300<n?20:(n-1)/299*19+1:n/2,this.camera.fov="OrthographicCamera"==t.type?30:t.fov/2,this.camera.updateProjectionMatrix(),"OrthographicCamera"==t.type?(jE.position.copy(e).sub(viewer.mainViewport.view.direction.multiplyScalar(n)),jE.yaw=viewer.mainViewport.view.yaw,jE.pitch=viewer.mainViewport.view.pitch,jE.applyToCamera(this.camera)):(this.camera.position.copy(e).add(a.multiplyScalar(n)),this.camera.lookAt(e)),a=Potree.Utils.getPos2d(e,viewer.mainViewport,viewer.renderArea).vector,i=1.1*QE/viewer.mainViewport.resolution2.y*2,a=a.clone().setY(a.y+(0<a.y?-i:i)),i=new Oe(a.x,a.y,.8).unproject(t),"OrthographicCamera"!=t.type?(a=i.clone().sub(r).normalize().multiplyScalar(10),this.position.copy(r.clone().add(a))):(viewer.navCubeViewer.splitScreen.setShiftTarget(viewer.mainViewport,viewer.bound.center),viewer.mainViewport.targetPlane.setFromNormalAndCoplanarPoint(viewer.mainViewport.view.direction.clone(),viewer.bound.center),viewer.mainViewport.targetPlane.projectPoint(i,viewer.mainViewport.shiftTarget),this.position.copy(viewer.mainViewport.shiftTarget.clone())),r=n*this.camera.fov/30,this.quaternion.copy(t.quaternion),this.targetPoint.position.copy(e),this.targetPoint.scale.set(r,r,r),this.aimPos=e,a=te.getScaleForConstantSize({width2d:QE,camera:viewer.scene.getActiveCamera(),position:this.getWorldPosition(new Oe),resolution:viewer.mainViewport.resolution2}),this.scale.set(a,a,a),o||(this.waitRender=!0),viewer.dispatchEvent("content_changed"))}},{key:"render",value:function(){this.visible&&(this.waitRender||viewer.needRender)&&(viewer.render({target:this.renderTarget,viewports:[this.viewport],camera:this.camera,magnifier:!0,rtEDL:this.rtEDL}),this.waitRender=!1,viewer.dispatchEvent("content_changed"))}}])}(),JE=new Gc,qE=Potree.defines.Buttons,YE=function(){function a(e){function t(){r.state.cross=!0,r.judgeTex()}function n(){r.state.cross=!1,r.judgeTex()}ue(this,a);var i=JE.load(Potree.resourcePath+"/textures/whiteCircle.png"),r=le(this,a,[new _a(.11,.11,1,1),new R({side:ve,map:i,transparent:!0,depthTest:!1,opacity:.6})]);r.name="reticule",r.defaultTex=i,r.crosshairTex=JE.load(Potree.resourcePath+"/textures/reticule_cross_hair.png"),r.forbitTex=JE.load(Potree.resourcePath+"/textures/pic-forbid.png"),r.defaultTex.anisotropy=4,r.crosshairTex.anisotropy=4,r.forbitTex.anisotropy=4,r.renderOrder=Potree.config.renderOrders.reticule,r.layers.set(Potree.config.renderLayers.marker),r.direction=new Oe,r.mouseLastMoveTime=Date.now(),r.hoverViewport,r.matrixMap=new Map,r.matrixAutoUpdate=!1,r.hide(0),Potree.settings.intersectWhenHover&&e.addEventListener("global_mousemove",r.move.bind(r)),e.addEventListener("global_mousedown",r.move.bind(r)),r.state={};return e.addEventListener("measureMovePoint",t),e.addEventListener("endMeasureMove",n),e.addEventListener("startBuildEntity",t),e.addEventListener("endBuildEntity",n),e.addEventListener("start_inserting_tag",t),e.addEventListener("endTagMove",n),e.addEventListener("reticule_forbit",function(e){r.state.forbit!=e.v&&console.log("change forbit ",e.v),r.state.forbit=e.v,r.judgeTex()}),Potree.Utils.setObjectLayers(r,"sceneObjects"),r}return v(a,Q),A(a,[{key:"judgeTex",value:function(){this.state.forbit?this.material.map=this.forbitTex:this.state.cross?this.material.map=this.crosshairTex:this.material.map=this.defaultTex,viewer.mapViewer&&viewer.mapViewer.dispatchEvent({type:"content_changed"})}},{key:"move",value:function(e){("global_mousemove"!=e.type||!e.isTouch&&e.buttons==qE.NONE||this.state.cross)&&(this.mouseLastMoveTime=Date.now(),this.updatePosition(e.intersect,e.hoverViewport))}},{key:"hide",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:500;this.hidden||(this.hidden=!0,df.start(uf(this.material,"opacity",0,function(){e.dispatchEvent({type:"update"})}),t,function(){e.dispatchEvent({type:"update",visible:!1})}),this.dispatchEvent({type:"update",visible:!1}),setTimeout(function(){},t))}},{key:"show",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:300;Potree.Utils.getObjVisiByReason(this,"force")&&(this.hidden=!1,this.material.opacity<=0)&&(df.start(uf(this.material,"opacity",.6,function(){e.dispatchEvent({type:"update"})}),t,function(){e.dispatchEvent({type:"update",visible:!1})}),this.dispatchEvent({type:"update",visible:!0}))}},{key:"updateVisible",value:function(){1500<Date.now()-this.mouseLastMoveTime&&!this.hidden&&this.hide()}},{key:"updateScale",value:function(e){var t,n=e.camera;"OrthographicCamera"==n.type?(t=this.state.cross?{width2d:500}:{minSize:100,maxSize:400,nearBound:100,farBound:700},t=te.getScaleForConstantSize($.extend(t,{position:this.position,camera:n,resolution:e.resolution}))):(e=n.position.distanceTo(this.position),t=.8*Math.log2(e+1),this.state.cross&&(t/=viewer.images360.zoomLevel)),this.scale.set(t,t,t)}},{key:"updateAtViewports",value:function(e){var t;"magnifier"!=e.name&&(this.orthoPos&&this.hoverViewport&&"mapViewport"==this.hoverViewport.name&&e!=this.hoverViewport?Potree.Utils.updateVisible(this,"hoverMap",!1):(Potree.Utils.updateVisible(this,"hoverMap",!0),"mapViewport"==e.name?Potree.Utils.setObjectLayers(this,"bothMapAndScene"):Potree.Utils.setObjectLayers(this,"sceneObjects"),(t=this.matrixMap.get(e))?this.matrix.copy(t):(this.updateScale(e),this.updateMatrix(),this.matrixMap.set(e,this.matrix.clone()))))}},{key:"updatePosition",value:function(e,t){var n,i,r;Potree.Utils.getObjVisiByReason(this,"force")&&e&&(n=!e.location,i=e.location||e.orthoIntersect.clone(),this.orthoPos=n,this.show(n?0:300),n?(r=new Oe(0,0,1),i.setZ(0),this.direction=r.clone()):(r=e.normal)&&(this.direction=this.direction.multiplyScalar(.8),this.direction.add(r.clone().multiplyScalar(.2))),this.position.copy(i),this.updateMatrix(),this.lookAt(this.position.clone().add(this.direction)),this.hoverViewport=t,this.updateScale(t),this.updateMatrix(),this.matrixMap.clear(),this.matrixMap.set(t,this.matrix.clone()),this.dispatchEvent({type:"update"}))}}])}(),XE=(_x=/^[og]\s*(.+)?/,Px=/^mtllib /,Dx=/^usemtl /,Ix=/^usemap /,kx=new Oe,Rx=new Oe,Lx=new Oe,Fx=new Oe,Ox=new Oe,ZE.prototype=Object.assign(Object.create(kc.prototype),{constructor:ZE,load:function(n,i,e,r){var a=this,t=new Lc(this.manager);t.setPath(this.path),t.setRequestHeader(this.requestHeader),t.setWithCredentials(this.withCredentials),t.load(n,function(e,t){try{i(a.parse(e),t)}catch(e){r?r(e):console.error(e),a.manager.itemError(n)}},e,r)},setMaterials:function(e){return this.materials=e,this},parse:function(e){for(var t,n,i,r=new KE,a=(e=-1!==(e=-1!==e.indexOf("\r\n")?e.replace(/\r\n/g,"\n"):e).indexOf("\\\n")?e.replace(/\\\n/g,""):e).split("\n"),o="",s=[],F="function"==typeof"".trimLeft,l=0,u=a.length;l<u;l++)if(o=a[l],0!==(o=F?o.trimLeft():o.trim()).length&&"#"!==(t=o.charAt(0)))if("v"===t){var c=o.split(/\s+/);switch(c[0]){case"v":r.vertices.push(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3])),7<=c.length?r.colors.push(parseFloat(c[4]),parseFloat(c[5]),parseFloat(c[6])):r.colors.push(void 0,void 0,void 0);break;case"vn":r.normals.push(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3]));break;case"vt":r.uvs.push(parseFloat(c[1]),parseFloat(c[2]))}}else if("f"===t){for(var O=o.substr(1).trim().split(/\s+/),d=[],h=0,U=O.length;h<U;h++){var p=O[h];0<p.length&&(p=p.split("/"),d.push(p))}for(var f=d[0],h=1,U=d.length-1;h<U;h++){var m=d[h],v=d[h+1];r.addFace(f[0],m[0],v[0],f[1],m[1],v[1],f[2],m[2],v[2])}}else if("l"===t){var g=o.substring(1).trim().split(" "),A=[],N=[];if(-1===o.indexOf("/"))A=g;else for(var y=0,z=g.length;y<z;y++){var w=g[y].split("/");""!==w[0]&&A.push(w[0]),""!==w[1]&&N.push(w[1])}r.addLineGeometry(A,N)}else"p"===t?(n=o.substr(1).trim().split(" "),r.addPointGeometry(n)):null!==(s=_x.exec(o))?(n=(" "+s[0].substr(1).trim()).substr(1),r.startObject(n)):Dx.test(o)?r.object.startMaterial(o.substring(7).trim(),r.materialLibraries):Px.test(o)?r.materialLibraries.push(o.substring(7).trim()):Ix.test(o)?console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.'):"s"===t?(1<(s=o.split(" ")).length?(i=s[1].trim().toLowerCase(),r.object.smooth="0"!==i&&"off"!==i):r.object.smooth=!0,(R=r.object.currentMaterial())&&(R.smooth=r.object.smooth)):"\0"!==o&&console.warn('THREE.OBJLoader: Unexpected line: "'+o+'"');r.finalize();var b=new Ts,e=(b.materialLibraries=[].concat(r.materialLibraries),!(1===r.objects.length&&0===r.objects[0].geometry.vertices.length));if(!0==e)for(l=0,u=r.objects.length;l<u;l++){var x=r.objects[l],E=x.geometry,C=x.materials,B="Line"===E.type,M="Points"===E.type,S=!1;if(0!==E.vertices.length){(T=new V).setAttribute("position",new ee(E.vertices,3)),0<E.normals.length&&T.setAttribute("normal",new ee(E.normals,3)),0<E.colors.length&&(S=!0,T.setAttribute("color",new ee(E.colors,3))),!0===E.hasUVIndices&&T.setAttribute("uv",new ee(E.uvs,2));for(var T,_,P=[],D=0,I=C.length;D<I;D++){var k,G=(L=C[D]).name+"_"+L.smooth+"_"+S,R=r.materials[G];null!==this.materials&&(R=this.materials.create(L.name),!B||!R||R instanceof wl?!M||!R||R instanceof Dl||(k=new Dl({size:10,sizeAttenuation:!1}),Er.prototype.copy.call(k,R),k.color.copy(R.color),k.map=R.map,R=k):(k=new wl,Er.prototype.copy.call(k,R),k.color.copy(R.color),R=k)),void 0===R&&((R=B?new wl:M?new Dl({size:1,sizeAttenuation:!1}):new lc).name=L.name,R.flatShading=!L.smooth,R.vertexColors=S,r.materials[G]=R),P.push(R)}if(1<P.length){for(D=0,I=C.length;D<I;D++){var L=C[D];T.addGroup(L.groupStart,L.groupCount,D)}_=new(B?_l:M?Fl:Q)(T,P)}else _=new(B?_l:M?Fl:Q)(T,P[0]);_.name=x.name,b.add(_)}}else 0<r.vertices.length&&(R=new Dl({size:1,sizeAttenuation:!1}),(T=new V).setAttribute("position",new ee(r.vertices,3)),0<r.colors.length&&void 0!==r.colors[0]&&(T.setAttribute("color",new ee(r.colors,3)),R.vertexColors=!0),e=new Fl(T,R),b.add(e));return b}}),ZE);function KE(){var e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){var n;this.object&&!1===this.object.fromDeclaration?(this.object.name=e,this.object.fromDeclaration=!1!==t):(n=this.object&&"function"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0,this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:!1!==t,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){var n=this._finalize(!1),e=(n&&(n.inherited||n.groupCount<=0)&&this.materials.splice(n.index,1),{index:this.materials.length,name:e||"",mtllib:Array.isArray(t)&&0<t.length?t[t.length-1]:"",smooth:(void 0!==n?n:this).smooth,groupStart:void 0!==n?n.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){e={index:"number"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return e.clone=this.clone.bind(e),e}});return this.materials.push(e),e},currentMaterial:function(){if(0<this.materials.length)return this.materials[this.materials.length-1]},_finalize:function(e){var t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&1<this.materials.length)for(var n=this.materials.length-1;0<=n;n--)this.materials[n].groupCount<=0&&this.materials.splice(n,1);return e&&0===this.materials.length&&this.materials.push({name:"",smooth:this.smooth}),t}},n&&n.name&&"function"==typeof n.clone&&((e=n.clone(0)).inherited=!0,this.object.materials.push(e)),this.objects.push(this.object))},finalize:function(){this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){e=parseInt(e,10);return 3*(0<=e?e-1:e+t/3)},parseNormalIndex:function(e,t){e=parseInt(e,10);return 3*(0<=e?e-1:e+t/3)},parseUVIndex:function(e,t){e=parseInt(e,10);return 2*(0<=e?e-1:e+t/2)},addVertex:function(e,t,n){var i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){var i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){var i=this.vertices,r=this.object.geometry.normals;kx.fromArray(i,e),Rx.fromArray(i,t),Lx.fromArray(i,n),Ox.subVectors(Lx,Rx),Fx.subVectors(kx,Rx),Ox.cross(Fx),Ox.normalize(),r.push(Ox.x,Ox.y,Ox.z),r.push(Ox.x,Ox.y,Ox.z),r.push(Ox.x,Ox.y,Ox.z)},addColor:function(e,t,n){var i=this.colors,r=this.object.geometry.colors;void 0!==i[e]&&r.push(i[e+0],i[e+1],i[e+2]),void 0!==i[t]&&r.push(i[t+0],i[t+1],i[t+2]),void 0!==i[n]&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){var i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){var e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){var t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,a,o,s,l){var u=this.vertices.length,e=this.parseVertexIndex(e,u),t=this.parseVertexIndex(t,u),n=this.parseVertexIndex(n,u);this.addVertex(e,t,n),this.addColor(e,t,n),void 0!==o&&""!==o?(u=this.normals.length,e=this.parseNormalIndex(o,u),t=this.parseNormalIndex(s,u),n=this.parseNormalIndex(l,u),this.addNormal(e,t,n)):this.addFaceNormal(e,t,n),void 0!==i&&""!==i?(o=this.uvs.length,e=this.parseUVIndex(i,o),t=this.parseUVIndex(r,o),n=this.parseUVIndex(a,o),this.addUV(e,t,n),this.object.geometry.hasUVIndices=!0):this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";for(var t=this.vertices.length,n=0,i=e.length;n<i;n++){var r=this.parseVertexIndex(e[n],t);this.addVertexPoint(r),this.addColor(r)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";for(var n=this.vertices.length,i=this.uvs.length,r=0,a=e.length;r<a;r++)this.addVertexLine(this.parseVertexIndex(e[r],n));for(var o=0,a=t.length;o<a;o++)this.addUVLine(this.parseUVIndex(t[o],i))}};return e.startObject("",!1),e}function ZE(e){kc.call(this,e),this.materials=null}function $E(e){kc.call(this,e)}$E.prototype=Object.assign(Object.create(kc.prototype),{constructor:$E,load:function(t,n,e,i){var r=this,a=""===this.path?Md.extractUrlBase(t):this.path,o=new Lc(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(e){try{n(r.parse(e,a))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},setMaterialOptions:function(e){return this.materialOptions=e,this},parse:function(e,t){for(var n=e.split("\n"),i={},r=/\s+/,a={},o=0;o<n.length;o++){var s,l,u=(u=n[o]).trim();0!==u.length&&"#"!==u.charAt(0)&&(s=(s=0<=(l=u.indexOf(" "))?u.substring(0,l):u).toLowerCase(),u=(u=0<=l?u.substring(l+1):"").trim(),"newmtl"===s?a[u]=i={name:u}:"ka"===s||"kd"===s||"ks"===s||"ke"===s?(l=u.split(r,3),i[s]=[parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2])]):i[s]=u)}e=new $E.MaterialCreator(this.resourcePath||t,this.materialOptions);return e.setCrossOrigin(this.crossOrigin),e.setManager(this.manager),e.setMaterials(a),e}}),($E.MaterialCreator=function(e,t){this.baseUrl=e||"",this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.side=this.options&&this.options.side?this.options.side:fe,this.wrap=this.options&&this.options.wrap?this.options.wrap:ut}).prototype={constructor:$E.MaterialCreator,crossOrigin:"anonymous",setCrossOrigin:function(e){return this.crossOrigin=e,this},setManager:function(e){this.manager=e},setMaterials:function(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}},convert:function(e){if(!this.options)return e;var t,n={};for(t in e){var i,r=e[t],a={};for(i in n[t]=a,r){var o=!0,s=r[i],l=i.toLowerCase();switch(l){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(s=[s[0]/255,s[1]/255,s[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===s[0]&&0===s[1]&&0===s[2]&&(o=!1)}o&&(a[l]=s)}}return n},preload:function(){for(var e in this.materialsInfo)this.create(e)},getIndex:function(e){return this.nameLookup[e]},getAsArray:function(){var e,t=0;for(e in this.materialsInfo)this.materialsArray[t]=this.create(e),this.nameLookup[e]=t,t++;return this.materialsArray},create:function(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]},createMaterial_:function(e){var t,r=this,n=this.materialsInfo[e],a={name:e,side:this.side};function i(e,t){var n,i;a[e]||(t=r.getTextureParams(t,a),(n=r.loadTexture((n=r.baseUrl,"string"!=typeof(i=t.url)||""===i?"":/^https?:\/\//i.test(i)?i:n+i))).repeat.copy(t.scale),n.offset.copy(t.offset),n.wrapS=r.wrap,n.wrapT=r.wrap,a[e]=n)}for(t in n){var o,s=n[t];if(""!==s)switch(t.toLowerCase()){case"kd":a.color=(new Se).fromArray(s);break;case"ks":break;case"ke":a.emissive=(new Se).fromArray(s);break;case"map_kd":i("map",s);break;case"map_ks":i("specularMap",s);break;case"map_ke":i("emissiveMap",s);break;case"norm":i("normalMap",s);break;case"map_bump":case"bump":i("bumpMap",s);break;case"map_d":i("alphaMap",s),a.transparent=!0;break;case"ns":break;case"d":(o=parseFloat(s))<1&&(a.opacity=o,a.transparent=!0);break;case"tr":o=parseFloat(s),0<(o=this.options&&this.options.invertTrProperty?1-o:o)&&(a.opacity=1-o,a.transparent=!0)}}return this.materials[e]=new oc(a),this.materials[e]},getTextureParams:function(e,t){var n={scale:new Re(1,1),offset:new Re(0,0)},e=e.split(/\s+/),i=e.indexOf("-bm");return 0<=i&&(t.bumpScale=parseFloat(e[i+1]),e.splice(i,2)),0<=(i=e.indexOf("-s"))&&(n.scale.set(parseFloat(e[i+1]),parseFloat(e[i+2])),e.splice(i,4)),0<=(i=e.indexOf("-o"))&&(n.offset.set(parseFloat(e[i+1]),parseFloat(e[i+2])),e.splice(i,4)),n.url=e.join(" ").trim(),n},loadTexture:function(e,t,n,i,r){var a=void 0!==this.manager?this.manager:Ic,o=a.getHandler(e);return(o=null===o?new Gc(a):o).setCrossOrigin&&o.setCrossOrigin(this.crossOrigin),a=o.load(e,n,i,r),void 0!==t&&(a.mapping=t),a}};var eC=new WeakMap,tC=function(){function t(e){return ue(this,t),(e=le(this,t,[e])).decoderPath="",e.decoderConfig={},e.decoderBinary=null,e.decoderPending=null,e.workerLimit=4,e.workerPool=[],e.workerNextTaskID=1,e.workerSourceURL="",e.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},e.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"},e}return v(t,kc),A(t,[{key:"setDecoderPath",value:function(e){return this.decoderPath=e,this}},{key:"setDecoderConfig",value:function(e){return this.decoderConfig=e,this}},{key:"setWorkerLimit",value:function(e){return this.workerLimit=e,this}},{key:"load",value:function(e,t,n,i){var r=this,a=new Lc(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){r.decodeDracoFile(e,t).catch(i)},n,i)}},{key:"decodeDracoFile",value:function(e,t,n,i){i={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};return this.decodeGeometry(e,i).then(t)}},{key:"decodeGeometry",value:function(n,i){var r,t=this,e=JSON.stringify(i);if(eC.has(n)){var a=eC.get(n);if(a.key===e)return a.promise;if(0===n.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}var o=this.workerNextTaskID++,a=n.byteLength,a=this._getWorker(o,a).then(function(e){return r=e,new Promise(function(e,t){r._callbacks[o]={resolve:e,reject:t},r.postMessage({type:"decode",id:o,taskConfig:i,buffer:n},[n])})}).then(function(e){return t._createGeometry(e.geometry)});return a.catch(function(){return!0}).then(function(){r&&o&&t._releaseTask(r,o)}),eC.set(n,{key:e,promise:a}),a}},{key:"_createGeometry",value:function(e){var t=new V;e.index&&t.setIndex(new H(e.index.array,1));for(var n=0;n<e.attributes.length;n++){var i=e.attributes[n],r=i.name,a=i.array,i=i.itemSize;t.setAttribute(r,new H(a,i))}return t}},{key:"_loadLibrary",value:function(n,e){var i=new Lc(this.manager);return i.setPath(this.decoderPath),i.setResponseType(e),i.setWithCredentials(this.withCredentials),new Promise(function(e,t){i.load(n,e,void 0,t)})}},{key:"preload",value:function(){return this._initDecoder(),this}},{key:"_initDecoder",value:function(){var n,e,i=this;return this.decoderPending||(e=[],(n="object"!==("undefined"==typeof WebAssembly?"undefined":O(WebAssembly))||"js"===this.decoderConfig.type)?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(function(e){var t=e[0],e=(n||(i.decoderConfig.wasmBinary=e[1]),function(){var n,t;function l(e,t,n,i){var r,a=i.attributeIDs,o=i.attributeTypes,s=t.GetEncodedGeometryType(n);if(s===e.TRIANGULAR_MESH)r=new e.Mesh,g=t.DecodeBufferToMesh(n,r);else{if(s!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");r=new e.PointCloud,g=t.DecodeBufferToPointCloud(n,r)}if(!g.ok()||0===r.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+g.error_msg());var l,u,c,d,h,p,f,m,v,g,A,y,w,b={index:null,attributes:[]};for(l in a){var x=self[o[l]],E=void 0,C=void 0;if(i.useUniqueIDs)C=a[l],E=t.GetAttributeByUniqueId(r,C);else{if(-1===(C=t.GetAttributeId(r,e[a[l]])))continue;E=t.GetAttribute(r,C)}b.attributes.push((C=e,u=t,c=r,d=l,x=x,v=m=f=p=h=void 0,h=(E=E).num_components(),p=c.num_points()*h,f=p*x.BYTES_PER_ELEMENT,m=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}}(C,x),v=C._malloc(f),u.GetAttributeDataArrayForAllPoints(c,E,m,f,v),u=new x(C.HEAPF32.buffer,v,p).slice(),C._free(v),{name:d,array:u,itemSize:h}))}return s===e.TRIANGULAR_MESH&&(b.index=(n=e,g=t,A=3*(s=r).num_faces(),y=4*A,w=n._malloc(y),g.GetTrianglesUInt32Array(s,y,w),g=new Uint32Array(n.HEAPF32.buffer,w,A).slice(),n._free(w),{array:g,itemSize:1})),e.destroy(r),b}onmessage=function(e){var a=e.data;switch(a.type){case"init":n=a.decoderConfig,t=new Promise(function(t){n.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(n)});break;case"decode":var o=a.buffer,s=a.taskConfig;t.then(function(e){var e=e.draco,t=new e.Decoder,n=new e.DecoderBuffer;n.Init(new Int8Array(o),o.byteLength);try{var i=l(e,t,n,s),r=i.attributes.map(function(e){return e.array.buffer});i.index&&r.push(i.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:i},r)}catch(e){console.error(e),self.postMessage({type:"error",id:a.id,error:e.message})}finally{e.destroy(n),e.destroy(t)}})}}}.toString()),t=["/* draco decoder */",t,"","/* worker */",e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))].join("\n");i.workerSourceURL=URL.createObjectURL(new Blob([t]))})),this.decoderPending}},{key:"_getWorker",value:function(t,i){var r=this;return this._initDecoder().then(function(){r.workerPool.length<r.workerLimit?((n=new Worker(r.workerSourceURL))._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:r.decoderConfig}),n.onmessage=function(e){var t=e.data;switch(t.type){case"decode":n._callbacks[t.id].resolve(t);break;case"error":n._callbacks[t.id].reject(t);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+t.type+'"')}},r.workerPool.push(n)):r.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});var n,e=r.workerPool[r.workerPool.length-1];return e._taskCosts[t]=i,e._taskLoad+=i,e})}},{key:"_releaseTask",value:function(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}},{key:"debug",value:function(){console.log("Task load: ",this.workerPool.map(function(e){return e._taskLoad}))}},{key:"dispose",value:function(){for(var e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}])}();var nC=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:4;ue(this,e),this.pool=t,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0},[{key:"_initWorker",value:function(e){var t;this.workers[e]||((t=this.workerCreator()).addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t)}},{key:"_getIdleWorker",value:function(){for(var e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}},{key:"_onMessage",value:function(e,t){var n,i=this.workersResolve[e];i&&i(t),this.queue.length?(t=(i=this.queue.shift()).resolve,n=i.msg,i=i.transfer,this.workersResolve[e]=t,this.workers[e].postMessage(n,i)):this.workerStatus^=1<<e}},{key:"setWorkerCreator",value:function(e){this.workerCreator=e}},{key:"setWorkerLimit",value:function(e){this.pool=e}},{key:"postMessage",value:function(n,i){var r=this;return new Promise(function(e){var t=r._getIdleWorker();-1!==t?(r._initWorker(t),r.workerStatus|=1<<t,r.workersResolve[t]=e,r.workers[t].postMessage(n,i)):r.queue.push({resolve:e,msg:n,transfer:i})})}},{key:"dispose",value:function(){this.workers.forEach(function(e){return e.terminate()}),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}])}(),iC=0,rC=2,aC=A(function e(){ue(this,e),this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}),oC=function(){return A(function e(t,n,i,r){ue(this,e),this._dataView=new DataView(t.buffer,t.byteOffset+n,i),this._littleEndian=r,this._offset=0},[{key:"_nextUint8",value:function(){var e=this._dataView.getUint8(this._offset);return this._offset+=1,e}},{key:"_nextUint16",value:function(){var e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}},{key:"_nextUint32",value:function(){var e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}},{key:"_nextUint64",value:function(){var e=this._dataView.getUint32(this._offset,this._littleEndian)+Math.pow(2,32)*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}},{key:"_nextInt32",value:function(){var e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}},{key:"_skip",value:function(e){return this._offset+=e,this}},{key:"_scan",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this._offset,i=0;this._dataView.getUint8(this._offset)!==t&&i<e;)i++,this._offset++;return i<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,i)}}])}(),sC=(new Uint8Array([0]),[171,75,84,88,32,50,48,187,13,10,26,10]);function lC(e){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(e):Buffer.from(e).toString("utf8")}var uC,cC,dC;var hC,pC={env:{emscripten_notify_memory_growth:function(e){dC=new Uint8Array(cC.exports.memory.buffer)}}},fC=function(){return A(function e(){ue(this,e)},[{key:"init",value:function(){return uC=uC||fetch("data:application/wasm;base64,"+mC).then(function(e){return e.arrayBuffer()}).then(function(e){return WebAssembly.instantiate(e,pC)}).then(function(e){cC=e.instance,pC.env.emscripten_notify_memory_growth(0)})}},{key:"decode",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=e.byteLength,i=cC.exports.malloc(n),e=(dC.set(e,i),t=t||Number(cC.exports.ZSTD_findDecompressedSize(i,n)),cC.exports.malloc(t)),t=cC.exports.ZSTD_decompress(e,t,i,n),n=dC.slice(e,e+t);return cC.exports.free(i),cC.exports.free(e),n}}])}(),mC="AGFzbQEAAAABpQEVYAF/AX9gAn9/AGADf39/AX9gBX9/f39/AX9gAX8AYAJ/fwF/YAR/f39/AX9gA39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAn9/AX5gAn5+AX5gAABgBX9/f39/AGAGf39/f39/AGAIf39/f39/f38AYAl/f39/f39/f38AYAABf2AIf39/f39/f38Bf2ANf39/f39/f39/f39/fwF/YAF/AX4CJwEDZW52H2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgABANpaAEFAAAFAgEFCwACAQABAgIFBQcAAwABDgsBAQcAEhMHAAUBDAQEAAANBwQCAgYCBAgDAwMDBgEACQkHBgICAAYGAgQUBwYGAwIGAAMCAQgBBwUGCgoEEQAEBAEIAwgDBQgDEA8IAAcABAUBcAECAgUEAQCAAgYJAX8BQaCgwAILB2AHBm1lbW9yeQIABm1hbGxvYwAoBGZyZWUAJgxaU1REX2lzRXJyb3IAaBlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplAFQPWlNURF9kZWNvbXByZXNzAEoGX3N0YXJ0ACQJBwEAQQELASQKussBaA8AIAAgACgCBCABajYCBAsZACAAKAIAIAAoAgRBH3F0QQAgAWtBH3F2CwgAIABBiH9LC34BBH9BAyEBIAAoAgQiA0EgTQRAIAAoAggiASAAKAIQTwRAIAAQDQ8LIAAoAgwiAiABRgRAQQFBAiADQSBJGw8LIAAgASABIAJrIANBA3YiBCABIARrIAJJIgEbIgJrIgQ2AgggACADIAJBA3RrNgIEIAAgBCgAADYCAAsgAQsUAQF/IAAgARACIQIgACABEAEgAgv3AQECfyACRQRAIABCADcCACAAQQA2AhAgAEIANwIIQbh/DwsgACABNgIMIAAgAUEEajYCECACQQRPBEAgACABIAJqIgFBfGoiAzYCCCAAIAMoAAA2AgAgAUF/ai0AACIBBEAgAEEIIAEQFGs2AgQgAg8LIABBADYCBEF/DwsgACABNgIIIAAgAS0AACIDNgIAIAJBfmoiBEEBTQRAIARBAWtFBEAgACABLQACQRB0IANyIgM2AgALIAAgAS0AAUEIdCADajYCAAsgASACakF/ai0AACIBRQRAIABBADYCBEFsDwsgAEEoIAEQFCACQQN0ams2AgQgAgsWACAAIAEpAAA3AAAgACABKQAINwAICy8BAX8gAUECdEGgHWooAgAgACgCAEEgIAEgACgCBGprQR9xdnEhAiAAIAEQASACCyEAIAFCz9bTvtLHq9lCfiAAfEIfiUKHla+vmLbem55/fgsdAQF/IAAoAgggACgCDEYEfyAAKAIEQSBGBUEACwuCBAEDfyACQYDAAE8EQCAAIAEgAhBnIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsMACAAIAEpAAA3AAALQQECfyAAKAIIIgEgACgCEEkEQEEDDwsgACAAKAIEIgJBB3E2AgQgACABIAJBA3ZrIgE2AgggACABKAAANgIAQQALDAAgACABKAIANgAAC/cCAQJ/AkAgACABRg0AAkAgASACaiAASwRAIAAgAmoiBCABSw0BCyAAIAEgAhALDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkF/aiECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdBKGogACgCBBATQQAhBCAHQeAAaiEMIAdB5ABqIQoDQCAHQShqEARBAksgBCAXTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEJIAcoAkggBygCREEDdGopAgAiH0IgiKchCCAeQiCIISAgHUIgiKchAgJAIB9CEIinQf8BcSIDQQJPBEACQCAGRSADQRlJckUEQCAIIAdBKGogA0EgIAcoAixrIg0gDSADSxsiDRAFIAMgDWsiA3RqIQggB0EoahAEGiADRQ0BIAdBKGogAxAFIAhqIQgMAQsgB0EoaiADEAUgCGohCCAHQShqEAQaCyAHKQJUISEgByAINgJUIAcgITcDWAwBCwJAIANFBEAgAgRAIAcoAlQhCAwDCyAHKAJYIQgMAQsCQAJAIAdBKGpBARAFIAggAkVqaiIDQQNGBEAgBygCVEF/aiIDIANFaiEIDAELIANBAnQgB2ooAlQiCCAIRWohCCADQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAg2AlQLICCnIQMgCQRAIAdBKGogCRAFIANqIQMLIAkgC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgAmohAgsgB0EoahAEGiAHIAcoAmggAmoiCSADajYCaCAKIAwgCCAJSxsoAgAhDSAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogB0EoaiAfQhiIp0H/AXEQCCEOIAdB8ABqIARBBHRqIgsgCSANaiAIazYCDCALIAg2AgggCyADNgIEIAsgAjYCACAHIA4gH6dB//8DcWo2AkQgBEEBaiEEDAELCyAEIBdIDQEgEkFgaiEYIAdB4ABqIRogB0HkAGohGyABIQMDQCAHQShqEARBAksgBCAFTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEIIAcoAkggBygCREEDdGopAgAiH0IgiKchCSAeQiCIISAgHUIgiKchDAJAIB9CEIinQf8BcSICQQJPBEACQCAGRSACQRlJckUEQCAJIAdBKGogAkEgIAcoAixrIgogCiACSxsiChAFIAIgCmsiAnRqIQkgB0EoahAEGiACRQ0BIAdBKGogAhAFIAlqIQkMAQsgB0EoaiACEAUgCWohCSAHQShqEAQaCyAHKQJUISEgByAJNgJUIAcgITcDWAwBCwJAIAJFBEAgDARAIAcoAlQhCQwDCyAHKAJYIQkMAQsCQAJAIAdBKGpBARAFIAkgDEVqaiICQQNGBEAgBygCVEF/aiICIAJFaiEJDAELIAJBAnQgB2ooAlQiCSAJRWohCSACQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAk2AlQLICCnIRQgCARAIAdBKGogCBAFIBRqIRQLIAggC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgDGohDAsgB0EoahAEGiAHIAcoAmggDGoiGSAUajYCaCAbIBogCSAZSxsoAgAhHCAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogByAHQShqIB9CGIinQf8BcRAIIB+nQf//A3FqNgJEIAcgB0HwAGogBEEDcUEEdGoiDSkDCCIdNwPIASAHIA0pAwAiHjcDwAECQAJAAkAgBygCvAEiDiAepyICaiIWIBNLDQAgAyAHKALEASIKIAJqIgtqIBhLDQAgEiADayALQSBqTw0BCyAHIAcpA8gBNwMQIAcgBykDwAE3AwggAyASIAdBCGogB0G8AWogEyAPIBUgERAeIQsMAQsgAiADaiEIIAMgDhAHIAJBEU8EQCADQRBqIQIDQCACIA5BEGoiDhAHIAJBEGoiAiAISQ0ACwsgCCAdpyIOayECIAcgFjYCvAEgDiAIIA9rSwRAIA4gCCAVa0sEQEFsIQsMAgsgESACIA9rIgJqIhYgCmogEU0EQCAIIBYgChAPGgwCCyAIIBZBACACaxAPIQggByACIApqIgo2AsQBIAggAmshCCAPIQILIA5BEE8EQCAIIApqIQoDQCAIIAIQByACQRBqIQIgCEEQaiIIIApJDQALDAELAkAgDkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgDkECdCIKQcAeaigCAGoiAhAXIAIgCkHgHmooAgBrIQIgBygCxAEhCgwBCyAIIAIQDAsgCkEJSQ0AIAggCmohCiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAKSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAKSQ0ACwsgCxADBEAgCyEQDAQFIA0gDDYCACANIBkgHGogCWs2AgwgDSAJNgIIIA0gFDYCBCAEQQFqIQQgAyALaiEDDAILAAsLIAQgBUgNASAEIBdrIQtBACEEA0AgCyAFSARAIAcgB0HwAGogC0EDcUEEdGoiAikDCCIdNwPIASAHIAIpAwAiHjcDwAECQAJAAkAgBygCvAEiDCAepyICaiIKIBNLDQAgAyAHKALEASIJIAJqIhBqIBhLDQAgEiADayAQQSBqTw0BCyAHIAcpA8gBNwMgIAcgBykDwAE3AxggAyASIAdBGGogB0G8AWogEyAPIBUgERAeIRAMAQsgAiADaiEIIAMgDBAHIAJBEU8EQCADQRBqIQIDQCACIAxBEGoiDBAHIAJBEGoiAiAISQ0ACwsgCCAdpyIGayECIAcgCjYCvAEgBiAIIA9rSwRAIAYgCCAVa0sEQEFsIRAMAgsgESACIA9rIgJqIgwgCWogEU0EQCAIIAwgCRAPGgwCCyAIIAxBACACaxAPIQggByACIAlqIgk2AsQBIAggAmshCCAPIQILIAZBEE8EQCAIIAlqIQYDQCAIIAIQByACQRBqIQIgCEEQaiIIIAZJDQALDAELAkAgBkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgBkECdCIGQcAeaigCAGoiAhAXIAIgBkHgHmooAgBrIQIgBygCxAEhCQwBCyAIIAIQDAsgCUEJSQ0AIAggCWohBiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAGSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAGSQ0ACwsgEBADDQMgC0EBaiELIAMgEGohAwwBCwsDQCAEQQNHBEAgACAEQQJ0IgJqQazQAWogAiAHaigCVDYCACAEQQFqIQQMAQsLIAcoArwBIQgLQbp/IRAgEyAIayIAIBIgA2tLDQAgAwR/IAMgCCAAEAsgAGoFQQALIAFrIRALIAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",vC=new WeakMap,gC=0,AC=function(){function r(e){return ue(this,r),(e=le(this,r,[e])).transcoderPath="",e.transcoderBinary=null,e.transcoderPending=null,e.workerPool=new nC,e.workerSourceURL="",e.workerConfig=null,"undefined"!=typeof MSC_TRANSCODER&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'),e}return v(r,kc),A(r,[{key:"setTranscoderPath",value:function(e){return this.transcoderPath=e,this}},{key:"setWorkerLimit",value:function(e){return this.workerPool.setWorkerLimit(e),this}},{key:"detectSupport",value:function(e){return this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},e.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}},{key:"init",value:function(){var e,t,i=this;return this.transcoderPending||((e=new Lc(this.manager)).setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials),e=e.loadAsync("basis_transcoder.js"),(t=new Lc(this.manager)).setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials),t=t.loadAsync("basis_transcoder.wasm"),this.transcoderPending=Promise.all([e,t]).then(function(e){var e=U(e,2),t=e[0],e=e[1],n=r.BasisWorker.toString(),t=["/* constants */","let _EngineFormat = "+JSON.stringify(r.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(r.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(r.BasisFormat),"/* basis_transcoder.js */",t,"/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");i.workerSourceURL=URL.createObjectURL(new Blob([t])),i.transcoderBinary=e,i.workerPool.setWorkerCreator(function(){var e=new Worker(i.workerSourceURL),t=i.transcoderBinary.slice(0);return e.postMessage({type:"init",config:i.workerConfig,transcoderBinary:t},[t]),e})}),0<gC&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),gC++),this.transcoderPending}},{key:"load",value:function(e,t,n,i){var r=this;if(null===this.workerConfig)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");var a=new Lc(this.manager);a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials),a.load(e,function(e){if(vC.has(e))return vC.get(e).promise.then(t).catch(i);r._createTexture(e).then(function(e){return t?t(e):null}).catch(i)},n,i)}},{key:"_createTextureFrom",value:function(e,t){var n=e.mipmaps,i=e.width,r=e.height,a=e.format,o=e.type,s=e.error,l=e.dfdTransferFn,e=e.dfdFlags;return"error"===o?Promise.reject(s):((o=1<t.layerCount?new CompressedArrayTexture(n,i,r,t.layerCount,a,At):new Nl(n,i,r,a,At)).minFilter=1===n.length?N:vt,o.magFilter=N,o.generateMipmaps=!1,o.needsUpdate=!0,o.encoding=2===l?On:Fn,o.premultiplyAlpha=!!(1&e),o)}},{key:"_createTexture",value:(t=J(X().mark(function e(t){var n,i,r,a,o=this,s=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=1<s.length&&void 0!==s[1]?s[1]:{},0!==(i=function(e){if((n=new Uint8Array(e.buffer,e.byteOffset,sC.length))[0]!==sC[0]||n[1]!==sC[1]||n[2]!==sC[2]||n[3]!==sC[3]||n[4]!==sC[4]||n[5]!==sC[5]||n[6]!==sC[6]||n[7]!==sC[7]||n[8]!==sC[8]||n[9]!==sC[9]||n[10]!==sC[10]||n[11]!==sC[11])throw new Error("Missing KTX 2.0 identifier.");for(var t=new aC,n=17*Uint32Array.BYTES_PER_ELEMENT,i=new oC(e,sC.length,n,!0),r=(t.vkFormat=i._nextUint32(),t.typeSize=i._nextUint32(),t.pixelWidth=i._nextUint32(),t.pixelHeight=i._nextUint32(),t.pixelDepth=i._nextUint32(),t.layerCount=i._nextUint32(),t.faceCount=i._nextUint32(),i._nextUint32()),a=(t.supercompressionScheme=i._nextUint32(),i._nextUint32()),o=i._nextUint32(),s=i._nextUint32(),l=i._nextUint32(),u=i._nextUint64(),i=i._nextUint64(),c=new oC(e,sC.length+n,3*r*8,!0),d=0;d<r;d++)t.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+c._nextUint64(),c._nextUint64()),uncompressedByteLength:c._nextUint64()});for(var h=new oC(e,a,o,!0),p={vendorId:h._skip(4)._nextUint16(),descriptorType:h._nextUint16(),versionNumber:h._nextUint16(),descriptorBlockSize:h._nextUint16(),colorModel:h._nextUint8(),colorPrimaries:h._nextUint8(),transferFunction:h._nextUint8(),flags:h._nextUint8(),texelBlockDimension:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],bytesPlane:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],samples:[]},f=(p.descriptorBlockSize/4-6)/4,m=0;m<f;m++){var v={bitOffset:h._nextUint16(),bitLength:h._nextUint8(),channelType:h._nextUint8(),samplePosition:[h._nextUint8(),h._nextUint8(),h._nextUint8(),h._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&v.channelType?(v.sampleLower=h._nextInt32(),v.sampleUpper=h._nextInt32()):(v.sampleLower=h._nextUint32(),v.sampleUpper=h._nextUint32()),p.samples[m]=v}t.dataFormatDescriptor.length=0,t.dataFormatDescriptor.push(p);for(var g=new oC(e,s,l,!0);g._offset<l;){var A=g._nextUint32(),y=g._scan(A),w=lC(y),A=g._scan(A-y.byteLength);t.keyValue[w]=w.match(/^ktx/i)?lC(A):A,g._offset%4&&g._skip(4-g._offset%4)}if(!(i<=0)){for(var b=new oC(e,u,i,!0),n=b._nextUint16(),a=b._nextUint16(),o=b._nextUint32(),s=b._nextUint32(),i=b._nextUint32(),x=b._nextUint32(),E=[],C=0;C<r;C++)E.push({imageFlags:b._nextUint32(),rgbSliceByteOffset:b._nextUint32(),rgbSliceByteLength:b._nextUint32(),alphaSliceByteOffset:b._nextUint32(),alphaSliceByteLength:b._nextUint32()});var u=u+b._offset,B=u+o,M=B+s,S=M+i,u=new Uint8Array(e.buffer,e.byteOffset+u,o),o=new Uint8Array(e.buffer,e.byteOffset+B,s),B=new Uint8Array(e.buffer,e.byteOffset+M,i),s=new Uint8Array(e.buffer,e.byteOffset+S,x);t.globalData={endpointCount:n,selectorCount:a,imageDescs:E,endpointsData:u,selectorsData:o,tablesData:B,extendedData:s}}return t}(new Uint8Array(t))).vkFormat)return e.abrupt("return",function(){return xC.apply(this,arguments)}(i));e.next=4;break;case 4:return r=n,a=this.init().then(function(){return o.workerPool.postMessage({type:"transcode",buffer:t,taskConfig:r},[t])}).then(function(e){return o._createTextureFrom(e.data,i)}),vC.set(t,{promise:a}),e.abrupt("return",a);case 8:case"end":return e.stop()}},e,this)})),function(e){return t.apply(this,arguments)})},{key:"dispose",value:function(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),gC--,this}}]);var t}(),yC=(AC.BasisFormat={ETC1S:0,UASTC_4x4:1},AC.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16},AC.EngineFormat={RGBAFormat:It,RGBA_ASTC_4x4_Format:tn,RGBA_BPTC_Format:vn,RGBA_ETC2_EAC_Format:en,RGBA_PVRTC_4BPPV1_Format:Xt,RGBA_S3TC_DXT5_Format:Jt,RGB_ETC1_Format:Zt,RGB_ETC2_Format:$t,RGB_PVRTC_4BPPV1_Format:qt,RGB_S3TC_DXT1_Format:Qt},AC.BasisWorker=function(){var A,n,y,w=_EngineFormat,b=_TranscoderFormat,x=_BasisFormat;self.addEventListener("message",function(e){var t,c=e.data;switch(c.type){case"init":A=c.config,t=c.transcoderBinary,n=new Promise(function(e){y={wasmBinary:t,onRuntimeInitialized:e},BASIS(y)}).then(function(){y.initializeBasis(),void 0===y.KTX2File&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":n.then(function(){try{for(var e=function(e){var t=new y.KTX2File(new Uint8Array(e));function n(){t.close(),t.delete()}if(!t.isValid())throw n(),new Error("THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file");var e=t.isUASTC()?x.UASTC_4x4:x.ETC1S,i=t.getWidth(),r=t.getHeight(),a=t.getLayers()||1,o=t.getLevels(),s=t.getHasAlpha(),l=t.getDFDTransferFunc(),u=t.getDFDFlags(),e=function(e,t,n,i){for(var r,a,o=e===x.ETC1S?E:C,s=0;s<o.length;s++){var l=o[s];if(A[l.if]&&(l.basisFormat.includes(e)&&!(i&&l.transcoderFormat.length<2)&&(!l.needsPowerOfTwo||B(t)&&B(n))))return r=l.transcoderFormat[i?1:0],a=l.engineFormat[i?1:0],{transcoderFormat:r,engineFormat:a}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),r=b.RGBA32,a=w.RGBAFormat,{transcoderFormat:r,engineFormat:a}}(e,i,r,s),c=e.transcoderFormat,e=e.engineFormat;if(!i||!r||!o)throw n(),new Error("THREE.KTX2Loader:\tInvalid texture");if(!t.startTranscoding())throw n(),new Error("THREE.KTX2Loader: .startTranscoding failed");for(var d=[],h=0;h<o;h++){for(var p=[],f=void 0,m=void 0,v=0;v<a;v++){var g=t.getImageLevelInfo(h,v,0),g=(f=g.origWidth,m=g.origHeight,new Uint8Array(t.getImageTranscodedSizeInBytes(h,v,0,c)));if(!t.transcodeImage(g,h,v,0,c,0,-1,-1))throw n(),new Error("THREE.KTX2Loader: .transcodeImage failed.");p.push(g)}d.push({data:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n+=r.byteLength}}catch(e){i.e(e)}finally{i.f()}var a,o=new Uint8Array(n),s=0,l=q(e);try{for(l.s();!(a=l.n()).done;){var u=a.value;o.set(u,s),s+=u.byteLength}}catch(e){l.e(e)}finally{l.f()}return o}(p),width:f,height:m})}return n(),{width:i,height:r,hasAlpha:s,mipmaps:d,format:e,dfdTransferFn:l,dfdFlags:u}}(c.buffer),t=e.width,n=e.height,i=e.hasAlpha,r=e.mipmaps,a=e.format,o=e.dfdTransferFn,s=e.dfdFlags,l=[],u=0;u<r.length;++u)l.push(r[u].data.buffer);self.postMessage({type:"transcode",id:c.id,width:t,height:n,hasAlpha:i,mipmaps:r,format:a,dfdTransferFn:o,dfdFlags:s},l)}catch(e){console.error(e),self.postMessage({type:"error",id:c.id,error:e.message})}})}});var e=[{if:"astcSupported",basisFormat:[x.UASTC_4x4],transcoderFormat:[b.ASTC_4x4,b.ASTC_4x4],engineFormat:[w.RGBA_ASTC_4x4_Format,w.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.BC7_M5,b.BC7_M5],engineFormat:[w.RGBA_BPTC_Format,w.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.BC1,b.BC3],engineFormat:[w.RGB_S3TC_DXT1_Format,w.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.ETC1,b.ETC2],engineFormat:[w.RGB_ETC2_Format,w.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.ETC1],engineFormat:[w.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.PVRTC1_4_RGB,b.PVRTC1_4_RGBA],engineFormat:[w.RGB_PVRTC_4BPPV1_Format,w.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],E=e.sort(function(e,t){return e.priorityETC1S-t.priorityETC1S}),C=e.sort(function(e,t){return e.priorityUASTC-t.priorityUASTC});function B(e){return e<=2||0==(e&e-1)&&0!==e}},Y(Y(Y(Y(Y(Y(Y(Y(Y(Y(Gh={},109,It),97,It),37,It),43,It),103,zt),83,zt),16,zt),22,zt),100,Ut),76,Ut),Y(Y(Gh,15,Ut),9,Ut)),wC=(Y(Y(Y(Y(Y(Y(Y(Y(Y(Y(zu={},109,Ct),97,Bt),37,At),43,At),103,Ct),83,Bt),16,At),22,At),100,Ct),76,Bt),Y(Y(zu,15,At),9,At)),bC=Y(Y(Y({},43,On),22,On),15,On);function xC(){return(xC=J(X().mark(function e(t){var n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.vkFormat,i=t.pixelWidth,r=t.pixelHeight,a=t.pixelDepth,void 0===yC[n])throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");e.next=3;break;case 3:o=t.levels[0],t.supercompressionScheme!==iC?e.next=8:(s=o.levelData,e.next=16);break;case 8:if(t.supercompressionScheme===rC)return hC=hC||new Promise(function(){var t=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=new fC,e.next=3,n.init();case 3:t(n);case 4:case"end":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}()),e.next=12,hC;e.next=15;break;case 12:s=e.sent.decode(o.levelData,o.uncompressedByteLength),e.next=16;break;case 15:throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");case 16:return l=wC[n]===Ct?new Float32Array(s.buffer,s.byteOffset,s.byteLength/Float32Array.BYTES_PER_ELEMENT):wC[n]===Bt?new Uint16Array(s.buffer,s.byteOffset,s.byteLength/Uint16Array.BYTES_PER_ELEMENT):s,(l=0===a?new Ea(l,i,r):new Data3DTexture(l,i,r,a)).type=wC[n],l.format=yC[n],l.encoding=bC[n]||Fn,l.needsUpdate=!0,e.abrupt("return",Promise.resolve(l));case 23:case"end":return e.stop()}},e)}))).apply(this,arguments)}rh=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]),MC=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]);var EC,CC,BC,MC,SC="object"!==("undefined"==typeof WebAssembly?"undefined":O(WebAssembly))?{supported:!1}:(t="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",WebAssembly.validate(rh)&&(t="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",console.log("Warning: meshopt_decoder is using experimental SIMD support")),rh=WebAssembly.instantiate(function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=96<i?i-71:64<i?i-65:47<i?i+4:46<i?63:62}for(var r=0,n=0;n<e.length;++n)t[r++]=t[n]<60?MC[t[n]]:64*(t[n]-60)+t[++n];return t.buffer.slice(0,r)}(t),{}).then(function(e){(EC=e.instance).exports.__wasm_call_ctors()}),CC={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},BC={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},{ready:rh,supported:!0,decodeVertexBuffer:function(e,t,n,i,r){TC(EC.exports.meshopt_decodeVertexBuffer,e,t,n,i,EC.exports[CC[r]])},decodeIndexBuffer:function(e,t,n,i){TC(EC.exports.meshopt_decodeIndexBuffer,e,t,n,i)},decodeIndexSequence:function(e,t,n,i){TC(EC.exports.meshopt_decodeIndexSequence,e,t,n,i)},decodeGltfBuffer:function(e,t,n,i,r,a){TC(EC.exports[BC[r]],e,t,n,i,EC.exports[CC[a]])}});function TC(e,t,n,i,r,a){var o=EC.exports.sbrk,s=n+3&-4,l=o(s*i),u=o(r.length),c=new Uint8Array(EC.exports.memory.buffer),e=(c.set(r,u),e(l,n,i,u,r.length));if(0==e&&a&&a(l,s,i),t.set(c.subarray(l,l+n*i)),o(l-o(0)),0!=e)throw new Error("Malformed buffer data: "+e)}function _C(e){Oc.call(this,e)}_C.prototype=Object.assign(Object.create(Oc.prototype),{constructor:_C,parse:function(e,t){var n={mipmaps:[],width:0,height:0,format:null,mipmapCount:1};function i(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var r=i("DXT1"),a=i("DXT3"),o=i("DXT5"),s=i("ETC1"),l=new Int32Array(e,0,31);if(542327876!==l[0])console.error("THREE.DDSLoader.parse: Invalid magic number in DDS header.");else if(4&!l[20])console.error("THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.");else{var u,c=l[21],d=!1;switch(c){case r:u=8,n.format=Qt;break;case a:u=16,n.format=Wt;break;case o:u=16,n.format=Jt;break;case s:u=8,n.format=Zt;break;default:if(!(32===l[22]&&16711680&l[23]&&65280&l[24]&&255&l[25]&&4278190080&l[26]))return console.error("THREE.DDSLoader.parse: Unsupported FourCC code ",String.fromCharCode(255&c,c>>8&255,c>>16&255,c>>24&255)),n;d=!0,u=64,n.format=It}n.mipmapCount=1,131072&l[2]&&!1!==t&&(n.mipmapCount=Math.max(1,l[7]));r=l[28];if(n.isCubemap=!!(512&r),!n.isCubemap||1024&r&&2048&r&&4096&r&&8192&r&&16384&r&&32768&r){n.width=l[4],n.height=l[3];for(var h=l[1]+4,p=n.isCubemap?6:1,f=0;f<p;f++)for(var m=n.width,v=n.height,g=0;g<n.mipmapCount;g++){d?A=(y=function(e,t,n,i){for(var r=n*i*4,a=new Uint8Array(e,t,r),o=new Uint8Array(r),s=0,l=0,u=0;u<i;u++)for(var c=0;c<n;c++){var d=a[l],h=a[++l],p=a[++l],f=a[++l];l++,o[s]=p,o[++s]=h,o[++s]=d,o[++s]=f,s++}return o}(e,h,m,v)).length:(A=Math.max(4,m)/4*Math.max(4,v)/4*u,y=new Uint8Array(e,h,A));var A,y,w={data:y,width:m,height:v};n.mipmaps.push(w),h+=A,m=Math.max(m>>1,1),v=Math.max(v>>1,1)}}else console.error("THREE.DDSLoader.parse: Incomplete cubemap faces")}return n}});var PC={},DC=R.prototype.setValues,IC=(R.prototype.setValues=function(e){return DC.call(this,e)},function(){function i(e,t,n){return ue(this,i),(e=le(this,i,[e])).dracoLoader=new tC,e.ktx2Loader=new AC,e.meshoptDecoder=SC,e.ddsLoader=new _C,e.dracoLoader.setDecoderPath(n+"three.js/loaders/draco/"),e.ktx2Loader.setTranscoderPath(n+"three.js/loaders/basis/").detectSupport(t),e.pluginCallbacks=[],e.register(function(e){return new UC(e)}),e.register(function(e){return new jC(e)}),e.register(function(e){return new WC(e)}),e.register(function(e){return new zC(e)}),e.register(function(e){return new GC(e)}),e.register(function(e){return new HC(e)}),e.register(function(e){return new VC(e)}),e.register(function(e){return new OC(e)}),e.register(function(e){return new QC(e)}),e.register(function(e){return new NC(e)}),e.register(function(e){return new LC(e)}),e.register(function(e){return new JC(e)}),e.register(function(e){return new qC(e)}),e}return v(i,kc),A(i,[{key:"load",value:function(t,n,e,i){function r(e){i?i(e):console.error(e),a.manager.itemError(t),a.manager.itemEnd(t)}var a=this,o=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:Md.extractUrlBase(t),s=(this.manager.itemStart(t),new Lc(this.manager));s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(t,function(e){try{a.parse(e,o,function(e){n(e),a.manager.itemEnd(t)},r)}catch(e){r(e)}},e,r)}},{key:"setDRACOLoader",value:function(e){return this.dracoLoader=e,this}},{key:"setDDSLoader",value:function(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}},{key:"setKTX2Loader",value:function(e){return this.ktx2Loader=e,this}},{key:"setMeshoptDecoder",value:function(e){return this.meshoptDecoder=e,this}},{key:"register",value:function(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}},{key:"unregister",value:function(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}},{key:"parse",value:function(e,t,n,i){var r,a={},o={};if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(Md.decodeText(new Uint8Array(e,0,4))===YC){try{a[RC.KHR_BINARY_GLTF]=new ZC(e)}catch(e){return void(i&&i(e))}r=JSON.parse(a[RC.KHR_BINARY_GLTF].content)}else r=JSON.parse(Md.decodeText(new Uint8Array(e)));else r=e;if(void 0===r.asset||r.asset.version[0]<2)i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));else{var s=new wB(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(var l=0;l<this.pluginCallbacks.length;l++){var u=this.pluginCallbacks[l](s);a[(o[u.name]=u).name]=!0}if(r.extensionsUsed)for(var c=0;c<r.extensionsUsed.length;++c){var d=r.extensionsUsed[c],h=r.extensionsRequired||[];switch(d){case RC.KHR_MATERIALS_UNLIT:a[d]=new FC;break;case RC.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:a[d]=new nB;break;case RC.KHR_DRACO_MESH_COMPRESSION:a[d]=new $C(r,this.dracoLoader);break;case RC.KHR_TEXTURE_TRANSFORM:a[d]=new eB;break;case RC.KHR_MESH_QUANTIZATION:a[d]=new iB;break;default:0<=h.indexOf(d)&&void 0===o[d]&&(PC[d]||(console.warn('GLTFLoader: Unknown extension "'+d+'".',"使用默认的KHR_materials_unlit材质"),PC[d]=1),r.extensionsRequired="KHR_materials_unlit",r.materials=[{extensions:{KHR_materials_unlit:{}},pbrMetallicRoughness:{baseColorFactor:[1,1,1,1],baseColorTexture:{index:0,texCoord:0},metallicFactor:0,roughnessFactor:.5}}],a[r.extensionsRequired]=new FC)}}s.setExtensions(a),s.setPlugins(o),s.parse(n,i)}}},{key:"parseAsync",value:function(n,i){var r=this;return new Promise(function(e,t){r.parse(n,i,e,t)})}}])}());function kC(){var n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}var RC={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_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",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_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_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},LC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}},[{key:"_markDefs",value:function(){for(var e=this.parser,t=this.parser.json.nodes||[],n=0,i=t.length;n<i;n++){var r=t[n];r.extensions&&r.extensions[this.name]&&void 0!==r.extensions[this.name].light&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}},{key:"_loadLight",value:function(e){var t=this.parser,n="light:"+e,i=t.cache.get(n);if(!i){var r,a=t.json,o=((a.extensions&&a.extensions[this.name]||{}).lights||[])[e],s=new Se(16777215),l=(void 0!==o.color&&s.fromArray(o.color),void 0!==o.range?o.range:0);switch(o.type){case"directional":(r=new wd(s)).target.position.set(0,0,-1),r.add(r.target);break;case"point":(r=new gd(s)).distance=l;break;case"spot":(r=new md(s)).distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,r.angle=o.spot.outerConeAngle,r.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,r.target.position.set(0,0,-1),r.add(r.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}r.position.set(0,0,0),r.decay=2,void 0!==o.intensity&&(r.intensity=o.intensity),r.name=t.createUniqueName(o.name||"light_"+e),i=Promise.resolve(r),t.cache.add(n,i)}return i}},{key:"createNodeAttachment",value:function(e){var t=this,n=this.parser,e=n.json.nodes[e],i=(e.extensions&&e.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}}])}(),FC=function(){return A(function e(){ue(this,e),this.name=RC.KHR_MATERIALS_UNLIT},[{key:"getMaterialType",value:function(){return R}},{key:"extendParams",value:function(e,t,n){var i,r=[],t=(e.color=new Se(1,1,1),e.opacity=1,t.pbrMetallicRoughness);return t&&(Array.isArray(t.baseColorFactor)&&(i=t.baseColorFactor,e.color.fromArray(i),e.opacity=i[3]),void 0!==t.baseColorTexture)&&r.push(n.assignTexture(e,"map",t.baseColorTexture,On)),Promise.all(r)}}])}(),OC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_EMISSIVE_STRENGTH},[{key:"extendMaterialParams",value:function(e,t){var n=this.parser,e=n.json.materials[e]||n.json.materials;return e.extensions&&e.extensions[this.name]&&void 0!==(n=e.extensions[this.name].emissiveStrength)&&(t.emissiveIntensity=n),Promise.resolve()}}])}(),UC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_CLEARCOAT},[{key:"getMaterialType",value:function(e){var t=this.parser,e=t.json.materials[e]||t.json.materials;return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).clearcoatFactor&&(t.clearcoat=e.clearcoatFactor),void 0!==e.clearcoatTexture&&n.push(i.assignTexture(t,"clearcoatMap",e.clearcoatTexture)),void 0!==e.clearcoatRoughnessFactor&&(t.clearcoatRoughness=e.clearcoatRoughnessFactor),void 0!==e.clearcoatRoughnessTexture&&n.push(i.assignTexture(t,"clearcoatRoughnessMap",e.clearcoatRoughnessTexture)),void 0!==e.clearcoatNormalTexture&&(n.push(i.assignTexture(t,"clearcoatNormalMap",e.clearcoatNormalTexture)),void 0!==e.clearcoatNormalTexture.scale)&&(i=e.clearcoatNormalTexture.scale,t.clearcoatNormalScale=new Re(i,i)),Promise.all(n)):Promise.resolve()}}])}(),NC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_IRIDESCENCE},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).iridescenceFactor&&(t.iridescence=e.iridescenceFactor),void 0!==e.iridescenceTexture&&n.push(i.assignTexture(t,"iridescenceMap",e.iridescenceTexture)),void 0!==e.iridescenceIor&&(t.iridescenceIOR=e.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==e.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=e.iridescenceThicknessMinimum),void 0!==e.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=e.iridescenceThicknessMaximum),void 0!==e.iridescenceThicknessTexture&&n.push(i.assignTexture(t,"iridescenceThicknessMap",e.iridescenceThicknessTexture)),Promise.all(n)):Promise.resolve()}}])}(),zC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_SHEEN},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],t.sheenColor=new Se(0,0,0),t.sheenRoughness=0,t.sheen=1,void 0!==(e=e.extensions[this.name]).sheenColorFactor&&t.sheenColor.fromArray(e.sheenColorFactor),void 0!==e.sheenRoughnessFactor&&(t.sheenRoughness=e.sheenRoughnessFactor),void 0!==e.sheenColorTexture&&n.push(i.assignTexture(t,"sheenColorMap",e.sheenColorTexture,On)),void 0!==e.sheenRoughnessTexture&&n.push(i.assignTexture(t,"sheenRoughnessMap",e.sheenRoughnessTexture)),Promise.all(n)):Promise.resolve()}}])}(),GC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_TRANSMISSION},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).transmissionFactor&&(t.transmission=e.transmissionFactor),void 0!==e.transmissionTexture&&n.push(i.assignTexture(t,"transmissionMap",e.transmissionTexture)),Promise.all(n)):Promise.resolve()}}])}(),HC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_VOLUME},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],e=e.extensions[this.name],t.thickness=void 0!==e.thicknessFactor?e.thicknessFactor:0,void 0!==e.thicknessTexture&&n.push(i.assignTexture(t,"thicknessMap",e.thicknessTexture)),t.attenuationDistance=e.attenuationDistance||1/0,i=e.attenuationColor||[1,1,1],t.attenuationColor=new Se(i[0],i[1],i[2]),Promise.all(n)):Promise.resolve()}}])}(),VC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_IOR},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]&&(e=e.extensions[this.name],t.ior=void 0!==e.ior?e.ior:1.5),Promise.resolve()}}])}(),QC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_MATERIALS_SPECULAR},[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?sc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i,r=this.parser,e=r.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],e=e.extensions[this.name],t.specularIntensity=void 0!==e.specularFactor?e.specularFactor:1,void 0!==e.specularTexture&&n.push(r.assignTexture(t,"specularIntensityMap",e.specularTexture)),i=e.specularColorFactor||[1,1,1],t.specularColor=new Se(i[0],i[1],i[2]),void 0!==e.specularColorTexture&&n.push(r.assignTexture(t,"specularColorMap",e.specularColorTexture,On)),Promise.all(n)):Promise.resolve()}}])}(),jC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.KHR_TEXTURE_BASISU},[{key:"loadTexture",value:function(e){var t=this.parser,n=t.json,i=n.textures[e];if(i.extensions&&i.extensions[this.name]){var i=i.extensions[this.name],r=t.options.ktx2Loader;if(r)return t.loadTextureImage(e,i.source,r);if(n.extensionsRequired&&0<=n.extensionsRequired.indexOf(this.name))throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures")}return null}}])}(),WC=function(){return A(function e(t){ue(this,e),this.parser=t,this.name=RC.EXT_TEXTURE_WEBP,this.isSupported=null},[{key:"loadTexture",value:function(t){var n,i,r=this.name,a=this.parser,o=a.json,e=o.textures[t];return e.extensions&&e.extensions[r]?(n=e.extensions[r],e=o.images[n.source],i=a.textureLoader,e.uri&&null!==(e=a.options.manager.getHandler(e.uri))&&(i=e),this.detectSupport().then(function(e){if(e)return a.loadTextureImage(t,n.source,i);if(o.extensionsRequired&&0<=o.extensionsRequired.indexOf(r))throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(t)})):null}},{key:"detectSupport",value:function(){return this.isSupported||(this.isSupported=new Promise(function(e){var t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}])}(),JC=function(){return A(function e(t){ue(this,e),this.name=RC.EXT_MESHOPT_COMPRESSION,this.parser=t},[{key:"loadBufferView",value:function(e){var t=this.parser.json,e=t.bufferViews[e];if(e.extensions&&e.extensions[this.name]){var o=e.extensions[this.name],e=this.parser.getDependency("buffer",o.buffer),s=this.parser.options.meshoptDecoder;if(s&&s.supported)return e.then(function(e){var t=o.byteOffset||0,n=o.byteLength||0,i=o.count,r=o.byteStride,a=new Uint8Array(e,t,n);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(i,r,a,o.mode,o.filter).then(function(e){return e.buffer}):s.ready.then(function(){var e=new ArrayBuffer(i*r);return s.decodeGltfBuffer(new Uint8Array(e),i,r,a,o.mode,o.filter),e})});if(t.extensionsRequired&&0<=t.extensionsRequired.indexOf(this.name))throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files")}return null}}])}(),qC=function(){return A(function e(t){ue(this,e),this.name=RC.EXT_MESH_GPU_INSTANCING,this.parser=t},[{key:"createNodeMesh",value:function(e){var m=this,t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||void 0===n.mesh)return null;var i,r=q(t.meshes[n.mesh].primitives);try{for(r.s();!(i=r.n()).done;){var a=i.value;if(a.mode!==sB.TRIANGLES&&a.mode!==sB.TRIANGLE_STRIP&&a.mode!==sB.TRIANGLE_FAN&&void 0!==a.mode)return null}}catch(e){r.e(e)}finally{r.f()}var o,s=n.extensions[this.name].attributes,l=[],v={};for(o in s)!function(t){l.push(m.parser.getDependency("accessor",s[t]).then(function(e){return v[t]=e,v[t]}))}(o);return l.length<1?null:(l.push(this.parser.createNodeMesh(e)),Promise.all(l).then(function(e){var t,n=e.pop(),i=n.isGroup?n.children:[n],r=e[0].count,a=[],o=q(i);try{for(o.s();!(t=o.n()).done;){for(var s,l=t.value,u=new Me,c=new Oe,d=new ii,h=new Oe(1,1,1),p=new yl(l.geometry,l.material,r),f=0;f<r;f++)v.TRANSLATION&&c.fromBufferAttribute(v.TRANSLATION,f),v.ROTATION&&d.fromBufferAttribute(v.ROTATION,f),v.SCALE&&h.fromBufferAttribute(v.SCALE,f),p.setMatrixAt(f,u.compose(c,d,h));for(s in v)"TRANSLATION"!==s&&"ROTATION"!==s&&"SCALE"!==s&&l.geometry.setAttribute(s,v[s]);Z.prototype.copy.call(p,l),p.frustumCulled=!1,m.parser.assignFinalMaterial(p),a.push(p)}}catch(e){o.e(e)}finally{o.f()}return n.isGroup?(n.clear(),n.add.apply(n,a),n):a[0]}))}}])}(),YC="glTF",XC=1313821514,KC=5130562,ZC=A(function e(t){ue(this,e),this.name=RC.KHR_BINARY_GLTF,this.content=null,this.body=null;var n=new DataView(t,0,12);if(this.header={magic:Md.decodeText(new Uint8Array(t.slice(0,4))),version:n.getUint32(4,!0),length:n.getUint32(8,!0)},this.header.magic!==YC)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");for(var i=this.header.length-12,r=new DataView(t,12),a=0;a<i;){var o,s=r.getUint32(a,!0),l=(a+=4,r.getUint32(a,!0));a+=4,l===XC?(o=new Uint8Array(t,12+a,s),this.content=Md.decodeText(o)):l===KC&&(this.body=t.slice(o=12+a,o+s)),a+=s}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}),$C=function(){return A(function e(t,n){if(ue(this,e),!n)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=RC.KHR_DRACO_MESH_COMPRESSION,this.json=t,this.dracoLoader=n,this.dracoLoader.preload()},[{key:"decodePrimitive",value:function(e,t){var n,i,r=this.json,a=this.dracoLoader,o=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,l={},u={},c={};for(n in s){var d=cB[n]||n.toLowerCase();l[d]=s[n]}for(i in e.attributes){var h,p,f=cB[i]||i.toLowerCase();void 0!==s[i]&&(h=r.accessors[e.attributes[i]],p=lB[h.componentType],c[f]=p.name,u[f]=!0===h.normalized)}return t.getDependency("bufferView",o).then(function(e){return new Promise(function(i){a.decodeDracoFile(e,function(e){for(var t in e.attributes){var n=e.attributes[t],t=u[t];void 0!==t&&(n.normalized=t)}i(e)},l,c)})})}}])}(),eB=function(){return A(function e(){ue(this,e),this.name=RC.KHR_TEXTURE_TRANSFORM},[{key:"extendTexture",value:function(e,t){return void 0!==t.texCoord&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}])}(),tB=function(){function l(e){ue(this,l),(t=le(this,l)).isGLTFSpecularGlossinessMaterial=!0;var t,n=["#ifdef USE_SPECULARMAP","\tuniform sampler2D specularMap;","#endif"].join("\n"),i=["#ifdef USE_GLOSSINESSMAP","\tuniform sampler2D glossinessMap;","#endif"].join("\n"),r=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP","\tvec4 texelSpecular = texture2D( specularMap, vUv );","\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture","\tspecularFactor *= texelSpecular.rgb;","#endif"].join("\n"),a=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP","\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );","\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture","\tglossinessFactor *= texelGlossiness.a;","#endif"].join("\n"),o=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.specularColor = specularFactor;"].join("\n"),s={specular:{value:(new Se).setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};return t._extraUniforms=s,t.onBeforeCompile=function(e){for(var t in s)e.uniforms[t]=s[t];e.fragmentShader=e.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",n).replace("#include <metalnessmap_pars_fragment>",i).replace("#include <roughnessmap_fragment>",r).replace("#include <metalnessmap_fragment>",a).replace("#include <lights_physical_fragment>",o)},Object.defineProperties(t,{specular:{get:function(){return s.specular.value},set:function(e){s.specular.value=e}},specularMap:{get:function(){return s.specularMap.value},set:function(e){(s.specularMap.value=e)?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return s.glossiness.value},set:function(e){s.glossiness.value=e}},glossinessMap:{get:function(){return s.glossinessMap.value},set:function(e){(s.glossinessMap.value=e)?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete t.metalness,delete t.roughness,delete t.metalnessMap,delete t.roughnessMap,t.setValues(e),t}return v(l,oc),A(l,[{key:"copy",value:function(e){return I(l,"copy",this,3)([e]),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}])}(),nB=function(){return A(function e(){ue(this,e),this.name=RC.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity"]},[{key:"getMaterialType",value:function(){return tB}},{key:"extendParams",value:function(e,t,n){var i,t=t.extensions[this.name],r=(e.color=new Se(1,1,1),e.opacity=1,[]);return Array.isArray(t.diffuseFactor)&&(i=t.diffuseFactor,e.color.fromArray(i),e.opacity=i[3]),void 0!==t.diffuseTexture&&r.push(n.assignTexture(e,"map",t.diffuseTexture,On)),e.emissive=new Se(0,0,0),e.glossiness=void 0!==t.glossinessFactor?t.glossinessFactor:1,e.specular=new Se(1,1,1),Array.isArray(t.specularFactor)&&e.specular.fromArray(t.specularFactor),void 0!==t.specularGlossinessTexture&&(i=t.specularGlossinessTexture,r.push(n.assignTexture(e,"glossinessMap",i)),r.push(n.assignTexture(e,"specularMap",i,On))),Promise.all(r)}},{key:"createMaterial",value:function(e){var t=new tB(e);return t.fog=!0,t.color=e.color,t.map=void 0===e.map?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=void 0===e.aoMap?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=void 0===e.emissiveIntensity?1:e.emissiveIntensity,t.emissiveMap=void 0===e.emissiveMap?null:e.emissiveMap,t.bumpMap=void 0===e.bumpMap?null:e.bumpMap,t.bumpScale=1,t.normalMap=void 0===e.normalMap?null:e.normalMap,t.normalMapType=Nn,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=void 0===e.specularMap?null:e.specularMap,t.specular=e.specular,t.glossinessMap=void 0===e.glossinessMap?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=void 0===e.envMap?null:e.envMap,t.envMapIntensity=1,t}}])}(),iB=A(function e(){ue(this,e),this.name=RC.KHR_MESH_QUANTIZATION}),rB=function(){function r(e,t,n,i){return ue(this,r),le(this,r,[e,t,n,i])}return v(r,vc),A(r,[{key:"copySampleValue_",value:function(e){for(var t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i,a=0;a!==i;a++)t[a]=n[r+a];return t}},{key:"interpolate_",value:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,u=i-t,i=(n-t)/u,n=i*i,t=n*i,c=e*l,d=c-l,h=-2*t+3*n,p=t-n,f=1-h,m=p-n+i,v=0;v!==o;v++){var g=a[d+v+o],A=a[d+v+s]*u,y=a[c+v+o],w=a[c+v]*u;r[v]=f*g+m*A+h*y+p*w}return r}}])}(),aB=new ii,oB=function(){function r(){return ue(this,r),le(this,r,arguments)}return v(r,rB),A(r,[{key:"interpolate_",value:function(e,t,n,i){e=I(r,"interpolate_",this,3)([e,t,n,i]);return aB.fromArray(e).normalize().toArray(e),e}}])}(),sB={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},lB={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},uB={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},cB={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},dB={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},hB={CUBICSPLINE:void 0,LINEAR:In,STEP:Dn},pB="OPAQUE",fB="MASK",mB="BLEND";function vB(e,t,n){for(var i in n.extensions)void 0===e[i]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function gB(e,t){void 0!==t.extras&&("object"===O(t.extras)?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function AB(e){for(var t="",n=Object.keys(e).sort(),i=0,r=n.length;i<r;i++)t+=n[i]+":"+e[n[i]]+";";return t}function yB(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}var wB=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};ue(this,e),this.json=t,this.extensions={},this.plugins={},this.options=n,this.cache=new kC,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={},/^((?!chrome|android).)*safari/i.test(navigator.userAgent),-1<navigator.userAgent.indexOf("Firefox")&&navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1];this.textureLoader=new Gc(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Lc(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)},[{key:"setExtensions",value:function(e){this.extensions=e}},{key:"setPlugins",value:function(e){this.plugins=e}},{key:"parse",value:function(n,e){var i=this,r=this.json,a=this.extensions;this.cache.removeAll(),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([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(e){var t={scene:e[0][r.scene||0],scenes:e[0],animations:e[1],cameras:e[2],asset:r.asset,parser:i,userData:{}};vB(a,t,r),gB(t,r),Promise.all(i._invokeAll(function(e){return e.afterRoot&&e.afterRoot(t)})).then(function(){n(t)})}).catch(e)}},{key:"_markDefs",value:function(){for(var e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[],i=0,r=t.length;i<r;i++)for(var a=t[i].joints,o=0,s=a.length;o<s;o++)e[a[o]].isBone=!0;for(var l=0,u=e.length;l<u;l++){var c=e[l];void 0!==c.mesh&&(this._addNodeRef(this.meshCache,c.mesh),void 0!==c.skin)&&(n[c.mesh].isSkinnedMesh=!0),void 0!==c.camera&&this._addNodeRef(this.cameraCache,c.camera)}}},{key:"_addNodeRef",value:function(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}},{key:"_getNodeRef",value:function(e,t,n){var i,l,u=this;return e.refs[t]<=1?n:(i=n.clone(),(l=function(e,t){var n,i=u.associations.get(e),r=(null!=i&&u.associations.set(t,i),q(e.children.entries()));try{for(r.s();!(n=r.n()).done;){var a=U(n.value,2),o=a[0],s=a[1];l(s,t.children[o])}}catch(e){r.e(e)}finally{r.f()}})(n,i),i.name+="_instance_"+e.uses[t]++,i)}},{key:"_invokeOne",value:function(e){var t=Object.values(this.plugins);t.push(this);for(var n=0;n<t.length;n++){var i=e(t[n]);if(i)return i}return null}},{key:"_invokeAll",value:function(e){for(var t=Object.values(this.plugins),n=(t.unshift(this),[]),i=0;i<t.length;i++){var r=e(t[i]);r&&n.push(r)}return n}},{key:"getDependency",value:function(e,t){var n=e+":"+t,i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this.loadNode(t);break;case"mesh":i=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:throw new Error("Unknown type: "+e)}this.cache.add(n,i)}return i}},{key:"getDependencies",value:function(n){var i,e,t=this.cache.get(n);return t||(e=(i=this).json[n+("mesh"===n?"es":"s")]||[],t=Promise.all(e.map(function(e,t){return i.getDependency(n,t)})),this.cache.add(n,t)),t}},{key:"loadBuffer",value:function(e){var n,i=this.json.buffers[e],r=this.fileLoader;if(i.type&&"arraybuffer"!==i.type)throw new Error("THREE.GLTFLoader: "+i.type+" buffer type is not supported.");return void 0===i.uri&&0===e?Promise.resolve(this.extensions[RC.KHR_BINARY_GLTF].body):(n=this.options,new Promise(function(e,t){r.load(Md.resolveURL(i.uri,n.path),e,void 0,function(){t(new Error('THREE.GLTFLoader: Failed to load buffer "'+i.uri+'".'))})}))}},{key:"loadBufferView",value:function(e){var i=this.json.bufferViews[e];return this.getDependency("buffer",i.buffer).then(function(e){var t=i.byteLength||0,n=i.byteOffset||0;return e.slice(n,n+t)})}},{key:"loadAccessor",value:function(e){var g=this,A=this.json,y=this.json.accessors[e];return void 0===y.bufferView&&void 0===y.sparse?Promise.resolve(null):(e=[],void 0!==y.bufferView?e.push(this.getDependency("bufferView",y.bufferView)):e.push(null),void 0!==y.sparse&&(e.push(this.getDependency("bufferView",y.sparse.indices.bufferView)),e.push(this.getDependency("bufferView",y.sparse.values.bufferView))),Promise.all(e).then(function(e){var t=e[0],n=uB[y.type],i=lB[y.componentType],r=i.BYTES_PER_ELEMENT,a=y.byteOffset||0,o=void 0!==y.bufferView?A.bufferViews[y.bufferView].byteStride:void 0,s=!0===y.normalized,l=o&&o!==r*n?(u=Math.floor(a/o),c="InterleavedBuffer:"+y.bufferView+":"+y.componentType+":"+u+":"+y.count,(d=g.cache.get(c))||(d=new Os(new i(t,u*o,y.count*o/r),o/r),g.cache.add(c,d)),new zs(d,n,a%o/r,s)):new H(null===t?new i(y.count*n):new i(t,a,y.count*n),n,s);if(void 0!==y.sparse){var u=lB[y.sparse.indices.componentType],c=y.sparse.indices.byteOffset||0,d=y.sparse.values.byteOffset||0,h=new u(e[1],c,y.sparse.count*uB.SCALAR),p=new i(e[2],d,y.sparse.count*n);null!==t&&(l=new H(l.array.slice(),l.itemSize,l.normalized));for(var f=0,m=h.length;f<m;f++){var v=h[f];if(l.setX(v,p[f*n]),2<=n&&l.setY(v,p[f*n+1]),3<=n&&l.setZ(v,p[f*n+2]),4<=n&&l.setW(v,p[f*n+3]),5<=n)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return l}))}},{key:"loadTexture",value:function(e){var t=this.json,n=this.options,i=t.textures[e].source,t=t.images[i],r=this.textureLoader;return t.uri&&null!==(n=n.manager.getHandler(t.uri))&&(r=n),this.loadTextureImage(e,i,r)}},{key:"loadTextureImage",value:function(t,e,n){var i=this,r=this.json,a=r.textures[t],o=r.images[e],s=(o.uri||o.bufferView)+":"+a.sampler;return this.textureCache[s]||(e=this.loadImageSource(e,n).then(function(e){e.flipY=!1,e.name=a.name||o.name||"";(r.samplers||{})[a.sampler];return Potree.Utils.makeTexDontResize(e),i.associations.set(e,{textures:t}),e}).catch(function(){return null}),this.textureCache[s]=e)}},{key:"loadImageSource",value:function(e,a){var o=this,s=this.json,l=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(function(e){return e.clone()});var n=s.images[e],i=self.URL||self.webkitURL,r=n.uri||"",u=!1;if(void 0!==n.bufferView)r=o.getDependency("bufferView",n.bufferView).then(function(e){u=!0;e=new Blob([e],{type:n.mimeType});return r=i.createObjectURL(e)});else if(void 0===n.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");var t=Promise.resolve(r).then(function(r){return new Promise(function(t,e){var n,i;"gltfpack 0.18"==s.asset.generator?(n=t,!0===a.isImageBitmapLoader&&(n=function(e){e=new Zn(e);e.needsUpdate=!0,t(e)}),i=o.textureLoader.manager.resolveURL(r,l.path),a.load(i,n,void 0,e)):o.textureLoader.load(r,function(e){THREE.LinearMipmapLinearFilter,t(e)},null,function(e){console.log("error load tex",e)})})}).then(function(e){var t;return!0===u&&i.revokeObjectURL(r),e.userData={},e.userData.mimeType=n.mimeType||(0<(t=n.uri||n.mimeType).search(/\.jpe?g($|\?)/i)||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":0<t.search(/\.webp($|\?)/i)||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),e});return this.sourceCache[e]=t}},{key:"assignTexture",value:function(i,r,a,o){var s=this;return this.getDependency("texture",a.index).then(function(e){var t,n;return void 0===a.texCoord||0==a.texCoord||"aoMap"===r&&1==a.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+a.texCoord+" for texture "+r+" not yet supported."),s.extensions[RC.KHR_TEXTURE_TRANSFORM]&&(t=void 0!==a.extensions?a.extensions[RC.KHR_TEXTURE_TRANSFORM]:void 0)&&(n=s.associations.get(e),e=s.extensions[RC.KHR_TEXTURE_TRANSFORM].extendTexture(e,t),s.associations.set(e,n)),void 0!==o&&(e.encoding=o),i[r]=e})}},{key:"assignFinalMaterial",value:function(e){var t,n,i=e.geometry,r=e.material,a=void 0===i.attributes.tangent,o=void 0!==i.attributes.color,s=void 0===i.attributes.normal;e.isPoints?(t="PointsMaterial:"+r.uuid,(n=this.cache.get(t))||(n=new Dl,Er.prototype.copy.call(n,r),n.color.copy(r.color),n.map=r.map,n.sizeAttenuation=!1,this.cache.add(t,n)),r=n):e.isLine&&(t="LineBasicMaterial:"+r.uuid,(n=this.cache.get(t))||(n=new wl,Er.prototype.copy.call(n,r),n.color.copy(r.color),this.cache.add(t,n)),r=n),(a||o||s)&&(t="ClonedMaterial:"+r.uuid+":",r.isGLTFSpecularGlossinessMaterial&&(t+="specular-glossiness:"),a&&(t+="derivative-tangents:"),o&&(t+="vertex-colors:"),s&&(t+="flat-shading:"),(n=this.cache.get(t))||(n=r.clone(),o&&(n.vertexColors=!0),s&&(n.flatShading=!0),a&&(n.normalScale&&(n.normalScale.y*=-1),n.clearcoatNormalScale)&&(n.clearcoatNormalScale.y*=-1),this.cache.add(t,n),this.associations.set(n,this.associations.get(r))),r=n),r.aoMap&&void 0===i.attributes.uv2&&void 0!==i.attributes.uv&&i.setAttribute("uv2",i.attributes.uv),e.material=r}},{key:"getMaterialType",value:function(){return oc}},{key:"loadMaterial",value:function(t){var n,i=this,e=this.json,r=this.extensions,a=e.materials[t],o={},e=a.extensions||{},s=[],l=(e[RC.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]?(l=r[RC.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS],n=t0,s.push(l.extendParams(o,a,i))):e[RC.KHR_MATERIALS_UNLIT]?(l=r[RC.KHR_MATERIALS_UNLIT],n=t0,s.push(l.extendParams(o,a,i))):(e=a.pbrMetallicRoughness||{},o.color=new Se(1,1,1),o.opacity=1,Array.isArray(e.baseColorFactor)&&(l=e.baseColorFactor,o.color.fromArray(l),o.opacity=l[3]),void 0!==e.baseColorTexture&&s.push(i.assignTexture(o,"map",e.baseColorTexture,On)),o.metalness=void 0!==e.metallicFactor?e.metallicFactor:1,o.roughness=void 0!==e.roughnessFactor?e.roughnessFactor:1,void 0!==e.metallicRoughnessTexture&&(s.push(i.assignTexture(o,"metalnessMap",e.metallicRoughnessTexture)),s.push(i.assignTexture(o,"roughnessMap",e.metallicRoughnessTexture))),n=this._invokeOne(function(e){return e.getMaterialType&&e.getMaterialType(t)}),s.push(Promise.all(this._invokeAll(function(e){return e.extendMaterialParams&&e.extendMaterialParams(t,o)})))),!0===a.doubleSided&&(o.side=ve),a.alphaMode||pB);return l===mB?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,l===fB&&(o.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&n!==R&&(s.push(i.assignTexture(o,"normalMap",a.normalTexture)),o.normalScale=new Re(1,1),void 0!==a.normalTexture.scale)&&(e=a.normalTexture.scale,o.normalScale.set(e,e)),void 0!==a.occlusionTexture&&n!==R&&(s.push(i.assignTexture(o,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength)&&(o.aoMapIntensity=a.occlusionTexture.strength),void 0!==a.emissiveFactor&&n!==R&&(o.emissive=(new Se).fromArray(a.emissiveFactor)),void 0!==a.emissiveTexture&&n!==R&&s.push(i.assignTexture(o,"emissiveMap",a.emissiveTexture,On)),Promise.all(s).then(function(){var e=n===tB?r[RC.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(o):new n(o);return a.name&&(e.name=a.name),gB(e,a),i.associations.set(e,{materials:t}),a.extensions&&vB(r,e,a),e})}},{key:"createUniqueName",value:function(e){for(var t=mh.sanitizeNodeName(e||""),n=t,i=1;this.nodeNamesUsed[n];++i)n=t+"_"+i;return this.nodeNamesUsed[n]=!0,n}},{key:"loadGeometries",value:function(e){var n=this,i=this.extensions,t=this.primitiveCache;for(var r=[],a=0,o=e.length;a<o;a++){var s=e[a],l=(u=void 0,u=(u=(l=s).extensions&&l.extensions[RC.KHR_DRACO_MESH_COMPRESSION])?"draco:"+u.bufferView+":"+u.indices+":"+AB(u.attributes):l.indices+":"+AB(l.attributes)+":"+l.mode),u=t[l];u?r.push(u.promise):(u=void 0,u=s.extensions&&s.extensions[RC.KHR_DRACO_MESH_COMPRESSION]?function(t){return i[RC.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(t,n).then(function(e){return bB(e,t,n)})}(s):bB(new V,s,n),t[l]={primitive:s,promise:u},r.push(u))}return Promise.all(r)}},{key:"loadMesh",value:function(x){for(var E=this,e=this.json,C=this.extensions,B=e.meshes[x],M=B.primitives,t=[],n=0,i=M.length;n<i;n++){var r=void 0===M[n].material?(void 0===(r=this.cache).DefaultMaterial&&(r.DefaultMaterial=new oc({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:fe})),r.DefaultMaterial):this.getDependency("material",M[n].material);t.push(r)}return t.push(E.loadGeometries(M)),Promise.all(t).then(function(e){for(var t=e.slice(0,e.length-1),n=e[e.length-1],i=[],r=0,a=n.length;r<a;r++){var o=n[r],s=M[r],l=void 0,u=t[r];if(s.mode===sB.TRIANGLES||s.mode===sB.TRIANGLE_STRIP||s.mode===sB.TRIANGLE_FAN||void 0===s.mode)!0!==(l=new(!0===B.isSkinnedMesh?cl:Q)(o,u)).isSkinnedMesh||l.geometry.attributes.skinWeight.normalized||l.normalizeSkinWeights(),s.mode===sB.TRIANGLE_STRIP?l.geometry=xB(l.geometry,1):s.mode===sB.TRIANGLE_FAN&&(l.geometry=xB(l.geometry,2));else if(s.mode===sB.LINES)l=new _l(o,u);else if(s.mode===sB.LINE_STRIP)l=new Ml(o,u);else if(s.mode===sB.LINE_LOOP)l=new Pl(o,u);else{if(s.mode!==sB.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+s.mode);l=new Fl(o,u)}if(0<Object.keys(l.geometry.morphAttributes).length){v=m=f=p=h=d=c=void 0;var c=l,d=B;if(c.updateMorphTargets(),void 0!==d.weights)for(var h=0,p=d.weights.length;h<p;h++)c.morphTargetInfluences[h]=d.weights[h];if(d.extras&&Array.isArray(d.extras.targetNames)){var f=d.extras.targetNames;if(c.morphTargetInfluences.length===f.length){c.morphTargetDictionary={};for(var m=0,v=f.length;m<v;m++)c.morphTargetDictionary[f[m]]=m}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}l.name=E.createUniqueName(B.name||"mesh_"+x),gB(l,B),s.extensions&&vB(C,l,s),E.assignFinalMaterial(l),i.push(l)}for(var g=0,A=i.length;g<A;g++)E.associations.set(i[g],{meshes:x,primitives:g});if(1===i.length)return i[0];var y=new Ts;E.associations.set(y,{meshes:x});for(var w=0,b=i.length;w<b;w++)y.add(i[w]);return y})}},{key:"loadCamera",value:function(e){var t,e=this.json.cameras[e],n=e[e.type];if(n)return"perspective"===e.type?t=new ya(Be.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===e.type&&(t=new Ad(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),e.name&&(t.name=this.createUniqueName(e.name)),gB(t,e),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}},{key:"loadSkin",value:function(e){var e=this.json.skins[e],t={joints:e.joints};return void 0===e.inverseBindMatrices?Promise.resolve(t):this.getDependency("accessor",e.inverseBindMatrices).then(function(e){return t.inverseBindMatrices=e,t})}},{key:"loadAnimation",value:function(n){for(var i=this.json.animations[n],e=[],t=[],r=[],a=[],o=[],s=0,l=i.channels.length;s<l;s++){var u=i.channels[s],c=i.samplers[u.sampler],u=u.target,d=u.node,h=void 0!==i.parameters?i.parameters[c.input]:c.input,p=void 0!==i.parameters?i.parameters[c.output]:c.output;e.push(this.getDependency("node",d)),t.push(this.getDependency("accessor",h)),r.push(this.getDependency("accessor",p)),a.push(c),o.push(u)}return Promise.all([Promise.all(e),Promise.all(t),Promise.all(r),Promise.all(a),Promise.all(o)]).then(function(e){for(var g=e[0],A=e[1],y=e[2],w=e[3],b=e[4],x=[],E=0,t=g.length;E<t;E++)!function(){var e,t=g[E],n=A[E],i=y[E],r=w[E],a=b[E];if(void 0===t)return;switch(t.updateMatrix(),dB[a.path]){case dB.weights:e=Ec;break;case dB.rotation:e=Bc;break;default:e=Sc}var o=t.name||t.uuid,s=void 0!==r.interpolation?hB[r.interpolation]:In,l=[],u=(dB[a.path]===dB.weights?t.traverse(function(e){e.morphTargetInfluences&&l.push(e.name||e.uuid)}):l.push(o),i.array);if(i.normalized){for(var c=yB(u.constructor),d=new Float32Array(u.length),h=0,p=u.length;h<p;h++)d[h]=u[h]*c;u=d}for(var f=0,m=l.length;f<m;f++){var v=new e(l[f]+"."+dB[a.path],n.array,u,s);"CUBICSPLINE"===r.interpolation&&(v.createInterpolant=function(e){return new(this instanceof Bc?oB:rB)(this.times,this.values,this.getValueSize()/3,e)},v.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),x.push(v)}}();return new Tc(i.name||"animation_"+n,void 0,x)})}},{key:"createNodeMesh",value:function(e){var t=this.json,n=this,i=t.nodes[e];return void 0===i.mesh?null:n.getDependency("mesh",i.mesh).then(function(e){e=n._getNodeRef(n.meshCache,i.mesh,e);return void 0!==i.weights&&e.traverse(function(e){if(e.isMesh)for(var t=0,n=i.weights.length;t<n;t++)e.morphTargetInfluences[t]=i.weights[t]}),e})}},{key:"loadNode",value:function(a){var t,e=this.json,o=this.extensions,s=this,l=e.nodes[a],u=l.name?s.createUniqueName(l.name):"";return t=[],(e=s._invokeOne(function(e){return e.createNodeMesh&&e.createNodeMesh(a)}))&&t.push(e),void 0!==l.camera&&t.push(s.getDependency("camera",l.camera).then(function(e){return s._getNodeRef(s.cameraCache,l.camera,e)})),s._invokeAll(function(e){return e.createNodeAttachment&&e.createNodeAttachment(a)}).forEach(function(e){t.push(e)}),Promise.all(t).then(function(e){var t,n=!0===l.isBone?new dl:1<e.length?new Ts:1===e.length?e[0]:new Z;if(n!==e[0])for(var i=0,r=e.length;i<r;i++)n.add(e[i]);return l.name&&(n.userData.name=l.name,n.name=u),gB(n,l),l.extensions&&vB(o,n,l),void 0!==l.matrix?((t=new Me).fromArray(l.matrix),n.applyMatrix4(t)):(void 0!==l.translation&&n.position.fromArray(l.translation),void 0!==l.rotation&&n.quaternion.fromArray(l.rotation),void 0!==l.scale&&n.scale.fromArray(l.scale)),s.associations.has(n)||s.associations.set(n,{}),s.associations.get(n).nodes=a,n})}},{key:"loadScene",value:function(e){for(var t=this.json,n=this.extensions,e=this.json.scenes[e],s=this,i=new Ts,r=(e.name&&(i.name=s.createUniqueName(e.name)),gB(i,e),e.extensions&&vB(n,i,e),e.nodes||[]),a=[],o=0,l=r.length;o<l;o++)a.push(function o(e,s,l,u){var c=l.nodes[e];return u.getDependency("node",e).then(function(e){var s;return void 0===c.skin?e:u.getDependency("skin",c.skin).then(function(e){for(var t=[],n=0,i=(s=e).joints.length;n<i;n++)t.push(u.getDependency("node",s.joints[n]));return Promise.all(t)}).then(function(o){return e.traverse(function(e){if(e.isMesh){for(var t=[],n=[],i=0,r=o.length;i<r;i++){var a=o[i];a?(t.push(a),a=new Me,void 0!==s.inverseBindMatrices&&a.fromArray(s.inverseBindMatrices.array,16*i),n.push(a)):console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',s.joints[i])}e.bind(new fl(t,n),e.matrixWorld)}}),e})}).then(function(e){s.add(e);var t=[];if(c.children)for(var n=c.children,i=0,r=n.length;i<r;i++){var a=n[i];t.push(o(a,e,l,u))}return Promise.all(t)})}(r[o],i,t,s));return Promise.all(a).then(function(){return s.associations=function(e){var t,n=new Map,i=q(s.associations);try{for(i.s();!(t=i.n()).done;){var r=U(t.value,2),a=r[0],o=r[1];(a instanceof Er||a instanceof Zn)&&n.set(a,o)}}catch(e){i.e(e)}finally{i.f()}return e.traverse(function(e){var t=s.associations.get(e);null!=t&&n.set(e,t)}),n}(i),i})}}])}();function bB(v,g,A){var e,t=g.attributes,n=[];for(e in t){var i=cB[e]||e.toLowerCase();i in v.attributes||n.push(function(e,t){return A.getDependency("accessor",e).then(function(e){v.setAttribute(t,e)})}(t[e],i))}void 0===g.indices||v.index||(r=A.getDependency("accessor",g.indices).then(function(e){v.setIndex(e)}),n.push(r)),gB(v,g);var r=v,a=g,o=A,s=a.attributes,l=new K;if(void 0!==s.POSITION){var s=o.json.accessors[s.POSITION],u=s.min,c=s.max;if(void 0===u||void 0===c)console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");else{l.set(new Oe(u[0],u[1],u[2]),new Oe(c[0],c[1],c[2])),s.normalized&&(u=yB(lB[s.componentType]),l.min.multiplyScalar(u),l.max.multiplyScalar(u));var d=a.targets;if(void 0!==d){for(var h=new Oe,p=new Oe,f=0,m=d.length;f<m;f++){var y,w,b=d[f];void 0!==b.POSITION&&(w=(b=o.json.accessors[b.POSITION]).min,y=b.max,void 0!==w&&void 0!==y?(p.setX(Math.max(Math.abs(w[0]),Math.abs(y[0]))),p.setY(Math.max(Math.abs(w[1]),Math.abs(y[1]))),p.setZ(Math.max(Math.abs(w[2]),Math.abs(y[2]))),b.normalized&&(w=yB(lB[b.componentType]),p.multiplyScalar(w)),h.max(p)):console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."))}l.expandByVector(h)}r.boundingBox=l;c=new bi;l.getCenter(c.center),c.radius=l.min.distanceTo(l.max)/2,r.boundingSphere=c}}return Promise.all(n).then(function(){if(void 0===g.targets)return v;for(var i=v,e=g.targets,t=A,r=!1,a=!1,o=!1,n=0,s=e.length;n<s;n++){var l=e[n];if(void 0!==l.POSITION&&(r=!0),void 0!==l.NORMAL&&(a=!0),void 0!==l.COLOR_0&&(o=!0),r&&a&&o)break}if(!r&&!a&&!o)return Promise.resolve(i);for(var u=[],c=[],d=[],h=0,p=e.length;h<p;h++){var f,m=e[h];r&&(f=void 0!==m.POSITION?t.getDependency("accessor",m.POSITION):i.attributes.position,u.push(f)),a&&(f=void 0!==m.NORMAL?t.getDependency("accessor",m.NORMAL):i.attributes.normal,c.push(f)),o&&(m=void 0!==m.COLOR_0?t.getDependency("accessor",m.COLOR_0):i.attributes.color,d.push(m))}return Promise.all([Promise.all(u),Promise.all(c),Promise.all(d)]).then(function(e){var t=e[0],n=e[1],e=e[2];return r&&(i.morphAttributes.position=t),a&&(i.morphAttributes.normal=n),o&&(i.morphAttributes.color=e),i.morphTargetsRelative=!0,i})})}function xB(e,t){var n=e.getIndex();if(null===n){var i=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(var a=0;a<r.count;a++)i.push(a);e.setIndex(i),n=e.getIndex()}var o=n.count-2,s=[];if(2===t)for(var l=1;l<=o;l++)s.push(n.getX(0)),s.push(n.getX(l)),s.push(n.getX(l+1));else for(var u=0;u<o;u++)u%2==0?(s.push(n.getX(u)),s.push(n.getX(u+1)),s.push(n.getX(u+2))):(s.push(n.getX(u+2)),s.push(n.getX(u+1)),s.push(n.getX(u)));s.length/3!=o&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");t=e.clone();return t.setIndex(s),t}var EB=X().mark(SS),CB=X().mark(W2),BB=window,MB=!1,SB=100;function TB(e,o,s,l){return new(s=s||Promise)(function(n,t){function i(e){try{a(l.next(e))}catch(e){t(e)}}function r(e){try{a(l.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?n(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,r)}a((l=l.apply(e,o||[])).next())})}function _B(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var PB=Boolean("object"!==("undefined"==typeof process?"undefined":O(process))||"[object process]"!==String(process)||process.browser),Zd="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);Zd&&parseFloat(Zd[1]);function DB(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var Zl={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document},IB=Zl.global||Zl.self||Zl.window||{},kB="object"!==("undefined"==typeof process?"undefined":O(process))||"[object process]"!==String(process)||process.browser,RB="function"==typeof importScripts,LB="undefined"!=typeof window&&void 0!==window.orientation,qh="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);function l(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}qh&&parseFloat(qh[1]);var FB=function(){return A(function e(t,n){var i=this;ue(this,e),l(this,"name",void 0),l(this,"workerThread",void 0),l(this,"isRunning",void 0),l(this,"result",void 0),l(this,"_resolve",void 0),l(this,"_reject",void 0),this.name=t,this.workerThread=n,this.isRunning=!0,this._resolve=function(){},this._reject=function(){},this.result=new Promise(function(e,t){i._resolve=e,i._reject=t})},[{key:"postMessage",value:function(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}},{key:"done",value:function(e){DB(this.isRunning),this.isRunning=!1,this._resolve(e)}},{key:"error",value:function(e){DB(this.isRunning),this.isRunning=!1,this._reject(e)}}])}(),OB=new Map;function UB(e){DB(e.source&&!e.url||!e.source&&e.url);var t,n=OB.get(e.source||e.url);return n||(e.url&&(n=(t=e.url).startsWith("http")?NB("try {\n importScripts('".concat(t,"');\n} catch (error) {\n console.error(error);\n throw error;\n}")):t,OB.set(e.url,n)),e.source&&(n=NB(e.source),OB.set(e.source,n))),DB(n),n}function NB(e){e=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(e)}function zB(e){return e&&(e instanceof ArrayBuffer||"undefined"!=typeof MessagePort&&e instanceof MessagePort||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)}function GB(){}var HB=function(){return A(function e(t){ue(this,e),l(this,"name",void 0),l(this,"source",void 0),l(this,"url",void 0),l(this,"terminated",!1),l(this,"worker",void 0),l(this,"onMessage",void 0),l(this,"onError",void 0),l(this,"_loadableURL","");var n=t.name,i=t.source,t=t.url;DB(i||t),this.name=n,this.source=i,this.url=t,this.onMessage=GB,this.onError=function(e){return console.log(e)},this.worker=this._createBrowserWorker()},[{key:"destroy",value:function(){this.onMessage=GB,this.onError=GB,this.worker.terminate(),this.terminated=!0}},{key:"isRunning",get:function(){return Boolean(this.onMessage)}},{key:"postMessage",value:function(e,t){t=t||function e(t,n,i){var r=!(1<arguments.length&&void 0!==n)||n,n=2<arguments.length?i:void 0,a=n||new Set;if(t)if(zB(t))a.add(t);else if(zB(t.buffer))a.add(t.buffer);else if(!ArrayBuffer.isView(t)&&r&&"object"===O(t))for(var o in t)e(t[o],r,a);return void 0===n?Array.from(a):[]}(e),this.worker.postMessage(e,t)}},{key:"_getErrorFromErrorEvent",value:function(e){var t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}},{key:"_createBrowserWorker",value:function(){var t=this,e=(this._loadableURL=UB({source:this.source,url:this.url}),new Worker(this._loadableURL,{name:this.name}));return e.onmessage=function(e){e.data?t.onMessage(e.data):t.onError(new Error("No data received"))},e.onerror=function(e){t.onError(t._getErrorFromErrorEvent(e)),t.terminated=!0},e.onmessageerror=function(e){return console.error(e)},e}}],[{key:"isSupported",value:function(){return"undefined"!=typeof Worker}}])}(),VB=function(){return A(function e(t){ue(this,e),l(this,"name","unnamed"),l(this,"source",void 0),l(this,"url",void 0),l(this,"maxConcurrency",1),l(this,"maxMobileConcurrency",1),l(this,"onDebug",function(){}),l(this,"reuseWorkers",!0),l(this,"props",{}),l(this,"jobQueue",[]),l(this,"idleQueue",[]),l(this,"count",0),l(this,"isDestroyed",!1),this.source=t.source,this.url=t.url,this.setProps(t)},[{key:"destroy",value:function(){this.idleQueue.forEach(function(e){return e.destroy()}),this.isDestroyed=!0}},{key:"setProps",value:function(e){this.props=g(g({},this.props),e),void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}},{key:"startJob",value:(t=J(X().mark(function e(t){var n,i,r,a=this,o=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=1<o.length&&void 0!==o[1]?o[1]:function(e,t,n){return e.done(n)},i=2<o.length&&void 0!==o[2]?o[2]:function(e,t){return e.error(t)},r=new Promise(function(e){return a.jobQueue.push({name:t,onMessage:n,onError:i,onStart:e}),a}),this._startQueuedJob(),e.next=6,r;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e,this)})),function(e){return t.apply(this,arguments)})},{key:"_startQueuedJob",value:(e=J(X().mark(function e(){var t,n,i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.jobQueue.length){e.next=2;break}return e.abrupt("return");case 2:if(t=this._getAvailableWorker()){e.next=5;break}return e.abrupt("return");case 5:if(n=this.jobQueue.shift())return this.onDebug({message:"Starting job",name:n.name,workerThread:t,backlog:this.jobQueue.length}),i=new FB(n.name,t),t.onMessage=function(e){return n.onMessage(i,e.type,e.payload)},t.onError=function(e){return n.onError(i,e)},n.onStart(i),e.prev=12,e.next=15,i.result;e.next=18;break;case 15:return e.prev=15,this.returnWorkerToQueue(t),e.finish(15);case 18:case"end":return e.stop()}},e,this,[[12,,15,18]])})),function(){return e.apply(this,arguments)})},{key:"returnWorkerToQueue",value:function(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}},{key:"_getAvailableWorker",value:function(){var e;return 0<this.idleQueue.length?this.idleQueue.shift()||null:this.count<this._getMaxConcurrency()?(this.count++,e="".concat(this.name.toLowerCase()," (#").concat(this.count," of ").concat(this.maxConcurrency,")"),new HB({name:e,source:this.source,url:this.url})):null}},{key:"_getMaxConcurrency",value:function(){return LB?this.maxMobileConcurrency:this.maxConcurrency}}]);var e,t}(),QB={maxConcurrency:3,maxMobileConcurrency:1,onDebug:function(){},reuseWorkers:!0},jB=function(){function t(e){ue(this,t),l(this,"props",void 0),l(this,"workerPools",new Map),this.props=g({},QB),this.setProps(e),this.workerPools=new Map}return A(t,[{key:"destroy",value:function(){var e,t=q(this.workerPools.values());try{for(t.s();!(e=t.n()).done;)e.value.destroy()}catch(e){t.e(e)}finally{t.f()}}},{key:"setProps",value:function(e){this.props=g(g({},this.props),e);var t,n=q(this.workerPools.values());try{for(n.s();!(t=n.n()).done;)t.value.setProps(this._getWorkerPoolProps())}catch(e){n.e(e)}finally{n.f()}}},{key:"getWorkerPool",value:function(e){var t=e.name,n=e.source,e=e.url,i=this.workerPools.get(t);return i||((i=new VB({name:t,source:n,url:e})).setProps(this._getWorkerPoolProps()),this.workerPools.set(t,i)),i}},{key:"_getWorkerPoolProps",value:function(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}],[{key:"isSupported",value:function(){return HB.isSupported()}},{key:"getWorkerFarm",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return(t._workerFarm=t._workerFarm||new t({})).setProps(e),t._workerFarm}}])}(),WB=(l(jB,"_workerFarm",void 0),"latest");var JB={},qB=Object.freeze(Object.assign(Object.create(null),JB,{default:JB})),YB="3.1.4",XB={};function KB(){return ZB.apply(this,arguments)}function ZB(){return(ZB=J(X().mark(function e(t){var n,i,r=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=2<r.length&&void 0!==r[2]?r[2]:{},(n=1<r.length&&void 0!==r[1]?r[1]:null)&&(t=function(e,t,n){if(e.startsWith("http"))return e;var i=n.modules||{};if(i[e])return i[e];if(!kB)return"modules/".concat(t,"/dist/libs/").concat(e);if(n.CDN)return DB(n.CDN.startsWith("http")),"".concat(n.CDN,"/").concat(t,"@").concat(YB,"/dist/libs/").concat(e);if(RB)return"../src/libs/".concat(e);return"modules/".concat(t,"/src/libs/").concat(e)}(t,n,i)),XB[t]=XB[t]||function(){return $B.apply(this,arguments)}(t),e.next=6,XB[t];case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $B(){return($B=J(X().mark(function e(t){var n,i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.endsWith("wasm"))return e.next=3,fetch(t);e.next=7;break;case 3:return n=e.sent,e.next=6,n.arrayBuffer();case 6:return e.abrupt("return",e.sent);case 7:if(kB)e.next=20;else{if(e.prev=8,e.t0=qB&&JB.requireFromFile,e.t0)return e.next=13,JB.requireFromFile(t);e.next=14}break;case 13:e.t0=e.sent;case 14:return e.abrupt("return",e.t0);case 17:return e.prev=17,e.t1=e.catch(8),e.abrupt("return",null);case 20:if(RB)return e.abrupt("return",importScripts(t));e.next=22;break;case 22:return e.next=24,fetch(t);case 24:return n=e.sent,e.next=27,n.text();case 27:return i=e.sent,e.abrupt("return",function(t,e){if(!kB)return JB.requireFromString&&JB.requireFromString(t,e);if(RB)eval.call(IB,t);else{var n=document.createElement("script");n.id=e;try{n.appendChild(document.createTextNode(t))}catch(e){n.text=t}document.body.appendChild(n)}return null}(i,t));case 29:case"end":return e.stop()}},e,null,[[8,17]])}))).apply(this,arguments)}function eM(){return(eM=J(X().mark(function e(t,n,i,r,a){var o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=t.id,l=function(e,t){var t=1<arguments.length&&void 0!==t?t:{},n=t[e.id]||{},i="".concat(e.id,"-worker.js");return(n=n.workerUrl)||"compression"!==e.id||(n=t.workerUrl),(n="test"===t._workerType?"modules/".concat(e.module,"/dist/").concat(i):n)||(t=(t="latest"===(t=e.version)?WB:t)?"@".concat(t):"",n="https://unpkg.com/@loaders.gl/".concat(e.module).concat(t,"/dist/").concat(i)),DB(n),n}(t,i),o=jB.getWorkerFarm(i),o=o.getWorkerPool({name:s,url:l}),i=JSON.parse(JSON.stringify(i)),e.next=7,o.startJob("process-on-worker",tM.bind(null,a));case 7:return(s=e.sent).postMessage("process",{input:n,options:i}),e.next=11,s.result;case 11:return l=e.sent,e.next=14,l.result;case 14:return e.abrupt("return",e.sent);case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function tM(e,t,n,i){return nM.apply(this,arguments)}function nM(){return(nM=J(X().mark(function e(t,n,i,r){var a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=i,e.next="done"===e.t0?3:"error"===e.t0?5:"process"===e.t0?7:20;break;case 3:return n.done(r),e.abrupt("break",21);case 5:return n.error(new Error(r.error)),e.abrupt("break",21);case 7:return a=r.id,o=r.input,s=r.options,e.prev=8,e.next=11,t(o,s);case 11:o=e.sent,n.postMessage("done",{id:a,result:o}),e.next=19;break;case 15:e.prev=15,e.t1=e.catch(8),s=e.t1 instanceof Error?e.t1.message:"unknown error",n.postMessage("error",{id:a,error:s});case 19:return e.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(i));case 21:case"end":return e.stop()}},e,null,[[8,15]])}))).apply(this,arguments)}function iM(e,t,n){if(e.byteLength<=t+n)return"";for(var i=new DataView(e),r="",a=0;a<n;a++)r+=String.fromCharCode(i.getUint8(t+a));return r}function rM(t){try{return JSON.parse(t)}catch(e){throw new Error('Failed to parse JSON from data starting with "'.concat(function(e,t){return t=1<arguments.length&&void 0!==t?t:5,"string"==typeof e?e.slice(0,t):ArrayBuffer.isView(e)?iM(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?iM(e,0,t):""}(t),'"'))}}function aM(e){return e&&"object"===O(e)&&e.isBuffer}function oM(e){if(aM(e))return aM(t=e)?new Uint8Array(t.buffer,t.byteOffset,t.length).slice().buffer:t;var t;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e)return t=e,(new TextEncoder).encode(t).buffer;if(e&&"object"===O(e)&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function sM(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i,r=t.map(function(e){return e instanceof ArrayBuffer?new Uint8Array(e):e}),a=r.reduce(function(e,t){return e+t.byteLength},0),o=new Uint8Array(a),s=0,l=q(r);try{for(l.s();!(i=l.n()).done;){var u=i.value;o.set(u,s),s+=u.byteLength}}catch(e){l.e(e)}finally{l.f()}return o.buffer}function lM(e,t,n){n=void 0!==n?new Uint8Array(e).subarray(t,t+n):new Uint8Array(e).subarray(t);return new Uint8Array(n).buffer}function uM(e,t){return _B(0<=e),_B(0<t),e+(t-1)&~(t-1)}function cM(){return(cM=J(X().mark(function e(t){var n,i,r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=i=!(n=[]),e.prev=3,o=c(t);case 5:return e.next=7,o.next();case 7:if(!(i=!(s=e.sent).done)){e.next=13;break}s=s.value,n.push(s);case 10:i=!1,e.next=5;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(3),r=!0,a=e.t0;case 19:if(e.prev=19,e.prev=20,i&&null!=o.return)return e.next=24,o.return();e.next=24;break;case 24:if(e.prev=24,r)throw a;e.next=27;break;case 27:return e.finish(24);case 28:return e.finish(19);case 29:return e.abrupt("return",sM.apply(void 0,n));case 30:case"end":return e.stop()}},e,null,[[3,15,19,29],[20,,24,28]])}))).apply(this,arguments)}function dM(){var e;return"undefined"!=typeof window&&window.performance?window.performance.now():"undefined"!=typeof process&&process.hrtime?1e3*(e=process.hrtime())[0]+e[1]/1e6:Date.now()}var hM=function(){return A(function e(t,n){ue(this,e),l(this,"name",void 0),l(this,"type",void 0),l(this,"sampleSize",1),l(this,"time",void 0),l(this,"count",void 0),l(this,"samples",void 0),l(this,"lastTiming",void 0),l(this,"lastSampleTime",void 0),l(this,"lastSampleCount",void 0),l(this,"_count",0),l(this,"_time",0),l(this,"_samples",0),l(this,"_startTime",0),l(this,"_timerPending",!1),this.name=t,this.type=n,this.reset()},[{key:"setSampleSize",value:function(e){return this.sampleSize=e,this}},{key:"incrementCount",value:function(){return this.addCount(1),this}},{key:"decrementCount",value:function(){return this.subtractCount(1),this}},{key:"addCount",value:function(e){return this._count+=e,this._samples++,this._checkSampling(),this}},{key:"subtractCount",value:function(e){return this._count-=e,this._samples++,this._checkSampling(),this}},{key:"addTime",value:function(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}},{key:"timeStart",value:function(){return this._startTime=dM(),this._timerPending=!0,this}},{key:"timeEnd",value:function(){return this._timerPending&&(this.addTime(dM()-this._startTime),this._timerPending=!1,this._checkSampling()),this}},{key:"getSampleAverageCount",value:function(){return 0<this.sampleSize?this.lastSampleCount/this.sampleSize:0}},{key:"getSampleAverageTime",value:function(){return 0<this.sampleSize?this.lastSampleTime/this.sampleSize:0}},{key:"getSampleHz",value:function(){return 0<this.lastSampleTime?this.sampleSize/(this.lastSampleTime/1e3):0}},{key:"getAverageCount",value:function(){return 0<this.samples?this.count/this.samples:0}},{key:"getAverageTime",value:function(){return 0<this.samples?this.time/this.samples:0}},{key:"getHz",value:function(){return 0<this.time?this.samples/(this.time/1e3):0}},{key:"reset",value:function(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}},{key:"_checkSampling",value:function(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}])}(),pM=function(){return A(function e(t){ue(this,e),l(this,"id",void 0),l(this,"stats",{}),this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)},[{key:"get",value:function(e){return this._getOrCreate({name:e,type:1<arguments.length&&void 0!==arguments[1]?arguments[1]:"count"})}},{key:"size",get:function(){return Object.keys(this.stats).length}},{key:"reset",value:function(){for(var e in this.stats)this.stats[e].reset();return this}},{key:"forEach",value:function(e){for(var t in this.stats)e(this.stats[t])}},{key:"getTable",value:function(){var t={};return this.forEach(function(e){t[e.name]={time:e.time||0,count:e.count||0,average:e.getAverageTime()||0,hz:e.getHz()||0}}),t}},{key:"_initializeStats",value:function(){var t=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){return t._getOrCreate(e)})}},{key:"_getOrCreate",value:function(e){var t,n;return e&&e.name?(t=e.name,n=e.type,this.stats[t]||(e instanceof hM?this.stats[t]=e:this.stats[t]=new hM(t,n)),this.stats[t]):null}}])}(),fM={id:"request-scheduler",throttleRequests:!0,maxRequests:6},mM=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,e),l(this,"props",void 0),l(this,"stats",void 0),l(this,"activeRequestCount",0),l(this,"requestQueue",[]),l(this,"requestMap",new Map),l(this,"deferredUpdate",null),this.props=g(g({},fM),t),this.stats=new pM({id:this.props.id}),this.stats.get("Queued Requests"),this.stats.get("Active Requests"),this.stats.get("Cancelled Requests"),this.stats.get("Queued Requests Ever"),this.stats.get("Active Requests Ever")},[{key:"scheduleRequest",value:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:function(){return 0};return this.props.throttleRequests?this.requestMap.has(e)?this.requestMap.get(e):(t={handle:e,priority:0,getPriority:n},n=new Promise(function(e){return t.resolve=e,t}),this.requestQueue.push(t),this.requestMap.set(e,n),this._issueNewRequests(),n):Promise.resolve({done:function(){}})}},{key:"_issueRequest",value:function(e){function t(){r||(r=!0,n.requestMap.delete(i),n.activeRequestCount--,n._issueNewRequests())}var n=this,i=e.handle,e=e.resolve,r=!1;return this.activeRequestCount++,e?e({done:t}):Promise.resolve({done:t})}},{key:"_issueNewRequests",value:function(){var e=this;this.deferredUpdate||(this.deferredUpdate=setTimeout(function(){return e._issueNewRequestsAsync()},0))}},{key:"_issueNewRequestsAsync",value:function(){this.deferredUpdate=null;var e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(0!==e){this._updateAllRequests();for(var t=0;t<e;++t){var n=this.requestQueue.shift();n&&this._issueRequest(n)}}}},{key:"_updateAllRequests",value:function(){for(var e=this.requestQueue,t=0;t<e.length;++t){var n=e[t];this._updateRequest(n)||(e.splice(t,1),this.requestMap.delete(n.handle),t--)}e.sort(function(e,t){return e.priority-t.priority})}},{key:"_updateRequest",value:function(e){return e.priority=e.getPriority(e.handle),!(e.priority<0&&(e.resolve(null),1))}}])}(),vM="",gM={};function AM(e){var t=e&&e.lastIndexOf("/");return 0<=t?e.substr(0,t):""}function yM(e){return"function"==typeof e}function wM(e){return xM(e)&&e.constructor==={}.constructor}function bM(e){return e&&"object"===O(e)&&e.isBuffer}var xM=function(e){return null!==e&&"object"===O(e)},EM=function(e){return e&&"function"==typeof e[Symbol.iterator]},CM=function(e){return e&&"function"==typeof e[Symbol.asyncIterator]},BM=function(e){return"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json},MM=function(e){return"undefined"!=typeof Blob&&e instanceof Blob},SM=function(e){return"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||xM(e)&&yM(e.tee)&&yM(e.cancel)&&yM(e.getReader)},TM=function(e){return xM(e)&&yM(e.read)&&yM(e.pipe)&&"boolean"==typeof e.readable},_M=function(e){return SM(e)||TM(e)},PM=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,DM=/^([-\w.]+\/[-\w.+]+)/;function IM(e){e=PM.exec(e);return e?e[1]:""}var kM=/\?.*/;function RM(e){var t,n,i;return BM(e)?(t=LM(e.url||""),n=e.headers.get("content-type")||"",{url:t,type:(n=n,((i=DM.exec(n))?i[1]:n)||IM(t))}):MM(e)?{url:LM(e.name||""),type:e.type||""}:"string"==typeof e?{url:LM(e),type:IM(e)}:{url:"",type:""}}function LM(e){return e.replace(kM,"")}function FM(){return OM.apply(this,arguments)}function OM(){return(OM=J(X().mark(function e(n){var i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(BM(n))return e.abrupt("return",n);e.next=2;break;case 2:return i={},0<=(a=BM(t=n)?t.headers["content-length"]||-1:MM(t)?t.size:"string"==typeof t?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1)&&(i["content-length"]=String(a)),a=RM(n),r=a.url,(a=a.type)&&(i["content-type"]=a),e.next=9,function(){return zM.apply(this,arguments)}(n);case 9:return(a=e.sent)&&(i["x-first-bytes"]=a),"string"==typeof n&&(n=(new TextEncoder).encode(n)),o=new Response(n,{headers:i}),Object.defineProperty(o,"url",{value:r}),e.abrupt("return",o);case 15:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function UM(){return(UM=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.ok){e.next=5;break}return e.next=3,function(){return NM.apply(this,arguments)}(t);case 3:throw n=e.sent,new Error(n);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function NM(){return(NM=J(X().mark(function e(t){var n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n="Failed to fetch resource ".concat(t.url," (").concat(t.status,"): "),e.prev=1,i=t.headers.get("Content-Type"),r=t.statusText,i.includes("application/json"))return e.t0=r,e.t1=" ",e.next=9,t.text();e.next=11;break;case 9:e.t2=e.sent,r=e.t0+=e.t1.concat.call(e.t1,e.t2);case 11:n=60<(n+=r).length?"".concat(n.slice(60),"..."):n,e.next=17;break;case 15:e.prev=15,e.t3=e.catch(1);case 17:return e.abrupt("return",n);case 18:case"end":return e.stop()}},e,null,[[1,15]])}))).apply(this,arguments)}function zM(){return(zM=J(X().mark(function e(t){var n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=5,"string"==typeof t)return e.abrupt("return","data:,".concat(t.slice(0,n)));e.next=3;break;case 3:if(t instanceof Blob)return i=t.slice(0,5),e.next=7,new Promise(function(t){var e=new FileReader;e.onload=function(e){return t(null==e||null==(e=e.target)?void 0:e.result)},e.readAsDataURL(i)});e.next=8;break;case 7:return e.abrupt("return",e.sent);case 8:if(t instanceof ArrayBuffer)return r=t.slice(0,n),r=function(e){for(var t="",n=new Uint8Array(e),i=0;i<n.byteLength;i++)t+=String.fromCharCode(n[i]);return btoa(t)}(r),e.abrupt("return","data:base64,".concat(r));e.next=12;break;case 12:return e.abrupt("return",null);case 13:case"end":return e.stop()}},e)}))).apply(this,arguments)}function GM(e,t){return HM.apply(this,arguments)}function HM(){return(HM=J(X().mark(function e(t,n){var i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("string"==typeof t)return t=function(e){for(var t in gM){var n;e.startsWith(t)&&(n=gM[t],e=e.replace(t,n))}return e=e.startsWith("http://")||e.startsWith("https://")?e:"".concat(vM).concat(e)}(t),null!=(i=n)&&n.fetch&&"function"!=typeof(null==n?void 0:n.fetch)&&(i=n.fetch),e.next=6,fetch(t,i);e.next=7;break;case 6:return e.abrupt("return",e.sent);case 7:return e.next=9,FM(t);case 9:return e.abrupt("return",e.sent);case 10:case"end":return e.stop()}},e)}))).apply(this,arguments)}function VM(){var e,t;return!("object"===("undefined"==typeof process?"undefined":O(process))&&"[object process]"===String(process)&&!process.browser)||"undefined"!=typeof window&&"object"===O(window.process)&&"renderer"===window.process.type||!("undefined"==typeof process||"object"!==O(process.versions)||!Boolean(process.versions.electron))||(t="object"===("undefined"==typeof navigator?"undefined":O(navigator))&&"string"==typeof navigator.userAgent&&navigator.userAgent,!!((e=e||t)&&0<=e.indexOf("Electron")))}var nu={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"===("undefined"==typeof process?"undefined":O(process))&&process},QM=nu.window||nu.self||nu.global,jM=nu.process||{},WM="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";VM();var JM=function(){return A(function e(t){ue(this,e);var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"sessionStorage";l(this,"storage",void 0),l(this,"id",void 0),l(this,"config",{}),this.storage=function(e){try{var t=window[e],n="__storage_test__";return t.setItem(n,n),t.removeItem(n),t}catch(e){return null}}(i),this.id=t,this.config={},Object.assign(this.config,n),this._loadConfiguration()},[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){return Object.assign(this.config,e),this.storage&&(e=JSON.stringify(this.config),this.storage.setItem(this.id,e)),this}},{key:"_loadConfiguration",value:function(){var e,t={};return this.storage&&(t=(e=this.storage.getItem(this.id))?JSON.parse(e):{}),Object.assign(this.config,t),this}}])}();function qM(e,t,n,i){var i=3<arguments.length&&void 0!==i?i:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29"),i=(e.width>i&&(n=Math.min(n,i/e.width)),e.width*n),e=e.height*n,n=["font-size:1px;","padding:".concat(Math.floor(e/2),"px ").concat(Math.floor(i/2),"px;"),"line-height:".concat(e,"px;"),"background:url(".concat(r,");"),"background-size:".concat(i,"px ").concat(e,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),n]}function YM(e,t){var n,i=1<arguments.length&&void 0!==t?t:["constructor"],t=Object.getPrototypeOf(e),r=q(Object.getOwnPropertyNames(t));try{for(r.s();!(n=r.n()).done;)!function(){var t=n.value;"function"!=typeof e[t]||i.find(function(e){return t===e})||(e[t]=e[t].bind(e))}()}catch(e){r.e(e)}finally{r.f()}}function XM(e,t){if(!e)throw new Error(t||"Assertion failed")}function KM(){var e,t;return"performance"in QM?null==QM||null==(t=QM.performance)||null==(e=t.now)?void 0:e.call(t):"hrtime"in jM?1e3*(t=null==jM||null==(e=jM.hrtime)?void 0:e.call(jM))[0]+t[1]/1e6:Date.now()}(yp=ck=ck||{})[yp.BLACK=30]="BLACK",yp[yp.RED=31]="RED",yp[yp.GREEN=32]="GREEN",yp[yp.YELLOW=33]="YELLOW",yp[yp.BLUE=34]="BLUE",yp[yp.MAGENTA=35]="MAGENTA",yp[yp.CYAN=36]="CYAN",yp[yp.WHITE=37]="WHITE",yp[yp.BRIGHT_BLACK=90]="BRIGHT_BLACK",yp[yp.BRIGHT_RED=91]="BRIGHT_RED",yp[yp.BRIGHT_GREEN=92]="BRIGHT_GREEN",yp[yp.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",yp[yp.BRIGHT_BLUE=94]="BRIGHT_BLUE",yp[yp.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",yp[yp.BRIGHT_CYAN=96]="BRIGHT_CYAN",yp[yp.BRIGHT_WHITE=97]="BRIGHT_WHITE";var ZM={debug:console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},$M={enabled:!0,level:0};function eS(){}var tS={},nS={once:!0},Fu=function(){return A(function e(){ue(this,e);var t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{id:""}).id;l(this,"id",void 0),l(this,"VERSION",WM),l(this,"_startTs",KM()),l(this,"_deltaTs",KM()),l(this,"_storage",void 0),l(this,"userData",{}),l(this,"LOG_THROTTLE_TIMEOUT",0),this.id=t,this._storage=new JM("__probe-".concat(this.id,"__"),$M),this.userData={},this.timeStamp("".concat(this.id," started")),YM(this),Object.seal(this)},[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((KM()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((KM()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){return this._storage.updateConfiguration({enabled:!(0<arguments.length&&void 0!==arguments[0])||arguments[0]}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(Y({},e,t))}},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"assert",value:function(e,t){XM(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,ZM.warn,arguments,nS)}},{key:"error",value:function(e){return this._getLogFunction(0,e,ZM.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,ZM.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,ZM.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){for(var n=arguments.length,i=new Array(2<n?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return this._getLogFunction(e,t,ZM.debug||ZM.info,arguments,nS)}},{key:"table",value:function(e,t,n){return t?this._getLogFunction(e,t,console.table||eS,n&&[n],{tag:function(e){for(var t in e)for(var n in e[t])return n||"untitled";return"empty"}(t)}):eS}},{key:"image",value:function(e){var n,t,i,r,a=e.logLevel,o=e.priority,s=e.image,l=e.message,l=void 0===l?"":l,e=e.scale,e=void 0===e?1:e;return this._shouldLog(a||o)&&(o=(a={image:s,message:l,scale:e}).image,s=a.message,i=void 0===s?"":s,s=a.scale,r=void 0===s?1:s,"string"==typeof o?((n=new Image).onload=function(){var e,t=qM(n,i,r);(e=console).log.apply(e,Fe(t))},n.src=o):"img"===(a=o.nodeName||"").toLowerCase()?(s=console).log.apply(s,Fe(qM(o,i,r))):"canvas"===a.toLowerCase()&&((t=new Image).onload=function(){var e;return(e=console).log.apply(e,Fe(qM(t,i,r)))},t.src=o.toDataURL())),eS}},{key:"time",value:function(e,t){return this._getLogFunction(e,t,console.time||console.info)}},{key:"timeEnd",value:function(e,t){return this._getLogFunction(e,t,console.timeEnd||console.info)}},{key:"timeStamp",value:function(e,t){return this._getLogFunction(e,t,console.timeStamp||eS)}},{key:"group",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},e=rS({logLevel:e,message:t,opts:n}),t=n.collapsed;return e.method=(t?console.groupCollapsed:console.group)||console.info,this._getLogFunction(e)}},{key:"groupCollapsed",value:function(e,t){return this.group(e,t,Object.assign({},2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||eS)}},{key:"withGroup",value:function(e,t,n){this.group(e,t)();try{n()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=iS(e)}},{key:"_getLogFunction",value:function(e,t,n,i,r){if(this._shouldLog(e)){r=rS({logLevel:e,message:t,args:i,opts:r}),XM(n=n||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=KM();e=r.tag||r.message;if(r.once){if(tS[e])return eS;tS[e]=KM()}return t=function(e,t,n){{var i;"string"==typeof t&&(i=n.time?function(e,t){return t=Math.max((1<arguments.length&&void 0!==t?t:8)-e.length,0),"".concat(" ".repeat(t)).concat(e)}(function(e){return e=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s")}(n.total)):"",t=function(e){return e}(t=(n.time?"".concat(e,": ").concat(i," "):"".concat(e,": ")).concat(t),(n.color,n.background)))}return t}(this.id,r.message,r),n.bind.apply(n,[console,t].concat(Fe(r.args)))}return eS}}])}();function iS(e){if(!e)return 0;var t;switch(O(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return XM(Number.isFinite(t)&&0<=t),t}function rS(e){for(var t=e.logLevel,n=e.message,i=(e.logLevel=iS(t),e.args?Array.from(e.args):[]);i.length&&i.shift()!==n;);switch(O(t)){case"string":case"function":void 0!==n&&i.unshift(n),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=O(e.message);return XM("string"===r||"object"===r),Object.assign(e,{args:i},e.opts)}l(Fu,"VERSION",WM);var aS=new Fu({id:"loaders.gl"}),oS=function(){return A(function e(){ue(this,e)},[{key:"log",value:function(){return function(){}}},{key:"info",value:function(){return function(){}}},{key:"warn",value:function(){return function(){}}},{key:"error",value:function(){return function(){}}}])}(),sS={fetch:null,mimeType:void 0,nothrow:!1,log:new(function(){return A(function e(){ue(this,e),l(this,"console",void 0),this.console=console},[{key:"log",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.log).bind.apply(e,[this.console].concat(n))}},{key:"info",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.info).bind.apply(e,[this.console].concat(n))}},{key:"warn",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.warn).bind.apply(e,[this.console].concat(n))}},{key:"error",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.error).bind.apply(e,[this.console].concat(n))}}])}()),CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},lS={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function uS(){BB.loaders=BB.loaders||{};var e=BB.loaders;return e._state=e._state||{},e._state}var cS=function(){var e=uS();return e.globalOptions=e.globalOptions||g({},sS),e.globalOptions};function dS(e,t,n,i){n=n||[],n=Array.isArray(n)?n:[n];var r=e,a=n;pS(r,null,sS,lS,a);var o,s=q(a);try{for(s.s();!(o=s.n()).done;){var l=o.value,u=r&&r[l.id]||{},c=l.options&&l.options[l.id]||{},d=l.deprecatedOptions&&l.deprecatedOptions[l.id]||{};pS(u,l.id,c,d,a)}}catch(e){s.e(e)}finally{s.f()}n=t,t=e,e=i,i=n=g({},n.options||{});return!e||"baseUri"in i||(i.baseUri=e),null===n.log&&(n.log=new oS),fS(n,cS()),fS(n,t),n}function hS(e,t){var n=cS(),i=e||n;return"function"==typeof i.fetch?i.fetch:xM(i.fetch)?function(e){return GM(e,i)}:null!=t&&t.fetch?null==t?void 0:t.fetch:GM}function pS(e,t,n,i,r){var a,o=t||"Top level",s=t?"".concat(t,"."):"";for(a in e){var l=!t&&xM(e[a]),u="baseUri"===a&&!t,c="workerUrl"===a&&t;a in n||u||c||(a in i?aS.warn("".concat(o," loader option '").concat(s).concat(a,"' no longer supported, use '").concat(i[a],"'"))():l||(u=function(e,t){var n,i=e.toLowerCase(),r="",a=q(t);try{for(a.s();!(n=a.n()).done;){var o,s=n.value;for(o in s.options){if(e===o)return"Did you mean '".concat(s.id,".").concat(o,"'?");var l=o.toLowerCase();(i.startsWith(l)||l.startsWith(i))&&(r=r||"Did you mean '".concat(s.id,".").concat(o,"'?"))}}}catch(e){a.e(e)}finally{a.f()}return r}(a,r),aS.warn("".concat(o," loader option '").concat(s).concat(a,"' not recognized. ").concat(u))()))}}function fS(e,t){for(var n in t){var i;n in t&&(i=t[n],wM(i)&&wM(e[n])?e[n]=g(g({},e[n]),t[n]):e[n]=t[n])}}function mS(e){return!!e&&(Array.isArray(e)&&(e=e[0]),Array.isArray(null==(e=e)?void 0:e.extensions))}function vS(e){var t;return _B(e,"null loader"),_B(mS(e),"invalid loader"),Array.isArray(e)&&(t=e[1],e=g(g({},e=e[0]),{},{options:g(g({},e.options),t)})),(null!=(t=e)&&t.parseTextSync||null!=(t=e)&&t.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}function gS(){return(e=uS()).loaderRegistry=e.loaderRegistry||[],e.loaderRegistry;var e}var AS=/\.([^.]+)$/;function yS(){return(yS=J(X().mark(function e(t){var n,i,r,a,o=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=1<o.length&&void 0!==o[1]?o[1]:[],i=2<o.length?o[2]:void 0,r=3<o.length?o[3]:void 0,bS(t)){e.next=5;break}return e.abrupt("return",null);case 5:if(a=wS(t,n,g(g({},i),{},{nothrow:!0}),r))return e.abrupt("return",a);e.next=8;break;case 8:if(MM(t))return e.next=11,t.slice(0,10).arrayBuffer();e.next=13;break;case 11:t=e.sent,a=wS(t,n,i,r);case 13:if(a||null!=i&&i.nothrow){e.next=15;break}throw new Error(xS(t));case 15:return e.abrupt("return",a);case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function wS(e,t,n,i){t=1<arguments.length&&void 0!==t?t:[],n=2<arguments.length?n:void 0,i=3<arguments.length?i:void 0;if(!bS(e))return null;if(t&&!Array.isArray(t))return vS(t);var r,a=[],t=(t&&(a=a.concat(t)),null!=n&&n.ignoreRegisteredLoaders||a.push.apply(a,Fe(gS())),a),o=q(t);try{for(o.s();!(r=o.n()).done;)vS(r.value)}catch(e){o.e(e)}finally{o.f()}t=function(e,t,n,i){var r=RM(e),a=r.url,r=r.type,a=a||(null==i?void 0:i.url),i=null;null!=n&&n.mimeType&&(i=ES(t,null==n?void 0:n.mimeType));return i=(i=(i=(i=i||function(e,t){t=t&&AS.exec(t),t=t&&t[1];return t?function(e,t){t=t.toLowerCase();var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r,a=n.value,o=q(a.extensions);try{for(o.s();!(r=o.n()).done;)if(r.value.toLowerCase()===t)return a}catch(e){o.e(e)}finally{o.f()}}}catch(e){i.e(e)}finally{i.f()}return null}(e,t):null}(t,a))||ES(t,r))||function(e,t){if(t){var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if("string"==typeof t){if(function(t,e){if(e.testText)return e.testText(t);return(Array.isArray(e.tests)?e.tests:[e.tests]).some(function(e){return t.startsWith(e)})}(t,r))return r}else if(ArrayBuffer.isView(t)){if(CS(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer)if(CS(t,0,r))return r}}catch(e){i.e(e)}finally{i.f()}}return null}(t,e))||ES(t,null==n?void 0:n.fallbackMimeType)}(e,a,n,i);if(t||null!=n&&n.nothrow)return t;throw new Error(xS(e))}function bS(e){return!(e instanceof Response&&204===e.status)}function xS(e){var t,n=RM(e),i=n.url,n=n.type,r="No valid loader found (",i=(r=(r+=i?"".concat(0<=(t=(i=i)&&i.lastIndexOf("/"))?i.substr(t+1):"",", "):"no url provided, ")+"MIME type: ".concat(n?'"'.concat(n,'"'):"not provided",", "),e?function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:5;{if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return BS(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer)return BS(e,0,t)}return""}(e):"");return r=r+(i?' first bytes: "'.concat(i,'"'):"first bytes: not available")+")"}function ES(e,t){var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r.mimeTypes&&r.mimeTypes.includes(t))return r;if(t==="application/x.".concat(r.id))return r}}catch(e){i.e(e)}finally{i.f()}return null}function CS(d,h,p){return(Array.isArray(p.tests)?p.tests:[p.tests]).some(function(e){var t=d,n=h,i=p,r=e;if(r instanceof ArrayBuffer){var e=r,a=t,o=r.byteLength;if(o=o||e.byteLength,e.byteLength<o||a.byteLength<o)return!1;for(var s=new Uint8Array(e),l=new Uint8Array(a),u=0;u<s.length;++u)if(s[u]!==l[u])return!1;return!0}switch(O(r)){case"function":return r(t,i);case"string":var c=BS(t,n,r.length);return r===c;default:return!1}})}function BS(e,t,n){if(e.byteLength<t+n)return"";for(var i=new DataView(e),r="",a=0;a<n;a++)r+=String.fromCharCode(i.getUint8(t+a));return r}var MS=262144;function SS(t,n){var i,r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=(null==n?void 0:n.chunkSize)||MS,r=0,a=new TextEncoder;case 3:if(r<t.length)return o=Math.min(t.length-r,i),s=t.slice(r,r+o),r+=o,e.next=9,a.encode(s);e.next=11;break;case 9:e.next=3;break;case 11:case"end":return e.stop()}},EB)}var TS=1048576;function _S(){return(_S=G(X().mark(function e(t,n){var i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=(null==n?void 0:n.chunkSize)||TS,r=0;case 2:if(r<t.size)return a=r+i,e.next=6,h(t.slice(r,a).arrayBuffer());e.next=12;break;case 6:return o=e.sent,r=a,e.next=10,o;case 10:e.next=2;break;case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function PS(e,t){return PB?function(){return DS.apply(this,arguments)}(e,t):function(){return IS.apply(this,arguments)}(e)}function DS(){return(DS=G(X().mark(function e(t,n){var i,r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getReader(),e.prev=1;case 2:return a=r||i.read(),null!=n&&n._streamReadAhead&&(r=i.read()),e.next=7,h(a);case 7:if(a=e.sent,o=a.done,s=a.value,o)return e.abrupt("return");e.next=12;break;case 12:return e.next=14,oM(s);case 14:e.next=2;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(1),i.releaseLock();case 21:case"end":return e.stop()}},e,null,[[1,18]])}))).apply(this,arguments)}function IS(){return(IS=G(X().mark(function e(t,n){var i,r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=i=!1,e.prev=2,o=c(t);case 4:return e.next=6,h(o.next());case 6:if(i=!(s=e.sent).done)return s=s.value,e.next=10,oM(s);e.next=13;break;case 10:i=!1,e.next=4;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(2),r=!0,a=e.t0;case 19:if(e.prev=19,e.prev=20,i&&null!=o.return)return e.next=24,h(o.return());e.next=24;break;case 24:if(e.prev=24,r)throw a;e.next=27;break;case 27:return e.finish(24);case 28:return e.finish(19);case 29:case"end":return e.stop()}},e,null,[[2,15,19,29],[20,,24,28]])}))).apply(this,arguments)}function kS(e,t){if("string"==typeof e)return SS(e,t);if(e instanceof ArrayBuffer)return function(o,e){var s=1<arguments.length&&void 0!==e?e:{};return X().mark(function e(){var t,n,i,r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=s.chunkSize,t=void 0===t?262144:t,n=0;case 2:if(n<o.byteLength)return i=Math.min(o.byteLength-n,t),r=new ArrayBuffer(i),a=new Uint8Array(o,n,i),new Uint8Array(r).set(a),n+=i,e.next=11,r;e.next=13;break;case 11:e.next=2;break;case 13:case"end":return e.stop()}},e)})()}(e,t);if(MM(e))return function(){return _S.apply(this,arguments)}(e,t);if(_M(e))return PS(e,t);if(BM(e))return PS(e.body,t);throw new Error("makeIterator")}var RS="Cannot convert supplied data type";function LS(){return(LS=J(X().mark(function e(t,n,i){var r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t instanceof ArrayBuffer||ArrayBuffer.isView(t),"string"==typeof t||r)return e.abrupt("return",function(e,t){if(t.text&&"string"==typeof e)return e;var n;if((e=bM(e)?e.buffer:e)instanceof ArrayBuffer)return n=e,t.text&&!t.binary?new TextDecoder("utf8").decode(n):n;if(ArrayBuffer.isView(e))return t.text&&!t.binary?new TextDecoder("utf8").decode(e):(n=e.buffer,t=e.byteLength||e.length,0===e.byteOffset&&t===n.byteLength?n:n.slice(e.byteOffset,e.byteOffset+t));throw new Error(RS)}(t,n));e.next=3;break;case 3:if(MM(t))return e.next=6,FM(t);e.next=7;break;case 6:t=e.sent;case 7:if(BM(t))return a=t,e.next=11,function(){return UM.apply(this,arguments)}(a);e.next=21;break;case 11:if(n.binary)return e.next=14,a.arrayBuffer();e.next=17;break;case 14:e.t0=e.sent,e.next=20;break;case 17:return e.next=19,a.text();case 19:e.t0=e.sent;case 20:return e.abrupt("return",e.t0);case 21:if(_M(t)&&(t=kS(t,i)),EM(t)||CM(t))return e.abrupt("return",function(){return cM.apply(this,arguments)}(t));e.next=24;break;case 24:throw new Error(RS);case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}function FS(e,t,n,i){return OS.apply(this,arguments)}function OS(){return(OS=J(X().mark(function e(r,a,o,s){var l,u,c;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return DB(!s||"object"===O(s)),!a||Array.isArray(a)||mS(a)||(o=a,a=s=void 0),e.next=4,r;case 4:return r=e.sent,o=o||{},l=RM(r),l=l.url,t=a,i=void 0,u=(n=s)||!t||Array.isArray(t)?(t&&(i=Array.isArray(t)?t:[t]),n&&n.loaders&&(n=Array.isArray(n.loaders)?n.loaders:[n.loaders],i=i?[].concat(Fe(i),Fe(n)):n),i&&i.length?i:null):t,e.next=11,function(){return yS.apply(this,arguments)}(r,u,o);case 11:if(c=e.sent){e.next=14;break}return e.abrupt("return",null);case 14:return o=dS(o,c,u,l),s=function(e,t,n){var n=2<arguments.length&&void 0!==n?n:null;return n||(n=g({fetch:hS(t,e)},e),Array.isArray(n.loaders)||(n.loaders=null),n)}({url:l,parse:FS,loaders:u},o,s),e.next=18,function(){return US.apply(this,arguments)}(c,r,o,s);case 18:return e.abrupt("return",e.sent);case 19:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}function US(){return(US=J(X().mark(function e(i,r,a,o){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return function(e){DB(e,"no worker provided"),e.version}(i),e.next=3,function(){return LS.apply(this,arguments)}(r,i,a);case 3:if(r=e.sent,i.parseTextSync&&"string"==typeof r)return a.dataType="text",e.abrupt("return",i.parseTextSync(r,a,o,i));e.next=7;break;case 7:if(t=i,n=a,jB.isSupported()&&t.worker&&null!=n&&n.worker)return e.next=10,function(){return eM.apply(this,arguments)}(i,r,a,o,FS);e.next=11;break;case 10:return e.abrupt("return",e.sent);case 11:if(i.parseText&&"string"==typeof r)return e.next=14,i.parseText(r,a,o,i);e.next=15;break;case 14:return e.abrupt("return",e.sent);case 15:if(i.parse)return e.next=18,i.parse(r,a,o,i);e.next=19;break;case 18:return e.abrupt("return",e.sent);case 19:throw DB(!i.parseSync),new Error("".concat(i.id," loader - no parser found and worker is disabled"));case 21:case"end":return e.stop()}var t,n},e)}))).apply(this,arguments)}function NS(){return zS.apply(this,arguments)}function zS(){return(zS=J(X().mark(function e(t,n,i,r){var a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(Array.isArray(n)||mS(n)||(i=n,n=void 0),a=hS(i),"string"==typeof(o=t))return e.next=6,a(t);e.next=7;break;case 6:o=e.sent;case 7:if(MM(t))return e.next=10,a(t);e.next=11;break;case 10:o=e.sent;case 11:return e.next=13,FS(o,n,i);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}},e)}))).apply(this,arguments)}function GS(e,t){if(!e)throw new Error("math.gl assertion ".concat(t))}var HS=1/Math.PI*180,VS=1/180*Math.PI,QS={};function jS(e,t){var n,t=(1<arguments.length&&void 0!==t?t:{}).precision,t=void 0===t?QS.precision||4:t;return n=e,e=Math.round(n/QS.EPSILON)*QS.EPSILON,"".concat(parseFloat(e.toPrecision(t)))}function WS(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function JS(e,t,n){if(WS(e)){n=n||((r=e).clone?r.clone():new Array(r.length));for(var i=0;i<n.length&&i<e.length;++i)n[i]=t(e[i],i,n);return n}var r;return t(e)}function qS(e){return JS(e,function(e){return e*VS},t);var t}function YS(e){return XS(e)}function XS(e,t){return JS(e,function(e){return e*HS},t)}function KS(e,t,n){var i=QS.EPSILON;n&&(QS.EPSILON=n);try{if(e===t)return!0;if(WS(e)&&WS(t)){if(e.length!==t.length)return!1;for(var r=0;r<e.length;++r)if(!KS(e[r],t[r]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):!(!Number.isFinite(e)||!Number.isFinite(t))&&Math.abs(e-t)<=QS.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))}finally{QS.EPSILON=i}}function ZS(t){function e(){var e=Reflect.construct(t,Array.from(arguments));return Object.setPrototypeOf(e,Object.getPrototypeOf(this)),e}return e.prototype=Object.create(t.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t,e}QS.EPSILON=1e-12,QS.debug=!1,QS.precision=4,QS.printTypes=!1,QS.printDegrees=!1,QS.printRowMajor=!0;var $S=function(){function e(){return ue(this,e),le(this,e,arguments)}return v(e,ZS(Array)),A(e,[{key:"ELEMENTS",get:function(){return GS(!1),0}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"from",value:function(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}},{key:"to",value:function(e){return e===this?this:WS(e)?this.toArray(e):this.toObject(e)}},{key:"toTarget",value:function(e){return e?this.to(e):this}},{key:"toArray",value:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}},{key:"toFloat32Array",value:function(){return new Float32Array(this)}},{key:"toString",value:function(){return this.formatString(QS)}},{key:"formatString",value:function(e){for(var t="",n=0;n<this.ELEMENTS;++n)t+=(0<n?", ":"")+jS(this[n],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(t,"]")}},{key:"equals",value:function(e){if(!e||this.length!==e.length)return!1;for(var t=0;t<this.ELEMENTS;++t)if(!KS(this[t],e[t]))return!1;return!0}},{key:"exactEquals",value:function(e){if(!e||this.length!==e.length)return!1;for(var t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}},{key:"negate",value:function(){for(var e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}},{key:"lerp",value:function(e,t,n){void 0===n&&(n=t,t=e,e=this);for(var i=0;i<this.ELEMENTS;++i){var r=e[i];this[i]=r+n*(t[i]-r)}return this.check()}},{key:"min",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}},{key:"max",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}},{key:"clamp",value:function(e,t){for(var n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}},{key:"add",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]+=a[o];return this.check()}},{key:"subtract",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]-=a[o];return this.check()}},{key:"scale",value:function(e){if(Array.isArray(e))return this.multiply(e);for(var t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}},{key:"sub",value:function(e){return this.subtract(e)}},{key:"setScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}},{key:"addScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}},{key:"subScalar",value:function(e){return this.addScalar(-e)}},{key:"multiplyScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}},{key:"divideScalar",value:function(e){return this.scale(1/e)}},{key:"clampScalar",value:function(e,t){for(var n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}},{key:"multiplyByScalar",value:function(e){return this.scale(e)}},{key:"elements",get:function(){return this}},{key:"check",value:function(){if(QS.debug&&!this.validate())throw new Error("math.gl: ".concat(this.constructor.name," some fields set to invalid numbers'"));return this}},{key:"validate",value:function(){for(var e=this.length===this.ELEMENTS,t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}}])}();function eT(e){if(Number.isFinite(e))return e;throw new Error("Invalid number ".concat(e))}function tT(e,t,n){n=2<arguments.length&&void 0!==n?n:"";if(QS.debug&&!function(e,t){if(e.length===t){for(var n=0;n<e.length;++n)if(!Number.isFinite(e[n]))return;return 1}}(e,t))throw new Error("math.gl: ".concat(n," some fields set to invalid numbers'"));return e}var nT={};function iT(e,t){nT[e]||(nT[e]=!0,console.warn("".concat(e," has been removed in version ").concat(t,", see upgrade guide for more information")))}var rT=function(){function e(){return ue(this,e),le(this,e,arguments)}return v(e,$S),A(e,[{key:"ELEMENTS",get:function(){return GS(!1),0}},{key:"copy",value:function(e){return GS(!1),this}},{key:"x",get:function(){return this[0]},set:function(e){this[0]=eT(e)}},{key:"y",get:function(){return this[1]},set:function(e){this[1]=eT(e)}},{key:"len",value:function(){return Math.sqrt(this.lengthSquared())}},{key:"magnitude",value:function(){return this.len()}},{key:"lengthSquared",value:function(){for(var e=0,t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}},{key:"magnitudeSquared",value:function(){return this.lengthSquared()}},{key:"distance",value:function(e){return Math.sqrt(this.distanceSquared(e))}},{key:"distanceSquared",value:function(e){for(var t=0,n=0;n<this.ELEMENTS;++n){var i=this[n]-e[n];t+=i*i}return eT(t)}},{key:"dot",value:function(e){for(var t=0,n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return eT(t)}},{key:"normalize",value:function(){var e=this.magnitude();if(0!==e)for(var t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}},{key:"multiply",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]*=a[o];return this.check()}},{key:"divide",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]/=a[o];return this.check()}},{key:"lengthSq",value:function(){return this.lengthSquared()}},{key:"distanceTo",value:function(e){return this.distance(e)}},{key:"distanceToSquared",value:function(e){return this.distanceSquared(e)}},{key:"getComponent",value:function(e){return GS(0<=e&&e<this.ELEMENTS,"index is out of range"),eT(this[e])}},{key:"setComponent",value:function(e,t){return GS(0<=e&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}},{key:"addVectors",value:function(e,t){return this.copy(e).add(t)}},{key:"subVectors",value:function(e,t){return this.copy(e).subtract(t)}},{key:"multiplyVectors",value:function(e,t){return this.copy(e).multiply(t)}},{key:"addScaledVector",value:function(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}}])}(),aT=1e-6,oT="undefined"!=typeof Float32Array?Float32Array:Array;function sT(e,t,n){var i=t[0],t=t[1];return e[0]=n[0]*i+n[3]*t+n[6],e[1]=n[1]*i+n[4]*t+n[7],e}function lT(e,t,n){var i=t[0],t=t[1];return e[0]=n[0]*i+n[4]*t+n[12],e[1]=n[1]*i+n[5]*t+n[13],e}function uT(e,t,n){var i=t[0],t=t[1],r=n[3]*i+n[7]*t||1;return e[0]=(n[0]*i+n[4]*t)/r,e[1]=(n[1]*i+n[5]*t)/r,e}function cT(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[3]*i+n[7]*r+n[11]*t||1;return e[0]=(n[0]*i+n[4]*r+n[8]*t)/a,e[1]=(n[1]*i+n[5]*r+n[9]*t)/a,e[2]=(n[2]*i+n[6]*r+n[10]*t)/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),Iu=new oT(2),oT!=Float32Array&&(Iu[0]=0,Iu[1]=0);Ru=function(){function i(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return ue(this,i),e=le(this,i,[2]),WS(t)&&1===arguments.length?e.copy(t):(QS.debug&&(eT(t),eT(n)),e[0]=t,e[1]=n),e}return v(i,rT),A(i,[{key:"set",value:function(e,t){return this[0]=e,this[1]=t,this.check()}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this.check()}},{key:"fromObject",value:function(e){return QS.debug&&(eT(e.x),eT(e.y)),this[0]=e.x,this[1]=e.y,this.check()}},{key:"toObject",value:function(e){return e.x=this[0],e.y=this[1],e}},{key:"ELEMENTS",get:function(){return 2}},{key:"horizontalAngle",value:function(){return Math.atan2(this.y,this.x)}},{key:"verticalAngle",value:function(){return Math.atan2(this.x,this.y)}},{key:"transform",value:function(e){return this.transformAsPoint(e)}},{key:"transformAsPoint",value:function(e){return lT(this,this,e),this.check()}},{key:"transformAsVector",value:function(e){return uT(this,this,e),this.check()}},{key:"transformByMatrix3",value:function(e){return sT(this,this,e),this.check()}},{key:"transformByMatrix2x3",value:function(e){var t,n,i;return e=e,i=(n=t=this)[0],n=n[1],t[0]=e[0]*i+e[2]*n+e[4],t[1]=e[1]*i+e[3]*n+e[5],this.check()}},{key:"transformByMatrix2",value:function(e){var t,n,i;return e=e,i=(n=t=this)[0],n=n[1],t[0]=e[0]*i+e[2]*n,t[1]=e[1]*i+e[3]*n,this.check()}}])}();function dT(){var e=new oT(3);return oT!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function hT(e){var t=e[0],n=e[1],e=e[2];return Math.hypot(t,n,e)}function pT(e,t,n){var i=new oT(3);return i[0]=e,i[1]=t,i[2]=n,i}function fT(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function mT(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[0],o=n[1],n=n[2];e[0]=r*n-t*o,e[1]=t*a-i*n,e[2]=i*o-r*a}function vT(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[3]*i+n[7]*r+n[11]*t+n[15];return e[0]=(n[0]*i+n[4]*r+n[8]*t+n[12])/(a=a||1),e[1]=(n[1]*i+n[5]*r+n[9]*t+n[13])/a,e[2]=(n[2]*i+n[6]*r+n[10]*t+n[14])/a,e}function gT(e,t,n){var i=t[0],r=t[1],t=t[2];return e[0]=i*n[0]+r*n[3]+t*n[6],e[1]=i*n[1]+r*n[4]+t*n[7],e[2]=i*n[2]+r*n[5]+t*n[8],e}var AT=hT,yT=(dT(),[0,0,0]),wT={},B=function(){function r(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;return ue(this,r),e=le(this,r,[-0,-0,-0]),1===arguments.length&&WS(t)?e.copy(t):(QS.debug&&(eT(t),eT(n),eT(i)),e[0]=t,e[1]=n,e[2]=i),e}return v(r,rT),A(r,[{key:"set",value:function(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}},{key:"fromObject",value:function(e){return QS.debug&&(eT(e.x),eT(e.y),eT(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}},{key:"toObject",value:function(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}},{key:"ELEMENTS",get:function(){return 3}},{key:"z",get:function(){return this[2]},set:function(e){this[2]=eT(e)}},{key:"angle",value:function(e){return e=e,n=(t=this)[0],i=t[1],r=t[2],a=e[0],o=e[1],s=e[2],i=(n=Math.sqrt(n*n+i*i+r*r)*Math.sqrt(a*a+o*o+s*s))&&fT(t,e)/n,Math.acos(Math.min(Math.max(i,-1),1));var t,n,i,r,a,o,s}},{key:"cross",value:function(e){return mT(this,this,e),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?yT:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[0],r[1]=i[1]*Math.cos(a)-i[2]*Math.sin(a),r[2]=i[1]*Math.sin(a)+i[2]*Math.cos(a),t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?yT:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[2]*Math.sin(a)+i[0]*Math.cos(a),r[1]=i[1],r[2]=i[2]*Math.cos(a)-i[0]*Math.sin(a),t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?yT:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[0]*Math.cos(a)-i[1]*Math.sin(a),r[1]=i[0]*Math.sin(a)+i[1]*Math.cos(a),r[2]=i[2],t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"transform",value:function(e){return this.transformAsPoint(e)}},{key:"transformAsPoint",value:function(e){return vT(this,this,e),this.check()}},{key:"transformAsVector",value:function(e){return cT(this,this,e),this.check()}},{key:"transformByMatrix3",value:function(e){return gT(this,this,e),this.check()}},{key:"transformByMatrix2",value:function(e){var t,n,i,r;return e=e,i=(n=t=this)[0],r=n[1],t[0]=e[0]*i+e[2]*r,t[1]=e[1]*i+e[3]*r,t[2]=n[2],this.check()}},{key:"transformByQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return n=t=this,r=(i=e)[0],a=e[1],o=e[2],i=e[3],e=n[0],s=n[1],n=n[2],d=a*(c=r*s-a*e)-o*(u=o*e-r*n),o=o*(l=a*n-o*s)-r*c,r=r*u-a*l,u*=a=2*i,c*=a,o*=2,r*=2,t[0]=e+(l*=a)+(d*=2),t[1]=s+u+o,t[2]=n+c+r,this.check()}}],[{key:"ZERO",get:function(){return wT.ZERO=wT.ZERO||Object.freeze(new r(0,0,0,0))}}])}(),bT=function(){function e(){return ue(this,e),le(this,e,arguments)}return v(e,$S),A(e,[{key:"ELEMENTS",get:function(){return GS(!1),0}},{key:"RANK",get:function(){return GS(!1),0}},{key:"toString",value:function(){var e="[";if(QS.printRowMajor){e+="row-major:";for(var t=0;t<this.RANK;++t)for(var n=0;n<this.RANK;++n)e+=" ".concat(this[n*this.RANK+t])}else{e+="column-major:";for(var i=0;i<this.ELEMENTS;++i)e+=" ".concat(this[i])}return e+="]"}},{key:"getElementIndex",value:function(e,t){return t*this.RANK+e}},{key:"getElement",value:function(e,t){return this[t*this.RANK+e]}},{key:"setElement",value:function(e,t,n){return this[t*this.RANK+e]=eT(n),this}},{key:"getColumn",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Array(this.RANK).fill(-0),n=e*this.RANK,i=0;i<this.RANK;++i)t[i]=this[n+i];return t}},{key:"setColumn",value:function(e,t){for(var n=e*this.RANK,i=0;i<this.RANK;++i)this[n+i]=t[i];return this}}])}();function xT(e,t,n){var i=t[0],r=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],t=t[8],d=n[0],h=n[1],p=n[2],f=n[3],m=n[4],v=n[5],g=n[6],A=n[7],n=n[8];e[0]=d*i+h*o+p*u,e[1]=d*r+h*s+p*c,e[2]=d*a+h*l+p*t,e[3]=f*i+m*o+v*u,e[4]=f*r+m*s+v*c,e[5]=f*a+m*l+v*t,e[6]=g*i+A*o+n*u,e[7]=g*r+A*s+n*c,e[8]=g*a+A*l+n*t}function ET(e,t,n){var i=n[0],n=n[1];e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=n*t[3],e[4]=n*t[4],e[5]=n*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8]}var CT=Object.freeze([1,0,0,0,1,0,0,0,1]),BT=Object.freeze([0,0,0,0,0,0,0,0,0]),MT=Object.freeze({COL0ROW0:0,COL0ROW1:1,COL0ROW2:2,COL1ROW0:3,COL1ROW1:4,COL1ROW2:5,COL2ROW0:6,COL2ROW1:7,COL2ROW2:8}),ST={},TT=function(){function n(e){var t;return ue(this,n),t=le(this,n,[-0,-0,-0,-0,-0,-0,-0,-0,-0]),1===arguments.length&&Array.isArray(e)?t.copy(e):t.identity(),t}return v(n,bT),A(n,[{key:"ELEMENTS",get:function(){return 9}},{key:"RANK",get:function(){return 3}},{key:"INDICES",get:function(){return MT}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}},{key:"set",value:function(e,t,n,i,r,a,o,s,l){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this[4]=r,this[5]=a,this[6]=o,this[7]=s,this[8]=l,this.check()}},{key:"setRowMajor",value:function(e,t,n,i,r,a,o,s,l){return this[0]=e,this[1]=i,this[2]=o,this[3]=t,this[4]=r,this[5]=s,this[6]=n,this[7]=a,this[8]=l,this.check()}},{key:"determinant",value:function(){return t=(e=this)[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],e=e[8],t*(e*a-o*l)+n*(-e*r+o*s)+i*(l*r-a*s);var e,t,n,i,r,a,o,s,l}},{key:"identity",value:function(){return this.copy(CT)}},{key:"fromQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c;return t=this,n=(e=e)[0],i=e[1],r=e[2],e=e[3],n*=u=n+n,o=i*u,i*=c=i+i,s=r*u,l=r*c,r*=a=r+r,u*=e,c*=e,e*=a,t[0]=1-i-r,t[3]=o-e,t[6]=s+c,t[1]=o+e,t[4]=1-n-r,t[7]=l-u,t[2]=s-c,t[5]=l+u,t[8]=1-n-i,this.check()}},{key:"transpose",value:function(){var e,t,n,i,r;return(e=this)===(t=this)?(n=t[1],i=t[2],r=t[5],e[1]=t[3],e[2]=t[6],e[3]=n,e[5]=t[7],e[6]=i,e[7]=r):(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8]),this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a,o,s,l,u,c,d,h,p;return n=(t=e=this)[0],i=t[1],r=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=(t=t[8])*o-s*u,(p=n*c+i*(d=-t*a+s*l)+r*(h=u*a-o*l))&&(e[0]=c*(p=1/p),e[1]=(-t*i+r*u)*p,e[2]=(s*i-r*o)*p,e[3]=d*p,e[4]=(t*n-r*l)*p,e[5]=(-s*n+r*a)*p,e[6]=h*p,e[7]=(-u*n+i*l)*p,e[8]=(o*n-i*a)*p),this.check()}},{key:"multiplyLeft",value:function(e){return xT(this,e,this),this.check()}},{key:"multiplyRight",value:function(e){return xT(this,this,e),this.check()}},{key:"rotate",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return e=e,i=(n=t=this)[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],n=n[8],d=Math.sin(e),e=Math.cos(e),t[0]=e*i+d*o,t[1]=e*r+d*s,t[2]=e*a+d*l,t[3]=e*o-d*i,t[4]=e*s-d*r,t[5]=e*l-d*a,t[6]=u,t[7]=c,t[8]=n,this.check()}},{key:"scale",value:function(e){return Array.isArray(e)?ET(this,this,e):ET(this,this,[e,e,e]),this.check()}},{key:"translate",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return e=e,i=(n=t=this)[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],n=n[8],d=e[0],e=e[1],t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=d*i+e*o+u,t[7]=d*r+e*s+c,t[8]=d*a+e*l+n,this.check()}},{key:"transform",value:function(e,t){switch(e.length){case 2:t=sT(t||[-0,-0],e,this);break;case 3:t=gT(t||[-0,-0,-0],e,this);break;case 4:n=t||[-0,-0,-0,-0],r=this,a=(i=e)[0],o=i[1],s=i[2],n[0]=r[0]*a+r[3]*o+r[6]*s,n[1]=r[1]*a+r[4]*o+r[7]*s,n[2]=r[2]*a+r[5]*o+r[8]*s,n[3]=i[3],t=n;break;default:throw new Error("Illegal vector")}var n,i,r,a,o,s;return tT(t,e.length),t}},{key:"transformVector",value:function(e,t){return iT("Matrix3.transformVector"),this.transform(e,t)}},{key:"transformVector2",value:function(e,t){return iT("Matrix3.transformVector"),this.transform(e,t)}},{key:"transformVector3",value:function(e,t){return iT("Matrix3.transformVector"),this.transform(e,t)}}],[{key:"IDENTITY",get:function(){return ST.IDENTITY=ST.IDENTITY||Object.freeze(new n(CT)),ST.IDENTITY}},{key:"ZERO",get:function(){return ST.ZERO=ST.ZERO||Object.freeze(new n(BT)),ST.ZERO}}])}();function _T(e,t,n){var i=t[0],r=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],v=t[13],g=t[14],t=t[15],A=n[0],y=n[1],w=n[2],b=n[3];e[0]=A*i+y*s+w*d+b*m,e[1]=A*r+y*l+w*h+b*v,e[2]=A*a+y*u+w*p+b*g,e[3]=A*o+y*c+w*f+b*t,A=n[4],y=n[5],w=n[6],b=n[7],e[4]=A*i+y*s+w*d+b*m,e[5]=A*r+y*l+w*h+b*v,e[6]=A*a+y*u+w*p+b*g,e[7]=A*o+y*c+w*f+b*t,A=n[8],y=n[9],w=n[10],b=n[11],e[8]=A*i+y*s+w*d+b*m,e[9]=A*r+y*l+w*h+b*v,e[10]=A*a+y*u+w*p+b*g,e[11]=A*o+y*c+w*f+b*t,A=n[12],y=n[13],w=n[14],b=n[15],e[12]=A*i+y*s+w*d+b*m,e[13]=A*r+y*l+w*h+b*v,e[14]=A*a+y*u+w*p+b*g,e[15]=A*o+y*c+w*f+b*t}function PT(e,t,n){var i=n[0],r=n[1],n=n[2];e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}Yl=new oT(4),oT!=Float32Array&&(Yl[0]=0,Yl[1]=0,Yl[2]=0,Yl[3]=0);var DT=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),IT=Object.freeze([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),kT=Object.freeze({COL0ROW0:0,COL0ROW1:1,COL0ROW2:2,COL0ROW3:3,COL1ROW0:4,COL1ROW1:5,COL1ROW2:6,COL1ROW3:7,COL2ROW0:8,COL2ROW1:9,COL2ROW2:10,COL2ROW3:11,COL3ROW0:12,COL3ROW1:13,COL3ROW2:14,COL3ROW3:15}),RT={},LT=function(){function c(e){var t;return ue(this,c),t=le(this,c,[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0]),1===arguments.length&&Array.isArray(e)?t.copy(e):t.identity(),t}return v(c,bT),A(c,[{key:"INDICES",get:function(){return kT}},{key:"ELEMENTS",get:function(){return 16}},{key:"RANK",get:function(){return 4}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}},{key:"set",value:function(e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this[4]=r,this[5]=a,this[6]=o,this[7]=s,this[8]=l,this[9]=u,this[10]=c,this[11]=d,this[12]=h,this[13]=p,this[14]=f,this[15]=m,this.check()}},{key:"setRowMajor",value:function(e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m){return this[0]=e,this[1]=r,this[2]=l,this[3]=h,this[4]=t,this[5]=a,this[6]=u,this[7]=p,this[8]=n,this[9]=o,this[10]=c,this[11]=f,this[12]=i,this[13]=s,this[14]=d,this[15]=m,this.check()}},{key:"toRowMajor",value:function(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}},{key:"identity",value:function(){return this.copy(DT)}},{key:"fromQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c;return t=this,n=(e=e)[0],i=e[1],r=e[2],e=e[3],n*=u=n+n,o=i*u,i*=c=i+i,s=r*u,l=r*c,r*=a=r+r,u*=e,c*=e,e*=a,t[0]=1-i-r,t[1]=o+e,t[2]=s-c,t[3]=0,t[4]=o-e,t[5]=1-n-r,t[6]=l+u,t[7]=0,t[8]=s+c,t[9]=l-u,t[10]=1-n-i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this.check()}},{key:"frustum",value:function(e){var t,n,i,r,a=e.left,o=e.right,s=e.bottom,l=e.top,u=e.near,e=e.far;return e===1/0?c._computeInfinitePerspectiveOffCenter(this,a,o,s,l,u):(n=1/((o=o)-(a=a)),i=1/((l=l)-(s=s)),r=1/((u=u)-(e=e)),(t=this)[0]=2*u*n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*u*i,t[6]=0,t[7]=0,t[8]=(o+a)*n,t[9]=(l+s)*i,t[10]=(e+u)*r,t[11]=-1,t[12]=0,t[13]=0,t[14]=e*u*2*r,t[15]=0),this.check()}},{key:"lookAt",value:function(e,t,n){var i;return 1===arguments.length&&(e=(i=e).eye,t=i.center,n=i.up),function(e,t,n,i){var r,a,o,s,l=t[0],u=t[1],t=t[2],c=i[0],d=i[1],i=i[2],h=n[0],p=n[1],n=n[2];if(Math.abs(l-h)<aT&&Math.abs(u-p)<aT&&Math.abs(t-n)<aT)return(s=e)[0]=1,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=1,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1;s=l-h,h=u-p,p=t-n,r=d*(p*=n=1/Math.hypot(s,h,p))-i*(h*=n),i=i*(s*=n)-c*p,c=c*h-d*s,(n=Math.hypot(r,i,c))?(r*=n=1/n,i*=n,c*=n):c=i=r=0,d=h*c-p*i,a=p*r-s*c,o=s*i-h*r,(n=Math.hypot(d,a,o))?(d*=n=1/n,a*=n,o*=n):o=a=d=0,e[0]=r,e[1]=d,e[2]=s,e[3]=0,e[4]=i,e[5]=a,e[6]=h,e[7]=0,e[8]=c,e[9]=o,e[10]=p,e[11]=0,e[12]=-(r*l+i*u+c*t),e[13]=-(d*l+a*u+o*t),e[14]=-(s*l+h*u+p*t),e[15]=1}(this,e,t=t||[0,0,0],n=n||[0,1,0]),this.check()}},{key:"ortho",value:function(e){var t,n,i,r,a=e.left,o=e.right,s=e.bottom,l=e.top,u=e.near,e=e.far;return n=1/((a=a)-(o=o)),i=1/((s=s)-(l=l)),r=1/((u=void 0===u?.1:u)-(e=void 0===e?500:e)),(t=this)[0]=-2*n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*r,t[11]=0,t[12]=(a+o)*n,t[13]=(l+s)*i,t[14]=(e+u)*r,t[15]=1,this.check()}},{key:"orthographic",value:function(e){var t=e.fovy,t=void 0===t?45*Math.PI/180:t,n=e.aspect,n=void 0===n?1:n,i=e.focalDistance,i=void 0===i?1:i,r=e.near,r=void 0===r?.1:r,e=e.far,e=void 0===e?500:e;if(t>2*Math.PI)throw Error("radians");i*=Math.tan(t/2),t=i*n;return(new c).ortho({left:-t,right:t,bottom:-i,top:i,near:r,far:e})}},{key:"perspective",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.fovy,t=void 0===t?void 0:t,n=e.fov,n=void 0===n?45*Math.PI/180:n,i=e.aspect,i=void 0===i?1:i,r=e.near,r=void 0===r?.1:r,e=e.far,e=void 0===e?500:e;if((t=t||n)>2*Math.PI)throw Error("radians");return n=this,t=t,i=i,r=r,e=e,t=1/Math.tan(t/2),n[0]=t/i,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,null!=e&&e!==1/0?(n[10]=(e+r)*(i=1/(r-e)),n[14]=2*e*r*i):(n[10]=-1,n[14]=-2*r),this.check()}},{key:"determinant",value:function(){return t=(e=this)[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],d=e[10],h=e[11],p=e[12],f=e[13],m=e[14],e=e[15],(t*o-n*a)*(d*e-h*m)-(t*s-i*a)*(c*e-h*f)+(t*l-r*a)*(c*m-d*f)+(n*s-i*o)*(u*e-h*p)-(n*l-r*o)*(u*m-d*p)+(i*l-r*s)*(u*f-c*p);var e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m}},{key:"getScale",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0];return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}},{key:"getTranslation",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0];return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}},{key:"getRotation",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],t=this.getScale((1<arguments.length&&void 0!==arguments[1]?arguments[1]:null)||[-0,-0,-0]),n=1/t[0],i=1/t[1],t=1/t[2];return e[0]=this[0]*n,e[1]=this[1]*i,e[2]=this[2]*t,e[3]=0,e[4]=this[4]*n,e[5]=this[5]*i,e[6]=this[6]*t,e[7]=0,e[8]=this[8]*n,e[9]=this[9]*i,e[10]=this[10]*t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},{key:"getRotationMatrix3",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0,-0,-0,-0,-0,-0,-0],t=this.getScale((1<arguments.length&&void 0!==arguments[1]?arguments[1]:null)||[-0,-0,-0]),n=1/t[0],i=1/t[1],t=1/t[2];return e[0]=this[0]*n,e[1]=this[1]*i,e[2]=this[2]*t,e[3]=this[4]*n,e[4]=this[5]*i,e[5]=this[6]*t,e[6]=this[8]*n,e[7]=this[9]*i,e[8]=this[10]*t,e}},{key:"transpose",value:function(){var e,t,n,i,r,a,o,s;return(e=this)===(t=this)?(n=t[1],i=t[2],r=t[3],a=t[6],o=t[7],s=t[11],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=o,e[14]=s):(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15]),this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_;return n=(t=e=this)[0],i=t[1],r=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],v=t[14],t=t[15],(_=(g=n*s-i*o)*(T=h*t-p*v)-(A=n*l-r*o)*(S=d*t-p*m)+(y=n*u-a*o)*(M=d*v-h*m)+(w=i*l-r*s)*(B=c*t-p*f)-(b=i*u-a*s)*(C=c*v-h*f)+(x=r*u-a*l)*(E=c*m-d*f))&&(e[0]=(s*T-l*S+u*M)*(_=1/_),e[1]=(r*S-i*T-a*M)*_,e[2]=(m*x-v*b+t*w)*_,e[3]=(h*b-d*x-p*w)*_,e[4]=(l*B-o*T-u*C)*_,e[5]=(n*T-r*B+a*C)*_,e[6]=(v*y-f*x-t*A)*_,e[7]=(c*x-h*y+p*A)*_,e[8]=(o*S-s*B+u*E)*_,e[9]=(i*B-n*S-a*E)*_,e[10]=(f*b-m*y+t*g)*_,e[11]=(d*y-c*b-p*g)*_,e[12]=(s*C-o*M-l*E)*_,e[13]=(n*M-i*C+r*E)*_,e[14]=(m*A-f*w-v*g)*_,e[15]=(c*w-d*A+h*g)*_),this.check()}},{key:"multiplyLeft",value:function(e){return _T(this,e,this),this.check()}},{key:"multiplyRight",value:function(e){return _T(this,this,e),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[4],a=n[5],o=n[6],s=n[7],l=n[8],u=n[9],c=n[10],d=n[11],n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=r*e+l*i,t[5]=a*e+u*i,t[6]=o*e+c*i,t[7]=s*e+d*i,t[8]=l*e-r*i,t[9]=u*e-a*i,t[10]=c*e-o*i,t[11]=d*e-s*i,this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[0],a=n[1],o=n[2],s=n[3],l=n[8],u=n[9],c=n[10],d=n[11],n!==t&&(t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=r*e-l*i,t[1]=a*e-u*i,t[2]=o*e-c*i,t[3]=s*e-d*i,t[8]=r*i+l*e,t[9]=a*i+u*e,t[10]=o*i+c*e,t[11]=s*i+d*e,this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a,o,s,l,u,c,d;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[0],a=n[1],o=n[2],s=n[3],l=n[4],u=n[5],c=n[6],d=n[7],n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=r*e+l*i,t[1]=a*e+u*i,t[2]=o*e+c*i,t[3]=s*e+d*i,t[4]=l*e-r*i,t[5]=u*e-a*i,t[6]=c*e-o*i,t[7]=d*e-s*i,this.check()}},{key:"rotateXYZ",value:function(e){var e=U(e,3),t=e[0],n=e[1],e=e[2];return this.rotateX(t).rotateY(n).rotateZ(e)}},{key:"rotateAxis",value:function(e,t){var n,i,r,a,o,s,l,u,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M;return i=n=this,e=e,C=(t=t)[0],B=t[1],t=t[2],(M=Math.hypot(C,B,t))<aT||(C*=M=1/M,B*=M,t*=M,M=Math.sin(e),e=Math.cos(e),a=i[0],o=i[1],s=i[2],l=i[3],u=i[4],c=i[5],d=i[6],h=i[7],p=i[8],f=i[9],m=i[10],v=i[11],A=C*B*(r=1-e)-t*M,y=B*B*r+e,w=t*B*r+C*M,b=C*t*r+B*M,x=B*t*r-C*M,E=t*t*r+e,n[0]=a*(e=C*C*r+e)+u*(g=B*C*r+t*M)+p*(t=t*C*r-B*M),n[1]=o*e+c*g+f*t,n[2]=s*e+d*g+m*t,n[3]=l*e+h*g+v*t,n[4]=a*A+u*y+p*w,n[5]=o*A+c*y+f*w,n[6]=s*A+d*y+m*w,n[7]=l*A+h*y+v*w,n[8]=a*b+u*x+p*E,n[9]=o*b+c*x+f*E,n[10]=s*b+d*x+m*E,n[11]=l*b+h*x+v*E,i!==n&&(n[12]=i[12],n[13]=i[13],n[14]=i[14],n[15]=i[15])),this.check()}},{key:"scale",value:function(e){return Array.isArray(e)?PT(this,this,e):PT(this,this,[e,e,e]),this.check()}},{key:"translate",value:function(e){var t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v;return n=t=this,m=(e=e)[0],v=e[1],e=e[2],n===t?(t[12]=n[0]*m+n[4]*v+n[8]*e+n[12],t[13]=n[1]*m+n[5]*v+n[9]*e+n[13],t[14]=n[2]*m+n[6]*v+n[10]*e+n[14],t[15]=n[3]*m+n[7]*v+n[11]*e+n[15]):(i=n[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],d=n[8],h=n[9],p=n[10],f=n[11],t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=u,t[7]=c,t[8]=d,t[9]=h,t[10]=p,t[11]=f,t[12]=i*m+s*v+d*e+n[12],t[13]=r*m+l*v+h*e+n[13],t[14]=a*m+u*v+p*e+n[14],t[15]=o*m+c*v+f*e+n[15]),this.check()}},{key:"transform",value:function(e,t){var n,i,r,a,o,s;return 4===e.length?(n=t||[-0,-0,-0,-0],r=this,a=(i=e)[0],o=i[1],s=i[2],i=i[3],n[0]=r[0]*a+r[4]*o+r[8]*s+r[12]*i,n[1]=r[1]*a+r[5]*o+r[9]*s+r[13]*i,n[2]=r[2]*a+r[6]*o+r[10]*s+r[14]*i,n[3]=r[3]*a+r[7]*o+r[11]*s+r[15]*i,tT(t=n,4),t):this.transformAsPoint(e,t)}},{key:"transformAsPoint",value:function(e,t){switch(e.length){case 2:t=lT(t||[-0,-0],e,this);break;case 3:t=vT(t||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return tT(t,e.length),t}},{key:"transformAsVector",value:function(e,t){switch(e.length){case 2:t=uT(t||[-0,-0],e,this);break;case 3:t=cT(t||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return tT(t,e.length),t}},{key:"makeRotationX",value:function(e){return this.identity().rotateX(e)}},{key:"makeTranslation",value:function(e,t,n){return this.identity().translate([e,t,n])}},{key:"transformPoint",value:function(e,t){return iT("Matrix4.transformPoint","3.0"),this.transformAsPoint(e,t)}},{key:"transformVector",value:function(e,t){return iT("Matrix4.transformVector","3.0"),this.transformAsPoint(e,t)}},{key:"transformDirection",value:function(e,t){return iT("Matrix4.transformDirection","3.0"),this.transformAsVector(e,t)}}],[{key:"IDENTITY",get:function(){return RT.IDENTITY=RT.IDENTITY||Object.freeze(new c(DT)),RT.IDENTITY}},{key:"ZERO",get:function(){return RT.ZERO=RT.ZERO||Object.freeze(new c(IT)),RT.ZERO}},{key:"_computeInfinitePerspectiveOffCenter",value:function(e,t,n,i,r,a){var o=2*a/(r-i),s=(n+t)/(n-t),r=(r+i)/(r-i),i=-2*a;return e[0]=2*a/(n-t),e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=s,e[9]=r,e[10]=-1,e[11]=-1,e[12]=0,e[13]=0,e[14]=i,e[15]=0,e}}])}();function FT(){var e=new oT(4);return oT!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function OT(e,t,n){n*=.5;var i=Math.sin(n);e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(n)}function UT(e,t,n){var i=t[0],r=t[1],a=t[2],t=t[3],o=n[0],s=n[1],l=n[2],n=n[3];e[0]=i*n+t*o+r*l-a*s,e[1]=r*n+t*s+a*o-i*l,e[2]=a*n+t*l+i*s-r*o,e[3]=t*n-i*o-r*s-a*l}function NT(e,t,n,i){var r,a,o=t[0],s=t[1],l=t[2],t=t[3],u=n[0],c=n[1],d=n[2],n=n[3],h=o*u+s*c+l*d+t*n;h<0&&(h=-h,u=-u,c=-c,d=-d,n=-n),h=aT<1-h?(h=Math.acos(h),r=Math.sin(h),a=Math.sin((1-i)*h)/r,Math.sin(i*h)/r):(a=1-i,i),e[0]=a*o+h*u,e[1]=a*s+h*c,e[2]=a*l+h*d,e[3]=a*t+h*n}function zT(e,t){var n,i,r,a=t[0]+t[4]+t[8];return 0<a?(r=Math.sqrt(a+1),e[3]=.5*r,e[0]=(t[5]-t[7])*(r=.5/r),e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r):(t[4]>t[a=0]&&(a=1),n=((a=t[8]>t[3*a+a]?2:a)+1)%3,i=(a+2)%3,r=Math.sqrt(t[3*a+a]-t[3*n+n]-t[3*i+i]+1),e[a]=.5*r,e[3]=(t[3*n+i]-t[3*i+n])*(r=.5/r),e[n]=(t[3*n+a]+t[3*a+n])*r,e[i]=(t[3*i+a]+t[3*a+i])*r),e}var GT,HT,VT,QT=function(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e},jT=function(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e},WT=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},JT=function(e,t,n,i){var r=t[0],a=t[1],o=t[2],t=t[3];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=o+i*(n[2]-o),e[3]=t+i*(n[3]-t),e},qT=function(e){var t=e[0],n=e[1],i=e[2],e=e[3];return Math.hypot(t,n,i,e)},YT=function(e){var t=e[0],n=e[1],i=e[2],e=e[3];return t*t+n*n+i*i+e*e},XT=function(e,t){var n=t[0],i=t[1],r=t[2],t=t[3],a=n*n+i*i+r*r+t*t;return 0<a&&(a=1/Math.sqrt(a)),e[0]=n*a,e[1]=i*a,e[2]=r*a,e[3]=t*a,e},KT=(GT=dT(),HT=pT(1,0,0),VT=pT(0,1,0),function(e,t,n){var i,r,a,o,s,l=fT(t,n);return l<-.999999?(mT(GT,HT,t),AT(GT)<1e-6&&mT(GT,VT,t),a=(r=i=GT)[0],o=r[1],s=r[2],0<(a=a*a+o*o+s*s)&&(a=1/Math.sqrt(a)),i[0]=r[0]*a,i[1]=r[1]*a,i[2]=r[2]*a,OT(e,GT,Math.PI),e):.999999<l?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(mT(GT,t,n),e[0]=GT[0],e[1]=GT[1],e[2]=GT[2],e[3]=1+l,XT(e,e))}),ZT=(FT(),FT(),Gh=new oT(9),oT!=Float32Array&&(Gh[1]=0,Gh[2]=0,Gh[3]=0,Gh[5]=0,Gh[6]=0,Gh[7]=0),Gh[0]=1,Gh[4]=1,[0,0,0,Gh[8]=1]),$T=function(){function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;return ue(this,a),e=le(this,a,[-0,-0,-0,-0]),Array.isArray(t)&&1===arguments.length?e.copy(t):e.set(t,n,i,r),e}return v(a,$S),A(a,[{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}},{key:"set",value:function(e,t,n,i){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this.check()}},{key:"fromMatrix3",value:function(e){return zT(this,e),this.check()}},{key:"identity",value:function(){var e;return(e=this)[0]=0,e[1]=0,e[2]=0,e[3]=1,this.check()}},{key:"fromAxisRotation",value:function(e,t){return OT(this,e,t),this.check()}},{key:"setAxisAngle",value:function(e,t){return this.fromAxisRotation(e,t)}},{key:"ELEMENTS",get:function(){return 4}},{key:"x",get:function(){return this[0]},set:function(e){this[0]=eT(e)}},{key:"y",get:function(){return this[1]},set:function(e){this[1]=eT(e)}},{key:"z",get:function(){return this[2]},set:function(e){this[2]=eT(e)}},{key:"w",get:function(){return this[3]},set:function(e){this[3]=eT(e)}},{key:"len",value:function(){return qT(this)}},{key:"lengthSquared",value:function(){return YT(this)}},{key:"dot",value:function(e,t){if(void 0!==t)throw new Error("Quaternion.dot only takes one argument");return WT(this,e)}},{key:"rotationTo",value:function(e,t){return KT(this,e,t),this.check()}},{key:"add",value:function(e,t){if(void 0!==t)throw new Error("Quaternion.add only takes one argument");return QT(this,this,e),this.check()}},{key:"calculateW",value:function(){var e,t,n,i;return n=(t=e=this)[0],i=t[1],t=t[2],e[0]=n,e[1]=i,e[2]=t,e[3]=Math.sqrt(Math.abs(1-n*n-i*i-t*t)),this.check()}},{key:"conjugate",value:function(){var e,t;return t=e=this,e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a;return n=(t=e=this)[0],i=t[1],r=t[2],t=t[3],a=(a=n*n+i*i+r*r+t*t)?1/a:0,e[0]=-n*a,e[1]=-i*a,e[2]=-r*a,e[3]=t*a,this.check()}},{key:"lerp",value:function(e,t,n){return JT(this,e,t,n),this.check()}},{key:"multiplyRight",value:function(e,t){return GS(!t),UT(this,this,e),this.check()}},{key:"multiplyLeft",value:function(e,t){return GS(!t),UT(this,e,this),this.check()}},{key:"normalize",value:function(){var e=this.len(),t=0<e?1/e:0;return this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,0===e&&(this[3]=1),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e+n*o,t[1]=r*e+a*o,t[2]=a*e-r*o,t[3]=n*e-i*o,this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e-a*o,t[1]=r*e+n*o,t[2]=a*e+i*o,t[3]=n*e-r*o,this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e+r*o,t[1]=r*e-i*o,t[2]=a*e+n*o,t[3]=n*e-a*o,this.check()}},{key:"scale",value:function(e){return jT(this,this,e),this.check()}},{key:"slerp",value:function(e,t,n){switch(arguments.length){case 1:var i=arguments[0],r=i.start;e=void 0===r?ZT:r,t=i.target,n=i.ratio;break;case 2:r=Array.prototype.slice.call(arguments);t=r[0],n=r[1],e=this}return NT(this,e,t,n),this.check()}},{key:"transformVector4",value:function(e){var t,n,i,r,a,o,s,l,u,c,d,h=1<arguments.length&&void 0!==arguments[1]?arguments[1]:e;return t=h,n=this,i=(e=e)[0],r=e[1],a=e[2],o=n[0],s=n[1],l=n[2],u=(n=n[3])*i+s*a-l*r,c=n*r+l*i-o*a,d=n*a+o*r-s*i,i=-o*i-s*r-l*a,t[0]=u*n+i*-o+c*-l-d*-s,t[1]=c*n+i*-s+d*-o-u*-l,t[2]=d*n+i*-l+u*-s-c*-o,t[3]=e[3],tT(h,4)}},{key:"lengthSq",value:function(){return this.lengthSquared()}},{key:"setFromAxisAngle",value:function(e,t){return this.setAxisAngle(e,t)}},{key:"premultiply",value:function(e,t){return this.multiplyLeft(e,t)}},{key:"multiply",value:function(e,t){return this.multiplyRight(e,t)}}])}(),e_=.1,t_=1e-12,n_=1e-15,i_=(Math.PI,Math.PI,Math.PI,Math.PI,function(e){return e}),r_=new B;function a_(e,t){return function(e,t,n){return n=2<arguments.length&&void 0!==n?n:i_,WS(e)?(t[0]=n(e[0]),t[1]=n(e[1]),t[2]=e[2]):"longitude"in e?(t[0]=n(e.longitude),t[1]=n(e.latitude),t[2]=e.height):(t[0]=n(e.x),t[1]=n(e.y),t[2]=e.z),t}(e,1<arguments.length&&void 0!==t?t:r_,QS._cartographicRadians?i_:qS)}function o_(e,t){return function(e,t,n){return n=2<arguments.length&&void 0!==n?n:i_,WS(t)?(t[0]=n(e[0]),t[1]=n(e[1]),t[2]=e[2]):"longitude"in t?(t.longitude=n(e[0]),t.latitude=n(e[1]),t.height=e[2]):(t.x=n(e[0]),t.y=n(e[1]),t.z=e[2]),t}(e,t,QS._cartographicRadians?i_:YS)}var s_=new B,l_=new B,u_=new B;var c_=new B,d_={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},h_={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},p_={east:new B,north:new B,up:new B,west:new B,south:new B,down:new B},f_=new B,m_=new B,v_=new B;function g_(e,t,n,i,r,a){var o,s,l,u,c,d,h=d_[t]&&d_[t][n],h=(GS(h&&(!i||i===h)),c_.copy(r));return KS(h.x,0,1e-14)&&KS(h.y,0,1e-14)?(r=Math.sign(h.z),l=f_.fromArray(h_[t]),"east"!==t&&"west"!==t&&l.scale(r),o=m_.fromArray(h_[n]),"east"!==n&&"west"!==n&&o.scale(r),s=v_.fromArray(h_[i]),"east"!==i&&"west"!==i&&s.scale(r)):(r=p_.up,c=p_.north,(u=p_.east).set(-h.y,h.x,0).normalize(),e.geodeticSurfaceNormal(h,r),c.copy(r).cross(u),e=p_.west,d=p_.south,p_.down.copy(r).scale(-1),e.copy(u).scale(-1),d.copy(c).scale(-1),l=p_[t],o=p_[n],s=p_[i]),a[0]=l.x,a[1]=l.y,a[2]=l.z,a[3]=0,a[4]=o.x,a[5]=o.y,a[6]=o.z,a[7]=0,a[8]=s.x,a[9]=s.y,a[10]=s.z,a[11]=0,a[12]=h.x,a[13]=h.y,a[14]=h.z,a[15]=1,a}var A_,y_=new B,w_=new B,b_=new B,x_=new B,E_=new B,C_=new B,B_=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;ue(this,i),GS(0<=e),GS(0<=t),GS(0<=n),this.radii=new B(e,t,n),this.radiiSquared=new B(e*e,t*t,n*n),this.radiiToTheFourth=new B(e*e*e*e,t*t*t*t,n*n*n*n),this.oneOverRadii=new B(0===e?0:1/e,0===t?0:1/t,0===n?0:1/n),this.oneOverRadiiSquared=new B(0===e?0:1/(e*e),0===t?0:1/(t*t),0===n?0:1/(n*n)),this.minimumRadius=Math.min(e,t,n),this.maximumRadius=Math.max(e,t,n),this.centerToleranceSquared=e_,0!==this.radiiSquared.z&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}return A(i,[{key:"equals",value:function(e){return this===e||Boolean(e&&this.radii.equals(e.radii))}},{key:"toString",value:function(){return this.radii.toString()}},{key:"cartographicToCartesian",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],n=w_,i=b_,r=U(e,3)[2],e=(this.geodeticSurfaceNormalCartographic(e,n),i.copy(this.radiiSquared).scale(n),Math.sqrt(n.dot(i)));return i.scale(1/e),n.scale(r),i.add(n),i.to(t)}},{key:"cartesianToCartographic",value:function(e){var t,n,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=(C_.from(e),this.scaleToGeodeticSurface(C_,x_));if(e)return t=this.geodeticSurfaceNormal(e,w_),(n=E_).copy(C_).subtract(e),o_([Math.atan2(t.y,t.x),Math.asin(t.z),Math.sign(fT(n,C_))*hT(n)],i)}},{key:"eastNorthUpToFixedFrame",value:function(e){return g_(this,"east","north","up",e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:new LT)}},{key:"localFrameToFixedFrame",value:function(e,t,n,i){return g_(this,e,t,n,i,4<arguments.length&&void 0!==arguments[4]?arguments[4]:new LT)}},{key:"geocentricSurfaceNormal",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return y_.from(e).normalize().to(t)}},{key:"geodeticSurfaceNormalCartographic",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=a_(e),n=e[0],e=e[1],i=Math.cos(e);return y_.set(i*Math.cos(n),i*Math.sin(n),Math.sin(e)).normalize(),y_.to(t)}},{key:"geodeticSurfaceNormal",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return y_.from(e).scale(this.oneOverRadiiSquared).normalize().to(t)}},{key:"scaleToGeodeticSurface",value:function(e,t){return function(e,t,n){var n=2<arguments.length&&void 0!==n?n:new B,i=t.oneOverRadii,r=t.oneOverRadiiSquared,t=t.centerToleranceSquared,a=(s_.from(e),e.x),o=e.y,s=e.z,l=i.x,u=i.y,i=i.z,c=a*a*l*l,d=o*o*u*u,h=s*s*i*i,a=c+d+h,l=Math.sqrt(1/a);if(Number.isFinite(l)){o=l_;if(o.copy(e).scale(l),a<t)return o.to(n);var p=r.x,f=r.y,m=r.z,u=u_,v=(u.set(o.x*p*2,o.y*f*2,o.z*m*2),(1-l)*e.len()/(.5*u.len())),g=0;do{var A,y,w,b,x=(A=1/(1+(v-=g)*p))*A,E=(y=1/(1+v*f))*y,C=(w=1/(1+v*m))*w,g=(b=c*x+d*E+h*C-1)/(-2*(c*(x*A)*p+d*(E*y)*f+h*(C*w)*m))}while(Math.abs(b)>t_);return s_.scale([A,y,w]).to(n)}}(e,this,t)}},{key:"scaleToGeocentricSurface",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=(x_.from(e),x_.x),n=x_.y,i=x_.z,r=this.oneOverRadiiSquared,e=1/Math.sqrt(e*e*r.x+n*n*r.y+i*i*r.z);return x_.multiplyScalar(e).to(t)}},{key:"transformPositionToScaledSpace",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return x_.from(e).scale(this.oneOverRadii).to(t)}},{key:"transformPositionFromScaledSpace",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return x_.from(e).scale(this.radii).to(t)}},{key:"getSurfaceNormalIntersectionWithZAxis",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[0,0,0],e=(GS(KS(this.radii.x,this.radii.y,n_)),GS(0<this.radii.z),x_.from(e),x_.z*(1-this.squaredXOverSquaredZ));if(!(Math.abs(e)>=this.radii.z-t))return x_.set(0,0,e).to(n)}}],[{key:"WGS84",get:function(){return A_=A_||new i(6378137,6378137,6356752.314245179)}}])}(),M_=A(function e(t,n,i){ue(this,e),l(this,"item",void 0),l(this,"previous",void 0),l(this,"next",void 0),this.item=t,this.previous=n,this.next=i}),S_=function(){return A(function e(){ue(this,e),l(this,"head",null),l(this,"tail",null),l(this,"_length",0)},[{key:"length",get:function(){return this._length}},{key:"add",value:function(e){e=new M_(e,this.tail,null);return this.tail?this.tail.next=e:this.head=e,this.tail=e,++this._length,e}},{key:"remove",value:function(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}},{key:"splice",value:function(e,t){e!==t&&(this.remove(t),this._insert(e,t))}},{key:"_insert",value:function(e,t){var n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e,++this._length}}])}();function T_(e){return null!=e}var __=function(){return A(function e(){ue(this,e),l(this,"_list",void 0),l(this,"_sentinel",void 0),l(this,"_trimTiles",void 0),this._list=new S_,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1},[{key:"reset",value:function(){this._list.splice(this._list.tail,this._sentinel)}},{key:"touch",value:function(e){e=e._cacheNode;T_(e)&&this._list.splice(this._sentinel,e)}},{key:"add",value:function(e,t,n){T_(t._cacheNode)||(t._cacheNode=this._list.add(t),n&&n(e,t))}},{key:"unloadTile",value:function(e,t,n){var i=t._cacheNode;T_(i)&&(this._list.remove(i),t._cacheNode=void 0,n)&&n(e,t)}},{key:"unloadTiles",value:function(e,t){for(var n=this._trimTiles,i=(this._trimTiles=!1,this._list),r=1024*(Potree.settings.tiles3DMaxMemory||e.maximumMemoryUsage)*1024,a=this._sentinel,o=i.head;o!==a&&(function e(t){var t=0<arguments.length&&void 0!==t?t:window,n=0;return viewer.objs.children.filter(function(e){"3dTiles"==e.fileType&&e.traverse(function(e){if(e.runtime)return e=e.runtime.getTileset(),n+=e.gpuMemoryUsageInBytes,{stopContinue:!0}})}),t.parent!=t&&(n+=e(t.parent)),viewer.tiles3dMemoryUsage=n}()>r||n);){var s=o.item,o=o.next;this.unloadTile(e,s,t),15e5<viewer.visiVertexCount&&(e.options.maximumScreenSpaceError*=1.1,e.options.maximumScreenSpaceError=Math.min(1e3,e.options.maximumScreenSpaceError))}}},{key:"trim",value:function(){this._trimTiles=!0}}])}();var P_=Object.freeze({OUTSIDE:-1,INTERSECTING:0,INSIDE:1}),D_=(new B,new B,new B),I_=new B,k_=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,0],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;ue(this,n),this.radius=-0,this.center=new B,this.fromCenterRadius(e,t)}return A(n,[{key:"fromCenterRadius",value:function(e,t){return this.center.from(e),this.radius=t,this}},{key:"fromCornerPoints",value:function(e,t){return t=D_.from(t),this.center=(new B).from(e).add(t).scale(.5),this.radius=this.center.distance(t),this}},{key:"equals",value:function(e){return this===e||Boolean(e)&&this.center.equals(e.center)&&this.radius===e.radius}},{key:"clone",value:function(){return new n(this.center,this.radius)}},{key:"union",value:function(e){var t=this.center,n=this.radius,i=e.center,r=e.radius,i=D_.copy(i).subtract(t),a=i.magnitude();return a+r<=n?this.clone():a+n<=r?e.clone():(e=.5*(n+a+r),I_.copy(i).scale((e-n)/a).add(t),this.center.copy(I_),this.radius=e,this)}},{key:"expand",value:function(e){e=(e=D_.from(e)).subtract(this.center).magnitude();return e>this.radius&&(this.radius=e),this}},{key:"transform",value:function(e){this.center.transform(e);t=D_,i=(n=e)[0],r=e[1],a=e[2],o=e[4],s=e[5],l=e[6],u=e[8],c=e[9],n=e[10],t[0]=Math.hypot(i,r,a),t[1]=Math.hypot(o,s,l),t[2]=Math.hypot(u,c,n);var t,n,i,r,a,o,s,l,u,c,e=t;return this.radius=Math.max(e[0],Math.max(e[1],e[2]))*this.radius,this}},{key:"distanceSquaredTo",value:function(e){e=this.distanceTo(e);return e*e}},{key:"distanceTo",value:function(e){e=(e=D_.from(e)).subtract(this.center);return Math.max(0,e.len()-this.radius)}},{key:"intersectPlane",value:function(e){var t=this.center,n=this.radius,t=e.normal.dot(t)+e.distance;return t<-n?P_.OUTSIDE:t<n?P_.INTERSECTING:P_.INSIDE}}])}(),R_=new B,L_=new B,F_=new B,O_=new B,U_=new B,N_=new B,z_=new B,G_=0,H_=1,V_=2,Q_=3,j_=4,W_=5,J_=6,q_=7,Y_=8,X_=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,0],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0,0,0,0,0,0,0];ue(this,n),this.center=(new B).from(e),this.halfAxes=new TT(t)}return A(n,[{key:"halfSize",get:function(){var e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new B(e).len(),new B(t).len(),new B(n).len()]}},{key:"quaternion",get:function(){var e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),e=new B(e).normalize(),t=new B(t).normalize(),n=new B(n).normalize();return(new $T).fromMatrix3(new TT([].concat(Fe(e),Fe(t),Fe(n))))}},{key:"fromCenterHalfSizeQuaternion",value:function(e,t,n){n=new $T(n),n=(new TT).fromQuaternion(n);return n[0]=n[0]*t[0],n[1]=n[1]*t[0],n[2]=n[2]*t[0],n[3]=n[3]*t[1],n[4]=n[4]*t[1],n[5]=n[5]*t[1],n[6]=n[6]*t[2],n[7]=n[7]*t[2],n[8]=n[8]*t[2],this.center=(new B).from(e),this.halfAxes=n,this}},{key:"clone",value:function(){return new n(this.center,this.halfAxes)}},{key:"equals",value:function(e){return this===e||Boolean(e)&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}},{key:"getBoundingSphere",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new k_,t=this.halfAxes,n=t.getColumn(0,F_),i=t.getColumn(1,O_),t=t.getColumn(2,U_),n=R_.copy(n).add(i).add(t);return e.center.copy(this.center),e.radius=n.magnitude(),e}},{key:"intersectPlane",value:function(e){var t=this.center,n=e.normal,i=this.halfAxes,r=n.x,a=n.y,o=n.z,r=Math.abs(r*i[G_]+a*i[H_]+o*i[V_])+Math.abs(r*i[Q_]+a*i[j_]+o*i[W_])+Math.abs(r*i[J_]+a*i[q_]+o*i[Y_]),a=n.dot(t)+e.distance;return a<=-r?P_.OUTSIDE:r<=a?P_.INSIDE:P_.INTERSECTING}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceSquaredTo(e))}},{key:"distanceSquaredTo",value:function(e){var e=L_.from(e).subtract(this.center),t=this.halfAxes,n=t.getColumn(0,F_),i=t.getColumn(1,O_),t=t.getColumn(2,U_),r=n.magnitude(),a=i.magnitude(),o=t.magnitude(),s=(n.normalize(),i.normalize(),t.normalize(),0),n=Math.abs(e.dot(n))-r;return 0<n&&(s+=n*n),0<(n=Math.abs(e.dot(i))-a)&&(s+=n*n),0<(n=Math.abs(e.dot(t))-o)&&(s+=n*n),s}},{key:"computePlaneDistances",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[-0,-0],i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,a=this.center,o=this.halfAxes,s=o.getColumn(0,F_),l=o.getColumn(1,O_),o=o.getColumn(2,U_),u=N_.copy(s).add(l).add(o).add(a),c=z_.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r);return u.copy(a).add(s).add(l).subtract(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),u.copy(a).add(s).subtract(l).add(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),u.copy(a).add(s).subtract(l).subtract(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),a.copy(u).subtract(s).add(l).add(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),a.copy(u).subtract(s).add(l).subtract(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),a.copy(u).subtract(s).subtract(l).add(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),a.copy(u).subtract(s).subtract(l).subtract(o),c.copy(u).subtract(e),d=t.dot(c),i=Math.min(d,i),r=Math.max(d,r),n[0]=i,n[1]=r,n}},{key:"transform",value:function(e){this.center.transformAsPoint(e);var t=this.halfAxes.getColumn(0,F_),n=(t.transformAsPoint(e),this.halfAxes.getColumn(1,O_)),i=(n.transformAsPoint(e),this.halfAxes.getColumn(2,U_));return i.transformAsPoint(e),this.halfAxes=new TT([].concat(Fe(t),Fe(n),Fe(i))),this}},{key:"getTransform",value:function(){throw new Error("not implemented")}}])}(),K_=new B,Z_=new B,$_=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,1],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;ue(this,n),this.normal=new B,this.distance=-0,this.fromNormalDistance(e,t)}return A(n,[{key:"fromNormalDistance",value:function(e,t){return GS(Number.isFinite(t)),this.normal.from(e).normalize(),this.distance=t,this}},{key:"fromPointNormal",value:function(e,t){e=K_.from(e),this.normal.from(t).normalize();t=-this.normal.dot(e);return this.distance=t,this}},{key:"fromCoefficients",value:function(e,t,n,i){return this.normal.set(e,t,n),GS(KS(this.normal.len(),1)),this.distance=i,this}},{key:"clone",value:function(e){return new n(this.normal,this.distance)}},{key:"equals",value:function(e){return KS(this.distance,e.distance)&&KS(this.normal,e.normal)}},{key:"getPointDistance",value:function(e){return this.normal.dot(e)+this.distance}},{key:"transform",value:function(e){var t=Z_.copy(this.normal).transformAsVector(e).normalize(),e=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(e,t)}},{key:"projectPointOntoPlane",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],n=(e=K_.from(e),this.getPointDistance(e)),n=Z_.copy(this.normal).scale(n);return e.subtract(n).to(t)}}])}(),eP=[new B([1,0,0]),new B([0,1,0]),new B([0,0,1])],tP=new B,nP=new B,iP=(new $_(new B(1,0,0),0),function(){function s(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];ue(this,s),this.planes=e,GS(this.planes.every(function(e){return e instanceof $_}))}return A(s,[{key:"fromBoundingSphere",value:function(e){this.planes.length=2*eP.length;for(var t=e.center,n=e.radius,i=0,r=0,a=eP;r<a.length;r++){var o=a[r],s=this.planes[i],l=this.planes[i+1],s=s||(this.planes[i]=new $_),l=l||(this.planes[i+1]=new $_),u=tP.copy(o).scale(-n).add(t),s=(o.dot(u),s.fromPointNormal(u,o),tP.copy(o).scale(n).add(t)),u=nP.copy(o).negate();u.dot(s),l.fromPointNormal(s,u),i+=2}return this}},{key:"computeVisibility",value:function(e){GS(e);var t,n=P_.INSIDE,i=q(this.planes);try{for(i.s();!(t=i.n()).done;){var r=t.value;switch(e.intersectPlane(r)){case P_.OUTSIDE:return P_.OUTSIDE;case P_.INTERSECTING:n=P_.INTERSECTING}}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"computeVisibilityWithPlaneMask",value:function(e,t){if(GS(e,"boundingVolume is required."),GS(Number.isFinite(t),"parentPlaneMask is required."),t===s.MASK_OUTSIDE||t===s.MASK_INSIDE)return t;for(var n=s.MASK_INSIDE,i=this.planes,r=0;r<this.planes.length;++r){var a=r<31?1<<r:0;if(!(r<31&&0==(t&a))){var o=i[r],o=e.intersectPlane(o);if(o===P_.OUTSIDE)return s.MASK_OUTSIDE;o===P_.INTERSECTING&&(n|=a)}}return n}}],[{key:"MASK_OUTSIDE",get:function(){return 4294967295}},{key:"MASK_INSIDE",get:function(){return 0}},{key:"MASK_INDETERMINATE",get:function(){return 2147483647}}])}()),rP=new B,aP=new B,oP=new B,sP=new B,lP=new B,uP=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,t),e=g({near:1,far:5e8},e),this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near,this._near=this.near,this.far=e.far,this._far=this.far,this._cullingVolume=new iP([new $_,new $_,new $_,new $_,new $_,new $_]),this._perspectiveMatrix=new LT,this._infinitePerspective=new LT}return A(t,[{key:"clone",value:function(){return new t({right:this.right,left:this.left,top:this.top,bottom:this.bottom,near:this.near,far:this.far})}},{key:"equals",value:function(e){return e&&e instanceof t&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far}},{key:"projectionMatrix",get:function(){return cP(this),this._perspectiveMatrix}},{key:"infiniteProjectionMatrix",get:function(){return cP(this),this._infinitePerspective}},{key:"computeCullingVolume",value:function(e,t,n){GS(e,"position is required."),GS(t,"direction is required."),GS(n,"up is required.");var i=this._cullingVolume.planes,r=(n=rP.copy(n).normalize(),aP.copy(t).cross(n).normalize()),a=oP.copy(t).multiplyByScalar(this.near).add(e),o=sP.copy(t).multiplyByScalar(this.far).add(e),s=lP;return s.copy(r).multiplyByScalar(this.left).add(a).subtract(e).cross(n),i[0].fromPointNormal(e,s),s.copy(r).multiplyByScalar(this.right).add(a).subtract(e).cross(n).negate(),i[1].fromPointNormal(e,s),s.copy(n).multiplyByScalar(this.bottom).add(a).subtract(e).cross(r).negate(),i[2].fromPointNormal(e,s),s.copy(n).multiplyByScalar(this.top).add(a).subtract(e).cross(r),i[3].fromPointNormal(e,s),s=(new B).copy(t),i[4].fromPointNormal(a,s),s.negate(),i[5].fromPointNormal(o,s),this._cullingVolume}},{key:"getPixelDimensions",value:function(e,t,n,i){cP(this),GS(Number.isFinite(e)&&Number.isFinite(t)),GS(0<e),GS(0<t),GS(0<n),GS(i);var r=1/this.near,t=2*n*(this.top*r)/t,r=this.right*r;return i.x=2*n*r/e,i.y=t,i}}])}();function cP(e){GS(Number.isFinite(e.right)&&Number.isFinite(e.left)&&Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.near)&&Number.isFinite(e.far));var t=e.top,n=e.bottom,i=e.right,r=e.left,a=e.near,o=e.far;t===e._top&&n===e._bottom&&r===e._left&&i===e._right&&a===e._near&&o===e._far||(GS(0<e.near&&e.near<e.far,"near must be greater than zero and less than far."),e._left=r,e._right=i,e._top=t,e._bottom=n,e._near=a,e._far=o,e._perspectiveMatrix=(new LT).frustum({left:r,right:i,bottom:n,top:t,near:a,far:o}),e._infinitePerspective=(new LT).frustum({left:r,right:i,bottom:n,top:t,near:a,far:1/0}))}var dP=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};ue(this,t),e=g({near:1,far:5e8,xOffset:0,yOffset:0},e),this._offCenterFrustum=new uP,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near,this._near=this.near,this.far=e.far,this._far=this.far,this.xOffset=e.xOffset,this._xOffset=this.xOffset,this.yOffset=e.yOffset,this._yOffset=this.yOffset}return A(t,[{key:"clone",value:function(){return new t({aspectRatio:this.aspectRatio,fov:this.fov,near:this.near,far:this.far})}},{key:"equals",value:function(e){return null!=e&&e instanceof t&&(hP(this),hP(e),this.fov===e.fov)&&this.aspectRatio===e.aspectRatio&&this.near===e.near&&this.far===e.far&&this._offCenterFrustum.equals(e._offCenterFrustum)}},{key:"projectionMatrix",get:function(){return hP(this),this._offCenterFrustum.projectionMatrix}},{key:"infiniteProjectionMatrix",get:function(){return hP(this),this._offCenterFrustum.infiniteProjectionMatrix}},{key:"fovy",get:function(){return hP(this),this._fovy}},{key:"sseDenominator",get:function(){return hP(this),this._sseDenominator}},{key:"computeCullingVolume",value:function(e,t,n){return hP(this),this._offCenterFrustum.computeCullingVolume(e,t,n)}},{key:"getPixelDimensions",value:function(e,t,n,i){return hP(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i)}}])}();function hP(e){GS(Number.isFinite(e.fov)&&Number.isFinite(e.aspectRatio)&&Number.isFinite(e.near)&&Number.isFinite(e.far));var t=e._offCenterFrustum;e.fov===e._fov&&e.aspectRatio===e._aspectRatio&&e.near===e._near&&e.far===e._far&&e.xOffset===e._xOffset&&e.yOffset===e._yOffset||(GS(0<=e.fov&&e.fov<Math.PI),0==e.aspectRatio&&console.log(1),GS(0<=e.near&&e.near<e.far),e._aspectRatio=Math.max(.001,e.aspectRatio),e._fov=e.fov,e._fovy=e._aspectRatio<=1?e.fov:2*Math.atan(Math.tan(.5*e.fov)/e._aspectRatio),e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset,t.top=e.near*Math.tan(.5*e._fovy),t.bottom=-t.top,t.right=e._aspectRatio*t.top,t.left=-t.right,t.near=e.near,t.far=e.far,t.right+=e.xOffset,t.left+=e.xOffset,t.top+=e.yOffset,t.bottom+=e.yOffset)}new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new TT,new TT,new TT,new TT,new TT,new B,new B,new B,new B,new B,new TT,new TT,new TT;var pP=new B,fP=new B,mP=new iP([new $_,new $_,new $_,new $_,new $_,new $_]);function vP(e,t){var n,i=e.cameraDirection,r=e.cameraUp,a=e.height,o=e.distanceScales.metersPerUnit,s=e.unprojectPosition(e.center),s=B_.WGS84.cartographicToCartesian(s,new B),l=B_.WGS84.eastNorthUpToFixedFrame(s),u=e.unprojectPosition(e.cameraPosition),u=B_.WGS84.cartographicToCartesian(u,new B),i=new B(l.transformAsVector(new B(i).scale(o))).normalize(),l=new B(l.transformAsVector(new B(r).scale(o))).normalize(),c=e,d=s,h=c.getFrustumPlanes(),p=0;for(n in h){var f=h[n],m=f.normal.dot(c.center),f=(fP.copy(f.normal).scale(f.distance-m).add(c.center),c.unprojectPosition(fP)),m=B_.WGS84.cartographicToCartesian(f,new B);mP.planes[p++].fromPointNormal(m,pP.copy(d).subtract(m))}return{camera:{position:u,direction:i,up:l},viewport:e,height:a,cullingVolume:mP,frameNumber:t,sseDenominator:1.15}}var gP=6356752.314245179,AP=new B;function yP(e){var t,n=e.halfAxes,i=e.radius,r=e.width,e=e.height;return n?((n=n).getColumn(0,AP),t=n.getColumn(1),n=n.getColumn(2),t=AP.add(t).add(n).len(),Math.log2(gP/t)):i?Math.log2(gP/i):e&&r?(Math.log2(6378137/r)+Math.log2(6378137/e))/2:1}var wP=0,bP=1,xP=3,EP=4,CP=5,BP={ADD:1,REPLACE:2},MP={EMPTY:"empty",SCENEGRAPH:"scenegraph",POINTCLOUD:"pointcloud",MESH:"mesh"},SP={I3S:"I3S",TILES3D:"TILES3D"},TP={GEOMETRIC_ERROR:"geometricError",MAX_SCREEN_THRESHOLD:"maxScreenThreshold"},_P=1;function PP(e){return null!=e}var DP=new B,IP=new B,kP=new B;function RP(e,t,n){var i,r,a,o,s,l,u,c,d,h,p;if(_B(e,"3D Tile: boundingVolume must be defined"),e.box)return r=e.box,a=t,c=n,d=new B(r[0],r[1],r[2]),c&&(c.oriCenter=d),a.transform(d,d),o=[],o=10===r.length?(l=r.slice(3,6),(s=new $T).fromArray(r,6),u=new B([1,0,0]),h=new B([0,1,0]),i=new B([0,0,1]),u.transformByQuaternion(s),u.scale(l[0]),h.transformByQuaternion(s),h.scale(l[1]),i.transformByQuaternion(s),i.scale(l[2]),[].concat(Fe(u.toArray()),Fe(h.toArray()),Fe(i.toArray()))):[].concat(Fe(r.slice(3,6)),Fe(r.slice(6,9)),Fe(r.slice(9,12))),s=a.transformAsVector(o.slice(0,3)),l=a.transformAsVector(o.slice(3,6)),u=a.transformAsVector(o.slice(6,9)),h=new TT([s[0],s[1],s[2],l[0],l[1],l[2],u[0],u[1],u[2]]),PP(c)?(c.center=d,c.halfAxes=h,c):new X_(d,h);if(e.region)return r=(i=U(e.region,6))[0],a=i[1],o=i[2],s=i[3],l=i[4],u=i[5],c=B_.WGS84.cartographicToCartesian([XS(r),XS(s),l],IP),d=B_.WGS84.cartographicToCartesian([XS(o),XS(a),u],kP),h=(new B).addVectors(c,d).multiplyScalar(.5),p=(new B).subVectors(c,d).len()/2,LP([h[0],h[1],h[2],p],new LT);if(e.sphere)return LP(e.sphere,t,n);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function LP(e,t,n){var i=new B(e[0],e[1],e[2]),t=(t.transform(i,i),t.getScale(DP)),t=Math.max(Math.max(t[0],t[1]),t[2]),e=e[3]*t;return PP(n)?(n.center=i,n.radius=e,n):new k_(i,e)}function FP(e,t){var n;return e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity?(n=e.dynamicScreenSpaceErrorComputedDensity,e=e.dynamicScreenSpaceErrorFactor,t=t,t*=n,(1-Math.exp(-t*t))*e):0}function OP(e,t){var t=t.viewport,t=new t.constructor({longitude:t.longitude,latitude:t.latitude,height:t.height,width:t.width,bearing:t.bearing,zoom:t.zoom,pitch:0}),n=e.header.mbs[1],i=e.header.mbs[0],r=e.header.mbs[2],a=e.header.mbs[3],e=Fe(e.boundingVolume.center),o=t.unprojectPosition(t.cameraPosition),o=B_.WGS84.cartographicToCartesian(o,new B),s=new B(o).subtract(e).normalize(),l=new LT,u=(B_.WGS84.eastNorthUpToFixedFrame(e,l),new LT(l).invert()),o=new B(o).transform(u),u=Math.sqrt(o[0]*o[0]+o[1]*o[1]),u=u*u/o[2],o=new B([o[0],o[1],u]).transform(l),u=new B(o).subtract(e).normalize(),l=s.cross(u).normalize().scale(a),o=new B(e).add(l),s=B_.WGS84.cartesianToCartographic(o),u=t.project([i,n,r]),a=t.project(s);return new B(u).subtract(a).magnitude()}new B,new B,new LT,new B,new B,new B;var UP=function(){return A(function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;ue(this,e),l(this,"_map",new Map),l(this,"_array",void 0),l(this,"_length",void 0),this._array=new Array(t),this._length=t},[{key:"length",get:function(){return this._length},set:function(e){(this._length=e)>this._array.length&&(this._array.length=e)}},{key:"values",get:function(){return this._array}},{key:"get",value:function(e){return _B(e<this._array.length),this._array[e]}},{key:"set",value:function(e,t){_B(0<=e),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=t,this._map.set(t,e)}},{key:"delete",value:function(e){var t=this._map.get(e);0<=t&&(this._array.splice(t,1),this._map.delete(e),this.length--)}},{key:"peek",value:function(){return this._array[this._length-1]}},{key:"push",value:function(e){var t;this._map.has(e)||(t=this.length++,this._array[t]=e,this._map.set(e,t))}},{key:"pop",value:function(){var e=this._array[--this.length];return this._map.delete(e),e}},{key:"reserve",value:function(e){_B(0<=e),e>this._array.length&&(this._array.length=e)}},{key:"resize",value:function(e){_B(0<=e),this.length=e}},{key:"trim",value:function(e){null==e&&(e=this.length),this._array.length=e}},{key:"reset",value:function(){this._array=[],this._map=new Map,this._length=0}},{key:"find",value:function(e){return this._map.has(e)}}])}(),NP={loadSiblings:!1,skipLevelOfDetail:!1,maximumScreenSpaceError:2,updateTransforms:!0,onTraversalEnd:function(){},viewportTraversersMap:{},basePath:""},zP=function(){return A(function e(t){ue(this,e),l(this,"options",void 0),l(this,"root",void 0),l(this,"requestedTiles",void 0),l(this,"selectedTiles",void 0),l(this,"emptyTiles",void 0),l(this,"_traversalStack",void 0),l(this,"_emptyTraversalStack",void 0),l(this,"_frameNumber",void 0),this.options=g(g({},NP),t),this._traversalStack=new UP,this._emptyTraversalStack=new UP,this._frameNumber=null,this.root=null,this.selectedTiles={},this.requestedTiles={},this.emptyTiles={}},[{key:"traverse",value:function(e,t,n){this.root=e,this.options=g(g({},this.options),n),this.reset(),this.updateTile(e,t),this._frameNumber=t.frameNumber,this.executeTraversal(e,t)}},{key:"reset",value:function(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}},{key:"executeTraversal",value:function(e,t){var n=this._traversalStack;for(e._selectionDepth=1,n.push(e);0<n.length;){var i=n.pop(),r=!1,a=(this.canTraverse(i,t)&&(i.depth<SB||"scenegraph"!=i.type)&&(this.updateChildTiles(i,t),r=this.updateAndPushChildren(i,t,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth)),i.parent),a=Boolean(!a||a._shouldRefine),o=!r;i.hasRenderContent?i.refine===BP.ADD?(this.loadTile(i,t),this.selectTile(i,t)):i.refine===BP.REPLACE&&(this.loadTile(i,t),o)&&this.selectTile(i,t):(this.emptyTiles[i.id]=i,this.loadTile(i,t),o&&this.selectTile(i,t)),this.touchTile(i,t),i._shouldRefine=r&&a}this.options.onTraversalEnd(t)}},{key:"updateChildTiles",value:function(e,t){var n,i=q(e.children);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.updateTile(r,t)}}catch(e){i.e(e)}finally{i.f()}return!0}},{key:"updateAndPushChildren",value:function(e,t,n,i){var r,a=this.options,o=a.loadSiblings,a=a.skipLevelOfDetail,s=e.children,l=(s.sort(this.compareDistanceToCamera.bind(this)),e.refine===BP.REPLACE&&e.hasRenderContent&&!a),u=!1,c=!0,d=q(s);try{for(d.s();!(r=d.n()).done;){var h=r.value;if(h._selectionDepth=i,h.isVisibleAndInRequestVolume?(n.find(h)&&n.delete(h),n.push(h),u=!0):(l||o)&&(this.loadTile(h,t),this.touchTile(h,t)),l){var p=void 0,p=!!h._inRequestVolume&&(h.hasRenderContent?h.contentAvailable:this.executeEmptyTraversal(h,t));if(!(c=c&&p))return!1}}}catch(e){d.e(e)}finally{d.f()}return c=u?c:!1}},{key:"updateTile",value:function(e,t){this.updateTileVisibility(e,t)}},{key:"selectTile",value:function(e,t){this.shouldSelectTile(e)&&(e._selectedFrame=t.frameNumber,this.selectedTiles[e.id]=e)}},{key:"loadTile",value:function(e,t){this.shouldLoadTile(e)&&(e._requestedFrame=t.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e)}},{key:"touchTile",value:function(e,t){e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber}},{key:"canTraverse",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2];return!!e.hasChildren&&(e.hasTilesetContent?!e.contentExpired:!!(3<arguments.length&&void 0!==arguments[3]&&arguments[3]||e.isVisibleAndInRequestVolume)&&this.shouldRefine(e,t,n))}},{key:"shouldLoadTile",value:function(e){return e.hasUnloadedContent||e.contentExpired}},{key:"shouldSelectTile",value:function(e){return e.contentAvailable&&!this.options.skipLevelOfDetail}},{key:"shouldRefine",value:function(e,t,n){var i=e._screenSpaceError;return(i=n?e.getScreenSpaceError(t,!0):i)>this.options.maximumScreenSpaceError}},{key:"updateTileVisibility",value:function(e,t){var n=[];if(this.options.viewportTraversersMap)for(var i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===t.viewport.id&&n.push(i);else n.push(t.viewport.id);e.updateVisibility(t,n)}},{key:"compareDistanceToCamera",value:function(e,t){return e._distanceToCamera-t._distanceToCamera}},{key:"anyChildrenVisible",value:function(e,t){var n,i=!1,r=q(e.children);try{for(r.s();!(n=r.n()).done;){var a=n.value;a.updateVisibility(t),i=i||a.isVisibleAndInRequestVolume}}catch(e){r.e(e)}finally{r.f()}return i}},{key:"executeEmptyTraversal",value:function(e,t){var n=!0,i=this._emptyTraversalStack;for(i.push(e);0<i.length&&n;){var r=i.pop();if(this.updateTile(r,t),r.isVisibleAndInRequestVolume||this.loadTile(r,t),this.touchTile(r,t),!r.hasRenderContent&&this.canTraverse(r,t,!1,!0)){var a,o=q(r.children);try{for(o.s();!(a=o.n()).done;){var s=a.value;i.find(s)&&i.delete(s),i.push(s)}}catch(e){o.e(e)}finally{o.f()}}else r.contentAvailable||(n=!1)}return n}}])}(),GP=new B;var HP=function(){return A(function e(t,n,i){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"";ue(this,e),l(this,"tileset",void 0),l(this,"header",void 0),l(this,"id",void 0),l(this,"url",void 0),l(this,"parent",void 0),l(this,"refine",void 0),l(this,"type",void 0),l(this,"contentUrl",void 0),l(this,"lodMetricType",void 0),l(this,"lodMetricValue",void 0),l(this,"boundingVolume",void 0),l(this,"content",void 0),l(this,"contentState",void 0),l(this,"gpuMemoryUsageInBytes",void 0),l(this,"children",void 0),l(this,"depth",void 0),l(this,"viewportIds",void 0),l(this,"transform",void 0),l(this,"extensions",void 0),l(this,"userData",void 0),l(this,"computedTransform",void 0),l(this,"hasEmptyContent",void 0),l(this,"hasTilesetContent",void 0),l(this,"traverser",void 0),l(this,"_cacheNode",void 0),l(this,"_frameNumber",void 0),l(this,"_lodJudge",void 0),l(this,"_expireDate",void 0),l(this,"_expiredContent",void 0),l(this,"_shouldRefine",void 0),l(this,"_distanceToCamera",void 0),l(this,"_centerZDepth",void 0),l(this,"_screenSpaceError",void 0),l(this,"_visibilityPlaneMask",void 0),l(this,"_visible",void 0),l(this,"_inRequestVolume",void 0),l(this,"_stackLength",void 0),l(this,"_selectionDepth",void 0),l(this,"_touchedFrame",void 0),l(this,"_visitedFrame",void 0),l(this,"_selectedFrame",void 0),l(this,"_requestedFrame",void 0),l(this,"_priority",void 0),l(this,"_contentBoundingVolume",void 0),l(this,"_viewerRequestVolume",void 0),l(this,"_initialTransform",void 0),l(this,"tilesetMatrix",void 0),l(this,"tileContent",void 0),l(this,"contentTransform",void 0),l(this,"volumeBox",void 0),l(this,"boundUntransformed",void 0),l(this,"rtcCenterState",MB),this.header=n,this.tileset=t,this.id=r||n.id,this.url=n.url,this.parent=i,this.refine=this._getRefine(n.refine),this.type=n.type,this.contentUrl=n.contentUrl,this.lodMetricType="geometricError",this.lodMetricValue=0,this.boundingVolume=null,this.content=null,this.contentState=wP,this.gpuMemoryUsageInBytes=0,this.children=[],this.hasEmptyContent=!1,this.hasTilesetContent=!1,this.depth=0,this.viewportIds=[],this.userData={},this.extensions=null,this._priority=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._screenSpaceError=0,this._cacheNode=null,this._frameNumber=null,this._cacheNode=null,this.traverser=new zP({}),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._initialTransform=new LT,this.transform=new LT,this._initializeLodMetric(n),this._initializeTransforms(n),this._initializeBoundingVolumes(n),this._initializeContent(n),this._initializeRenderingState(n),this._lodJudge=null,this._expireDate=null,this._expiredContent=null,Object.seal(this)},[{key:"destroy",value:function(){this.header=null}},{key:"isDestroyed",value:function(){return null===this.header}},{key:"selected",get:function(){return this._selectedFrame===this.tileset._frameNumber}},{key:"isVisible",get:function(){return this._visible}},{key:"isVisibleAndInRequestVolume",get:function(){var e=this.tileset.visible&&this._inRequestVolume;return e=window.tileVisi2?this._visible&&e:e}},{key:"hasRenderContent",get:function(){return!this.hasEmptyContent&&!this.hasTilesetContent}},{key:"hasChildren",get:function(){return 0<this.children.length||this.header.children&&0<this.header.children.length}},{key:"contentReady",get:function(){return this.contentState===xP||this.hasEmptyContent}},{key:"contentAvailable",get:function(){return Boolean(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}},{key:"hasUnloadedContent",get:function(){return this.hasRenderContent&&this.contentUnloaded}},{key:"contentUnloaded",get:function(){return this.contentState===wP}},{key:"contentExpired",get:function(){return this.contentState===EP}},{key:"contentFailed",get:function(){return this.contentState===CP}},{key:"getScreenSpaceError",value:function(e,t){switch(this.tileset.type){case SP.I3S:return OP(this,e);case SP.TILES3D:return i=e,r=t,a=(n=this).tileset,o=n.parent&&n.parent.lodMetricValue||n.lodMetricValue,0===(r=t?o:n.lodMetricValue)?0:(o=Math.max(n._distanceToCamera,1e-7),n=i.height,i=i.sseDenominator,r*n*(a.options.viewDistanceScale||1)/(o*i)-FP(a,o));default:throw new Error("Unsupported tileset type")}var n,i,r,a,o}},{key:"_getPriority",value:function(){var e,t=this.tileset._traverser,n=t.options.skipLevelOfDetail,n=this.refine===BP.ADD||n;return n&&!this.isVisible&&void 0!==this._visible||1<=this.tileset._frameNumber-this._touchedFrame||this.contentState===wP?-1:(n=((e=this.parent)&&(!n||0===this._screenSpaceError||e.hasTilesetContent)?e:this)._screenSpaceError,e=t.root?t.root._screenSpaceError:0,t=Math.max(e-n,0),this._visible?t:THREE.Math.clamp(.1*t,-.9,100))}},{key:"loadContent",value:(e=J(X().mark(function e(){var t,n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.hasEmptyContent)return e.abrupt("return",!1);e.next=2;break;case 2:if(this.content)return e.abrupt("return",!0);e.next=4;break;case 4:return this.contentExpired&&(this._expireDate=null),this.contentState=bP,e.next=9,this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));case 9:if(t=e.sent){e.next=13;break}return this.contentState=wP,e.abrupt("return",!1);case 13:return e.prev=13,n=this.tileset.getTileUrl(this.contentUrl)+"?_=".concat(this.tileset.options.updateTime),i=this.tileset.loader,r=g(g({},this.tileset.loadOptions),{},Y({},i.id,g(g({},this.tileset.loadOptions[i.id]),{},{isTileset:"json"===this.type},this._getLoaderSpecificOptions(i.id)))),e.next=19,NS(n,i,r);case 19:if(this.content=e.sent,SB<this.depth&&"scenegraph"==this.type)return this.unloadContent(),e.abrupt("return",!1);e.next=23;break;case 23:if(this.tileset.options.contentLoader)return e.next=26,this.tileset.options.contentLoader(this);e.next=26;break;case 26:return this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=xP,this._onContentLoaded(),e.abrupt("return",!0);case 32:throw e.prev=32,e.t0=e.catch(13),this.contentState=CP,e.t0;case 36:return e.prev=36,t.done(),e.finish(36);case 39:case"end":return e.stop()}},e,this,[[13,32,36,39]])})),function(){return e.apply(this,arguments)})},{key:"unloadContent",value:function(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=wP,!0}},{key:"updateVisibility",value:function(e,t){var n,i;this._frameNumber!==e.frameNumber&&(n=(i=this.parent)?i._visibilityPlaneMask:iP.MASK_INDETERMINATE,this.tileset._traverser.options.updateTransforms&&(i=i?i.computedTransform:(new LT).elements,this._updateTransform(i)),this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._visibilityPlaneMask=this.visibility(e,n),this._visible=this._visibilityPlaneMask!==iP.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=t)}},{key:"visibility",value:function(e,t){var e=e.cullingVolume,n=this.boundingVolume;return e.computeVisibilityWithPlaneMask(n,t)}},{key:"contentVisibility",value:function(){return!0}},{key:"distanceToTile",value:function(e){var t=this.boundingVolume;return Math.sqrt(Math.max(t.distanceSquaredTo(e.camera.position),0))}},{key:"cameraSpaceZDepth",value:function(e){var e=e.camera,t=this.boundingVolume;return GP.subVectors(t.center,e.position),e.direction.dot(GP)}},{key:"insideViewerRequestVolume",value:function(e){var t=this._viewerRequestVolume;return!t||t.distanceSquaredTo(e.camera.position)<=0}},{key:"updateExpiration",value:function(){var e;null!=this._expireDate&&this.contentReady&&!this.hasEmptyContent&&(e=Date.now(),Date.lessThan(this._expireDate,e))&&(this.contentState=EP,this._expiredContent=this.content)}},{key:"extras",get:function(){return this.header.extras}},{key:"_initializeLodMetric",value:function(e){"lodMetricType"in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in e?this.lodMetricValue=e.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue"))}},{key:"_initializeTransforms",value:function(e){this.transform=e.transform?new LT(e.transform):new LT;var e=this.parent,t=(this.tileset,e&&e.computedTransform?e.computedTransform.clone():(new LT).elements),t=(this.computedTransform=new LT(t).multiplyRight(this.transform),e&&e._initialTransform?e._initialTransform.clone():new LT);this._initialTransform=new LT(t).multiplyRight(this.transform)}},{key:"_initializeBoundingVolumes",value:function(e){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(e)}},{key:"_initializeContent",value:function(e){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=wP,this.hasTilesetContent=!1,e.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}},{key:"_initializeRenderingState",value:function(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=iP.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}},{key:"_getRefine",value:function(e){return e||this.parent&&this.parent.refine||BP.REPLACE}},{key:"_isTileset",value:function(){return-1!==this.contentUrl.indexOf(".json")}},{key:"_onContentLoaded",value:function(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0}this._isTileset()&&(this.hasTilesetContent=!0)}},{key:"_updateBoundingVolume",value:function(e){"root_0"!=e.id&&e.id||console.log("root_0"),t=this.tileset.lastRootTransform?new LT((new Me).multiplyMatrices(this.tileset.lastRootTransform,this.getContentTransform()).elements):new LT(this.tileset.modelMatrix).multiplyRight(this.computedTransform),this.boundingVolume=RP(e.boundingVolume,t,this.boundingVolume);var t,n=e.content;n&&(n.boundingVolume&&(this._contentBoundingVolume=RP(n.boundingVolume,t,this._contentBoundingVolume)),e.viewerRequestVolume)&&(this._viewerRequestVolume=RP(e.viewerRequestVolume,t,this._viewerRequestVolume))}},{key:"getBoundUntransformed",value:function(){this.contentTransform||console.error("?"),this.getContentTransform();var e=new LT(this.contentTransform.elements);return this.boundUntransformed=RP(this.header.boundingVolume,e,this.boundUntransformed),this.boundUntransformed}},{key:"getContentTransform",value:function(e){return this.contentTransform&&!e||(this.tileset.tileTransInvert||(this.tileset.tileTransInvert=new LT),this.contentTransform=(new Me).fromArray(this.computedTransform).premultiply((new Me).fromArray(this.tileset.tileTransInvert)),this.tileContent?this.content.rtcCenter:this.rtcCenterState)||((e=new Me).makeScale(1,1,-1),this.contentTransform.premultiply(e)),this.contentTransform.clone()}},{key:"_updateTransform",value:function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:new LT).clone().multiplyRight(this.transform);e.equals(this.computedTransform)&&this.tilesetMatrix&&this.tilesetMatrix.equals(this.tileset.modelMatrix)||(this.tileset.modelMatrix,this.computedTransform=e,this.tilesetMatrix=this.tileset.modelMatrix,this._updateBoundingVolume(this.header))}},{key:"_getLoaderSpecificOptions",value:function(e){return"i3s"!==e?{assetGltfUpAxis:(e=this.tileset.tileset).asset&&e.asset.gltfUpAxis||"Y"}:g(g({},this.tileset.options.i3s),{},{tile:this.header,tileset:this.tileset.tileset,isTileHeader:!1})}}]);var e}(),VP=function(){function a(){return ue(this,a),le(this,a,arguments)}return v(a,zP),A(a,[{key:"compareDistanceToCamera",value:function(e,t){return 0===t._distanceToCamera&&0===e._distanceToCamera?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera}},{key:"updateTileVisibility",value:function(e,t){var n,i,r;I(a,"updateTileVisibility",this,3)([e,t]),e.isVisibleAndInRequestVolume&&(n=0<e.children.length,e.hasTilesetContent&&n?(i=e.children[0],this.updateTileVisibility(i,t),e._visible=i._visible):this.meetsScreenSpaceErrorEarly(e,t)?e._visible=!1:(i=e.refine===BP.REPLACE,r=e._optimChildrenWithinParent===_P,i&&r&&n&&(this.anyChildrenVisible(e,t)||(e._visible=!1))))}},{key:"meetsScreenSpaceErrorEarly",value:function(e,t){var n=e.parent;return!(!n||n.hasTilesetContent||n.refine!==BP.ADD||this.shouldRefine(e,t,!0))}}])}(),QP="REQUESTED",jP="COMPLETED",WP="ERROR",JP=function(){return A(function e(){ue(this,e),l(this,"_statusMap",void 0),this._statusMap={}},[{key:"add",value:function(e,t,n,i){var r=this;this._statusMap[t]||(this._statusMap[t]={request:e,callback:n,key:t,frameState:i,status:QP},e().then(function(e){r._statusMap[t].status=jP,r._statusMap[t].callback(e,i)}).catch(function(e){r._statusMap[t].status=WP,n(e)}))}},{key:"update",value:function(e,t){this._statusMap[e]&&(this._statusMap[e].frameState=t)}},{key:"find",value:function(e){return this._statusMap[e]}}])}(),qP=function(){function t(e){return ue(this,t),l(e=le(this,t,[e]),"_tileManager",void 0),e._tileManager=new JP,e}return v(t,zP),A(t,[{key:"shouldRefine",value:function(e,t){var n;return e._lodJudge=(t=t,0===(n=e).lodMetricValue||isNaN(n.lodMetricValue)?"DIG":(t=2*OP(n,t))<2?"OUT":!n.header.children||t<=n.lodMetricValue?"DRAW":n.header.children?"DIG":"OUT"),"DIG"===e._lodJudge}},{key:"updateChildTiles",value:function(i,r){var a,o=this,e=i.header.children||[],s=i.children,l=i.tileset,t=q(e);try{for(t.s();!(a=t.n()).done;)!function(){var e=a.value,t="".concat(e.id,"-").concat(r.viewport.id),n=s&&s.find(function(e){return e.id===t});n?o.updateTile(n,r):(n=function(){return o._loadTile(e.id,l)},o._tileManager.find(t)?o._tileManager.update(t,r):(l.tileset.nodePages&&(n=function(){return l.tileset.nodePagesTile.formTileFromNodePages(e.id)}),o._tileManager.add(n,t,function(e){return o._onTileLoad(e,i,t)},r)))}()}catch(e){t.e(e)}finally{t.f()}return!1}},{key:"_loadTile",value:(n=J(X().mark(function e(t,n){var i,r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.loader,r=n.getTileUrl("".concat(n.url,"/nodes/").concat(t)),a=g(g({},n.loadOptions),{},{i3s:g(g({},n.loadOptions.i3s),{},{isTileHeader:!0,loadContent:!1})}),e.next=5,NS(r,i,a);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"_onTileLoad",value:function(e,t,n){e=new HP(t.tileset,e,t,n),t.children.push(e),n=this._tileManager.find(e.id).frameState;this.updateTile(e,n),this._frameNumber===n.frameNumber&&this.executeTraversal(e,n)}}]);var n}(),YP={description:"",ellipsoid:B_.WGS84,modelMatrix:new LT,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,onTileLoad:function(){},onTileUnload:function(){},onTileError:function(){},onTraversalComplete:function(e){return e},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},XP="Tiles In Tileset(s)",KP="Tiles In Memory",ZP="Tiles In View",$P="Tiles To Render",eD="Tiles Loaded",tD="Tiles Loading",nD="Tiles Unloaded",iD="Failed Tile Loads",rD="Tile Memory Use",aD=0,oD=function(){function i(e,t){var n;return ue(this,i),n=le(this,i),viewer.visiVertexCount=viewer.visiVertexCount||0,l(n,"options",void 0),l(n,"loadOptions",void 0),l(n,"type",void 0),l(n,"tileset",void 0),l(n,"loader",void 0),l(n,"url",void 0),l(n,"basePath",void 0),l(n,"modelMatrix",void 0),l(n,"ellipsoid",void 0),l(n,"lodMetricType",void 0),l(n,"lodMetricValue",void 0),l(n,"refine",void 0),l(n,"root",void 0),l(n,"roots",void 0),l(n,"asset",void 0),l(n,"description",void 0),l(n,"properties",void 0),l(n,"extras",void 0),l(n,"attributions",void 0),l(n,"credits",void 0),l(n,"stats",void 0),l(n,"traverseCounter",void 0),l(n,"geometricError",void 0),l(n,"selectedTiles",void 0),l(n,"cartographicCenter",void 0),l(n,"cartesianCenter",void 0),l(n,"zoom",void 0),l(n,"boundingVolume",void 0),l(n,"gpuMemoryUsageInBytes",void 0),l(n,"dynamicScreenSpaceErrorComputedDensity",void 0),l(n,"_traverser",void 0),l(n,"_cache",void 0),l(n,"_requestScheduler",void 0),l(n,"_frameNumber",void 0),l(n,"_queryParamsString",void 0),l(n,"_queryParams",void 0),l(n,"_extensionsUsed",void 0),l(n,"_tiles",void 0),l(n,"_pendingCount",void 0),l(n,"lastUpdatedVieports",void 0),l(n,"_requestedTiles",void 0),l(n,"_emptyTiles",void 0),l(n,"frameStateData",void 0),l(n,"maximumMemoryUsage",void 0),l(n,"visible",!0),_B(e),n.options=g(g({},YP),t),n.tileset=e,n.loader=e.loader,n.type=e.type,n.url=e.url,n.basePath=e.basePath||AM(n.url),n.modelMatrix=n.options.modelMatrix,n.ellipsoid=n.options.ellipsoid,n.lodMetricType=e.lodMetricType,n.lodMetricValue=e.lodMetricValue,n.refine=e.root.refine,n.loadOptions=n.options.loadOptions||{},n.root=null,n.roots={},n.cartographicCenter=null,n.cartesianCenter=null,n.zoom=1,n.boundingVolume=null,n.traverseCounter=0,n.geometricError=0,n._traverser=n._initializeTraverser(),n._cache=new __,n._requestScheduler=new mM({throttleRequests:n.options.throttleRequests,maxRequests:n.options.maxRequests}),n._frameNumber=0,n._pendingCount=0,n._tiles={},n.selectedTiles=[],n._emptyTiles=[],n._requestedTiles=[],n.frameStateData={},n.lastUpdatedVieports=null,n._queryParams={},n._queryParamsString="",n.maximumMemoryUsage=n.options.maximumMemoryUsage||32,n.gpuMemoryUsageInBytes=0,n.stats=new pM({id:n.url}),n._initializeStats(),n._extensionsUsed=void 0,n.dynamicScreenSpaceErrorComputedDensity=0,n.extras=null,n.asset={},n.credits={},n.description=n.options.description||"",n._initializeTileSet(e),n}return v(i,Qn),A(i,[{key:"destroy",value:function(){this._destroy()}},{key:"isLoaded",value:function(){return 0===this._pendingCount&&0!==this._frameNumber}},{key:"tiles",get:function(){return Object.values(this._tiles)}},{key:"frameNumber",get:function(){return this._frameNumber}},{key:"queryParams",get:function(){return this._queryParamsString||(this._queryParamsString=function(e){for(var t=[],n=0,i=Object.keys(e);n<i.length;n++){var r=i[n];t.push("".concat(r,"=").concat(e[r]))}switch(t.length){case 0:return"";case 1:return"?".concat(t[0]);default:return"?".concat(t.join("&"))}}(this._queryParams)),this._queryParamsString}},{key:"setProps",value:function(e){this.options=g(g({},this.options),e)}},{key:"setOptions",value:function(e){this.options=g(g({},this.options),e)}},{key:"getTileUrl",value:function(e){var t=e.startsWith("data:");return e=Potree.Common.dealURL(e),t?e:"".concat(e).concat(this.queryParams)}},{key:"hasExtension",value:function(e){return Boolean(this._extensionsUsed&&-1<this._extensionsUsed.indexOf(e))}},{key:"update",value:function(e){if((!("loadTiles"in this.options)||this.options.loadTiles)&&!(0<this.traverseCounter)){!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e instanceof Array||(e=[e]),this._cache.reset(),this._frameNumber++,this.traverseCounter=e.length;var t,n=[],i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value.id;this._needTraverse(r)?n.push(r):this.traverseCounter--}}catch(e){i.e(e)}finally{i.f()}var a,o=q(e);try{for(o.s();!(a=o.n()).done;){var s,l=a.value,u=l.id;this.roots[u]||(this.roots[u]=this._initializeTileHeaders(this.tileset,null)),n.includes(u)&&(s=vP(l,this._frameNumber),this._traverser.traverse(this.roots[u],s,this.options))}}catch(e){o.e(e)}finally{o.f()}}}},{key:"_needTraverse",value:function(e){var t=e;return(t=this.options.viewportTraversersMap?this.options.viewportTraversersMap[e]:t)===e}},{key:"_onTraversalEnd",value:function(e){var e=e.viewport.id,e=(this.frameStateData[e]||(this.frameStateData[e]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]}),this.frameStateData[e]),t=Object.values(this._traverser.selectedTiles);e.selectedTiles=t,e._requestedTiles=Object.values(this._traverser.requestedTiles),e._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,0<this.traverseCounter||this._updateTiles()}},{key:"_updateTiles",value:function(){for(var e in this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[],this.frameStateData){e=this.frameStateData[e];this.selectedTiles=this.selectedTiles.concat(e.selectedTiles),this._requestedTiles=this._requestedTiles.concat(e._requestedTiles),this._emptyTiles=this._emptyTiles.concat(e._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);var t,n=q(this.selectedTiles);try{for(n.s();!(t=n.n()).done;){var i=t.value;this._tiles[i.id]=i}}catch(e){n.e(e)}finally{n.f()}this._loadTiles(),this._unloadTiles(),this._updateStats()}},{key:"_tilesChanged",value:function(e,t){var n,i;return e.length!==t.length||(n=new Set(e.map(function(e){return e.id})),i=new Set(t.map(function(e){return e.id})),0<e.filter(function(e){return!i.has(e.id)}).length)||0<t.filter(function(e){return!n.has(e.id)}).length}},{key:"_loadTiles",value:function(){var e,t=q(this._requestedTiles);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.contentUnloaded&&this._loadTile(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"_unloadTiles",value:function(){this._cache.unloadTiles(this,function(e,t){return e._unloadTile(t)})}},{key:"_updateStats",value:function(){var e,t=0,n=0,i=q(this.selectedTiles);try{for(i.s();!(e=i.n()).done;){var r=e.value;r.contentAvailable&&r.content&&(t++,r.content.pointCount)&&(n+=r.content.pointCount)}}catch(e){i.e(e)}finally{i.f()}this.stats.get(ZP).count=this.selectedTiles.length,this.stats.get($P).count=t,this.stats.get("Points").count=n}},{key:"_initializeTileSet",value:function(e){this.root=this._initializeTileHeaders(e,null),this.type===SP.TILES3D&&this._initializeCesiumTileset(e),this.type===SP.I3S&&this._initializeI3STileset(),this._calculateViewProps()}},{key:"_calculateViewProps",value:function(){var e=this.root,t=(_B(e),e.boundingVolume.center);t?(this.cartographicCenter=B_.WGS84.cartesianToCartographic(t,new B),this.cartesianCenter=t,this.zoom=yP(e.boundingVolume)):(console.warn("center was not pre-calculated for the root tile"),this.cartographicCenter=new B,this.zoom=1)}},{key:"_initializeStats",value:function(){this.stats.get(XP),this.stats.get(tD),this.stats.get(KP),this.stats.get(ZP),this.stats.get($P),this.stats.get(eD),this.stats.get(nD),this.stats.get(iD),this.stats.get("Points","memory"),this.stats.get(rD,"memory")}},{key:"_initializeTileHeaders",value:function(e,t){e=new HP(this,e.root,t,null==t&&"root_"+aD++);if(t&&(t.children.push(e),e.depth=t.depth+1),this.type===SP.TILES3D){var n=[];for(n.push(e);0<n.length;){var i=n.pop(),r=(this.stats.get(XP).incrementCount(),i.header.children||[]);if(i.depth<SB){var a,o=q(r);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=new HP(this,s,i);i.children.push(l),l.depth=i.depth+1,n.push(l)}}catch(e){o.e(e)}finally{o.f()}}window.maxTileDepth=Math.max(window.maxTileDepth||0,i.depth)}}return e}},{key:"_initializeTraverser",value:function(){var e;switch(this.type){case SP.TILES3D:e=VP;break;case SP.I3S:e=qP;break;default:e=zP}return new e({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}},{key:"_destroyTileHeaders",value:function(e){this._destroySubtree(e)}},{key:"_loadTile",value:(t=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._onStartTileLoading(),e.next=4,t.loadContent();case 4:n=e.sent,e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),this._onTileLoadError(t,e.t0);case 10:return e.prev=10,this._onEndTileLoading(t),this._onTileLoad(t,n),e.finish(10);case 14:case"end":return e.stop()}},e,this,[[0,7,10,14]])})),function(e){return t.apply(this,arguments)})},{key:"_onTileLoadError",value:function(e,t){this.stats.get(iD).incrementCount();var t=t.message||t.toString(),n=e.url;console.error("A 3D tile failed to load: ".concat(e.url," ").concat(t)),this.options.onTileError(e,t,n)}},{key:"_onTileLoad",value:function(e,t){if(t){if(e&&e.content){var t=e,n=e.content,i=(_B(t),_B(n),n.rtcCenter),r=n.gltfUpAxis,a=t.computedTransform,t=t.boundingVolume.center,o=new LT(a);switch(i&&o.translate(i),r){case"Z":break;case"Y":var s=(new LT).rotateX(Math.PI/2),o=o.multiplyRight(s);break;case"X":s=(new LT).rotateY(-Math.PI/2);o=o.multiplyRight(s)}n.isQuantized&&o.translate(n.quantizedVolumeOffset).scale(n.quantizedVolumeScale),a=new B(t),n.cartesianModelMatrix=o,n.cartesianOrigin=a,i=B_.WGS84.cartesianToCartographic(a,new B),r=B_.WGS84.eastNorthUpToFixedFrame(a).invert(),n.cartographicModelMatrix=r.multiplyRight(o),n.cartographicOrigin=i,n.coordinateSystem||(n.modelMatrix=n.cartographicModelMatrix)}this._addTileToCache(e),this.options.onTileLoad(e)}}},{key:"_onStartTileLoading",value:function(){this._pendingCount++,this.stats.get(tD).incrementCount()}},{key:"_onEndTileLoading",value:function(e){this._pendingCount--,this.stats.get(tD).decrementCount(),this.dispatchEvent({type:"endTileLoading",tile:e,loadingCount:this._pendingCount})}},{key:"_addTileToCache",value:function(t){this._cache.add(this,t,function(e){return e._updateCacheStats(t)})}},{key:"_updateCacheStats",value:function(e){this.stats.get(eD).incrementCount(),this.stats.get(KP).incrementCount(),this.gpuMemoryUsageInBytes+=e.content.byteLength||0,this.stats.get(rD).count=this.gpuMemoryUsageInBytes}},{key:"_unloadTile",value:function(e){this.gpuMemoryUsageInBytes-=e.content&&e.content.byteLength||0,this.stats.get(KP).decrementCount(),this.stats.get(nD).incrementCount(),this.stats.get(rD).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}},{key:"_destroy",value:function(){var e=[];for(this.root&&e.push(this.root);0<e.length;){var t,n=e.pop(),i=q(n.children);try{for(i.s();!(t=i.n()).done;){var r=t.value;e.push(r)}}catch(e){i.e(e)}finally{i.f()}this._destroyTile(n)}this.root=null}},{key:"_destroySubtree",value:function(e){var t=e,n=[];for(n.push(t);0<n.length;){var i,r=q((e=n.pop()).children);try{for(r.s();!(i=r.n()).done;){var a=i.value;n.push(a)}}catch(e){r.e(e)}finally{r.f()}e!==t&&this._destroyTile(e)}t.children=[]}},{key:"_destroyTile",value:function(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}},{key:"_initializeCesiumTileset",value:function(e){if(this.asset=e.asset,!this.asset)throw new Error("Tileset must have an asset property.");if("0.0"!==this.asset.version&&"1.0"!==this.asset.version)throw new Error("The tileset must be 3D Tiles version 0.0 or 1.0.");"tilesetVersion"in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||"",this.properties=e.properties,this.geometricError=e.geometricError,this._extensionsUsed=e.extensionsUsed,this.extras=e.extras}},{key:"_initializeI3STileset",value:function(){this.loadOptions.i3s&&"token"in this.loadOptions.i3s&&(this._queryParams.token=this.loadOptions.i3s.token)}}]);var t}();var sD={COMPOSITE:"cmpt",POINT_CLOUD:"pnts",BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",GEOMETRY:"geom",VECTOR:"vect",GLTF:"glTF"};function lD(e,t,n){_B(e instanceof ArrayBuffer);var i=new TextDecoder("utf8"),e=new Uint8Array(e,t,n);return i.decode(e)}zu={name:"Draco",id:"draco",module:"draco",shapes:["mesh"],version:"3.1.4",worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:"object"===("undefined"==typeof WebAssembly?"undefined":O(WebAssembly))?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}};var uD=function(){function d(e,t){ue(this,d),l(this,"fields",void 0),l(this,"metadata",void 0);var n=Array.isArray(e),i=void 0;if(!n)throw new Error(i||"loader assertion failed.");var r,a={},o=q(e);try{for(o.s();!(r=o.n()).done;){var s=r.value;a[s.name]&&console.warn("Schema: duplicated field name",s.name,s),a[s.name]=!0}}catch(e){o.e(e)}finally{o.f()}this.fields=e,this.metadata=t||new Map}return A(d,[{key:"compareTo",value:function(e){if(this.metadata!==e.metadata)return!1;if(this.fields.length!==e.fields.length)return!1;for(var t=0;t<this.fields.length;++t)if(!this.fields[t].compareTo(e.fields[t]))return!1;return!0}},{key:"select",value:function(){for(var t=Object.create(null),e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];for(var r=0,a=n;r<a.length;r++){var o=a[r];t[o]=!0}return new d(this.fields.filter(function(e){return t[e.name]}),this.metadata)}},{key:"selectAt",value:function(){for(var t=this,e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];return new d(n.map(function(e){return t.fields[e]}).filter(Boolean),this.metadata)}},{key:"assign",value:function(e){var t,n,i,r=this.metadata,a=(e instanceof d?(n=(t=e).fields,r=cD(cD(new Map,this.metadata),t.metadata)):n=e,Object.create(null)),o=q(this.fields);try{for(o.s();!(i=o.n()).done;){var s=i.value;a[s.name]=s}}catch(e){o.e(e)}finally{o.f()}var l,u=q(n);try{for(u.s();!(l=u.n()).done;){var c=l.value;a[c.name]=c}}catch(e){u.e(e)}finally{u.f()}return new d(Object.values(a),r)}}])}();function cD(e,t){return new Map([].concat(Fe(e||new Map),Fe(t||new Map)))}var dD,hD=function(){function r(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Map;ue(this,r),l(this,"name",void 0),l(this,"type",void 0),l(this,"nullable",void 0),l(this,"metadata",void 0),this.name=e,this.type=t,this.nullable=n,this.metadata=i}return A(r,[{key:"typeId",get:function(){return this.type&&this.type.typeId}},{key:"clone",value:function(){return new r(this.name,this.type,this.nullable,this.metadata)}},{key:"compareTo",value:function(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}},{key:"toString",value:function(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}])}(),pD=((t=dD=dD||{})[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.Float=3]="Float",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct=13]="Struct",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Dictionary=-1]="Dictionary",t[t.Int8=-2]="Int8",t[t.Int16=-3]="Int16",t[t.Int32=-4]="Int32",t[t.Int64=-5]="Int64",t[t.Uint8=-6]="Uint8",t[t.Uint16=-7]="Uint16",t[t.Uint32=-8]="Uint32",t[t.Uint64=-9]="Uint64",t[t.Float16=-10]="Float16",t[t.Float32=-11]="Float32",t[t.Float64=-12]="Float64",t[t.DateDay=-13]="DateDay",t[t.DateMillisecond=-14]="DateMillisecond",t[t.TimestampSecond=-15]="TimestampSecond",t[t.TimestampMillisecond=-16]="TimestampMillisecond",t[t.TimestampMicrosecond=-17]="TimestampMicrosecond",t[t.TimestampNanosecond=-18]="TimestampNanosecond",t[t.TimeSecond=-19]="TimeSecond",t[t.TimeMillisecond=-20]="TimeMillisecond",t[t.TimeMicrosecond=-21]="TimeMicrosecond",t[t.TimeNanosecond=-22]="TimeNanosecond",t[t.DenseUnion=-23]="DenseUnion",t[t.SparseUnion=-24]="SparseUnion",t[t.IntervalDayTime=-25]="IntervalDayTime",t[t.IntervalYearMonth=-26]="IntervalYearMonth",function(){return A(function e(){ue(this,e)},[{key:"typeId",get:function(){return dD.NONE}},{key:"compareTo",value:function(e){return this===e}}],[{key:"isNull",value:function(e){return e&&e.typeId===dD.Null}},{key:"isInt",value:function(e){return e&&e.typeId===dD.Int}},{key:"isFloat",value:function(e){return e&&e.typeId===dD.Float}},{key:"isBinary",value:function(e){return e&&e.typeId===dD.Binary}},{key:"isUtf8",value:function(e){return e&&e.typeId===dD.Utf8}},{key:"isBool",value:function(e){return e&&e.typeId===dD.Bool}},{key:"isDecimal",value:function(e){return e&&e.typeId===dD.Decimal}},{key:"isDate",value:function(e){return e&&e.typeId===dD.Date}},{key:"isTime",value:function(e){return e&&e.typeId===dD.Time}},{key:"isTimestamp",value:function(e){return e&&e.typeId===dD.Timestamp}},{key:"isInterval",value:function(e){return e&&e.typeId===dD.Interval}},{key:"isList",value:function(e){return e&&e.typeId===dD.List}},{key:"isStruct",value:function(e){return e&&e.typeId===dD.Struct}},{key:"isUnion",value:function(e){return e&&e.typeId===dD.Union}},{key:"isFixedSizeBinary",value:function(e){return e&&e.typeId===dD.FixedSizeBinary}},{key:"isFixedSizeList",value:function(e){return e&&e.typeId===dD.FixedSizeList}},{key:"isMap",value:function(e){return e&&e.typeId===dD.Map}},{key:"isDictionary",value:function(e){return e&&e.typeId===dD.Dictionary}}])}()),fD=function(e){function i(e,t){var n;return ue(this,i),l(n=le(this,i),"isSigned",void 0),l(n,"bitWidth",void 0),n.isSigned=e,n.bitWidth=t,n}return v(i,pD),A(i,[{key:"typeId",get:function(){return dD.Int}},{key:e,get:function(){return"Int"}},{key:"toString",value:function(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}])}(Symbol.toStringTag),mD=function(){function e(){return ue(this,e),le(this,e,[!0,8])}return v(e,fD),A(e)}(),vD=function(){function e(){return ue(this,e),le(this,e,[!0,16])}return v(e,fD),A(e)}(),gD=function(){function e(){return ue(this,e),le(this,e,[!0,32])}return v(e,fD),A(e)}(),AD=function(){function e(){return ue(this,e),le(this,e,[!1,8])}return v(e,fD),A(e)}(),yD=function(){function e(){return ue(this,e),le(this,e,[!1,16])}return v(e,fD),A(e)}(),wD=function(){function e(){return ue(this,e),le(this,e,[!1,32])}return v(e,fD),A(e)}(),bD=32,xD=64,ED=function(e){function n(e){var t;return ue(this,n),l(t=le(this,n),"precision",void 0),t.precision=e,t}return v(n,pD),A(n,[{key:"typeId",get:function(){return dD.Float}},{key:e,get:function(){return"Float"}},{key:"toString",value:function(){return"Float".concat(this.precision)}}])}(Symbol.toStringTag),CD=function(){function e(){return ue(this,e),le(this,e,[bD])}return v(e,ED),A(e)}(),BD=function(){function e(){return ue(this,e),le(this,e,[xD])}return v(e,ED),A(e)}(),MD=function(e){function i(e,t){var n;return ue(this,i),l(n=le(this,i),"listSize",void 0),l(n,"children",void 0),n.listSize=e,n.children=[t],n}return v(i,pD),A(i,[{key:"typeId",get:function(){return dD.FixedSizeList}},{key:"valueType",get:function(){return this.children[0].type}},{key:"valueField",get:function(){return this.children[0]}},{key:e,get:function(){return"FixedSizeList"}},{key:"toString",value:function(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}])}(Symbol.toStringTag);function SD(e,t,n){var i=function(e){switch(e.constructor){case Int8Array:return new mD;case Uint8Array:return new AD;case Int16Array:return new vD;case Uint16Array:return new yD;case Int32Array:return new gD;case Uint32Array:return new wD;case Float32Array:return new CD;case Float64Array:return new BD;default:throw new Error("array type not supported")}}(t.value),n=n||function(e){var t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new hD(e,new MD(t.size,new hD("value",i)),!1,n)}function TD(e,t,n){var i,r=PD(t.metadata),a=[],o=function(e){var t,n={};for(t in e){var i=e[t];n[i.name||"undefined"]=i}return n}(t.attributes);for(i in e){var s=_D(i,e[i],o[i]);a.push(s)}return n&&(t=_D("indices",n),a.push(t)),new uD(a,r)}function _D(e,t,n){return SD(e,t,n?PD(n.metadata):void 0)}function PD(e){var t,n=new Map;for(t in e)n.set("".concat(t,".string"),JSON.stringify(e[t]));return n}var DD={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},ID={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},kD=function(){return A(function e(t){ue(this,e),l(this,"draco",void 0),l(this,"decoder",void 0),l(this,"metadataQuerier",void 0),this.draco=t,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier},[{key:"destroy",value:function(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}},{key:"parseSync",value:function(e){var t,n,i,r,a,o,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},l=new this.draco.DecoderBuffer,e=(l.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(s),this.decoder.GetEncodedGeometryType(l)),u=new(e===this.draco.TRIANGULAR_MESH?this.draco.Mesh:this.draco.PointCloud);try{switch(e){case this.draco.TRIANGULAR_MESH:t=this.decoder.DecodeBufferToMesh(l,u);break;case this.draco.POINT_CLOUD:t=this.decoder.DecodeBufferToPointCloud(l,u);break;default:throw new Error("DRACO: Unknown geometry type.")}if(t.ok()&&u.ptr)return i=this._getDracoLoaderData(u,e,s),a=function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=e.POSITION?e.POSITION.value:[],l=s&&s.length,u=0;u<l;u+=3)var c=s[u],d=s[u+1],h=s[u+2],t=c<t?c:t,n=d<n?d:n,i=h<i?h:i,r=r<c?c:r,a=a<d?d:a,o=o<h?h:o;return[[t,n,i],[r,a,o]]}((r=this._getMeshData(u,i,s)).attributes),o=TD(r.attributes,i,r.indices),g(g({loader:"draco",loaderData:i,header:{vertexCount:u.num_points(),boundingBox:a}},r),{},{schema:o});throw n="DRACO decompression failed: ".concat(t.error_msg()),new Error(n)}finally{this.draco.destroy(l),u&&this.draco.destroy(u)}}},{key:"_getDracoLoaderData",value:function(e,t,n){var i=this._getTopLevelMetadata(e),n=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:i,attributes:n}}},{key:"_getDracoAttributes",value:function(e,t){for(var n={},i=0;i<e.num_attributes();i++){var r=this.decoder.GetAttribute(e,i),a=this._getAttributeMetadata(e,i),a=(n[r.unique_id()]={unique_id:r.unique_id(),attribute_type:r.attribute_type(),data_type:r.data_type(),num_components:r.num_components(),byte_offset:r.byte_offset(),byte_stride:r.byte_stride(),normalized:r.normalized(),attribute_index:i,metadata:a},this._getQuantizationTransform(r,t)),a=(a&&(n[r.unique_id()].quantization_transform=a),this._getOctahedronTransform(r,t));a&&(n[r.unique_id()].octahedron_transform=a)}return n}},{key:"_getMeshData",value:function(e,t,n){t=this._getMeshAttributes(t,e,n);if(t.POSITION)return e instanceof this.draco.Mesh?"triangle-strip"!==n.topology?{topology:"triangle-list",mode:5,attributes:t,indices:{value:this._getTriangleListIndices(e),size:1}}:{topology:"triangle-strip",mode:4,attributes:t,indices:{value:this._getTriangleStripIndices(e),size:1}}:{topology:"point-list",mode:0,attributes:t};throw new Error("DRACO: No position attribute found.")}},{key:"_getMeshAttributes",value:function(e,t,n){for(var i={},r=0,a=Object.values(e.attributes);r<a.length;r++){var o=a[r],s=this._deduceAttributeName(o,n),l=(o.name=s,this._getAttributeValues(t,o)),u=l.value,l=l.size;i[s]={value:u,size:l,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}return i}},{key:"_getTriangleListIndices",value:function(e){var t=3*e.num_faces(),n=4*t,i=this.draco._malloc(n);try{return this.decoder.GetTrianglesUInt32Array(e,n,i),new Uint32Array(this.draco.HEAPF32.buffer,i,t).slice()}finally{this.draco._free(i)}}},{key:"_getTriangleStripIndices",value:function(e){var t=new this.draco.DracoInt32Array;try{this.decoder.GetTriangleStripsFromMesh(e,t);for(var n=t,i=n.size(),r=new Int32Array(i),a=0;a<i;a++)r[a]=n.GetValue(a);return r}finally{this.draco.destroy(t)}}},{key:"_getAttributeValues",value:function(e,t){var n,i=ID[t.data_type],r=t.num_components,a=e.num_points()*r,o=a*i.BYTES_PER_ELEMENT,s=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;default:return e.DT_INVALID}}(this.draco,i),l=this.draco._malloc(o);try{var u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,s,o,l),n=new i(this.draco.HEAPF32.buffer,l,a).slice()}finally{this.draco._free(l)}return{value:n,size:r}}},{key:"_deduceAttributeName",value:function(e,t){for(var n=e.unique_id,i=0,r=Object.entries(t.extraAttributes||{});i<r.length;i++){var a=U(r[i],2),o=a[0];if(a[1]===n)return o}var s,l=e.attribute_type;for(s in DD)if(this.draco[s]===l)return DD[s];t=t.attributeNameEntry||"name";return e.metadata[t]?e.metadata[t].string:"CUSTOM_ATTRIBUTE_".concat(n)}},{key:"_getTopLevelMetadata",value:function(e){e=this.decoder.GetMetadata(e);return this._getDracoMetadata(e)}},{key:"_getAttributeMetadata",value:function(e,t){e=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(e)}},{key:"_getDracoMetadata",value:function(e){if(!e||!e.ptr)return{};for(var t={},n=this.metadataQuerier.NumEntries(e),i=0;i<n;i++){var r=this.metadataQuerier.GetEntryName(e,i);t[r]=this._getDracoMetadataField(e,r)}return t}},{key:"_getDracoMetadataField",value:function(e,t){var n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);var i=function(e){for(var t=e.size(),n=new Int32Array(t),i=0;i<t;i++)n[i]=e.GetValue(i);return n}(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:i}}finally{this.draco.destroy(n)}}},{key:"_disableAttributeTransforms",value:function(e){var t,n=e.quantizedAttributes,e=e.octahedronAttributes,e=void 0===e?[]:e,i=q([].concat(Fe(void 0===n?[]:n),Fe(e)));try{for(i.s();!(t=i.n()).done;){var r=t.value;this.decoder.SkipAttributeTransform(this.draco[r])}}catch(e){i.e(e)}finally{i.f()}}},{key:"_getQuantizationTransform",value:function(e,t){var n=this,t=t.quantizedAttributes,t=void 0===t?[]:t,i=e.attribute_type();if(t.map(function(e){return n.decoder[e]}).includes(i)){var r=new this.draco.AttributeQuantizationTransform;try{if(r.InitFromAttribute(e))return{quantization_bits:r.quantization_bits(),range:r.range(),min_values:new Float32Array([1,2,3]).map(function(e){return r.min_value(e)})}}finally{this.draco.destroy(r)}}return null}},{key:"_getOctahedronTransform",value:function(e,t){var n=this,t=t.octahedronAttributes,t=void 0===t?[]:t,i=e.attribute_type();if(t.map(function(e){return n.decoder[e]}).includes(i)){t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits()}}finally{this.draco.destroy(t)}}return null}}])}();var RD,rh="1.4.1",LD="https://www.gstatic.com/draco/versioned/decoders/".concat(rh,"/draco_decoder.js"),FD="https://www.gstatic.com/draco/versioned/decoders/".concat(rh,"/draco_wasm_wrapper.js"),OD="https://www.gstatic.com/draco/versioned/decoders/".concat(rh,"/draco_decoder.wasm");function UD(){return(UD=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.modules||{},RD=n.draco3d?RD||n.draco3d.createDecoderModule({}).then(function(e){return{draco:e}}):RD||function(){return ND.apply(this,arguments)}(t),e.next=4,RD;case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ND(){return(ND=J(X().mark(function e(r){var a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=r.draco&&r.draco.decoderType,e.next="js"===e.t0?3:(e.t0,7);break;case 3:return e.next=5,KB(LD,"draco",r);case 5:return a=e.sent,e.abrupt("break",21);case 7:return e.t1=Promise,e.next=10,KB(FD,"draco",r);case 10:return e.t2=e.sent,e.next=13,KB(OD,"draco",r);case 13:return e.t3=e.sent,e.t4=[e.t2,e.t3],e.next=17,e.t1.all.call(e.t1,e.t4);case 17:o=e.sent,o=U(o,2),a=o[0],o=o[1];case 21:a=a||BB.DracoDecoderModule,e.next=24;var n=a,t=o,i={};return t&&(i.wasmBinary=t),new Promise(function(t){n(g(g({},i),{},{onModuleLoaded:function(e){return t({draco:e})}}))});case 24:return e.abrupt("return",e.sent);case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}var zD=g(g({},zu),{},{parse:function(e,t){return GD.apply(this,arguments)}});function GD(){return(GD=J(X().mark(function e(t,n){var i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,function(){return UD.apply(this,arguments)}(n);case 2:return i=e.sent,i=i.draco,i=new kD(i),e.prev=5,e.abrupt("return",i.parseSync(t,null==n?void 0:n.draco));case 7:return e.prev=7,i.destroy(),e.finish(7);case 10:case"end":return e.stop()}},e,null,[[5,,7,10]])}))).apply(this,arguments)}var HD={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130},VD=g(g({},{POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6}),HD),QD=Y(Y(Y(Y(Y(Y(Y(Y({},HD.DOUBLE,Float64Array),HD.FLOAT,Float32Array),HD.UNSIGNED_SHORT,Uint16Array),HD.UNSIGNED_INT,Uint32Array),HD.UNSIGNED_BYTE,Uint8Array),HD.BYTE,Int8Array),HD.SHORT,Int16Array),HD.INT,Int32Array),jD={DOUBLE:HD.DOUBLE,FLOAT:HD.FLOAT,UNSIGNED_SHORT:HD.UNSIGNED_SHORT,UNSIGNED_INT:HD.UNSIGNED_INT,UNSIGNED_BYTE:HD.UNSIGNED_BYTE,BYTE:HD.BYTE,SHORT:HD.SHORT,INT:HD.INT},WD="Failed to convert GL type",JD=function(){function r(){ue(this,r)}return A(r,null,[{key:"fromTypedArray",value:function(e){for(var t in e=ArrayBuffer.isView(e)?e.constructor:e,QD)if(QD[t]===e)return t;throw new Error(WD)}},{key:"fromName",value:function(e){e=jD[e];if(e)return e;throw new Error(WD)}},{key:"getArrayType",value:function(e){switch(e){case HD.UNSIGNED_SHORT_5_6_5:case HD.UNSIGNED_SHORT_4_4_4_4:case HD.UNSIGNED_SHORT_5_5_5_1:return Uint16Array;default:var t=QD[e];if(t)return t;throw new Error(WD)}}},{key:"getByteSize",value:function(e){return r.getArrayType(e).BYTES_PER_ELEMENT}},{key:"validate",value:function(e){return Boolean(r.getArrayType(e))}},{key:"createTypedArray",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length?arguments[3]:void 0;return void 0===i&&(i=(t.byteLength-n)/r.getByteSize(e)),new(r.getArrayType(e))(t,n,i)}}])}();function qD(e,t){var n,i,t=1<arguments.length&&void 0!==t?t:255;return 2*(n=0,i=t,JS(e,function(e){return Math.max(n,Math.min(i,e))})/t)-1}function YD(e){return e<0?-1:1}function XD(e,t,n,i){var r=void 0;if(!i)throw new Error("math.gl assertion failed. ".concat(r));if(e<0||n<e||t<0||n<t)throw new Error("x and y must be unsigned normalized integers between 0 and ".concat(n));return i.x=qD(e,n),i.y=qD(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0&&(r=i.x,i.x=(1-Math.abs(i.y))*YD(r),i.y=(1-Math.abs(r))*YD(i.y)),i.normalize()}new Ru,new B,new Ru,new Ru;var KD=function(){return A(function e(t,n){ue(this,e),l(this,"json",void 0),l(this,"buffer",void 0),l(this,"featuresLength",0),l(this,"_cachedTypedArrays",{}),this.json=t,this.buffer=n},[{key:"getExtension",value:function(e){return this.json.extensions&&this.json.extensions[e]}},{key:"hasProperty",value:function(e){return Boolean(this.json[e])}},{key:"getGlobalProperty",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:VD.UNSIGNED_INT,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=this.json[e];return i&&Number.isFinite(i.byteOffset)?this._getTypedArrayFromBinary(e,t,n,1,i.byteOffset):i}},{key:"getPropertyArray",value:function(e,t,n){var i=this.json[e];return i&&Number.isFinite(i.byteOffset)?("componentType"in i&&(t=JD.fromName(i.componentType)),this._getTypedArrayFromBinary(e,t,n,this.featuresLength,i.byteOffset)):this._getTypedArrayFromArray(e,t,i)}},{key:"getProperty",value:function(e,t,n,i,r){var a=this.json[e];if(!a)return a;var o=this.getPropertyArray(e,t,n);if(1===n)return o[i];for(var s=0;s<n;++s)r[s]=o[n*i+s];return r}},{key:"_getTypedArrayFromBinary",value:function(e,t,n,i,r){var a=this._cachedTypedArrays,o=a[e];return o||(o=JD.createTypedArray(t,this.buffer.buffer,this.buffer.byteOffset+r,i*n),a[e]=o),o}},{key:"_getTypedArrayFromArray",value:function(e,t,n){var i=this._cachedTypedArrays,r=i[e];return r||(r=JD.createTypedArray(t,n),i[e]=r),r}}])}(),ZD={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},$D={SCALAR:function(e,t){return e[t]},VEC2:function(e,t){return[e[2*t+0],e[2*t+1]]},VEC3:function(e,t){return[e[3*t+0],e[3*t+1],e[3*t+2]]},VEC4:function(e,t){return[e[4*t+0],e[4*t+1],e[4*t+2],e[4*t+3]]},MAT2:function(e,t){return[e[4*t+0],e[4*t+1],e[4*t+2],e[4*t+3]]},MAT3:function(e,t){return[e[9*t+0],e[9*t+1],e[9*t+2],e[9*t+3],e[9*t+4],e[9*t+5],e[9*t+6],e[9*t+7],e[9*t+8]]},MAT4:function(e,t){return[e[16*t+0],e[16*t+1],e[16*t+2],e[16*t+3],e[16*t+4],e[16*t+5],e[16*t+6],e[16*t+7],e[16*t+8],e[16*t+9],e[16*t+10],e[16*t+11],e[16*t+12],e[16*t+13],e[16*t+14],e[16*t+15]]}},eI={SCALAR:function(e,t,n){t[n]=e},VEC2:function(e,t,n){t[2*n+0]=e[0],t[2*n+1]=e[1]},VEC3:function(e,t,n){t[3*n+0]=e[0],t[3*n+1]=e[1],t[3*n+2]=e[2]},VEC4:function(e,t,n){t[4*n+0]=e[0],t[4*n+1]=e[1],t[4*n+2]=e[2],t[4*n+3]=e[3]},MAT2:function(e,t,n){t[4*n+0]=e[0],t[4*n+1]=e[1],t[4*n+2]=e[2],t[4*n+3]=e[3]},MAT3:function(e,t,n){t[9*n+0]=e[0],t[9*n+1]=e[1],t[9*n+2]=e[2],t[9*n+3]=e[3],t[9*n+4]=e[4],t[9*n+5]=e[5],t[9*n+6]=e[6],t[9*n+7]=e[7],t[9*n+8]=e[8],t[9*n+9]=e[9]},MAT4:function(e,t,n){t[16*n+0]=e[0],t[16*n+1]=e[1],t[16*n+2]=e[2],t[16*n+3]=e[3],t[16*n+4]=e[4],t[16*n+5]=e[5],t[16*n+6]=e[6],t[16*n+7]=e[7],t[16*n+8]=e[8],t[16*n+9]=e[9],t[16*n+10]=e[10],t[16*n+11]=e[11],t[16*n+12]=e[12],t[16*n+13]=e[13],t[16*n+14]=e[14],t[16*n+15]=e[15]}};var tI=function(e){return void 0!==e};function nI(e,t,n){if(t){var e=e.getExtension("3DTILES_batch_table_hierarchy"),i=t.HIERARCHY;if(i&&(console.warn("3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy."),t.extensions=t.extensions||{},e=t.extensions["3DTILES_batch_table_hierarchy"]=i),e){var r,a,o,s=n,l=(t=e).instancesLength,u=t.classes,c=t.classIds,d=t.parentCounts,t=t.parentIds,h=l;if(tI(c.byteOffset)&&(c.componentType=defaultValue(c.componentType,GL.UNSIGNED_SHORT),c.type=AttributeType.SCALAR,A=getBinaryAccessor(c),c=A.createArrayBufferView(s.buffer,s.byteOffset+c.byteOffset,l)),tI(d))for(tI(d.byteOffset)&&(d.componentType=defaultValue(d.componentType,GL.UNSIGNED_SHORT),d.type=AttributeType.SCALAR,A=getBinaryAccessor(d),d=A.createArrayBufferView(s.buffer,s.byteOffset+d.byteOffset,l)),o=new Uint16Array(l),r=h=0;r<l;++r)o[r]=h,h+=d[r];tI(t)&&tI(t.byteOffset)&&(t.componentType=defaultValue(t.componentType,GL.UNSIGNED_SHORT),t.type=AttributeType.SCALAR,A=getBinaryAccessor(t),t=A.createArrayBufferView(s.buffer,s.byteOffset+t.byteOffset,h));var p=u.length;for(r=0;r<p;++r){var f=u[r].length,m=u[r].instances,f=getBinaryProperties(f,m,s);u[r].instances=combine(f,m)}var v=new Array(p).fill(0),g=new Uint16Array(l);for(r=0;r<l;++r)a=c[r],g[r]=v[a],++v[a];for(var A={classes:u,classIds:c,classIndexes:g,parentCounts:d,parentIndexes:o,parentIds:t},y=A,w=y.classIds.length,b=0;b<w;++b)!function e(t,n,i){var r=t.parentCounts;var a=t.parentIds;var o=t.parentIndexes;var s=t.classIds;s=s.length;if(!tI(a))return;assert(n<s,"Parent index ".concat(n," exceeds the total number of instances: ").concat(s));assert(-1===i.indexOf(n),"Circular dependency detected in the batch table hierarchy.");i.push(n);var l=tI(r)?r[n]:1;var u=tI(r)?o[n]:n;for(var c=0;c<l;++c){var d=a[u+c];d!==n&&e(t,d,i)}i.pop(n)}(y,b,stack);return A}}return null}function iI(e,t,n){if(e){var i=e.parentCounts;if(e.parentIds)return n(e,t);if(0<i){var r=e,a=t,o=n,i=r.classIds,s=r.parentCounts,l=r.parentIds,u=r.parentIndexes,i=i.length,c=scratchVisited,d=(c.length=Math.max(c.length,i),++marker),h=scratchStack;for(h.length=0,h.push(a);0<h.length;)if(a=h.pop(),c[a]!==d){c[a]=d;var p=o(r,a);if(tI(p))return p;for(var f=s[a],m=u[a],v=0;v<f;++v){var g=l[m+v];g!==a&&h.push(g)}}return null}for(var A=e,y=t,w=n,b=!0;b;){var x=w(A,y);if(tI(x))return x;x=A.parentIds[y];b=x!==y,y=x}throw new Error("traverseHierarchySingleParent")}}function rI(e){return null!=e}function aI(e,t){return e}var oI={HIERARCHY:!0,extensions:!0,extras:!0},sI=function(){return A(function e(t,n,i){var r,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};for(r in ue(this,e),l(this,"json",void 0),l(this,"binary",void 0),l(this,"featureCount",void 0),l(this,"_extensions",void 0),l(this,"_properties",void 0),l(this,"_binaryProperties",void 0),l(this,"_hierarchy",void 0),_B(0<=i),this.json=t||{},this.binary=n,this.featureCount=i,this._extensions=(null==(t=this.json)?void 0:t.extensions)||{},this._properties={},this.json)oI[r]||(this._properties[r]=this.json[r]);this._binaryProperties=this._initializeBinaryProperties(),a["3DTILES_batch_table_hierarchy"]&&(this._hierarchy=nI(this,this.json,this.binary))},[{key:"getExtension",value:function(e){return this.json&&this.json.extensions&&this.json.extensions[e]}},{key:"memorySizeInBytes",value:function(){return 0}},{key:"isClass",value:function(e,n){return this._checkBatchId(e),_B("string"==typeof n,n),!!this._hierarchy&&rI(iI(this._hierarchy,e,function(e,t){t=e.classIds[t];return e.classes[t].name===n}))}},{key:"isExactClass",value:function(e,t){return _B("string"==typeof t,t),this.getExactClassName(e)===t}},{key:"getExactClassName",value:function(e){if(this._checkBatchId(e),this._hierarchy)return e=this._hierarchy.classIds[e],this._hierarchy.classes[e].name}},{key:"hasProperty",value:function(e,t){return this._checkBatchId(e),_B("string"==typeof t,t),rI(this._properties[t])||this._hasPropertyInHierarchy(e,t)}},{key:"getPropertyNames",value:function(e,t){this._checkBatchId(e),(t=rI(t)?t:[]).length=0;var n=Object.keys(this._properties);return t.push.apply(t,n),this._hierarchy&&this._getPropertyNamesInHierarchy(e,t),t}},{key:"getProperty",value:function(e,t){if(this._checkBatchId(e),_B("string"==typeof t,t),this._binaryProperties){var n=this._binaryProperties[t];if(rI(n))return this._getBinaryProperty(n,e)}n=this._properties[t];if(rI(n))return aI(n[e]);if(this._hierarchy){n=this._getHierarchyProperty(e,t);if(rI(n))return n}}},{key:"setProperty",value:function(e,t,n){var i=this.featureCount;if(this._checkBatchId(e),_B("string"==typeof t,t),this._binaryProperties){var r=this._binaryProperties[t];if(r)return void this._setBinaryProperty(r,e,n)}this._hierarchy&&this._setHierarchyProperty(this,e,t,n)||(rI(r=this._properties[t])||(this._properties[t]=new Array(i),r=this._properties[t]),r[e]=aI(n))}},{key:"_checkBatchId",value:function(e){if(!(0<=e&&e<this.featureCount))throw new Error("batchId not in range [0, featureCount - 1].")}},{key:"_getBinaryProperty",value:function(e,t){return e.unpack(e.typedArray,t)}},{key:"_setBinaryProperty",value:function(e,t,n){e.pack(n,e.typedArray,t)}},{key:"_initializeBinaryProperties",value:function(){var e,t=null;for(e in this._properties){var n=this._properties[e],n=this._initializeBinaryProperty(e,n);n&&((t=t||{})[e]=n)}return t}},{key:"_initializeBinaryProperty",value:function(e,t){var n,i,r,a,o,s;return"byteOffset"in t?(t=t,_B(this.binary,"Property ".concat(e," requires a batch table binary.")),_B(t.type,"Property ".concat(e," requires a type.")),e=t,t=this.binary.buffer,n=0|this.binary.byteOffset,i=this.featureCount,r=e.componentType,_B(e.componentType),r="string"==typeof r?JD.fromName(r):r,a=ZD[e.type],o=$D[e.type],s=eI[e.type],n+=e.byteOffset,{typedArray:(e={values:JD.createTypedArray(r,t,n,a*i),type:r,size:a,unpacker:o,packer:s}).values,componentCount:e.size,unpack:e.unpacker,pack:e.packer}):null}},{key:"_hasPropertyInHierarchy",value:function(e,n){return!!this._hierarchy&&(e=iI(this._hierarchy,e,function(e,t){t=e.classIds[t];return rI(e.classes[t].instances[n])}),rI(e))}},{key:"_getPropertyNamesInHierarchy",value:function(e,r){iI(this._hierarchy,e,function(e,t){var n,t=e.classIds[t],i=e.classes[t].instances;for(n in i)i.hasOwnProperty(n)&&-1===r.indexOf(n)&&r.push(n)})}},{key:"_getHierarchyProperty",value:function(e,i){var r=this;return iI(this._hierarchy,e,function(e,t){var n=e.classIds[t],n=e.classes[n],e=e.classIndexes[t],t=n.instances[i];return rI(t)?rI(t.typedArray)?r._getBinaryProperty(t,e):aI(t[e]):null})}},{key:"_setHierarchyProperty",value:function(e,i,r,a){var o=this,t=iI(this._hierarchy,i,function(e,t){var n=e.classIds[t],n=e.classes[n],e=e.classIndexes[t],n=n.instances[r];return!!rI(n)&&(_B(t===i,'Inherited property "'.concat(r,'" is read-only.')),rI(n.typedArray)?o._setBinaryProperty(n,e,a):n[e]=aI(a),!0)});return rI(t)}}])}(),lI=4;function uI(e,t,n){n=2<arguments.length&&void 0!==n?n:0,t=new DataView(t);if(e.magic=t.getUint32(n,!0),e.version=t.getUint32(n+=lI,!0),e.byteLength=t.getUint32(n+=lI,!0),n+=lI,1!==e.version)throw new Error("3D Tile Version ".concat(e.version," not supported"));return n}var cI=4,dI="b3dm tile in legacy format.";function hI(e,t,n){var i,t=new DataView(t),r=(e.header=e.header||{},t.getUint32(n,!0)),a=t.getUint32(n+=cI,!0),o=t.getUint32(n+=cI,!0),t=t.getUint32(n+=cI,!0);return n+=cI,570425344<=o?(n-=2*cI,i=r,o=a,a=r=t=0,console.warn(dI)):570425344<=t&&(n-=cI,i=o,o=r,t=a,a=r=0,console.warn(dI)),e.header.featureTableJsonByteLength=r,e.header.featureTableBinaryByteLength=a,e.header.batchTableJsonByteLength=o,e.header.batchTableBinaryByteLength=t,e.header.batchLength=i,n}function pI(e,t,n){return n=function(e,t,n){var i=e.header,r=i.batchTableJsonByteLength,i=i.batchTableBinaryByteLength;{var a;0<r&&(a=lD(t,n,r),e.batchTableJson=JSON.parse(a),n+=r,0<i)&&(e.batchTableBinary=new Uint8Array(t,n,i),e.batchTableBinary=new Uint8Array(e.batchTableBinary),n+=i)}return n}(e,t,n=function(e,t,n){var i=e.header,r=i.featureTableJsonByteLength,a=i.featureTableBinaryByteLength,i=i.batchLength;e.featureTableJson={BATCH_LENGTH:i||0},0<r&&(i=lD(t,n,r),e.featureTableJson=JSON.parse(i));return n+=r,e.featureTableBinary=new Uint8Array(t,n,a),n+=a}(e,t,n))}function fI(e,t,n){if(!(t||e&&e.batchIds&&n))return null;var i=e.batchIds,r=e.isRGB565,a=e.pointCount;if(i&&n){for(var o=new Uint8ClampedArray(3*a),s=0;s<a;s++){var l=i[s],l=n.getProperty(l,"dimensions").map(function(e){return 255*e});o[3*s]=l[0],o[3*s+1]=l[1],o[3*s+2]=l[2]}return{type:VD.UNSIGNED_BYTE,value:o,size:3,normalized:!0}}if(r){for(var u=new Uint8ClampedArray(3*a),c=0;c<a;c++){var d=function(e,t){var t=1<arguments.length&&void 0!==t?t:[0,0,0],n=e>>5&63,i=31&e;return t[0]=(e>>11&31)<<3,t[1]=n<<2,t[2]=i<<3,t}(t[c]);u[3*c]=d[0],u[3*c+1]=d[1],u[3*c+2]=d[2]}return{type:VD.UNSIGNED_BYTE,value:u,size:3,normalized:!0}}return t&&t.length===3*a?{type:VD.UNSIGNED_BYTE,value:t,size:3,normalized:!0}:{type:VD.UNSIGNED_BYTE,value:t,size:4,normalized:!0}}var mI=new B;function vI(e,t){if(!t)return null;if(e.isOctEncoded16P){for(var n=new Float32Array(3*e.pointsLength),i=0;i<e.pointsLength;i++)r=t[2*i],a=t[2*i+1],XD(r,a,255,mI),mI.toArray(n,3*i);return{type:VD.FLOAT,size:2,value:n}}var r,a;return{type:VD.FLOAT,size:2,value:t}}function gI(e,t,n){if(!e.isQuantized)return t;if(n["3d-tiles"]&&n["3d-tiles"].decodeQuantizedPositions){e.isQuantized=!1;for(var i=e,r=t,a=new B,o=new Float32Array(3*i.pointCount),s=0;s<i.pointCount;s++)a.set(r[3*s],r[3*s+1],r[3*s+2]).scale(1/i.quantizedRange).multiply(i.quantizedVolumeScale).add(i.quantizedVolumeOffset).toArray(o,3*s);return o}return{type:VD.UNSIGNED_SHORT,value:t,size:3,normalized:!0}}function AI(){return(AI=J(X().mark(function e(o,s,l,u,c){var d,h;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=uI(o,s,l),l=hI(o,s,l),l=pI(o,s,l),(t=o).attributes={positions:null,colors:null,normals:null,batchIds:null},t.isQuantized=!1,t.isTranslucent=!1,t.isRGB565=!1,t.isOctEncoded16P=!1,h=function(e){var t=new KD(e.featureTableJson,e.featureTableBinary),n=t.getGlobalProperty("POINTS_LENGTH");if(!Number.isFinite(n))throw new Error("POINTS_LENGTH must be defined");t.featuresLength=n,e.featuresLength=n,e.pointsLength=n,e.pointCount=n,e.rtcCenter=t.getGlobalProperty("RTC_CENTER",VD.FLOAT,3);n=function(e,t){var n=null;if(!e.batchIds&&t.hasProperty("BATCH_ID")&&(e.batchIds=t.getPropertyArray("BATCH_ID",VD.UNSIGNED_SHORT,1),e.batchIds)){t=t.getGlobalProperty("BATCH_LENGTH");if(!t)throw new Error("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");var i=e.batchTableJson,e=e.batchTableBinary;n=new sI(i,e,t)}return n}(e,t);return{featureTable:t,batchTable:n}}(o),d=h.featureTable,h=h.batchTable,e.next=7,function(){return yI.apply(this,arguments)}(o,d,h,u,c);case 7:r=i=n=t=void 0;var t=o,n=d,i=u;if(!t.attributes.positions)if(n.hasProperty("POSITION"))t.attributes.positions=n.getPropertyArray("POSITION",VD.FLOAT,3);else if(n.hasProperty("POSITION_QUANTIZED")){var r=n.getPropertyArray("POSITION_QUANTIZED",VD.UNSIGNED_SHORT,3);if(t.isQuantized=!0,t.quantizedRange=65535,t.quantizedVolumeScale=n.getGlobalProperty("QUANTIZED_VOLUME_SCALE",VD.FLOAT,3),!t.quantizedVolumeScale)throw new Error("QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");if(t.quantizedVolumeOffset=n.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",VD.FLOAT,3),!t.quantizedVolumeOffset)throw new Error("QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");t.attributes.positions=gI(t,r,i)}if(!t.attributes.positions)throw new Error("Either POSITION or POSITION_QUANTIZED must be defined.");a=i=r=n=void 0;var n=o,r=d,i=h,a=(n.attributes.colors||(a=null,r.hasProperty("RGBA")?(a=r.getPropertyArray("RGBA",VD.UNSIGNED_BYTE,4),n.isTranslucent=!0):r.hasProperty("RGB")?a=r.getPropertyArray("RGB",VD.UNSIGNED_BYTE,3):r.hasProperty("RGB565")&&(a=r.getPropertyArray("RGB565",VD.UNSIGNED_SHORT,1),n.isRGB565=!0),n.attributes.colors=fI(n,a,i)),r.hasProperty("CONSTANT_RGBA")&&(n.constantRGBA=r.getGlobalProperty("CONSTANT_RGBA",VD.UNSIGNED_BYTE,4)),n=i=a=void 0,o),i=d;return a.attributes.normals||(n=null,i.hasProperty("NORMAL")?n=i.getPropertyArray("NORMAL",VD.FLOAT,3):i.hasProperty("NORMAL_OCT16P")&&(n=i.getPropertyArray("NORMAL_OCT16P",VD.UNSIGNED_BYTE,2),a.isOctEncoded16P=!0),a.attributes.normals=vI(a,n)),e.abrupt("return",l);case 11:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function yI(){return(yI=J(X().mark(function e(t,n,i,r,a){var o,s,l,u,c,d;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((c=t.batchTableJson&&t.batchTableJson.extensions&&t.batchTableJson.extensions["3DTILES_draco_point_compression"])&&(l=c.properties),!(c=n.getExtension("3DTILES_draco_point_compression"))){e.next=15;break}if(s=c.properties,u=c.byteOffset,c=c.byteLength,s&&Number.isFinite(u)&&c){e.next=9;break}throw new Error("Draco properties, byteOffset, and byteLength must be defined");case 9:o=t.featureTableBinary.slice(u,u+c),t.hasPositions=Number.isFinite(s.POSITION),t.hasColors=Number.isFinite(s.RGB)||Number.isFinite(s.RGBA),t.hasNormals=Number.isFinite(s.NORMAL),t.hasBatchIds=Number.isFinite(s.BATCH_ID),t.isTranslucent=Number.isFinite(s.RGBA);case 15:if(o){e.next=17;break}return e.abrupt("return",!0);case 17:return d={buffer:o,properties:g(g({},s),l),featureTableProperties:s,batchTableProperties:l,dequantizeInShader:!1},e.next=20,function(){return wI.apply(this,arguments)}(t,d,r,a);case 20:return e.abrupt("return",e.sent);case 21:case"end":return e.stop()}},e)}))).apply(this,arguments)}function wI(){return(wI=J(X().mark(function e(t,n,i,r){var a,o,s,l,u,c,d,h,p,f,m,v;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=r.parse,delete(s=g(g({},i),{},{draco:g(g({},i.draco),{},{extraAttributes:n.batchTableProperties||{}})}))["3d-tiles"],e.next=5,o(n.buffer,zD,s);case 5:if(a=e.sent,o=a.attributes.POSITION&&a.attributes.POSITION.value,s=a.attributes.COLOR_0&&a.attributes.COLOR_0.value,l=a.attributes.NORMAL&&a.attributes.NORMAL.value,u=a.attributes.BATCH_ID&&a.attributes.BATCH_ID.value,d=o&&a.attributes.POSITION.value.quantization,c=l&&a.attributes.NORMAL.value.quantization,d&&(d=a.POSITION.data.quantization,h=d.range,t.quantizedVolumeScale=new B(h,h,h),t.quantizedVolumeOffset=new B(d.minValues),t.quantizedRange=(1<<d.quantizationBits)-1,t.isQuantizedDraco=!0),c&&(t.octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,t.isOctEncodedDraco=!0),p={},n.batchTableProperties)for(f=0,m=Object.keys(n.batchTableProperties);f<m.length;f++)v=m[f],a.attributes[v]&&a.attributes[v].value&&(p[v.toLowerCase()]=a.attributes[v].value);t.attributes=g({positions:o,colors:fI(t,s,void 0),normals:l,batchIds:u},p);case 17:case"end":return e.stop()}},e)}))).apply(this,arguments)}var bI,xI,EI="https://unpkg.com/@loaders.gl/textures@".concat("3.1.4","/dist/libs/basis_encoder.wasm"),CI="https://unpkg.com/@loaders.gl/textures@".concat("3.1.4","/dist/libs/basis_encoder.js");function BI(){return MI.apply(this,arguments)}function MI(){return(MI=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.modules||{}).basis)return e.abrupt("return",n.basis);e.next=3;break;case 3:return bI=bI||function(){return SI.apply(this,arguments)}(t),e.next=6,bI;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function SI(){return(SI=J(X().mark(function e(r){var a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a=null,e.t0=Promise,e.next=5,KB("basis_transcoder.js","textures",r);case 5:return e.t1=e.sent,e.next=8,KB("basis_transcoder.wasm","textures",r);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:s=e.sent,s=U(s,2),a=s[0],o=s[1],a=a||BB.BASIS,e.next=19;var t=a,n=o,i={};return n&&(i.wasmBinary=n),new Promise(function(n){t(i).then(function(e){var t=e.BasisFile;(0,e.initializeBasis)(),n({BasisFile:t})})});case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}},e)}))).apply(this,arguments)}function TI(){return _I.apply(this,arguments)}function _I(){return(_I=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.modules||{}).basisEncoder)return e.abrupt("return",n.basisEncoder);e.next=3;break;case 3:return xI=xI||function(){return PI.apply(this,arguments)}(t),e.next=6,xI;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function PI(){return(PI=J(X().mark(function e(r){var a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a=null,e.t0=Promise,e.next=5,KB(CI,"textures",r);case 5:return e.t1=e.sent,e.next=8,KB(EI,"textures",r);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:s=e.sent,s=U(s,2),a=s[0],o=s[1],a=a||BB.BASIS,e.next=19;var t=a,n=o,i={};return n&&(i.wasmBinary=n),new Promise(function(r){t(i).then(function(e){var t=e.BasisFile,n=e.KTX2File,i=e.initializeBasis,e=e.BasisEncoder;i(),r({BasisFile:t,KTX2File:n,BasisEncoder:e})})});case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}},e)}))).apply(this,arguments)}var DI=["","WEBKIT_","MOZ_"],II={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},kI=null;function RI(e){if(!kI){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,kI=new Set;var t,n=q(DI);try{for(n.s();!(t=n.n()).done;){var i,r,a=t.value;for(i in II)e&&e.getExtension("".concat(a).concat(i))&&(r=II[i],kI.add(r))}}catch(e){n.e(e)}finally{n.f()}}return kI}var LI=[171,75,84,88,32,50,48,187,13,10,26,10];var FI={etc1:{basisFormat:0,compressed:!0,format:36196},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:33776},bc3:{basisFormat:3,compressed:!0,format:33779},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842},"astc-4x4":{basisFormat:10,compressed:!0,format:37808},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function OI(){return(OI=J(X().mark(function e(n,i){var r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("auto"!==i.basis.containerFormat){e.next=11;break}if(t=n,(t=new Uint8Array(t)).byteLength<LI.length||t[0]!==LI[0]||t[1]!==LI[1]||t[2]!==LI[2]||t[3]!==LI[3]||t[4]!==LI[4]||t[5]!==LI[5]||t[6]!==LI[6]||t[7]!==LI[7]||t[8]!==LI[8]||t[9]!==LI[9]||t[10]!==LI[10]||t[11]!==LI[11]){e.next=6;break}return e.next=4,TI(i);case 4:return r=e.sent,e.abrupt("return",NI(r.KTX2File,n,i));case 6:return e.next=8,BI(i);case 8:return r=e.sent,o=r.BasisFile,e.abrupt("return",UI(o,n,i));case 11:e.t0=i.basis.module,e.next="encoder"===e.t0?14:(e.t0,22);break;case 14:return e.next=16,TI(i);case 16:a=e.sent,e.t1=i.basis.containerFormat,e.next="ktx2"===e.t1?20:(e.t1,21);break;case 20:return e.abrupt("return",NI(a.KTX2File,n,i));case 21:return e.abrupt("return",UI(a.BasisFile,n,i));case 22:return e.next=24,BI(i);case 24:return o=e.sent,s=o.BasisFile,e.abrupt("return",UI(s,n,i));case 27:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function UI(e,t,n){var i,r,a,o,s,l,u,c,d,h,p=new e(new Uint8Array(t));try{if(!p.startTranscoding())return null;for(var f=p.getNumImages(),m=[],v=0;v<f;v++){for(var g=p.getNumLevels(v),A=[],y=0;y<g;y++)A.push((r=v,a=y,o=n,d=c=u=l=s=void 0,h=void 0,s=(i=p).getImageWidth(r,a),l=i.getImageHeight(r,a),u=i.getHasAlpha(),o=zI(o,u),c=o.compressed,d=o.format,o=o.basisFormat,h=i.getImageTranscodedSizeInBytes(r,a,o),h=new Uint8Array(h),i.transcodeImage(h,r,a,o,0,0)?{width:s,height:l,data:h,compressed:c,hasAlpha:u,format:d}:null));m.push(A)}return m}finally{p.close(),p.delete()}}function NI(e,t,n){var i,r,a,o,s,l,u,c,d,h=new e(new Uint8Array(t));try{if(!h.startTranscoding())return null;for(var p=h.getLevels(),f=[],m=0;m<p;m++){f.push((r=m,a=n,c=u=o=l=s=o=void 0,d=void 0,o=(i=h).getImageLevelInfo(r,0,0),s=o.alphaFlag,l=o.height,o=o.width,a=zI(a,s),u=a.compressed,c=a.format,a=a.basisFormat,d=i.getImageTranscodedSizeInBytes(r,0,0,a),d=new Uint8Array(d),i.transcodeImage(d,r,0,0,a,0,-1,-1)?{width:o,height:l,data:d,compressed:u,alphaFlag:s,format:c}:null));break}return f}finally{h.close(),h.delete()}}function zI(e,t){e=(e="object"===O(e="auto"===(e=e&&e.basis&&e.basis.format)?GI():e)?t?e.alpha:e.noAlpha:e).toLowerCase();return FI[e]}function GI(){var e=RI();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var HI=g(g({},{name:"Basis",id:"basis",module:"textures",version:"3.1.4",worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}}),{},{parse:function(e,t){return OI.apply(this,arguments)}}),Zd=BB._parseImageNode,VI="undefined"!=typeof Image,QI="undefined"!=typeof ImageBitmap,Zl=Boolean(Zd),jI=!!PB||Zl;function WI(e){e=function(e){if("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap)return"imagebitmap";if("undefined"!=typeof Image&&e instanceof Image)return"image";if(e&&"object"===O(e)&&e.data&&e.width&&e.height)return"data";return null}(e);if(e)return e;throw new Error("Not an image")}var JI=/^data:image\/svg\+xml/,qI=/\.svg((\?|#).*)?$/;function YI(e){return e&&(JI.test(e)||qI.test(e))}function XI(e,t){if(YI(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}function KI(){return ZI.apply(this,arguments)}function ZI(){return(ZI=J(X().mark(function e(t,n,i){var r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=function(e,t){if(YI(t)){var n=(new TextDecoder).decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(n=unescape(encodeURIComponent(n)))}catch(e){throw new Error(e.message)}return"data:image/svg+xml;base64,".concat(btoa(n))}return XI(e,t)}(t,i),a=self.URL||self.webkitURL,o="string"!=typeof r&&a.createObjectURL(r),e.prev=3,e.next=6,function(){return $I.apply(this,arguments)}(o||r,n);case 6:return e.abrupt("return",e.sent);case 7:return e.prev=7,o&&a.revokeObjectURL(o),e.finish(7);case 10:case"end":return e.stop()}},e,null,[[3,,7,10]])}))).apply(this,arguments)}function $I(){return($I=J(X().mark(function e(n,t){var i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((i=new Image).src=n,t.image&&t.image.decode&&i.decode)return e.next=5,i.decode();e.next=6;break;case 5:return e.abrupt("return",i);case 6:return e.next=8,new Promise(function(e,t){try{i.onload=function(){return e(i)},i.onerror=function(e){return t(new Error("Could not load image ".concat(n,": ").concat(e)))}}catch(e){t(e)}});case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}var e2={},t2=!0;function n2(){return(n2=J(X().mark(function e(t,n,i){var r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(YI(i))return e.next=3,KI(t,n,i);e.next=7;break;case 3:r=e.sent,r=r,e.next=8;break;case 7:r=XI(t,i);case 8:return a=n&&n.imagebitmap,e.next=11,function(){return i2.apply(this,arguments)}(r,a);case 11:return e.abrupt("return",e.sent);case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function i2(){return(i2=J(X().mark(function e(t){var n,i=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!function(e){for(var t in e||e2)return;return 1}(n=1<i.length&&void 0!==i[1]?i[1]:null)&&t2?n:null)return e.prev=3,e.next=6,createImageBitmap(t,n);e.next=13;break;case 6:return e.abrupt("return",e.sent);case 9:e.prev=9,e.t0=e.catch(3),console.warn(e.t0),t2=!1;case 13:return e.next=15,createImageBitmap(t);case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}},e,null,[[3,9]])}))).apply(this,arguments)}var r2=!1,a2=!0;function o2(e){e=s2(e);return function(e){e=s2(e);return 24<=e.byteLength&&2303741511===e.getUint32(0,r2)?{mimeType:"image/png",width:e.getUint32(16,r2),height:e.getUint32(20,r2)}:null}(e)||function(e){var t=s2(e);if(t.byteLength>=3&&t.getUint16(0,r2)===65496&&t.getUint8(2)===255)for(var e=function(){for(var e=new Set([65499,65476,65484,65501,65534]),t=65504;t<65520;++t)e.add(t);var n=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:n}}(),n=e.tableMarkers,i=e.sofMarkers,r=2;r+9<t.byteLength;){var a=t.getUint16(r,r2);if(i.has(a))return{mimeType:"image/jpeg",height:t.getUint16(r+5,r2),width:t.getUint16(r+7,r2)};if(!n.has(a))return null;r=(r+=2)+t.getUint16(r,r2)}return null}(e)||function(e){e=s2(e);return 10<=e.byteLength&&1195984440===e.getUint32(0,r2)?{mimeType:"image/gif",width:e.getUint16(6,a2),height:e.getUint16(8,a2)}:null}(e)||function(e){e=s2(e);return 14<=e.byteLength&&16973===e.getUint16(0,r2)&&e.getUint32(2,a2)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,a2),height:e.getUint32(22,a2)}:null}(e)}function s2(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}function l2(){return(l2=J(X().mark(function e(t,n){var i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=o2(t)||{},i=i.mimeType,_B(r=BB._parseImageNode),e.next=5,r(t,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function u2(){return(u2=J(X().mark(function e(t,n,i){var r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=(n=n||{}).image||{},r=r.type||"auto",a=(i||{}).url,o=function(e){switch(e){case"auto":case"data":return function(){if(QI)return"imagebitmap";if(VI)return"image";if(jI)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":case"imagebitmap":case"image":case"data":return;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}(r),e.t0=o,e.next="imagebitmap"===e.t0?8:"image"===e.t0?12:"data"===e.t0?16:20;break;case 8:return e.next=10,function(){return n2.apply(this,arguments)}(t,n,a);case 10:return s=e.sent,e.abrupt("break",21);case 12:return e.next=14,KI(t,n,a);case 14:return s=e.sent,e.abrupt("break",21);case 16:return e.next=18,function(){return l2.apply(this,arguments)}(t);case 18:return s=e.sent,e.abrupt("break",21);case 20:_B(!1);case 21:return"data"===r&&(s=function(e){switch(WI(e)){case"data":return e;case"image":case"imagebitmap":var t=document.createElement("canvas"),n=t.getContext("2d");if(n)return t.width=e.width,t.height=e.height,n.drawImage(e,0,0),n.getImageData(0,0,e.width,e.height);throw new Error("getImageData");default:throw new Error("getImageData")}}(s)),e.abrupt("return",s);case 23:case"end":return e.stop()}},e)}))).apply(this,arguments)}var c2={id:"image",module:"images",name:"Images",version:"3.1.4",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:function(e,t,n){return u2.apply(this,arguments)},tests:[function(e){return Boolean(o2(new DataView(e)))}],options:{image:{type:"auto",decode:!0}}},d2=["image/png","image/jpeg","image/gif"],h2={};function p2(e){return void 0===h2[e]&&(h2[e]=function(e){switch(e){case"image/webp":return function(){if(!PB)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch(e){return!1}}();case"image/svg":return PB;default:var t;return PB?!0:(t=BB._parseImageNode,Boolean(t)&&d2.includes(e))}}(e)),h2[e]}function f2(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function m2(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;t=t.baseUri||t.uri;if(t)return t.substr(0,t.lastIndexOf("/")+1)+e;throw new Error("'baseUri' must be provided to resolve relative url ".concat(e))}var v2=["SCALAR","VEC2","VEC3","VEC4"],qh=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],g2=new Map(qh),A2={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},y2={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},w2={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function b2(e){return v2[e-1]||v2[0]}function x2(e){e=g2.get(e.constructor);if(e)return e;throw new Error("Illegal typed array")}function E2(e,t){var n=w2[e.componentType],i=A2[e.type],r=y2[e.componentType],a=e.count*i,e=e.count*i*r;return f2(0<=e&&e<=t.byteLength),{ArrayType:n,length:a,byteLength:e}}var C2,B2={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]},M2=function(){return A(function e(t){ue(this,e),l(this,"gltf",void 0),l(this,"sourceBuffers",void 0),l(this,"byteLength",void 0),this.gltf=t||{json:g({},B2),buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])},[{key:"json",get:function(){return this.gltf.json}},{key:"getApplicationData",value:function(e){return this.json[e]}},{key:"getExtraData",value:function(e){return(this.json.extras||{})[e]}},{key:"getExtension",value:function(t){var e=this.getUsedExtensions().find(function(e){return e===t}),n=this.json.extensions||{};return e?n[t]||!0:null}},{key:"getRequiredExtension",value:function(t){return this.getRequiredExtensions().find(function(e){return e===t})?this.getExtension(t):null}},{key:"getRequiredExtensions",value:function(){return this.json.extensionsRequired||[]}},{key:"getUsedExtensions",value:function(){return this.json.extensionsUsed||[]}},{key:"getObjectExtension",value:function(e,t){return(e.extensions||{})[t]}},{key:"getScene",value:function(e){return this.getObject("scenes",e)}},{key:"getNode",value:function(e){return this.getObject("nodes",e)}},{key:"getSkin",value:function(e){return this.getObject("skins",e)}},{key:"getMesh",value:function(e){return this.getObject("meshes",e)}},{key:"getMaterial",value:function(e){return this.getObject("materials",e)}},{key:"getAccessor",value:function(e){return this.getObject("accessors",e)}},{key:"getTexture",value:function(e){return this.getObject("textures",e)}},{key:"getSampler",value:function(e){return this.getObject("samplers",e)}},{key:"getImage",value:function(e){return this.getObject("images",e)}},{key:"getBufferView",value:function(e){return this.getObject("bufferViews",e)}},{key:"getBuffer",value:function(e){return this.getObject("buffers",e)}},{key:"getObject",value:function(e,t){if("object"===O(t))return t;var n=this.json[e]&&this.json[e][t];if(n)return n;throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"))}},{key:"getTypedArrayForBufferView",value:function(e){var t=(e=this.getBufferView(e)).buffer,t=this.gltf.buffers[t],n=(f2(t),(e.byteOffset||0)+t.byteOffset);return new Uint8Array(t.arrayBuffer,n,e.byteLength)}},{key:"getTypedArrayForAccessor",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),n=this.getBuffer(t.buffer).data,i=E2(e,t),r=i.ArrayType,i=i.length;return new r(n,t.byteOffset+e.byteOffset,i)}},{key:"getTypedArrayForImageData",value:function(e){e=this.getAccessor(e);var e=this.getBufferView(e.bufferView),t=this.getBuffer(e.buffer).data,n=e.byteOffset||0;return new Uint8Array(t,n,e.byteLength)}},{key:"addApplicationData",value:function(e,t){return this.json[e]=t,this}},{key:"addExtraData",value:function(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}},{key:"addObjectExtension",value:function(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}},{key:"setObjectExtension",value:function(e,t,n){(e.extensions||{})[t]=n}},{key:"removeObjectExtension",value:function(e,t){var e=e.extensions||{},n=e[t];return delete e[t],n}},{key:"addExtension",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return f2(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}},{key:"addRequiredExtension",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return f2(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}},{key:"registerUsedExtension",value:function(t){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(function(e){return e===t})||this.json.extensionsUsed.push(t)}},{key:"registerRequiredExtension",value:function(t){this.registerUsedExtension(t),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(function(e){return e===t})||this.json.extensionsRequired.push(t)}},{key:"removeExtension",value:function(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}},{key:"setDefaultScene",value:function(e){this.json.scene=e}},{key:"addScene",value:function(e){e=e.nodeIndices;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:e}),this.json.scenes.length-1}},{key:"addNode",value:function(e){var t=e.meshIndex,e=e.matrix,t=(this.json.nodes=this.json.nodes||[],{mesh:t});return e&&(t.matrix=e),this.json.nodes.push(t),this.json.nodes.length-1}},{key:"addMesh",value:function(e){var t=e.attributes,n=e.indices,i=e.material,e=e.mode,e=void 0===e?4:e,t={primitives:[{attributes:this._addAttributes(t),mode:e}]};return n&&(e=this._addIndices(n),t.primitives[0].indices=e),Number.isFinite(i)&&(t.primitives[0].material=i),this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}},{key:"addPointCloud",value:function(e){e={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(e),this.json.meshes.length-1}},{key:"addImage",value:function(e,t){var n=o2(e),t=t||(null==n?void 0:n.mimeType),n={bufferView:this.addBufferView(e),mimeType:t};return this.json.images=this.json.images||[],this.json.images.push(n),this.json.images.length-1}},{key:"addBufferView",value:function(e){var t=e.byteLength,e=(f2(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e),{buffer:0,byteOffset:this.byteLength,byteLength:t});return this.byteLength+=uM(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(e),this.json.bufferViews.length-1}},{key:"addAccessor",value:function(e,t){e={bufferView:e,type:b2(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(e),this.json.accessors.length-1}},{key:"addBinaryBuffer",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{size:3},n=this.addBufferView(e),i={min:t.min,max:t.max},e=(i.min&&i.max||(i=this._getAccessorMinMax(e,t.size)),{size:t.size,componentType:x2(e),count:Math.round(e.length/t.size),min:i.min,max:i.max});return this.addAccessor(n,Object.assign(e,t))}},{key:"addTexture",value:function(e){e={source:e.imageIndex};return this.json.textures=this.json.textures||[],this.json.textures.push(e),this.json.textures.length-1}},{key:"addMaterial",value:function(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}},{key:"createBinaryChunk",value:function(){this.gltf.buffers=[];var e,t,n,i,r,a,o,s=this.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(l),c=0,d=q(this.sourceBuffers||[]);try{for(d.s();!(t=d.n()).done;){var h=t.value;i=u,r=c,o=a=void 0,n=(n=h)instanceof ArrayBuffer?new Uint8Array(n):(a=n.byteOffset,o=n.byteLength,new Uint8Array(n.buffer||n.arrayBuffer,a,o)),i.set(n,r),c=r+uM(n.byteLength,4)}}catch(e){d.e(e)}finally{d.f()}null!=(e=this.json)&&null!=(e=e.buffers)&&e[0]?this.json.buffers[0].byteLength=s:this.json.buffers=[{byteLength:s}],this.gltf.binary=l,this.sourceBuffers=[l]}},{key:"_removeStringFromArray",value:function(e,t){for(var n=!0;n;){var i=e.indexOf(t);-1<i?e.splice(i,1):n=!1}}},{key:"_addAttributes",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n={};for(e in t){var i=t[e],r=this._getGltfAttributeName(e),i=this.addBinaryBuffer(i.value,i);n[r]=i}return n}},{key:"_addIndices",value:function(e){return this.addBinaryBuffer(e,{size:1})}},{key:"_getGltfAttributeName",value:function(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}},{key:"_getAccessorMinMax",value:function(e,t){var n={min:null,max:null};if(!(e.length<t)){n.min=[],n.max=[];var i,r=q(e.subarray(0,t));try{for(r.s();!(i=r.n()).done;){var a=i.value;n.min.push(a),n.max.push(a)}}catch(e){r.e(e)}finally{r.f()}for(var o=t;o<e.length;o+=t)for(var s=0;s<t;s++)n.min[0+s]=Math.min(n.min[0+s],e[o+s]),n.max[0+s]=Math.max(n.max[0+s],e[o+s])}return n}}])}(),S2="object"!==("undefined"==typeof WebAssembly?"undefined":O(WebAssembly)),T2="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",_2="B9h9z9tFBBBF8dL9gBB9gLaaaaaFa9gEaaaB9gGaaB9gFaFaEQSBBFBFFGEGEGIILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBNn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBcI9z9iqlBMc/j9JSIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMkRIbaG97FaK978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAnDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAnDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBRnCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBHiCFD9tAiAPD9OD9hD9RHiDQBTFtGmEYIPLdKeOnH8ZAIAQJDBIBHpCFD9tApAPD9OD9hD9RHpAIASJDBIBHyCFD9tAyAPD9OD9hD9RHyDQBTFtGmEYIPLdKeOnH8cDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAnD9uHnDyBjGBAEAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnA8ZA8cDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNiV8ZcpMyS8cQ8df8eb8fHdApAyDQNiV8ZcpMyS8cQ8df8eb8fHiDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/xLGEaK978jUUUUBCAlHE8kUUUUBGXGXAGCI9HQBGXAFC98ZHI9FQBABRGCBRLEXAGAGDBBBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMBBAGCTJRGALCIJHLAI9JQBMMAIAF9PQFAEAFCEZHLCGWHGqCBCTAGl/8MBAEABAICGWJHIAG/8cBBGXAL9FQBAEAEDBIBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMIBMAIAEAG/8cBBSFMABAFC98ZHGT+HUUUBAGAF9PQBAEAFCEZHICEWHLJCBCAALl/8MBAEABAGCEWJHGAL/8cBBAEAIT+HUUUBAGAEAL/8cBBMAECAJ8kUUUUBM+yEGGaO97GXAF9FQBCBRGEXABCTJHEAEDBBBHICBDtHLCUU98D8cFCUU98D8cEHKD9OABDBBBHOAIDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAOAIDQBFGENVcMTtmYi8ZpyHICTD+sFD/6FHND/gFAICTD+rFCTD+sFD/6FHVD/gFD/kFD/lFHI9DB/+g6DYAVAIALD+2FHLAVCUUUU94DtHcD9OD9RD/kFHVAVD/mFAIAID/mFANALANAcD9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHLD/kFCTD+rFAVAND/mFALD/kFCggEDtD9OD9QHVAIAND/mFALD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHIDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAOAKD9OAVAIDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM94FEa8jUUUUBCAlHE8kUUUUBABAFC98ZHIT+JUUUBGXAIAF9PQBAEAFCEZHLCEWHFJCBCAAFl/8MBAEABAICEWJHBAF/8cBBAEALT+JUUUBABAEAF/8cBBMAECAJ8kUUUUBM/hEIGaF97FaL978jUUUUBCTlRGGXAF9FQBCBREEXAGABDBBBHIABCTJHLDBBBHKDQILKOSQfbPden8c8d8e8fHOCTD+sFHNCID+rFDMIBAB9DBBU8/DY9D/zI818/DYANCEDtD9QD/6FD/nFHNAIAKDQBFGENVcMTtmYi8ZpyHICTD+rFCTD+sFD/6FD/mFHKAKD/mFANAICTD+sFD/6FD/mFHVAVD/mFANAOCTD+rFCTD+sFD/6FD/mFHOAOD/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHND/mF9DBBX9LDYHID/kFCggEDtHcD9OAVAND/mFAID/kFCTD+rFD9QHVAOAND/mFAID/kFCTD+rFAKAND/mFAID/kFAcD9OD9QHNDQBFTtGEmYILPdKOenHID8dBAGDBIBDyB+t+J83EBABCNJAID8dFAGDBIBDyF+t+J83EBALAVANDQNVi8ZcMpySQ8c8dfb8e8fHND8dBAGDBIBDyG+t+J83EBABCiJAND8dFAGDBIBDyE+t+J83EBABCAJRBAECIJHEAF9JQBMMM/3FGEaF978jUUUUBCoBlREGXAGCGrAF9sHIC98ZHL9FQBCBRGABRFEXAFAFDBBBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBAFCTJRFAGCIJHGAL9JQBMMGXALAI9PQBAEAICEZHGCGWHFqCBCoBAFl/8MBAEABALCGWJHLAF/8cBBGXAG9FQBAEAEDBIBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMIBMALAEAF/8cBBMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",P2=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]),D2=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]),I2={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},k2={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};function R2(){return(R2=J(X().mark(function e(h,p,f,m,v){var g,A,y=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return g=5<y.length&&void 0!==y[5]?y[5]:"NONE",e.next=3,function(){return L2.apply(this,arguments)}();case 3:A=e.sent,d=c=u=l=s=o=a=r=i=n=t=void 0;var t=A,n=A.exports[k2[v]],i=h,r=p,a=f,o=m,s=A.exports[I2[g||"NONE"]],l=t.exports.sbrk,u=r+3&-4,c=l(u*a),d=l(o.length);if((t=new Uint8Array(t.exports.memory.buffer)).set(o,d),0===(n=n(c,r,a,d,o.length))&&s&&s(c,u,a),i.set(t.subarray(c,c+r*a)),l(c-l(0)),0!==n)throw new Error("Malformed buffer data: ".concat(n));case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function L2(){return(L2=J(X().mark(function e(){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return C2=C2||function(){return F2.apply(this,arguments)}(),e.abrupt("return",C2);case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}function F2(){return(F2=J(X().mark(function e(){var t,n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=T2,WebAssembly.validate(P2)&&(t=_2,console.log("Warning: meshopt_decoder is using experimental SIMD support")),e.next=4,WebAssembly.instantiate(function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=96<i?i-71:64<i?i-65:47<i?i+4:46<i?63:62}for(var r=0,a=0;a<e.length;++a)t[r++]=t[a]<60?D2[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,r)}(t),{});case 4:return n=e.sent,e.next=7,n.instance.exports.__wasm_call_ctors();case 7:return e.abrupt("return",n.instance);case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}var O2="EXT_meshopt_compression";function U2(){return(U2=J(X().mark(function e(t,n){var i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=new M2(t),null!=n&&null!=(i=n.gltf)&&i.decompressMeshes){e.next=3;break}return e.abrupt("return");case 3:a=[],o=q(t.json.bufferViews||[]);try{for(o.s();!(s=o.n()).done;)l=s.value,a.push(function(){return N2.apply(this,arguments)}(r,l))}catch(e){o.e(e)}finally{o.f()}return e.next=8,Promise.all(a);case 8:r.removeExtension(O2);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N2(){return(N2=J(X().mark(function e(t,n){var i,r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(s=t.getObjectExtension(n,O2))return l=n.buffer,u=s.byteOffset,u=void 0===u?0:u,i=s.byteLength,i=void 0===i?0:i,r=s.byteStride,a=s.count,o=s.mode,s=s.filter,s=void 0===s?"NONE":s,l=new Uint8Array(l,u,i),u=new ArrayBuffer(a*r),e.next=8,function(){return R2.apply(this,arguments)}(new Uint8Array(u),a,r,l,o,s);e.next=9;break;case 8:return e.abrupt("return",u);case 9:return e.abrupt("return",null);case 10:case"end":return e.stop()}},e)}))).apply(this,arguments)}var z2="EXT_texture_webp";var G2="KHR_texture_basisu";function H2(e){var e=function(e){var t=e,n=1,i=0;e&&e.value&&(t=e.value,n=e.size||1);t&&(ArrayBuffer.isView(t)||(t=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(!e)return null;if(Array.isArray(e))return new t(e);return!n||e instanceof t?e:new t(e)}(t,Float32Array)),i=t.length/n);return{buffer:t,size:n,count:i}}(e),t=e.buffer,n=e.size;return{value:t,size:n,byteOffset:0,count:e.count,type:b2(n),componentType:x2(t)}}var V2="KHR_draco_mesh_compression";function Q2(){return(Q2=J(X().mark(function e(t,n,i){var r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=n&&null!=(r=n.gltf)&&r.decompressMeshes){e.next=2;break}return e.abrupt("return");case 2:a=new M2(t),o=[],s=q(W2(a));try{for(s.s();!(l=s.n()).done;)u=l.value,a.getObjectExtension(u,V2)&&o.push(function(){return j2.apply(this,arguments)}(a,u,n,i))}catch(e){s.e(e)}finally{s.f()}return e.next=8,Promise.all(o);case 8:a.removeExtension(V2);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}function j2(){return(j2=J(X().mark(function e(n,i,r,a){var o,s,l,u,c,d,h,p;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.getObjectExtension(i,V2)){e.next=3;break}return e.abrupt("return");case 3:return u=n.getTypedArrayForBufferView(o.bufferView),u=lM(u.buffer,u.byteOffset),l=a.parse,delete(s=g({},r))["3d-tiles"],e.next=10,l(u,zD,s,a);case 10:for(l=e.sent,u=function(e){var t,n={};for(t in e){var i=e[t];"indices"!==t&&(i=H2(i),n[t]=i)}return n}(l.attributes),c=0,d=Object.entries(u);c<d.length;c++)h=U(d[c],2),p=h[0],h=h[1],p in i.attributes&&(p=i.attributes[p],null!=(p=n.getAccessor(p)))&&p.min&&null!=p&&p.max&&(h.min=p.min,h.max=p.max);i.attributes=u,l.indices&&(i.indices=H2(l.indices)),t=void 0;var t=i;if(!t.attributes&&0<Object.keys(t.attributes).length)throw new Error("glTF: Empty primitive detected: Draco decompression failure?");case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function W2(t){var n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=q(t.json.meshes||[]),e.prev=1,n.s();case 3:if((i=n.n()).done){e.next=24;break}i=i.value,i=q(i.primitives),e.prev=6,i.s();case 8:if((r=i.n()).done){e.next=14;break}return r=r.value,e.next=12,r;case 12:e.next=8;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(6),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:e.next=3;break;case 24:e.next=29;break;case 26:e.prev=26,e.t1=e.catch(1),n.e(e.t1);case 29:return e.prev=29,n.f(),e.finish(29);case 32:case"end":return e.stop()}},CB,null,[[1,26,29,32],[6,16,19,22]])}var J2="KHR_lights_punctual";function q2(){return(q2=J(X().mark(function e(t){var n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=new M2(t),i=n.json,(r=n.getExtension(J2))&&(n.json.lights=r.lights,n.removeExtension(J2)),a=q(i.nodes||[]);try{for(a.s();!(o=a.n()).done;)s=o.value,(l=n.getObjectExtension(s,J2))&&(s.light=l.light),n.removeObjectExtension(s,J2)}catch(e){a.e(e)}finally{a.f()}case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Y2(){return(Y2=J(X().mark(function e(t){var n,i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=new M2(t),(i=n.json).lights&&(f2(!(r=n.addExtension(J2)).lights),r.lights=i.lights,delete i.lights),n.json.lights){a=q(n.json.lights);try{for(a.s();!(o=a.n()).done;)s=o.value,l=s.node,n.addObjectExtension(l,J2,s)}catch(e){a.e(e)}finally{a.f()}delete n.json.lights}case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}var X2="KHR_materials_unlit";function K2(){return(K2=J(X().mark(function e(t){var n,i,r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=new M2(t),i=n.json,n.removeExtension(X2),r=q(i.materials||[]);try{for(r.s();!(a=r.n()).done;)o=a.value,o.extensions&&o.extensions.KHR_materials_unlit&&(o.unlit=!0),n.removeObjectExtension(o,X2)}catch(e){r.e(e)}finally{r.f()}case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Z2="KHR_techniques_webgl";function $2(){return($2=J(X().mark(function e(t){var n,i,r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=new M2(t),i=n.json,r=n.getExtension(Z2)){a=function(e,t){var n=e.programs,i=void 0===n?[]:n,n=e.shaders,r=void 0===n?[]:n,n=e.techniques,e=void 0===n?[]:n,a=new TextDecoder;return r.forEach(function(e){if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=a.decode(t.getTypedArrayForBufferView(e.bufferView))}),i.forEach(function(e){e.fragmentShader=r[e.fragmentShader],e.vertexShader=r[e.vertexShader]}),e.forEach(function(e){e.program=i[e.program]}),e}(r,n),o=q(i.materials||[]);try{for(o.s();!(s=o.n()).done;)l=s.value,(u=n.getObjectExtension(l,Z2))&&(l.technique=Object.assign({},u,a[u.technique]),l.technique.values=function(t,n){var i=Object.assign({},t.values);return Object.keys(t.uniforms||{}).forEach(function(e){!t.uniforms[e].value||e in i||(i[e]=t.uniforms[e].value)}),Object.keys(i).forEach(function(e){"object"===O(i[e])&&void 0!==i[e].index&&(i[e].texture=n.getTexture(i[e].index))}),i}(l.technique,n)),n.removeObjectExtension(l,Z2)}catch(e){o.e(e)}finally{o.f()}n.removeExtension(Z2)}case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ek(){return(ek=J(X().mark(function e(t,n){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},e)}))).apply(this,arguments)}var tk=[Object.freeze({__proto__:null,name:O2,preprocess:function(e){if(new M2(e).getRequiredExtensions().includes(O2)&&!S2)throw new Error("gltf: Required extension ".concat(O2," not supported by browser"))},decode:function(e,t){return U2.apply(this,arguments)}}),Object.freeze({__proto__:null,name:"EXT_texture_webp",preprocess:function(e,t){var n=new M2(e);if(p2("image/webp")){var i,r=q(n.json.textures||[]);try{for(r.s();!(i=r.n()).done;){var a=i.value,o=n.getObjectExtension(a,z2);o&&(a.source=o.source),n.removeObjectExtension(a,z2)}}catch(e){r.e(e)}finally{r.f()}n.removeExtension(z2)}else if(n.getRequiredExtensions().includes(z2))throw new Error("gltf: Required extension ".concat(z2," not supported by browser"))}}),Object.freeze({__proto__:null,name:"KHR_texture_basisu",preprocess:function(e,t){var n,i=new M2(e),r=q(i.json.textures||[]);try{for(r.s();!(n=r.n()).done;){var a=n.value,o=i.getObjectExtension(a,G2);o&&(a.source=o.source),i.removeObjectExtension(a,G2)}}catch(e){r.e(e)}finally{r.f()}i.removeExtension(G2)}}),Object.freeze({__proto__:null,name:V2,preprocess:function(e,t,n){var i,r=new M2(e),a=q(W2(r));try{for(a.s();!(i=a.n()).done;){var o=i.value;r.getObjectExtension(o,V2)}}catch(e){a.e(e)}finally{a.f()}},decode:function(e,t,n){return Q2.apply(this,arguments)},encode:function(e){var t,n=new M2(e),i=q(n.json.meshes||[]);try{for(i.s();!(t=i.n()).done;)!function(e){var t,n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:4,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0;if(r.DracoWriter)return t=r.DracoWriter.encodeSync({attributes:e}),n=null==a||null==(n=a.parseSync)?void 0:n.call(a,{attributes:e}),a=r._addFauxAttributes(n.attributes),e=r.addBufferView(t),Y({},V2,{bufferView:e,attributes:a});throw new Error("options.gltf.DracoWriter not provided")}(t.value),n.addRequiredExtension(V2)}catch(e){i.e(e)}finally{i.f()}}}),Object.freeze({__proto__:null,name:J2,decode:function(e){return q2.apply(this,arguments)},encode:function(e){return Y2.apply(this,arguments)}}),Object.freeze({__proto__:null,name:X2,decode:function(e){return K2.apply(this,arguments)},encode:function(e){var t=new M2(e),e=t.json;if(t.materials){var n,i=q(e.materials||[]);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.unlit&&(delete r.unlit,t.addObjectExtension(r,X2,{}),t.addExtension(X2))}}catch(e){i.e(e)}finally{i.f()}}}}),Object.freeze({__proto__:null,name:Z2,decode:function(e){return $2.apply(this,arguments)},encode:function(e,t){return ek.apply(this,arguments)}})];function nk(){return(nk=J(X().mark(function e(t){var n,i,r,a,o,s=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=1<s.length&&void 0!==s[1]?s[1]:{},i=2<s.length?s[2]:void 0,r=tk.filter(function(e){return ik(e.name,n)}),r=q(r),e.prev=4,r.s();case 6:if((a=r.n()).done){e.next=12;break}return a=a.value,e.next=10,null==(o=a.decode)?void 0:o.call(a,t,n,i);case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),r.e(e.t0);case 17:return e.prev=17,r.f(),e.finish(17);case 20:case"end":return e.stop()}},e,null,[[4,14,17,20]])}))).apply(this,arguments)}function ik(e,t){t=(null==t||null==(t=t.gltf)?void 0:t.excludeExtensions)||{};return!(e in t&&!t[e])}var rk="KHR_binary_glTF";var ak={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},ok={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},sk=function(){return A(function e(){ue(this,e),l(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),l(this,"json",void 0)},[{key:"normalize",value:function(e,t){this.json=e.json;var n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(n.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n);var i,t=e,r=new M2(t),a=q((t=r.json).images||[]);try{for(a.s();!(i=a.n()).done;){var o=i.value,s=r.getObjectExtension(o,rk);s&&Object.assign(o,s),r.removeObjectExtension(o,rk)}}catch(e){a.e(e)}finally{a.f()}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,r.removeExtension(rk),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}},{key:"_addAsset",value:function(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}},{key:"_convertTopLevelObjectsToArrays",value:function(e){for(var t in ak)this._convertTopLevelObjectToArray(e,t)}},{key:"_convertTopLevelObjectToArray",value:function(e,t){var n=e[t];if(n&&!Array.isArray(n))for(var i in e[t]=[],n){var r=n[i],a=(r.id=r.id||i,e[t].length);e[t].push(r),this.idToIndexMap[t][i]=a}}},{key:"_convertObjectIdsToArrayIndices",value:function(e){for(var t in ak)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));var n,i=q(e.textures);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._convertTextureIds(r)}}catch(e){i.e(e)}finally{i.f()}var a,o=q(e.meshes);try{for(o.s();!(a=o.n()).done;){var s=a.value;this._convertMeshIds(s)}}catch(e){o.e(e)}finally{o.f()}var l,u=q(e.nodes);try{for(u.s();!(l=u.n()).done;){var c=l.value;this._convertNodeIds(c)}}catch(e){u.e(e)}finally{u.f()}var d,h=q(e.scenes);try{for(h.s();!(d=h.n()).done;){var p=d.value;this._convertSceneIds(p)}}catch(e){h.e(e)}finally{h.f()}}},{key:"_convertTextureIds",value:function(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}},{key:"_convertMeshIds",value:function(e){var t,n=q(e.primitives);try{for(n.s();!(t=n.n()).done;){var i,r=t.value,a=r.attributes,o=r.indices,s=r.material;for(i in a)a[i]=this._convertIdToIndex(a[i],"accessor");o&&(r.indices=this._convertIdToIndex(o,"accessor")),s&&(r.material=this._convertIdToIndex(s,"material"))}}catch(e){n.e(e)}finally{n.f()}}},{key:"_convertNodeIds",value:function(e){var t=this;e.children&&(e.children=e.children.map(function(e){return t._convertIdToIndex(e,"node")})),e.meshes&&(e.meshes=e.meshes.map(function(e){return t._convertIdToIndex(e,"mesh")}))}},{key:"_convertSceneIds",value:function(e){var t=this;e.nodes&&(e.nodes=e.nodes.map(function(e){return t._convertIdToIndex(e,"node")}))}},{key:"_convertIdsToIndices",value:function(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);var n,i=q(e[t]);try{for(i.s();!(n=i.n()).done;){var r,a=n.value;for(r in a){var o=a[r],s=this._convertIdToIndex(o,r);a[r]=s}}}catch(e){i.e(e)}finally{i.f()}}},{key:"_convertIdToIndex",value:function(e,t){var n=ok[t];if(n in this.idToIndexMap){n=this.idToIndexMap[n][e];if(Number.isFinite(n))return n;throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e))}return e}},{key:"_updateObjects",value:function(e){var t,n=q(this.json.buffers);try{for(n.s();!(t=n.n()).done;)delete t.value.type}catch(e){n.e(e)}finally{n.f()}}},{key:"_updateMaterial",value:function(i){var r,t=q(i.materials);try{for(t.s();!(r=t.n()).done;)!function(){var e=r.value,t=(e.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1},e.values&&e.values.tex),n=i.textures.findIndex(function(e){return e.id===t});-1!==n&&(e.pbrMetallicRoughness.baseColorTexture={index:n})}()}catch(e){t.e(e)}finally{t.f()}}}])}();var lk={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},uk={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},nu=10240,ck=10241,yp=10242,Fu=10243,Iu=10497,Yl=9986,dk={magFilter:nu,minFilter:ck,wrapS:yp,wrapT:Fu},hk=Y(Y(Y(Y({},nu,9729),ck,Yl),yp,Iu),Fu,Iu);var pk=function(){return A(function e(){ue(this,e),l(this,"baseUri",""),l(this,"json",{}),l(this,"buffers",[]),l(this,"images",[])},[{key:"postProcess",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.json,i=e.buffers,i=void 0===i?[]:i,r=e.images,r=void 0===r?[]:r,e=e.baseUri,e=void 0===e?"":e;return f2(n),this.baseUri=e,this.json=n,this.buffers=i,this.images=r,this._resolveTree(this.json,t),this.json}},{key:"_resolveTree",value:function(e){var n=this;e.bufferViews&&(e.bufferViews=e.bufferViews.map(function(e,t){return n._resolveBufferView(e,t)})),e.images&&(e.images=e.images.map(function(e,t){return n._resolveImage(e,t)})),e.samplers&&(e.samplers=e.samplers.map(function(e,t){return n._resolveSampler(e,t)})),e.textures&&(e.textures=e.textures.map(function(e,t){return n._resolveTexture(e,t)})),e.accessors&&(e.accessors=e.accessors.map(function(e,t){return n._resolveAccessor(e,t)})),e.materials&&(e.materials=e.materials.map(function(e,t){return n._resolveMaterial(e,t)})),e.meshes&&(e.meshes=e.meshes.map(function(e,t){return n._resolveMesh(e,t)})),e.nodes&&(e.nodes=e.nodes.map(function(e,t){return n._resolveNode(e,t)})),e.skins&&(e.skins=e.skins.map(function(e,t){return n._resolveSkin(e,t)})),e.scenes&&(e.scenes=e.scenes.map(function(e,t){return n._resolveScene(e,t)})),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}},{key:"getScene",value:function(e){return this._get("scenes",e)}},{key:"getNode",value:function(e){return this._get("nodes",e)}},{key:"getSkin",value:function(e){return this._get("skins",e)}},{key:"getMesh",value:function(e){return this._get("meshes",e)}},{key:"getMaterial",value:function(e){return this._get("materials",e)}},{key:"getAccessor",value:function(e){return this._get("accessors",e)}},{key:"getCamera",value:function(e){return null}},{key:"getTexture",value:function(e){return this._get("textures",e)}},{key:"getSampler",value:function(e){return this._get("samplers",e)}},{key:"getImage",value:function(e){return this._get("images",e)}},{key:"getBufferView",value:function(e){return this._get("bufferViews",e)}},{key:"getBuffer",value:function(e){return this._get("buffers",e)}},{key:"_get",value:function(e,t){var n;return"object"===O(t)?t:((n=this.json[e]&&this.json[e][t])||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),n)}},{key:"_resolveScene",value:function(e,t){var n=this;return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map(function(e){return n.getNode(e)}),e}},{key:"_resolveNode",value:function(e,t){var n=this;return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map(function(e){return n.getNode(e)})),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce(function(e,t){t=n.getMesh(t);return e.id=t.id,e.primitives=e.primitives.concat(t.primitives),e},{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}},{key:"_resolveSkin",value:function(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}},{key:"_resolveMesh",value:function(e,t){var i=this;return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map(function(e){var t,n=(e=g({},e)).attributes;for(t in e.attributes={},n)e.attributes[t]=i.getAccessor(n[t]);return void 0!==e.indices&&(e.indices=i.getAccessor(e.indices)),void 0!==e.material&&(e.material=i.getMaterial(e.material)),e})),e}},{key:"_resolveMaterial",value:function(e,t){return e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture=g({},e.normalTexture),e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture=g({},e.occlustionTexture),e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture=g({},e.emmisiveTexture),e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness&&(e.pbrMetallicRoughness=g({},e.pbrMetallicRoughness),(t=e.pbrMetallicRoughness).baseColorTexture&&(t.baseColorTexture=g({},t.baseColorTexture),t.baseColorTexture.texture=this.getTexture(t.baseColorTexture.index)),t.metallicRoughnessTexture)&&(t.metallicRoughnessTexture=g({},t.metallicRoughnessTexture),t.metallicRoughnessTexture.texture=this.getTexture(t.metallicRoughnessTexture.index)),e}},{key:"_resolveAccessor",value:function(e,t){var n,i,r;return e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(t=e.componentType,uk[t]),e.components=(t=e.type,lk[t]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView&&(t=e.bufferView.buffer,n=(r=E2(e,e.bufferView)).ArrayType,r=r.byteLength,i=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+t.byteOffset,r=t.arrayBuffer.slice(i,i+r),e.bufferView.byteStride&&(r=this._getValueFromInterleavedBuffer(t,i,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new n(r)),e}},{key:"_getValueFromInterleavedBuffer",value:function(e,t,n,i,r){for(var a=new Uint8Array(r*i),o=0;o<r;o++){var s=t+o*n;a.set(new Uint8Array(e.arrayBuffer.slice(s,s+i)),o*i)}return a.buffer}},{key:"_resolveTexture",value:function(e,t){return e.id=e.id||"texture-".concat(t),e.sampler="sampler"in e?this.getSampler(e.sampler):hk,e.source=this.getImage(e.source),e}},{key:"_resolveSampler",value:function(e,t){for(var n in e.id=e.id||"sampler-".concat(t),e.parameters={},e){var i=this._enumSamplerParameter(n);void 0!==i&&(e.parameters[i]=e[n])}return e}},{key:"_enumSamplerParameter",value:function(e){return dk[e]}},{key:"_resolveImage",value:function(e,t){e.id=e.id||"image-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView));t=this.images[t];return t&&(e.image=t),e}},{key:"_resolveBufferView",value:function(e,t){var n=e.buffer,t=g(g({id:"bufferView-".concat(t)},e),{},{buffer:this.buffers[n]}),i=this.buffers[n].arrayBuffer,n=this.buffers[n].byteOffset||0;return"byteOffset"in e&&(n+=e.byteOffset),t.data=new Uint8Array(i,n,e.byteLength),t}},{key:"_resolveCamera",value:function(e,t){return e.id=e.id||"camera-".concat(t),e.perspective,e.orthographic,e}}])}();var fk=1735152710,mk=12,vk=8,gk=1313821514,Ak=5130562,yk=0,wk=1,bk=0,xk=!0;function Ek(e,t,n){var i,r,a,o,s,l=2<arguments.length&&void 0!==n?n:0,u=new DataView(t),n=function(e,t){return t=1<arguments.length&&void 0!==t?t:0,"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}(u,l+0),t=u.getUint32(l+4,xk),c=u.getUint32(l+8,xk);switch(Object.assign(e,{header:{byteOffset:l,byteLength:c,hasBinChunk:!1},type:n,version:t,json:{},binChunks:[]}),l+=mk,e.version){case 1:return r=u,a=l,_B((i=e).header.byteLength>mk+vk),o=r.getUint32(a+0,xk),s=r.getUint32(a+4,xk),a+=vk,_B(s===bk),Ck(i,r,a,o),a=(a+=o)+Bk(i,r,a,i.header.byteLength);case 2:s=u,o=l,r={},_B((i=e).header.byteLength>mk+vk);for(var d=i,h=s,p=o,f=r;p+8<=d.header.byteLength;){var m=h.getUint32(p+0,xk),v=h.getUint32(p+4,xk);switch(p+=vk,v){case gk:Ck(d,h,p,m);break;case Ak:Bk(d,h,p,m);break;case yk:f.strict||Ck(d,h,p,m);break;case wk:f.strict||Bk(d,h,p,m)}p+=uM(m,4)}return o+i.header.byteLength;default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}function Ck(e,t,n,i){t=new Uint8Array(t.buffer,n,i),n=new TextDecoder("utf8").decode(t);e.json=JSON.parse(n),uM(i,4)}function Bk(e,t,n,i){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:n,byteLength:i,arrayBuffer:t.buffer}),uM(i,4)}function Mk(){return(Mk=J(X().mark(function e(o,s){var l,u,c,d,h,p,f=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:l=3<f.length?f[3]:void 0,u=4<f.length?f[4]:void 0,a=r=i=n=t=void 0;var t=o,n=s,i=2<f.length&&void 0!==f[2]?f[2]:0,r=l;if(r.uri&&(t.baseUri=r.uri),n instanceof ArrayBuffer&&!function(e,t,n){return t=1<arguments.length&&void 0!==t?t:0,n=2<arguments.length&&void 0!==n?n:{},e=new DataView(e),n=void 0===(n=n.magic)?fk:n,(e=e.getUint32(t,!1))===n||e===fk}(n,i,r)&&(a=new TextDecoder,n=a.decode(n)),"string"==typeof n?t.json=rM(n):n instanceof ArrayBuffer?(i=Ek(a={},n,i,r.glb),f2("glTF"===a.type,"Invalid GLB magic string ".concat(a.type)),t._glb=a,t.json=a.json):f2(!1,"GLTF: must be ArrayBuffer or string"),n=t.json.buffers||[],t.buffers=new Array(n.length).fill(null),t._glb&&t._glb.header.hasBinChunk&&(r=t._glb.binChunks,t.buffers[0]={arrayBuffer:r[0].arrayBuffer,byteOffset:r[0].byteOffset,byteLength:r[0].byteLength}),i=t.json.images||[],t.images=new Array(i.length).fill({}),function(e,t){t=1<arguments.length&&void 0!==t?t:{},(new sk).normalize(e,t)}(o,{normalize:null==l||null==(h=l.gltf)?void 0:h.normalize}),function(e,t,n){var i,r=1<arguments.length&&void 0!==t?t:{},a=2<arguments.length?n:void 0,o=q(tk.filter(function(e){return ik(e.name,r)}));try{for(o.s();!(i=o.n()).done;){var s,l=i.value;null!=(s=l.preprocess)&&s.call(l,e,r,a)}}catch(e){o.e(e)}finally{o.f()}}(o,l,u),h=[],null!=l&&null!=(c=l.gltf)&&c.loadBuffers&&o.json.buffers)return e.next=10,function(){return Sk.apply(this,arguments)}(o,l,u);e.next=10;break;case 10:return null!=l&&null!=(c=l.gltf)&&c.loadImages&&(p=function(){return Tk.apply(this,arguments)}(o,l,u),h.push(p)),p=function(){return nk.apply(this,arguments)}(o,l,u),h.push(p),e.next=15,Promise.all(h);case 15:return o.json.gltfArrayBuffer=s,e.abrupt("return",null!=l&&null!=(d=l.gltf)&&d.postProcess?(a=o,n=l,(new pk).postProcess(a,n)):o);case 17:case"end":return e.stop()}var a},e)}))).apply(this,arguments)}function Sk(){return(Sk=J(X().mark(function e(t,n,i){var r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=t.json.buffers||[],a=0;case 2:if(a<r.length){if((o=r[a]).uri)return f2(i.fetch),s=m2(o.uri,n),e.next=10,null==i||null==(l=i.fetch)?void 0:l.call(i,s);e.next=16}else e.next=19;break;case 10:return l=e.sent,e.next=13,null==l||null==(s=l.arrayBuffer)?void 0:s.call(l);case 13:u=e.sent,t.buffers[a]={arrayBuffer:u,byteOffset:0,byteLength:u.byteLength},delete o.uri;case 16:++a,e.next=2;break;case 19:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Tk(){return(Tk=J(X().mark(function e(t,n,i){var r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=function(e){var t,n=new Set,i=q(e.json.textures||[]);try{for(i.s();!(t=i.n()).done;){var r=t.value;void 0!==r.source&&n.add(r.source)}}catch(e){i.e(e)}finally{i.f()}return Array.from(n).sort()}(t),a=t.json.images||[],o=[],s=q(r);try{for(s.s();!(l=s.n()).done;)u=l.value,o.push(function(){return _k.apply(this,arguments)}(t,a[u],u,n,i))}catch(e){s.e(e)}finally{s.f()}return e.next=7,Promise.all(o);case 7:return e.abrupt("return",e.sent);case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _k(){return(_k=J(X().mark(function e(r,a,o,s,l){var u,c,d,h,p;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(d=l.fetch,u=l.parse,a.uri)return h=m2(a.uri,s),e.next=5,d(h);e.next=9;break;case 5:return d=e.sent,e.next=8,d.arrayBuffer();case 8:c=e.sent;case 9:return Number.isFinite(a.bufferView)&&(t=r.json,n=r.buffers,i=a.bufferView,f2(t=t.bufferViews[i]),f2(i=n[t.buffer]),n=(t.byteOffset||0)+i.byteOffset,h=new Uint8Array(i.arrayBuffer,n,t.byteLength),c=lM(h.buffer,h.byteOffset,h.byteLength)),f2(c,"glTF image has no data"),e.next=13,u(c,[c2,HI],{mimeType:a.mimeType,basis:s.basis||{format:GI()}},l);case 13:(p=e.sent)&&p[0]&&(p={compressed:!0,mipmaps:!1,width:p[0].width,height:p[0].height,data:p}),r.images=r.images||[],r.images[o]=p;case 17:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}var Pk={name:"glTF",id:"gltf",module:"gltf",version:"3.1.4",extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:function(e){return Dk.apply(this,arguments)},options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0,postProcess:!0},log:console},deprecatedOptions:{fetchImages:"gltf.loadImages",createImages:"gltf.loadImages",decompress:"gltf.decompressMeshes",postProcess:"gltf.postProcess",gltf:{decompress:"gltf.decompressMeshes"}}};function Dk(){return(Dk=J(X().mark(function e(t){var n,i,r,a,o=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=1<o.length&&void 0!==o[1]?o[1]:{},i=2<o.length?o[2]:void 0,(n=g(g({},Pk.options),n)).gltf=g(g({},Pk.options.gltf),n.gltf),r=n.byteOffset,r=void 0===r?0:r,a={},e.next=8,function(){return Mk.apply(this,arguments)}(a,t,r,n,i);case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Ik={URI:0,EMBEDDED:1};function kk(e,t,n,i){e.rotateYtoZ=!0;var r=e.byteOffset+e.byteLength-n;if(0==r)throw new Error("glTF byte length must be greater than 0.");return e.gltfUpAxis=i["3d-tiles"]&&i["3d-tiles"].assetGltfUpAxis?i["3d-tiles"].assetGltfUpAxis:"Y",e.gltfArrayBuffer=lM(t,n,r),e.gltfByteOffset=0,e.gltfByteLength=r,n%4!=0&&console.warn("".concat(e.type,": embedded glb is not aligned to a 4-byte boundary.")),e.byteOffset+e.byteLength}function Rk(){return Lk.apply(this,arguments)}function Lk(){return(Lk=J(X().mark(function e(r,a,o,s){var l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:u=o["3d-tiles"]||{},i=n=t=void 0;var t=r,n=a;switch(n){case Ik.URI:var i=new Uint8Array(t.gltfArrayBuffer,t.gltfByteOffset),i=(new TextDecoder).decode(i);t.gltfUrl=i.replace(/[\s\0]+$/,""),delete t.gltfArrayBuffer,delete t.gltfByteOffset,delete t.gltfByteLength;break;case Ik.EMBEDDED:break;default:throw new Error("b3dm: Illegal glTF format field")}if(u.loadGLTF){if(l=s.parse,u=s.fetch,r.gltfUrl)return e.next=7,u(r.gltfUrl,o);e.next=9}else e.next=16;break;case 7:r.gltfArrayBuffer=e.sent,r.gltfByteOffset=0;case 9:if(r.gltfArrayBuffer)return e.next=12,l(r.gltfArrayBuffer,Pk,o,s);e.next=16;break;case 12:r.gltf=e.sent,delete r.gltfArrayBuffer,delete r.gltfByteOffset,delete r.gltfByteLength;case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Fk(){return(Fk=J(X().mark(function e(t,n,i,r,a){var o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=function(e,t,n,i){n=uI(e,t,n),n=hI(e,t,n),n=pI(e,t,n),n=kk(e,t,n,i);t=new KD(e.featureTableJson,e.featureTableBinary);return e.rtcCenter=t.getGlobalProperty("RTC_CENTER",VD.FLOAT,3),n}(t,n,i,r),e.next=3,Rk(t,Ik.EMBEDDED,r,a);case 3:return(o=null==t||null==(o=t.gltf)?void 0:o.extensions)&&o.CESIUM_RTC&&(t.rtcCenter=o.CESIUM_RTC.center),e.abrupt("return",i);case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ok(){return(Ok=J(X().mark(function e(t,n,i,r,a){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=function(e,t,n,i){if(n=uI(e,t,n),1!==e.version)throw new Error("Instanced 3D Model version ".concat(e.version," is not supported"));n=hI(e,t,n);var r=new DataView(t);if(e.gltfFormat=r.getUint32(n,!0),n=pI(e,t,n+=4),n=kk(e,t,n,i),0===e.featureTableJsonByteLength)throw new Error("i3dm parser: featureTableJsonByteLength is zero.");r=new KD(e.featureTableJson,e.featureTableBinary),t=r.getGlobalProperty("INSTANCES_LENGTH");if(r.featuresLength=t,!Number.isFinite(t))throw new Error("i3dm parser: INSTANCES_LENGTH must be defined");e.eastNorthUp=r.getGlobalProperty("EAST_NORTH_UP"),e.rtcCenter=r.getGlobalProperty("RTC_CENTER",VD.FLOAT,3);new sI(e.batchTableJson,e.batchTableBinary,t);return function(e,t,n){for(var i=[new Array(n),e._batchTable][0],r=new B,a=(new B,new B,new B,new TT),o=new $T,s=new B,l={},u=new LT,c=[],d=[],h=new B,p=new B,f=0;f<n;f++){var m=void 0;if(t.hasProperty("POSITION"))m=t.getProperty("POSITION",VD.FLOAT,3,f,r);else if(t.hasProperty("POSITION_QUANTIZED")){m=t.getProperty("POSITION_QUANTIZED",VD.UNSIGNED_SHORT,3,f,r);var v=t.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",VD.FLOAT,3,h);if(!v)throw new Error("i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");var g=t.getGlobalProperty("QUANTIZED_VOLUME_SCALE",VD.FLOAT,3,p);if(!g)throw new Error("i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");for(var A=0;A<3;A++)m[A]=m[A]/65535*g[A]+v[A]}if(!m)throw new Error("i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.");if(r.copy(m),l.translation=r,e.normalUp=t.getProperty("NORMAL_UP",VD.FLOAT,3,f,c),e.normalRight=t.getProperty("NORMAL_RIGHT",VD.FLOAT,3,f,d),e.normalUp){if(!e.normalRight)throw new Error("i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.");e.hasCustomOrientation=!0}else{if(e.octNormalUp=t.getProperty("NORMAL_UP_OCT32P",VD.UNSIGNED_SHORT,2,c),e.octNormalRight=t.getProperty("NORMAL_RIGHT_OCT32P",VD.UNSIGNED_SHORT,2,d),e.octNormalUp){if(e.octNormalRight)throw new Error("i3dm: oct-encoded orientation not implemented");throw new Error("i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P")}e.eastNorthUp?(B_.WGS84.eastNorthUpToFixedFrame(r,u),u.getRotationMatrix3(a)):a.identity()}o.fromMatrix3(a),l.rotation=o,s.set(1,1,1);var y=t.getProperty("SCALE",VD.FLOAT,1,f),y=(Number.isFinite(y)&&s.multiplyByScalar(y),t.getProperty("SCALE_NON_UNIFORM",VD.FLOAT,3,f,c)),y=(y&&s.scale(y),l.scale=s,t.getProperty("BATCH_ID",VD.UNSIGNED_SHORT,1,f)),w=(void 0===y&&(y=f),(new LT).fromQuaternion(l.rotation)),w=(u.identity(),u.translate(l.translation),u.multiplyRight(w),u.scale(l.scale),u.clone());i[f]={modelMatrix:w,batchId:y}}e.instances=i}(e,r,t),n}(t,n,i,r),e.next=3,Rk(t,t.gltfFormat,r,a);case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Uk(){return(Uk=J(X().mark(function e(t,n,i,r,a,o){var s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=uI(t,n,i),s=new DataView(n),t.tilesLength=s.getUint32(i,!0),i+=4,t.tiles=[];case 5:if(t.tiles.length<t.tilesLength&&12<t.byteLength-i)return s={},t.tiles.push(s),e.next=10,o(n,i,r,a,s);e.next=13;break;case 10:i=e.sent,e.next=5;break;case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Nk(){return(Nk=J(X().mark(function e(t,n,i,r){var a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.rotateYtoZ=!0,t.gltfUpAxis=i["3d-tiles"]&&i["3d-tiles"].assetGltfUpAxis?i["3d-tiles"].assetGltfUpAxis:"Y",a=r.parse,e.next=5,a(n,Pk,i,r);case 5:t.gltf=e.sent;case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zk(e){return Gk.apply(this,arguments)}function Gk(){return(Gk=J(X().mark(function e(t){var n,i,r,a,o=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=1<o.length&&void 0!==o[1]?o[1]:0,i=2<o.length?o[2]:void 0,r=3<o.length?o[3]:void 0,(a=4<o.length&&void 0!==o[4]?o[4]:{}).byteOffset=n,a.type=function(e,t){return t=1<arguments.length&&void 0!==t?t:0,e=new DataView(e),"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}(t,n),e.t0=a.type,e.next=e.t0===sD.COMPOSITE?9:e.t0===sD.BATCHED_3D_MODEL?12:e.t0===sD.GLTF?15:e.t0===sD.INSTANCED_3D_MODEL?18:e.t0===sD.POINT_CLOUD?21:24;break;case 9:return e.next=11,function(){return Uk.apply(this,arguments)}(a,t,n,i,r,zk);case 11:return e.abrupt("return",e.sent);case 12:return e.next=14,function(){return Fk.apply(this,arguments)}(a,t,n,i,r);case 14:return e.abrupt("return",e.sent);case 15:return e.next=17,function(){return Nk.apply(this,arguments)}(a,t,i,r);case 17:return e.abrupt("return",e.sent);case 18:return e.next=20,function(){return Ok.apply(this,arguments)}(a,t,n,i,r);case 20:return e.abrupt("return",e.sent);case 21:return e.next=23,function(){return AI.apply(this,arguments)}(a,t,n,i,r);case 23:return e.abrupt("return",e.sent);case 24:throw new Error("3DTileLoader: unknown type ".concat(a.type));case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Hk=1952609651,Vk=1;function Qk(){return(Qk=J(X().mark(function e(t){var n,i,r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(new Uint32Array(t.slice(0,4))[0]!==Hk)throw new Error("Wrong subtree file magic number");e.next=3;break;case 3:if(new Uint32Array(t.slice(4,8))[0]!==Vk)throw new Error("Wrong subtree file verson, must be 1");e.next=6;break;case 6:if(n=Jk(t.slice(8,16)),i=new Uint8Array(t,24,n),r=new TextDecoder("utf8"),r=r.decode(i),i=JSON.parse(r),r=Jk(t.slice(16,24)),a=new ArrayBuffer(0),r&&(a=t.slice(24+n)),"bufferView"in i.tileAvailability)return e.next=17,jk(i,"tileAvailability",a);e.next=18;break;case 17:i.tileAvailability.explicitBitstream=e.sent;case 18:if("bufferView"in i.contentAvailability)return e.next=21,jk(i,"contentAvailability",a);e.next=22;break;case 21:i.contentAvailability.explicitBitstream=e.sent;case 22:if("bufferView"in i.childSubtreeAvailability)return e.next=25,jk(i,"childSubtreeAvailability",a);e.next=26;break;case 25:i.childSubtreeAvailability.explicitBitstream=e.sent;case 26:return e.abrupt("return",i);case 27:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jk(){return Wk.apply(this,arguments)}function Wk(){return(Wk=J(X().mark(function e(t,n,i){var r,a,o;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t[n].bufferView,r=t.bufferViews[r],(a=t.buffers[r.buffer]).uri)return e.next=6,GM(a.uri);e.next=11;break;case 6:return a=e.sent,e.next=9,a.arrayBuffer();case 9:return o=e.sent,e.abrupt("return",new Uint8Array(o,r.byteOffset,r.byteLength));case 11:return e.abrupt("return",new Uint8Array(i,r.byteOffset,r.byteLength));case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Jk(e){var e=new DataView(e),t=e.getUint32(0,!0),e=e.getUint32(4,!0);return t+Math.pow(2,32)*e}var qk={id:"3d-tiles-subtree",name:"3D Tiles Subtree",module:"3d-tiles",version:"3.1.4",extensions:["subtree"],mimeTypes:["application/octet-stream"],tests:["subtree"],parse:function(e){return Qk.apply(this,arguments)},options:{}},Yk={QUADTREE:4,OCTREE:8};function Xk(){return Kk.apply(this,arguments)}function Kk(){return(Kk=J(X().mark(function e(d,h){var p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,R=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(E=2<R.length&&void 0!==R[2]?R[2]:{mortonIndex:0,x:0,y:0,z:0},y=3<R.length&&void 0!==R[3]?R[3]:0,p=4<R.length&&void 0!==R[4]?R[4]:0,f=5<R.length&&void 0!==R[5]?R[5]:{level:0,mortonIndex:0,x:0,y:0,z:0},A=h.subdivisionScheme,C=h.subtreeLevels,m=h.maximumLevel,v=h.contentUrlTemplate,T=h.subtreesUriTemplate,k=h.basePath,g={children:[],lodMetricValue:0,contentUrl:""},A=Yk[A],b=1&y,x=y>>1&1,I=y>>2&1,w=(Math.pow(A,p)-1)/(A-1),y=$k(E.mortonIndex,y),w=w+y,b=$k(E.x,b),x=$k(E.y,x),E=$k(E.z,I),I=!1,C<p+1&&(I=Zk(d.childSubtreeAvailability,y)),C=$k(f.x,b),B=$k(f.y,x),M=$k(f.z,E),S=p+f.level,I)return I="".concat(k,"/").concat(T),k=eR(I,S,C,B,M),e.next=27,NS(k,qk);e.next=40;break;case 27:T=e.sent,d=T,f.mortonIndex=y,f.x=b,f.y=x,f.z=E,f.level=p,p=E=x=b=w=y=0;case 40:if(!Zk(d.tileAvailability,w)||m<p)return e.abrupt("return",g);e.next=43;break;case 43:Zk(d.contentAvailability,w)&&(g.contentUrl=eR(v,S,C,B,M)),_=p+1,P={mortonIndex:y,x:b,y:x,z:E},D=0;case 48:if(D<A)return e.next=51,Xk(d,h,P,D,_,f);e.next=56;break;case 51:((I=e.sent).contentUrl||I.children.length)&&(t=I,n=S+1,i={childTileX:b,childTileY:x,childTileZ:E},c=a=c=u=l=s=o=a=void 0,a=(r=h).basePath,o=h.refine,s=h.getRefine,l=h.lodMetricType,u=h.getTileType,c=h.rootLodMetricValue,r=h.rootBoundingVolume,a=t.contentUrl&&t.contentUrl.replace("".concat(a,"/"),""),c/=Math.pow(2,n),n=function(e,t,n){{var i,r,a,o,s,l,u,c;if(t.region)return i=n.childTileX,r=n.childTileY,n=n.childTileZ,s=U(t.region,6),c=s[0],a=s[1],l=s[2],u=s[3],o=s[4],s=s[5],e=Math.pow(2,e),{region:[c+(l=(l-c)/e)*i,a+(u=(u-a)/e)*r,c+l*(i+1),a+u*(r+1),o+(c=(s-o)/e)*n,o+c*(n+1)]}}return console.warn("Unsupported bounding volume type: ",t),null}(n,r,i),k={children:t.children,contentUrl:t.contentUrl,content:{uri:a},id:t.contentUrl,refine:s(o),type:u(t),lodMetricType:l,lodMetricValue:c,boundingVolume:n},g.children.push(k));case 53:D++,e.next=48;break;case 56:return e.abrupt("return",g);case 57:case"end":return e.stop()}var t,n,i,r,a,o,s,l,u,c},e)}))).apply(this,arguments)}function Zk(e,t){var n;return"constant"in e?Boolean(e.constant):!!e.explicitBitstream&&(t=t,e=e.explicitBitstream,n=Math.floor(t/8),t%=8,1==(e[n]>>t&1))}function $k(e,t){return parseInt(e.toString(2)+t.toString(2),2)}function eR(e,t,n,i,r){var a=function(e){var t,n={};for(t in e)n["{".concat(t,"}")]=e[t];return n}({level:t,x:n,y:i,z:r});return e.replace(/{level}|{x}|{y}|{z}/gi,function(e){return a[e]})}function tR(e){if(!e.contentUrl)return MP.EMPTY;var t=e.contentUrl.split(".").pop();switch(t){case"pnts":return MP.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return MP.SCENEGRAPH;default:return t}}function nR(e){switch(e){case"REPLACE":case"replace":return BP.REPLACE;case"ADD":case"add":return BP.ADD;default:return e}}function iR(e,t){var n;return e?(e.content&&(n=e.content.uri||e.content.url,e.contentUrl="".concat(t.basePath,"/").concat(n)),e.id=e.contentUrl,e.lodMetricType=TP.GEOMETRIC_ERROR,e.lodMetricValue=e.geometricError,e.transformMatrix=e.transform,e.type=tR(e),e.refine=nR(e.refine),e):null}function rR(){return(rR=J(X().mark(function e(t){var n,i,r,a,o,s,l,u,c,d;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.root){e.next=2;break}return e.abrupt("return",null);case 2:return n=t.basePath,o=t.root.extensions["3DTILES_implicit_tiling"],i=o.subdivisionScheme,r=o.maximumLevel,a=o.subtreeLevels,o=o.subtrees.uri,s=eR(o,0,0,0,0),s="".concat(n,"/").concat(s),e.next=9,NS(s,qk);case 9:return s=e.sent,d="".concat(n,"/").concat(t.root.content.uri),l=t.root.refine,u=t.root.geometricError,c=t.root.boundingVolume,d={contentUrlTemplate:d,subtreesUriTemplate:o,subdivisionScheme:i,subtreeLevels:a,maximumLevel:r,refine:l,basePath:n,lodMetricType:TP.GEOMETRIC_ERROR,rootLodMetricValue:u,rootBoundingVolume:c,getTileType:tR,getRefine:nR},e.next=17,function(){return aR.apply(this,arguments)}(t.root,s,d);case 17:return e.abrupt("return",e.sent);case 18:case"end":return e.stop()}},e)}))).apply(this,arguments)}function aR(){return(aR=J(X().mark(function e(t,n,i){var r,a;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return",null);case 2:return t.lodMetricType=TP.GEOMETRIC_ERROR,t.lodMetricValue=t.geometricError,t.transformMatrix=t.transform,e.next=7,Xk(n,i);case 7:return a=e.sent,r=a.children,(a=a.contentUrl)&&(t.contentUrl=a,t.content={uri:a.replace("".concat(i.basePath,"/"),"")}),t.refine=nR(t.refine),t.type=tR(t),t.children=r,t.id=t.contentUrl,e.abrupt("return",t);case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}var oR="3DTILES_implicit_tiling",sR={id:"3d-tiles",name:"3D Tiles",module:"3d-tiles",version:"3.1.4",extensions:["cmpt","pnts","b3dm","i3dm"],mimeTypes:["application/octet-stream"],tests:["cmpt","pnts","b3dm","i3dm"],parse:function(e,t,n){return cR.apply(this,arguments)},options:{"3d-tiles":{loadGLTF:!0,decodeQuantizedPositions:!1,isTileset:"auto",assetGltfUpAxis:null}}};function lR(){return(lR=J(X().mark(function e(t,n,i){var r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r={content:{featureIds:null}},e.next=4,zk(t,0,n,i,r.content);case 4:return e.abrupt("return",r.content);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function uR(){return(uR=J(X().mark(function e(i,r,a){var o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((s=JSON.parse((new TextDecoder).decode(i))).loader=r.loader||sR,s.url=a.url,s.basePath=AM(s.url),n=void 0,null!=(t=s)&&null!=(n=t.extensionsRequired)&&n.includes(oR)&&null!=t&&null!=(n=t.extensionsUsed)&&n.includes(oR))return e.next=7,function(){return rR.apply(this,arguments)}(s);e.next=10;break;case 7:e.t0=e.sent,e.next=11;break;case 10:e.t0=function(e){var t=e.basePath,e=iR(e.root,e),n=[];for(n.push(e);0<n.length;){var i,r=q((n.pop()||{}).children||[]);try{for(r.s();!(i=r.n()).done;){var a=i.value;iR(a,{basePath:t}),n.push(a)}}catch(e){r.e(e)}finally{r.f()}}return e}(s);case 11:return s.root=e.t0,s.type=SP.TILES3D,s.lodMetricType=TP.GEOMETRIC_ERROR,s.lodMetricValue=(null==(o=s.root)?void 0:o.lodMetricValue)||0,e.abrupt("return",s);case 16:case"end":return e.stop()}var t,n},e)}))).apply(this,arguments)}function cR(){return(cR=J(X().mark(function e(t,n,i){var r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n["3d-tiles"]||{},"auto"===r.isTileset?i.url&&-1!==i.url.indexOf(".json"):r.isTileset)return e.next=5,function(){return uR.apply(this,arguments)}(t,n,i);e.next=8;break;case 5:t=e.sent,e.next=11;break;case 8:return e.next=10,function(){return lR.apply(this,arguments)}(t,n,i);case 10:t=e.sent;case 11:return e.abrupt("return",t);case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}var dR="https://api.cesium.com/v1/assets";function hR(){return(hR=J(X().mark(function e(t,n){var i,r,a,o,s,l;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n){e.next=6;break}return e.next=3,function(){return pR.apply(this,arguments)}(t);case 3:o=e.sent,i=q(o.items);try{for(i.s();!(r=i.n()).done;)"3DTILES"===(a=r.value).type&&(n=a.id)}catch(e){i.e(e)}finally{i.f()}case 6:return e.next=8,function(){return fR.apply(this,arguments)}(t,n);case 8:return o=e.sent,s=o.type,l=o.url,_B("3DTILES"===s&&l),o.headers={Authorization:"Bearer ".concat(o.accessToken)},e.abrupt("return",o);case 13:case"end":return e.stop()}},e)}))).apply(this,arguments)}function pR(){return(pR=J(X().mark(function e(t){var n,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return _B(t),n=dR,i={Authorization:"Bearer ".concat(t)},e.next=5,GM(n,{fetch:{headers:i}});case 5:if((r=e.sent).ok){e.next=8;break}throw new Error(r.statusText);case 8:return e.next=10,r.json();case 10:return e.abrupt("return",e.sent);case 11:case"end":return e.stop()}},e)}))).apply(this,arguments)}function fR(){return(fR=J(X().mark(function e(t,n){var i,r,a,o,s;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return _B(t,n),i={Authorization:"Bearer ".concat(t)},r="".concat(dR,"/").concat(n),e.next=5,GM("".concat(r),{fetch:{headers:i}});case 5:if((a=e.sent).ok){e.next=8;break}throw new Error(a.statusText);case 8:return e.next=10,a.json();case 10:return o=e.sent,e.next=13,GM("".concat(r,"/endpoint"),{fetch:{headers:i}});case 13:if((a=e.sent).ok){e.next=16;break}throw new Error(a.statusText);case 16:return e.next=18,a.json();case 18:return s=e.sent,o=g(g({},o),s),e.abrupt("return",o);case 21:case"end":return e.stop()}},e)}))).apply(this,arguments)}function mR(){return(mR=J(X().mark(function e(t){var n,i,r,a=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=(1<a.length&&void 0!==a[1]?a[1]:{})["cesium-ion"]||{},n=i.accessToken,i=i.assetId,Number.isFinite(i)||(r=t.match(/\/([0-9]+)\/tileset.json/),i=r&&r[1]),e.abrupt("return",function(){return hR.apply(this,arguments)}(n,i));case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}var vR,gR=g(g({},sR),{},{id:"cesium-ion",name:"Cesium Ion",preload:function(e){return mR.apply(this,arguments)},parse:(vR=J(X().mark(function e(t,n,i){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=g({},n))["3d-tiles"]=n["cesium-ion"],n.loader=gR,e.abrupt("return",sR.parse(t,n,i));case 4:case"end":return e.stop()}},e)})),function(e,t,n){return vR.apply(this,arguments)}),options:{"cesium-ion":g(g({},sR.options["3d-tiles"]),{},{accessToken:null})}});function AR(e){for(var t=document.createElement("canvas"),n=(t.width=64,t.height=64,t.getContext("2d")),i=(n.rect(0,0,64,64),n.createLinearGradient(0,0,64,64)),r=0;r<e.length;r++){var a=e[r];i.addColorStop(a[0],"#"+a[1].getHexString())}n.fillStyle=i,n.fill();n=new zl(t);return n.needsUpdate=!0,n.minFilter=N,n.wrapS=ut,n.wrapT=ut,n.repeat.set(2,2),n}function yR(e){e.updateMatrix(),e.updateMatrixWorld(),e.matrixWorldInverse.copy(e.matrixWorld).invert();var t=new Ma;return t.setFromProjectionMatrix((new Me).multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),t}function wR(e){var t="empty"==e.type?e.boundingVolume:e.getBoundUntransformed(),n=0,n=(e.content&&(n=Math.min(e.depth/10,1)),(new THREE.Color).setHSL(n,.9,.85)),i=new Jl(1,1,1),r=new Me;t.halfAxes?r.copy(bR(t.halfAxes)):t.radius&&i.scale(2*t.radius,2*t.radius,2*t.radius),r.premultiply((a=new Me).setPosition.apply(a,Fe(t.center))),i.applyMatrix4(r);var a=new _l(new su(i),new wl({color:n,transparent:!0})),o=(a.matrixAutoUpdate=!1,new Potree.TextSprite({mat:new THREE.MeshBasicMaterial({transparent:!0}),backgroundColor:{r:0,g:0,b:0,a:.1},textColor:{r:255*n.r,g:255*n.g,b:255*n.b,a:.9},fontsize:100,renderOrder:5,text:e.id.split("/").pop().split(".b3dm")[0],name:"tile"})),r=(o.addEventListener("mouseover",function(){o.sprite.material.opacity<1||(window.hoverTile=e,console.log("hoverLabel",e.id,e._distanceToCamera))}),e.tileset.options.maximumScreenSpaceError/400);return o.scale.set(r,r,r),a.add(o),(i=o.position).set.apply(i,Fe(t.center)),e.volumeBox=a}function bR(e){return(new Me).fromArray([2*e[0],2*e[1],2*e[2],0,2*e[3],2*e[4],2*e[5],0,2*e[6],2*e[7],2*e[8],0,0,0,0,1])}var xR,ER,CR,Gh={SPECTRAL:[[0,new Se(.3686,.3098,.6353)],[.1,new Se(.1961,.5333,.7412)],[.2,new Se(.4,.7608,.6471)],[.3,new Se(.6706,.8667,.6431)],[.4,new Se(.902,.9608,.5961)],[.5,new Se(1,1,.749)],[.6,new Se(.9961,.8784,.5451)],[.7,new Se(.9922,.6824,.3804)],[.8,new Se(.9569,.4275,.2627)],[.9,new Se(.8353,.2431,.3098)],[1,new Se(.6196,.0039,.2588)]],PLASMA:[[0,new Se(.241,.015,.61)],[.1,new Se(.387,.001,.654)],[.2,new Se(.524,.025,.653)],[.3,new Se(.651,.125,.596)],[.4,new Se(.752,.227,.513)],[.5,new Se(.837,.329,.431)],[.6,new Se(.907,.435,.353)],[.7,new Se(.963,.554,.272)],[.8,new Se(.992,.681,.195)],[.9,new Se(.987,.822,.144)],[1,new Se(.94,.975,.131)]],YELLOW_GREEN:[[0,new Se(.1647,.2824,.3451)],[.1,new Se(.1338,.3555,.4227)],[.2,new Se(.061,.4319,.4864)],[.3,new Se(0,.5099,.5319)],[.4,new Se(0,.5881,.5569)],[.5,new Se(.137,.665,.5614)],[.6,new Se(.2906,.7395,.5477)],[.7,new Se(.4453,.8099,.5201)],[.8,new Se(.6102,.8748,.485)],[.9,new Se(.7883,.9323,.4514)],[1,new Se(.9804,.9804,.4314)]],VIRIDIS:[[0,new Se(.267,.005,.329)],[.1,new Se(.283,.141,.458)],[.2,new Se(.254,.265,.53)],[.3,new Se(.207,.372,.553)],[.4,new Se(.164,.471,.558)],[.5,new Se(.128,.567,.551)],[.6,new Se(.135,.659,.518)],[.7,new Se(.267,.749,.441)],[.8,new Se(.478,.821,.318)],[.9,new Se(.741,.873,.15)],[1,new Se(.993,.906,.144)]],INFERNO:[[0,new Se(.077,.042,.206)],[.1,new Se(.225,.036,.388)],[.2,new Se(.373,.074,.432)],[.3,new Se(.522,.128,.42)],[.4,new Se(.665,.182,.37)],[.5,new Se(.797,.255,.287)],[.6,new Se(.902,.364,.184)],[.7,new Se(.969,.516,.063)],[.8,new Se(.988,.683,.072)],[.9,new Se(.961,.859,.298)],[1,new Se(.988,.998,.645)]],GRAYSCALE:[[0,new Se(0,0,0)],[1,new Se(1,1,1)]],TURBO:[[0,new Se(.18995,.07176,.23217)],[.07,new Se(.25107,.25237,.63374)],[.13,new Se(.27628,.42118,.89123)],[.2,new Se(.25862,.57958,.99876)],[.27,new Se(.15844,.73551,.92305)],[.33,new Se(.09267,.86554,.7623)],[.4,new Se(.19659,.94901,.59466)],[.47,new Se(.42778,.99419,.38575)],[.53,new Se(.64362,.98999,.23356)],[.6,new Se(.80473,.92452,.20459)],[.67,new Se(.93301,.81236,.22667)],[.73,new Se(.99314,.67408,.20348)],[.8,new Se(.9836,.49291,.12849)],[.87,new Se(.92105,.31489,.05475)],[.93,new Se(.81608,.18462,.01809)],[1,new Se(.66449,.08436,.00424)]],RAINBOW:[[0,new Se(.278,0,.714)],[1/6,new Se(0,0,1)],[2/6,new Se(0,1,1)],[.5,new Se(0,1,0)],[4/6,new Se(1,1,0)],[5/6,new Se(1,.64,0)],[1,new Se(1,0,0)]],CONTOUR:[[0,new Se(0,0,0)],[.03,new Se(0,0,0)],[.04,new Se(1,1,1)],[1,new Se(1,1,1)]]},Ru=((t=xR=xR||{})[t.Intensity=1]="Intensity",t[t.Classification=2]="Classification",t[t.Elevation=3]="Elevation",t[t.RGB=4]="RGB",t[t.White=5]="White",(rh=ER=ER||{})[rh.FlatTexture=1]="FlatTexture",rh[rh.ShadedTexture=2]="ShadedTexture",rh[rh.ShadedNoTexture=3]="ShadedNoTexture",(zu=CR=CR||{})[zu.Reset=1]="Reset",zu[zu.Mercator=2]="Mercator",zu[zu.WGS84Cartesian=3]="WGS84Cartesian",Gh.RAINBOW),BR="undefined"!=typeof document?AR(Ru):null,MR="undefined"!=typeof document?AR(Gh.GRAYSCALE):null,SR={throttleRequests:!0,maxRequests:64,updateInterval:.1,maxConcurrency:1,maximumScreenSpaceError:16,maximumMemoryUsage:32,viewDistanceScale:1,skipLevelOfDetail:!1,updateTransforms:!0,shading:ER.FlatTexture,transparent:!1,pointCloudColoring:xR.White,pointSize:1,worker:!0,wireframe:!1,debug:!1,basisTranscoderPath:null,dracoDecoderPath:null,material:null,computeNormals:!1,shaderCallback:null,geoTransform:CR.Reset,preloadTilesCount:null},TR=function(){return A(function e(){ue(this,e)},null,[{key:"load",value:function(G){return TB(this,void 0,void 0,X().mark(function e(){var u,r,a,o,s,l,c,d,h,p,f,m,v,g,A,y,w,b,x,E,C,B,M,S,T,_,P,D,I,k,R,L,F,O,U,N,z=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(N=function(e,t,n,i){if(!T&&!u.pauseTilesetUpdate){if(!k||i.aspect!=D){var r=new dP({fov:i.fov/180*Math.PI,aspectRatio:i.aspect,near:i.near,far:i.far});if(k=r.sseDenominator,D=i.aspect,0==i.aspect)return;u.debug&&console.log("Updated sse denonimator:",k)}var a,r=yR(i).planes.map(function(e){return new $_(e.normal.toArray(),e.constant)}),i=new iP(r),r=new Re,n=(n.getSize(r),{camera:{position:I.toArray()},height:r.y,frameNumber:e._frameNumber,sseDenominator:k,cullingVolume:i,viewport:{id:0}}),o=(e._cache.reset(),e._traverser.traverse(e.root,n,e.options),q(e.tiles));try{for(o.s();!(a=o.n()).done;){var s=a.value;s.selected?t[s.id]?t[s.id].visible||viewer.visiVertexCount<5e6&&(t[s.id].visible=!0,viewer.visiVertexCount+=t[s.id].vertexCount,u.debug)&&(d[s.id].material.opacity=1,d[s.id].children[0].sprite.material.opacity=1):console.error("TILE SELECTED BUT NOT LOADED!!",s.id):t[s.id]&&t[s.id].visible&&(t[s.id].visible=!1,u.debug&&(d[s.id].material.opacity=.1,d[s.id].children[0].sprite.material.opacity=.1),viewer.visiVertexCount-=t[s.id].vertexCount)}}catch(e){o.e(e)}finally{o.f()}for(;0<h.length;){var l=h.pop();t[l.id]&&l.contentState==wP&&(p.remove(t[l.id]),PR(t[l.id]),delete t[l.id]),d[l.id]&&(PR(d[l.id]),f.remove(d[l.id]),delete d[l.id])}r=e.stats.get("Tiles Loaded").count,i=e.stats.get("Tiles Loading").count;return G.onProgress&&G.onProgress(r,r+i),G.loadingManager&&!_&&0==i&&(null==u.preloadTilesCount||r>=u.preloadTilesCount)&&(_=!0,G.loadingManager.itemEnd(G.url)),n}},U=function(){var e;u.geoTransform!=CR.WGS84Cartesian&&(e=(new Me).copy(B).invert(),C.copy(R).multiply(e),E.modelMatrix=new LT(C.toArray()),E.tileTransInvert=e.toArray())},O=function(e){var t;e.boundingVolume.halfAxes&&(e=e.boundingVolume.halfAxes,e=(new Me).extractRotation(bR(e)).premultiply((new Me).extractRotation(L)),(new Oi).setFromRotationMatrix(e).equals(new Oi)||(S=!0,t=new Oe(B.elements[12],B.elements[13],B.elements[14]),B.extractRotation(e),B.setPosition(t),U()))},u=Object.assign(Object.assign({},SR),G.options),r=G.url,a=u.updateInterval,o=5,s={},u.cesiumIONToken)return s["cesium-ion"]={accessToken:u.cesiumIONToken},e.next=12,gR.preload(r,s);e.next=14;break;case 12:l=e.sent,s.fetch={headers:l.headers};case 14:return G.loadingManager&&G.loadingManager.itemStart(r),e.next=17,NS(r,sR,Object.assign({},s));case 17:return l=e.sent,c={},d={},h=[],p=new Ts,(f=new Ts).matrixAutoUpdate=!1,u.debug?u.parent.add(f):f.visible=!1,m={pointSize:{type:"f",value:u.pointSize},gradient:{type:"t",value:BR},grayscale:{type:"t",value:MR},rootCenter:{type:"vec3",value:new Oe},rootNormal:{type:"vec3",value:new Oe},coloring:{type:"i",value:u.pointCloudColoring},hideGround:{type:"b",value:!0},elevationRange:{type:"vec2",value:new Re(0,400)},maxIntensity:{type:"f",value:1},intensityContrast:{type:"f",value:1},alpha:{type:"f",value:1}},v=new ga({uniforms:m,vertexShader:"\n varying vec3 vColor;\n uniform sampler2D gradient;\n uniform sampler2D grayscale;\n attribute float intensity;\n attribute float classification;\n uniform vec3 rootCenter;\n uniform vec3 rootNormal;\n uniform vec2 elevationRange;\n uniform int coloring;\n uniform bool hideGround;\n uniform float maxIntensity;\n uniform float intensityContrast;\n uniform float pointSize;\n\n #ifdef USE_COLOR\n vec3 getRGB() {\n vec3 rgb = color;\n return rgb;\n }\n #endif\n\n vec3 getElevation(){\n vec4 world = modelMatrix * vec4( position, 1.0 );\n float diff = abs(dot(rootNormal, (vec3(world) - rootCenter)));\n float w = max(diff - elevationRange.x,0.0) / max(elevationRange.y - elevationRange.x,1.0);\n vec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n return cElevation;\n }\n\n vec3 getIntensity(){\n // TODO: real contrast enhancement. Check https://github.com/yuki-koyama/enhancer/blob/master/shaders/enhancer.fs\n float intmod = pow(intensity, intensityContrast);\n vec3 cIntensity = texture2D(grayscale, vec2(intmod / maxIntensity ,1.0-(intmod / maxIntensity))).rgb;\n return cIntensity;\n }\n\n vec3 getClassification(){\n float classNormalized = classification / 255.0;\n vec3 cClassification = texture2D(gradient, vec2(classNormalized * 5.0,1.0-classNormalized * 5.0)).rgb;\n return cClassification;\n }\n\n vec3 getColor(){\n vec3 color;\n if (hideGround && classification == 2.0) {\n return vec3(0.0, 0.0, 0.0); \n }\n\n if (coloring == 1) {\n color = getIntensity();\n }\n else if (coloring == 2) {\n color = getClassification();\n } else if (coloring == 3) {\n color = getElevation();\n } \n #ifdef USE_COLOR\n else if (coloring == 4) {\n color = getRGB();\n }\n #endif\n else {\n color = vec3(1.0, 1.0, 1.0);\n }\n return color;\n }\n\n void main() {\n vColor = getColor();\n\n gl_PointSize = pointSize;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }\n",fragmentShader:"\n varying vec3 vColor;\n uniform float alpha;\n\n void main() {\n if (vColor == vec3(0.0, 0.0, 0.0)) {\n discard;\n } else {\n gl_FragColor = vec4( vColor, alpha);\n }\n }\n",transparent:u.transparent,vertexColors:!0}),A=g=null,y=G.gltfLoader||new IC,b=w=void 0,u.basisTranscoderPath&&((w=new AC).detectSupport(G.renderer),w.setTranscoderPath(u.basisTranscoderPath+"/"),w.setWorkerLimit(1),y.setKTX2Loader(w)),u.dracoDecoderPath&&((b=new tC).setDecoderPath(u.dracoDecoderPath+"/"),b.setWorkerLimit(u.maxConcurrency),y.setDRACOLoader(b)),x=new t0({transparent:u.transparent}),M={maximumMemoryUsage:u.maximumMemoryUsage,maximumScreenSpaceError:u.maximumScreenSpaceError,viewDistanceScale:u.viewDistanceScale,skipLevelOfDetail:u.skipLevelOfDetail,updateTransforms:u.updateTransforms,throttleRequests:u.throttleRequests,maxRequests:u.maxRequests,updateTime:u.updateTime||0,contentLoader:function(i){return TB(z,void 0,void 0,X().mark(function e(){var t,n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=null,e.t0=i.type,e.next=e.t0===MP.POINTCLOUD?4:e.t0===MP.SCENEGRAPH||e.t0===MP.MESH?6:10;break;case 4:return t=function(e,t,n,i){var r={rtc_center:e.content.rtcCenter,points:e.content.attributes.positions,intensities:e.content.attributes.intensity,classifications:e.content.attributes.classification,rgb:null,rgba:null},a=e.content.attributes.colors;a&&3===a.size&&(r.rgb=a.value);a&&4===a.size&&(r.rgba=a.value);a=new V,a.setAttribute("position",new ee(r.points,3)),e=(new Me).fromArray(e.computedTransform).premultiply(i);r.rgba?a.setAttribute("color",new ee(r.rgba,4)):r.rgb&&a.setAttribute("color",new Sr(r.rgb,3,!0));r.intensities&&a.setAttribute("intensity",new H(r.intensities,1,!0));r.classifications&&a.setAttribute("classification",new Sr(r.classifications,1,!1));i=new Fl(a,n.material||t);r.rtc_center&&(a=r.rtc_center,e.multiply((new Me).makeTranslation(a[0],a[1],a[2])));return i.applyMatrix4(e),i}(i,v,u,L),e.abrupt("break",10);case 6:return e.next=8,function(n,s,l,u){return TB(this,void 0,void 0,X().mark(function e(){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(r,t){var e,a=(new Me).makeRotationAxis(new Oe(1,0,0),Math.PI/2),o="Z"!==(null==(e=s.tileset.asset)?void 0:e.gltfUpAxis);n.parse(("glTF"==s.content.type?s.content.gltf:s.content).gltfArrayBuffer,s.contentUrl?s.contentUrl.substr(0,s.contentUrl.lastIndexOf("/")+1):"",function(e){var t,n,i=e.scenes[0],e=(i.vertexCount=0,s.tileContent=i,s.rtcCenterState!=!!s.content.rtcCenter&&(t=!0),s.rtcCenterState=MB=!!s.content.rtcCenter,s.getContentTransform(t));s.content.rtcCenter&&((n=new Me).makeTranslation(s.content.rtcCenter[0],s.content.rtcCenter[1],s.content.rtcCenter[2]),e.premultiply(n)),t&&s._updateBoundingVolume(s.header),o&&e.multiply(a),i.applyMatrix4(e),i.traverse(function(e){var t,n;"Mesh"==e.type&&(n=(t=(e=e).material).map,u.material?(e.material=u.material.clone(),t.dispose()):u.shading==ER.FlatTexture&&(e.material=l.clone(),t.dispose()),u.shading!=ER.ShadedNoTexture?"ShaderMaterial"!=e.material.type||e.material instanceof t0?e.material.map=n:e.material.uniforms.map={value:n}:(n&&n.dispose(),e.material.map=null),u.shaderCallback&&(e.onBeforeRender=u.shaderCallback),e.material.wireframe=u.wireframe,u.computeNormals&&e.geometry.computeVertexNormals(),i.vertexCount+=e.geometry.attributes.position.count)}),r(i)},function(e){t(new Error("error parsing gltf in tile ".concat(s.id,": ").concat(e)))})}));case 1:case"end":return e.stop()}},e)}))}(y,i,x,u);case 8:return t=e.sent,e.abrupt("break",10);case 10:t&&(t.visible=!1,(c[i.id]=t).name=i.id,t.tile=i,p.add(c[i.id]),u.debug&&(n=wR(i),f.add(n),d[i.id]=n),E.dispatchEvent({type:"tileLoaded",tileContent:t}));case 11:case"end":return e.stop()}},e)}))},onTileLoad:function(t){return TB(z,void 0,void 0,X().mark(function e(){return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:E&&(!S&&(null==t?void 0:t.depth)<=o&&O(t),E._frameNumber++,N(E,c,A,g));case 1:case"end":return e.stop()}},e)}))},onTileUnload:function(e){h.push(e)},onTileError:function(e,t){console.error("Tile error",e.id,t)}},(E=new oD(l,Object.assign(Object.assign({},M),{loadOptions:Object.assign(Object.assign({},s),{maxConcurrency:u.maxConcurrency,worker:u.worker,gltf:{loadImages:!1},"3d-tiles":{loadGLTF:!1}})}))).boxMap=d,C=new Me,B=new Me,M=new Oe,S=!1,E.root.boundingVolume?(E.root.header.boundingVolume.region&&(console.warn("Cannot apply a model matrix to bounding volumes of type region. Tileset stays in original geo-coordinates."),u.geoTransform=CR.WGS84Cartesian),B.setPosition(E.root.boundingVolume.center[0],E.root.boundingVolume.center[1],E.root.boundingVolume.center[2])):console.warn("Bounding volume not found, no transformations applied"),u.debug&&(F=wR(E.root),f.add(F),d[E.root.id]=F),_=T=!1,m.rootCenter.value.copy(M),m.rootNormal.value.copy(new Oe(0,0,1).normalize()),E.stats.get("Loader concurrency").count=u.maxConcurrency,E.stats.get("Maximum SSE").count=u.maximumScreenSpaceError,E.stats.get("Maximum mem usage").count=u.maximumMemoryUsage,D=null,I=new Oe(1/(P=0),1/0,1/0),k=null,p.updateMatrixWorld(!0),R=(new Me).copy(p.matrixWorld),L=(new Me).copy(R).invert(),E.lastRootTransform=R,O(E.root),U(),u.debug&&(d[E.root.id].applyMatrix4(C),f.matrixWorld.copy(p.matrixWorld)),u.geoTransform==CR.Mercator?(t=E.cartographicCenter[1],n=E.cartographicCenter[0],i=void 0,i=2*Math.PI*6378137/2,n=n*i/180,t=Math.log(Math.tan((90+t)*Math.PI/360))/(Math.PI/180),F=new Re(n,t*i/180),M.set(F.x,0,-F.y),p.position.copy(M),p.rotation.set(-Math.PI/2,0,0),p.updateMatrixWorld(!0)):u.geoTransform==CR.WGS84Cartesian&&(p.applyMatrix4(B),p.updateMatrixWorld(!0),M.copy(p.position)),e.abrupt("return",{model:p,runtime:{getTileset:function(){return E},getStats:function(){return E.stats},showTiles:function(e){f.visible=e},setWireframe:function(t){u.wireframe=t,p.traverse(function(e){e instanceof Q&&(e.material.wireframe=t)})},setDebug:function(e){u.debug=e,f.visible=e},setShading:function(e){u.shading=e},getTileBoxes:function(){return f},setViewDistanceScale:function(e){E.options.viewDistanceScale=e,E._frameNumber++,N(E,c,A,g)},setHideGround:function(e){m.hideGround.value=e},setPointCloudColoring:function(e){m.coloring.value=e},setElevationRange:function(e){m.elevationRange.value.set(e[0],e[1])},setMaxIntensity:function(e){m.maxIntensity.value=e},setIntensityContrast:function(e){m.intensityContrast.value=e},setPointAlpha:function(e){m.alpha.value=e},getLatLongHeightFromPosition:function(e){e=E.ellipsoid.cartesianToCartographic((new Oe).copy(e).applyMatrix4((new Me).copy(C).invert()).toArray());return{lat:e[1],long:e[0],height:e[2]}},getPositionFromLatLongHeight:function(e){e=E.ellipsoid.cartographicToCartesian([e.long,e.lat,e.height]);return ie(Oe,Fe(e)).applyMatrix4(C)},getCameraFrustum:function(e){var t,e=yR(e).planes.map(function(e){return new $_(e.normal.toArray(),e.constant)}).map(function(e){return e=e,t=new Ts,n=new Nu(10,5),i=ie(Oe,Fe(e.projectPointOntoPlane([0,0,0]))),e=new Oe(e.normal.x,e.normal.y,e.normal.z),r=(new Oe).copy(i).add(e),n.lookAt(r),n.translate(i.x,i.y,i.z),r=new t0({color:65535,side:ve}),n=new Q(n,r),r=new ip(e,i,5,16776960),t.add(r),t.add(n),t;var t,n,i,r}),n=new Ts,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.add(r)}}catch(e){i.e(e)}finally{i.f()}return n},update:function(e,t,n,i){g=n,A=t,P+=e,i=i||E.nextForceUpdate,E.nextForceUpdate=!1,E.needRenderNext&&viewer.dispatchEvent("content_changed"),E.needRenderNext=i,E&&(a<=P||i)&&(R.equals(p.matrixWorld)||(P=0,R.copy(p.matrixWorld),U(),e=(new Oe).setFromMatrixPosition(R),m.rootCenter.value.copy(e),m.rootNormal.value.copy(new Oe(0,0,1).applyMatrix4(R).normalize()),L.copy(R).invert(),u.debug&&f.matrix.copy(p.matrixWorld)),null==this.lastCameraTransform?this.lastCameraTransform=(new Me).copy(n.matrixWorld):n.matrixWorld.equals(this.lastCameraTransform)&&n.aspect==D&&!i||(P=0,E._frameNumber++,n.getWorldPosition(I),this.lastCameraTransform.copy(n.matrixWorld),N(E,c,t,n)))},dispose:function(){for(T=!0,E._destroy();0<p.children.length;){var e=p.children[0];PR(e),p.remove(e)}for(;0<f.children.length;){var t=f.children[0];f.remove(t),t.geometry.dispose(),t.material.dispose()}w&&w.dispose(),b&&b.dispose()},limit2lowestDepth:function(e){SB=e?1:100,g&&(E._frameNumber++,N(E,c,A,g))}}});case 65:case"end":return e.stop()}var t,n,i},e)}))}}])}();function _R(e){var t;null!=(t=null==e?void 0:e.uniforms)&&t.map?null!=(t=null==(t=null==e?void 0:e.uniforms)?void 0:t.map.value)&&t.dispose():e.map&&null!=(t=e.map)&&t.dispose(),e.dispose()}function PR(e){e.traverse(function(e){if(e.isMesh)if(e.geometry.dispose(),e.material.isMaterial)_R(e.material);else{var t,n=q(e.material);try{for(n.s();!(t=n.n()).done;)_R(t.value)}catch(e){n.e(e)}finally{n.f()}}});for(var t=e.children.length-1;0<=t;t--){var n=e.children[t];e.remove(n)}}function DR(e){kc.call(this,e),this.propertyNameMapping={}}function IR(e,t){D0.call(this),this.sampleLevel=4,this.unbiased=!0,this.clearColor=void 0!==e?e:0,this.clearAlpha=void 0!==t?t:0,this.renderUniforms={bgTex:{value:null},outlineTex:{value:null},opacity:{value:1}},this.renderMat=new ga({uniforms:this.renderUniforms,vertexShader:J0.vertexShader,fragmentShader:" \n uniform sampler2D bgTex; \n uniform sampler2D outlineTex; \n uniform float opacity;\n varying vec2 vUv;\n void main() {\n vec4 color1 = texture2D( bgTex, vUv );\n vec4 color2 = texture2D( outlineTex, vUv ); \n gl_FragColor = opacity * mix(color1, color2, color2.a) ;\n \n \n } \n ",premultipliedAlpha:!0,blending:ye,depthTest:!1,depthWrite:!1,transparent:!0}),this.renderMat2=new ga({uniforms:fa.clone(J0.uniforms),vertexShader:J0.vertexShader,fragmentShader:"uniform float opacity; \n uniform sampler2D tDiffuse; \n varying vec2 vUv;\n\n void main() {\n \n vec4 texel = texture2D( tDiffuse, vUv ); \n \n if(texel.r == 0.0 && texel.g == 0.0 && texel.b == 0.0){\n discard;\n }else{\n gl_FragColor = opacity * texel;\n }\n } \n ",depthTest:!1,depthWrite:!1,transparent:!0}),this.camera2=new Ad(-1,1,1,-1,0,1),this.scene2=new Fs,this.quad2=new Q(new _a(2,2),this.renderMat),this.quad2.frustumCulled=!1,this.scene2.add(this.quad2),this.copyPass=new I0(J0),this.copyPass.renderToScreen=!0}DR.prototype=Object.assign(Object.create(kc.prototype),{constructor:DR,load:function(t,n,e,i){var r=this,a=new Lc(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(t,function(e){try{n(r.parse(e))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},setPropertyNameMapping:function(e){this.propertyNameMapping=e},parse:function(e){function t(e){var t,n,i,r="",a=0,e=/ply([\s\S]*)end_header\r?\n/.exec(e),o=(null!==e&&(r=e[1],a=new Blob([e[0]]).size),{comments:[],elements:[],headerLength:a,objInfo:""}),s=r.split("\n");for(var l,u,c,d=0;d<s.length;d++){var h=(h=s[d]).trim();if(""!==h)switch(n=(i=h.split(/\s+/)).shift(),h=i.join(" "),n){case"format":o.format=i[0],o.version=i[1];break;case"comment":o.comments.push(h);break;case"element":void 0!==t&&o.elements.push(t),(t={}).name=i[0],t.count=parseInt(i[1]),t.properties=[];break;case"property":t.properties.push((l=i,u=p.propertyNameMapping,c=void 0,"list"===(c={type:l[0]}).type?(c.name=l[3],c.countType=l[1],c.itemType=l[2]):c.name=l[1],c.name in u&&(c.name=u[c.name]),c));break;case"obj_info":o.objInfo=h;break;default:console.log("unhandled",n,i)}}return void 0!==t&&o.elements.push(t),o}function u(e,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}}function n(e,t){for(var n={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},i="",r=(i=null!==(e=/end_header\s([\s\S]*)$/.exec(e))?e[1]:i).split("\n"),a=0,o=0,s=0;s<r.length;s++){var l=(l=r[s]).trim();""!==l&&(o>=t.elements[a].count&&(a++,o=0),l=function(e,t){for(var n=t.split(/\s+/),i={},r=0;r<e.length;r++)if("list"===e[r].type){for(var a=[],o=u(n.shift(),e[r].countType),s=0;s<o;s++)a.push(u(n.shift(),e[r].itemType));i[e[r].name]=a}else i[e[r].name]=u(n.shift(),e[r].type);return i}(t.elements[a].properties,l),d(n,t.elements[a].name,l),o++)}return c(n)}function c(e){var t=new V;return 0<e.indices.length&&t.setIndex(e.indices),t.setAttribute("position",new ee(e.vertices,3)),0<e.normals.length&&t.setAttribute("normal",new ee(e.normals,3)),0<e.uvs.length&&t.setAttribute("uv",new ee(e.uvs,2)),0<e.colors.length&&t.setAttribute("color",new ee(e.colors,3)),0<e.faceVertexUvs.length&&(t=t.toNonIndexed()).setAttribute("uv",new ee(e.faceVertexUvs,2)),t.computeBoundingSphere(),t}function d(e,t,n){"vertex"===t?(e.vertices.push(n.x,n.y,n.z),"nx"in n&&"ny"in n&&"nz"in n&&e.normals.push(n.nx,n.ny,n.nz),"s"in n&&"t"in n&&e.uvs.push(n.s,n.t),"red"in n&&"green"in n&&"blue"in n&&e.colors.push(n.red/255,n.green/255,n.blue/255)):"face"===t&&(t=n.vertex_indices||n.vertex_index,n=n.texcoord,3===t.length?(e.indices.push(t[0],t[1],t[2]),n&&6===n.length&&(e.faceVertexUvs.push(n[0],n[1]),e.faceVertexUvs.push(n[2],n[3]),e.faceVertexUvs.push(n[4],n[5]))):4===t.length&&(e.indices.push(t[0],t[1],t[3]),e.indices.push(t[1],t[2],t[3])))}function h(e,t,n,i){switch(n){case"int8":case"char":return[e.getInt8(t),1];case"uint8":case"uchar":return[e.getUint8(t),1];case"int16":case"short":return[e.getInt16(t,i),2];case"uint16":case"ushort":return[e.getUint16(t,i),2];case"int32":case"int":return[e.getInt32(t,i),4];case"uint32":case"uint":return[e.getUint32(t,i),4];case"float32":case"float":return[e.getFloat32(t,i),4];case"float64":case"double":return[e.getFloat64(t,i),8]}}function i(e,t){for(var n={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]},i="binary_little_endian"===t.format,r=new DataView(e,t.headerLength),a=0,o=0;o<t.elements.length;o++)for(var s=0;s<t.elements[o].count;s++){a+=(l=function(e,t,n,i){for(var r={},a=0,o=0;o<n.length;o++)if("list"===n[o].type){var s,l=[],u=(s=h(e,t+a,n[o].countType,i))[0];a+=s[1];for(var c=0;c<u;c++)s=h(e,t+a,n[o].itemType,i),l.push(s[0]),a+=s[1];r[n[o].name]=l}else s=h(e,t+a,n[o].type,i),r[n[o].name]=s[0],a+=s[1];return[r,a]}(r,a,t.elements[o].properties,i))[1];var l=l[0];d(n,t.elements[o].name,l)}return c(n)}var r,a,p=this;return e instanceof ArrayBuffer?"ascii"===(a=t(r=Md.decodeText(new Uint8Array(e)))).format?n(r,a):i(e,a):n(e,t(e))}});function kR(e,t){var n,i=this;this.renderer=e,void 0===t&&(n={minFilter:N,magFilter:N,format:It,stencilBuffer:!1},(t=new ti((e=e.getDrawingBufferSize(new Re)).width,e.height,n)).texture.name="EffectComposer.rt1"),this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.passes=[],this.copyPass=new I0(J0),viewer.addEventListener("resize",function(e){i.readTarget||i.setSize(e.viewport.resolution2.x,e.viewport.resolution2.y)})}function RR(e){var n=this,e=(this.selectedObjects=void 0!==e?e:[],this.visibleEdgeColor=new Se(1,1,1),this.hiddenEdgeColor=new Se(.1,.04,.02),this.edgeGlow=0,this.usePatternTexture=!1,this.edgeStrength=50,this.downSampleRatio=1,this.pulsePeriod=0,this.showHiddenPart=!1,D0.call(this),this.resolution=new Re(256,256),{minFilter:N,magFilter:N,format:It}),t=Math.round(this.resolution.x/this.downSampleRatio),i=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new ti(this.resolution.x,this.resolution.y,e),this.renderTargetMaskBuffer.texture.name="OutlinePass.mask",this.renderTargetMaskBuffer.texture.generateMipmaps=!1,this.depthMaterial=new ys,this.depthMaterial.side=ve,this.depthMaterial.depthPacking=Un,this.depthMaterial.blending=ge,this.prepareMaskMaterial=this.getPrepareMaskMaterial(),this.prepareMaskMaterial.side=ve,this.renderTargetDepthBuffer=new ti(this.resolution.x,this.resolution.y,e),this.renderTargetDepthBuffer.texture.name="OutlinePass.depth",this.renderTargetDepthBuffer.texture.generateMipmaps=!1,this.edgeDetectionMaterial=this.getEdgeDetectionMaterial(this.edgeStrength),this.renderTargetEdgeBuffer1=new ti(t,i,e),this.renderTargetEdgeBuffer1.texture.name="OutlinePass.edge1",this.renderTargetEdgeBuffer1.texture.generateMipmaps=!1,this.overlayMaterial=this.getOverlayMaterial(),this.copyUniforms=fa.clone(J0.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new ga({uniforms:this.copyUniforms,vertexShader:J0.vertexShader,fragmentShader:J0.fragmentShader,blending:ge,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this.oldClearColor=new Se,this.oldClearAlpha=1,this.camera=new Ad(-1,1,1,-1,0,1),this.scene=new Fs,this.quad=new Q(new _a(2,2),null),this.quad.frustumCulled=!1,this.scene.add(this.quad),this.textureMatrix=new Me,viewer.addEventListener("viewerResize",function(e){var t=viewer.renderer.getSize(new Re);n.renderTargetEdgeBuffer1.setSize(t.x,t.y),n.renderTargetMaskBuffer.setSize(t.x,t.y),n.resolution.set(t.x,t.y)})}IR.prototype=Object.assign(Object.create(D0.prototype),{constructor:IR,dispose:function(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null)},setSize:function(e,t){this.sampleRenderTarget&&this.sampleRenderTarget.setSize(e,t),this.childPass&&this.childPass.setSize(e,t)},addPass:function(e){this.childPass=e},render:function(e,t,n,i,r,a,o,s){this.useCopy&&(e=this.copyPass.scene,t=this.copyPass.camera),this.sampleRenderTarget||(this.sampleRenderTarget=new ti(a.width,a.height,{minFilter:N,magFilter:N,format:It}),this.sampleRenderTarget.texture.name="SSAARenderPass.sample");for(var l,u,c=IR.JitterVectors[Math.max(0,Math.min(this.sampleLevel,5))],d=i.autoClear,h=(i.autoClear=!1,i.getClearColor(new Se).getHex()),p=i.getClearAlpha(),f=(i.setClearColor(this.clearColor,this.clearAlpha),1/c.length),m=i.getRenderTarget(),v=(u=m?m.scissorTest?(l=m.scissor.w,m.scissor.z):(l=m.width,m.height):(l=a.width,a.height),0);v<c.length;v++){var g=c[v],g=(t.setViewOffset&&t.setViewOffset(l,u,.0625*g[0],.0625*g[1],l,u),f),A=(this.unbiased&&(g+=1/32*((v+.5)/c.length-.5)),i.setRenderTarget(this.sampleRenderTarget),i.clear(),this.useCopy?this.copyPass.render(e,t,null,i,r,a):s?s({target:this.sampleRenderTarget}):i.render(e,t),i.setRenderTarget(m),this.childPass&&this.childPass.render(e,t,i,r,a,null,s));this.renderUniforms.bgTex.value=this.sampleRenderTarget.texture,this.renderUniforms.outlineTex.value=A?a.texture:null,this.renderUniforms.opacity.value=g,this.renderToScreen||i.setRenderTarget(r),0===v&&(i.setClearColor(0,0),i.clear()),i.render(this.scene2,this.camera2),this.renderToScreen||i.setRenderTarget(m)}t.clearViewOffset&&t.clearViewOffset(),i.autoClear=d,i.setClearColor(h,p)}}),IR.JitterVectors=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];var LR=function(){function i(e,t){var n;return ue(this,i),(n=le(this,i)).scene=e,n.camera=t,n.clear=!0,n.needsSwap=!1,n.inverse=!1,n}return v(i,D0),A(i,[{key:"render",value:function(e,t,n){var i,r,a=e.getContext(),o=e.state;o.buffers.color.setMask(!1),o.buffers.depth.setMask(!1),o.buffers.color.setLocked(!0),o.buffers.depth.setLocked(!0),r=this.inverse?(i=0,1):(i=1,0),o.buffers.stencil.setTest(!0),o.buffers.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),o.buffers.stencil.setFunc(a.ALWAYS,i,4294967295),o.buffers.stencil.setClear(r),o.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),o.buffers.color.setLocked(!1),o.buffers.depth.setLocked(!1),o.buffers.stencil.setLocked(!1),o.buffers.stencil.setFunc(a.EQUAL,1,4294967295),o.buffers.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),o.buffers.stencil.setLocked(!0)}}])}(),FR=function(){function t(){var e;return ue(this,t),(e=le(this,t)).needsSwap=!1,e}return v(t,D0),A(t,[{key:"render",value:function(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}])}(),OR=(Object.assign(kR.prototype,{swapBuffers:function(){var e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e},addPass:function(e){this.passes.push(e);var t=this.renderer.getDrawingBufferSize(new Re);e.setSize(t.width,t.height)},removePass:function(e){e=this.passes.indexOf(e);-1<e&&this.passes.splice(e,1)},insertPass:function(e,t){this.passes.splice(t,0,e)},render:function(e,t,n,i){var r,a,o,s=!1,l=this.passes.filter(function(e){return e.enabled}),u=l.length,c=this.renderer.getRenderTarget();for(this.readTarget&&c&&(this.setSize(c.width,c.height),c.viewport.set(0,0,c.width,c.height),c.scissorTest=!1,this.copyPass.render(e,t,n,this.renderer,this.readBuffer,c)),r=0;r<u;r++)(o=l[r]).render(e,t,n,this.renderer,this.writeBuffer,this.readBuffer,s,i),o.needsSwap&&(s&&((a=this.renderer.context).stencilFunc(a.NOTEQUAL,1,4294967295),this.copyPass.render(null,null,n,this.renderer,this.writeBuffer,this.readBuffer),a.stencilFunc(a.EQUAL,1,4294967295)),this.swapBuffers()),void 0!==LR&&(o instanceof LR?s=!0:o instanceof FR&&(s=!1));this.renderer.setRenderTarget(c),o.renderToScreen||(this.copyPass.renderToScreen=!0,this.copyPass.render(null,null,n,this.renderer,this.writeBuffer,this.readBuffer))},reset:function(e){var t;void 0===e&&(t=this.renderer.getDrawingBufferSize(new Re),(e=this.renderTarget1.clone()).setSize(t.width,t.height)),this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2},setSize:function(e,t,n){var i=e*(n=n||this.scaleRatio||1),r=t*n;this.renderTarget1.setSize(i=e*(n=4096<i||4096<r?r<i?4096/e:4096/t:n),r=t*n),this.renderTarget2.setSize(i,r);for(var a=0;a<this.passes.length;a++)this.passes[a].setSize(i,r)}}),new Re(1/1024,1/512),RR.prototype=Object.assign(Object.create(D0.prototype),{constructor:RR,dispose:function(){this.renderTargetMaskBuffer.dispose(),this.renderTargetEdgeBuffer1.dispose(),this.renderTargetDepthBuffer.dispose()},replaceDepthToViewZ:function(e){e=e.isPerspectiveCamera?"perspective":"orthographic";e!=this.lastCameraType&&(this.lastCameraType=e,this.prepareMaskMaterial.fragmentShader=this.prepareMaskMaterial.fragmentShader.replace(/DEPTH_TO_VIEW_Z/g,e+"DepthToViewZ"),this.prepareMaskMaterial.needsUpdate=!0)},setSize:function(e,t){},changeVisibilityOfSelectedObjects:function(t){function e(e){(e.isPointcloud||e.isMesh||e.isLine||e.isSprite)&&Potree.Utils.updateVisible(e,"overlinePass",t)}for(var n=0;n<this.selectedObjects.length;n++)this.selectedObjects[n].traverse(e)},changeVisibilityOfNonSelectedObjects:function(r,e){var a=[];function t(e){(e.isPointcloud||e.isMesh||e.isLine||e.isSprite)&&a.push(e)}for(var n=0;n<this.selectedObjects.length;n++)this.selectedObjects[n].traverse(t);function i(e){if(e.isPointcloud||e.isMesh||e.isLine||e.isSprite){for(var t,n=!1,i=0;i<a.length;i++)if(a[i].id===e.id){n=!0;break}if(!n)return t=e.visible,Potree.Utils.updateVisible(e,"overlinePass",r),e.visible=!!r&&!!e.bVisible,e.bVisible=t,{stopContinue:!0}}}e.forEach(function(e){return e.traverse(i)})},updateTextureMatrix:function(e){this.textureMatrix.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),this.textureMatrix.multiply(e.projectionMatrix),this.textureMatrix.multiply(e.matrixWorldInverse)},render:function(t,n,e,i,r,a,o,s){var l,u,c,d,h,p,f,m,v=this;if(t instanceof Array||(t=[t]),0<this.selectedObjects.length&&0<this.edgeStrength)return l=function(e){s?s({target:e,dontRenderRtEDL:!(1<arguments.length&&void 0!==arguments[1])||arguments[1]}):(i.setRenderTarget(e),i.clear(),t.forEach(function(e){return i.render(e,n)}))},this.oldClearColor.copy(i.getClearColor(new Se)),this.oldClearAlpha=i.getClearAlpha(),u=i.autoClear,c=i.getRenderTarget(),i.autoClear=!1,o&&i.context.disable(i.context.STENCIL_TEST),i.setClearColor(16777215,1),o=viewer.background,d=viewer.backgroundOpacity,viewer.background=new Se(1,1,1),viewer.backgroundOpacity=1,this.showHiddenPart?(e.forEach(function(e){e.oldBeforeRender=e.beforeRender,e.beforeRender=function(){e.oldBeforeRender&&e.oldBeforeRender(),v.replaceDepthToViewZ(e.camera)}}),this.changeVisibilityOfSelectedObjects(!1),t.forEach(function(e){e.currentBackground=e.background,e.background=null,e.overrideMaterial=v.depthMaterial}),l(this.renderTargetDepthBuffer),this.changeVisibilityOfSelectedObjects(!0),e.forEach(function(e){e.beforeRender=function(){e.oldBeforeRender&&e.oldBeforeRender(),v.updateTextureMatrix(e.camera),v.prepareMaskMaterial.uniforms.cameraNearFar.value=new Re(e.camera.near,e.camera.far)}})):t.forEach(function(e){e.currentBackground=e.background,e.background=null}),p=new Map,f=new Map,this.changeVisibilityOfNonSelectedObjects(!1,t),t.forEach(function(e){e.overrideMaterial=v.prepareMaskMaterial}),this.showHiddenPart&&(this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix),viewer.scene.pointclouds.forEach(function(e){h=e.material.activeAttributeName,e.material.activeAttributeName="color",p.set(e,e.material.color),e.material.color="#000000",f.set(e,e.material.opacity),e.material.opacity=1}),l(this.renderTargetMaskBuffer),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName=h,e.material.color=p.get(e),e.material.opacity=f.get(e)}),this.showHiddenPart&&e.forEach(function(e){e.beforeRender=e.oldBeforeRender}),t.forEach(function(e){e.overrideMaterial=null,e.background=e.currentBackground}),viewer.background=o,viewer.backgroundOpacity=d,this.changeVisibilityOfNonSelectedObjects(!0,t),this.quad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value=new Re(this.resolution.x,this.resolution.y),this.edgeDetectionMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.visibleEdgeColor,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.hiddenEdgeColor,this.renderToScreen?(this.quad.material.transparent=!0,m=null,i.setClearColor(this.oldClearColor,this.oldClearAlpha),l(null,!1),e=i.getSize(new Re),i.setViewport(0,0,e.x,e.y),i.setScissorTest(!1)):(m=a,i.setClearColor(0,0),i.clear()),i.setRenderTarget(m),i.render(this.scene,this.camera),i.setRenderTarget(c),i.setClearColor(this.oldClearColor,this.oldClearAlpha),i.autoClear=u,!0},getPrepareMaskMaterial:function(){return this.showHiddenPart?new ga({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new Re(.5,.5)},textureMatrix:{value:new Me}},vertexShader:["varying vec4 projTexCoord;","varying vec4 vPosition;","uniform mat4 textureMatrix;","void main() {","\tvPosition = modelViewMatrix * vec4( position, 1.0 );","\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );","\tprojTexCoord = textureMatrix * worldPosition;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["#include <packing>","varying vec4 vPosition;","varying vec4 projTexCoord;","uniform sampler2D depthTexture;","uniform vec2 cameraNearFar;","void main() {","\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));","\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );","\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;","\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);","}"].join("\n")}):new R({color:"#000000"})},getEdgeDetectionMaterial:function(e){return new ga({uniforms:{edgeStrength:{value:e},maskTexture:{value:null},texSize:{value:new Re(10,10)},visibleEdgeColor:{value:new Oe(1,1,1)},hiddenEdgeColor:{value:new Oe(1,1,1)}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\t\t\t\tuniform sampler2D maskTexture;\n uniform float edgeStrength;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\t\t\t\t\n\t\t\t\tvoid main() { \n const float thickness = 1.0;\n vec2 invSize = thickness / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5; //检测边缘,\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) ) * edgeStrength;\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2); //检测深度值,是否被遮挡\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\t//gl_FragColor = vec4(0.0,1.0,0.0,1.0); \n gl_FragColor = vec4(edgeColor, 1.0) * vec4(d); \n\t\t\t\t}"})},getSeperableBlurMaterial:function(e){return new ga({defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new Re(.5,.5)},direction:{value:new Re(.5,.5)},kernelRadius:{value:1}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"#include <common>\t\t\t\tvarying vec2 vUv;\t\t\t\tuniform sampler2D colorTexture;\t\t\t\tuniform vec2 texSize;\t\t\t\tuniform vec2 direction;\t\t\t\tuniform float kernelRadius;\t\t\t\t\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\t\t\t\t}\t\t\t\tvoid main() {\t\t\t\t\tvec2 invSize = 1.0 / texSize;\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, kernelRadius);\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\t\t\t\t\tvec2 uvOffset = delta;\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\t\t\t\t\t\tfloat w = gaussianPdf(uvOffset.x, kernelRadius);\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\t\t\t\t\t\tweightSum += (2.0 * w);\t\t\t\t\t\tuvOffset += delta;\t\t\t\t\t}\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\t\t\t\t}"})},getOverlayMaterial:function(){return new ga({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv; \n\t\t\t\tuniform sampler2D edgeTexture1; \n\t\t\t\tuniform float edgeStrength; \n\t\t\t\t \n\t\t\t\tvoid main() { \n\t\t\t\t\tgl_FragColor = edgeStrength * texture2D(edgeTexture1, vUv); \n\t\t\t\t}",blending:ye,depthTest:!1,depthWrite:!1,transparent:!0})}}),RR.BlurDirectionX=new Re(1,0),RR.BlurDirectionY=new Re(0,1),2),UR=function(){function i(e,t){function n(e){var t,n;a.enabled&&e.dragViewport&&null===e.drag.object&&(t=e.isTouch?1==e.touches.length?"rotate":"scale-pan":e.buttons===Potree.defines.Buttons.LEFT?"rotate":"pan",void 0===e.drag.startHandled&&(e.drag.startHandled=!0,a.dispatchEvent({type:"start"})),(n=e.drag.pointerDelta.clone()).y*=-1,"rotate"==t?(a.yawDelta+=n.x*a.rotationSpeed,a.pitchDelta+=n.y*a.rotationSpeed):"pan"==t?(a.panDelta.x+=n.x,a.panDelta.y+=n.y):"scale-pan"==t&&(a.dollyEnd.subVectors(e.touches[0].pointer,e.touches[1].pointer),n=a.dollyEnd.length()/a.dollyStart.length(),a.dollyStart.copy(a.dollyEnd),a.radiusDelta=(1-n)*a.currentViewport.view.radius,t=(new Re).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5),(n=(new Re).subVectors(t,a.lastScalePointer)).y*=-1,a.panDelta.add(n),a.lastScalePointer=t.clone()),a.stopTweens())}ue(this,i),(a=le(this,i)).viewer=e,a.renderer=e.renderer,a.scene=null,a.sceneControls=new Fs,a.rotationSpeed=3,t=t||e.viewports[0],a.setCurrentViewport({hoverViewport:t,force:!0}),a.fadeFactor=20,a.yawDelta=0,a.pitchDelta=0,a.panDelta=new Re(0,0),a.radiusDelta=0,a.doubleClockZoomEnabled=!0,a.tweens=[],a.dollyStart=new Re,a.dollyEnd=new Re,a.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["Q".charCodeAt(0)],DOWN:["E".charCodeAt(0)]};var a,o=null;a.addEventListener("touchstart",function(e){o=e}),a.addEventListener("touchend",function(e){o=e}),a.addEventListener("touchmove",function(e){var t,n,i,r;a.enabled&&(2===e.touches.length&&2===o.touches.length?(t=e,r=(i=o).touches[0].pageX-i.touches[1].pageX,i=i.touches[0].pageY-i.touches[1].pageY,r=Math.sqrt(r*r+i*i),i=t.touches[0].pageX-t.touches[1].pageX,t=t.touches[0].pageY-t.touches[1].pageY,i=Math.sqrt(i*i+t*t),t=a.currentViewport.view.radius+a.radiusDelta,a.radiusDelta=t/(i/r)-t,a.stopTweens()):3===e.touches.length&&3===o.touches.length&&(r=((i=o).touches[0].pageX+i.touches[1].pageX+i.touches[2].pageX)/3,t=(i.touches[0].pageY+i.touches[1].pageY+i.touches[2].pageY)/3,i=(e.touches[0].pageX+e.touches[1].pageX+e.touches[2].pageX)/3,n=(e.touches[0].pageY+e.touches[1].pageY+e.touches[2].pageY)/3,i=(i-r)/a.renderer.domElement.clientWidth,r=(n-t)/a.renderer.domElement.clientHeight,a.panDelta.x+=i,a.panDelta.y+=r,a.stopTweens()),o=e)}),a.viewer.addEventListener("global_drag",n),a.viewer.addEventListener("global_drop",function(e){a.enabled&&a.dispatchEvent({type:"end"})}),a.viewer.addEventListener("global_mousewheel",function(e){var t;!a.enabled||(t=a.currentViewport.view.radius+a.radiusDelta)<.1&&0<e.delta||(a.radiusDelta+=-e.delta*t*.1,a.stopTweens())}),a.viewer.addEventListener("global_dblclick",function(e){a.enabled&&a.doubleClockZoomEnabled&&a.zoomToLocation(e.mouse)}),a.viewer.addEventListener("global_touchmove",function(e){1<e.touches.length&&n(e)});return a.viewer.addEventListener("global_touchstart",function(e){a.enabled&&2==e.touches.length&&(e=e,a.dollyStart.subVectors(e.touches[0].pointer,e.touches[1].pointer),a.lastScalePointer=(new Re).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5))}),a.viewer.addEventListener("focusOnObject",function(e){e.position&&e.CamTarget&&(e=e.position.distanceTo(e.CamTarget))<OR&&(OR=.5*e)}),a}return v(i,Qn),A(i,[{key:"setScene",value:function(e){this.scene=e}},{key:"setCurrentViewport",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};(this.enabled||e.force)&&e.hoverViewport&&this.currentViewport!=e.hoverViewport&&(this.currentViewport=e.hoverViewport)}},{key:"setEnable",value:function(e){this.enabled=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.radiusDelta=0,this.panDelta.set(0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i=viewer.inputHandler.intersect;i&&(t=i.object||i.pointcloud,i=i.location)&&t&&(n=this.currentViewport.view.position.distanceTo(i),t=t.boundingBox.clone().applyMatrix4(t.matrixWorld).getSize(new Oe).length(),n=Be.clamp(n,.1,Math.max(.1*t,3)),OR=n,viewer.focusOnObject({position:i},"point",null,{distance:n}))}},{key:"stopTweens",value:function(){this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]}},{key:"update",value:function(e){var t,n,i,r,a,o,s,l,u,c,d,h,p;this.enabled&&(t=this.currentViewport.view,n=this.currentViewport.camera,i=this.viewer.inputHandler,h=this.keys.FORWARD.some(function(e){return i.pressedKeys[e]}),p=this.keys.BACKWARD.some(function(e){return i.pressedKeys[e]}),r=this.keys.LEFT.some(function(e){return i.pressedKeys[e]}),a=this.keys.RIGHT.some(function(e){return i.pressedKeys[e]}),o=this.keys.UP.some(function(e){return i.pressedKeys[e]}),s=this.keys.DOWN.some(function(e){return i.pressedKeys[e]}),l=this.currentViewport.getMoveSpeed()/20,d=c=u=0,h?c=l:p&&(c=-1*l),r?u=-1*l:a&&(u=l),o?d=l:s&&(d=-1*l),0==u&&0==c&&0==d||t.translate(u,c,d,!0),h=Math.min(1,this.fadeFactor*e),p=t.yaw,r=t.pitch,a=t.getPivot(),p-=h*this.yawDelta,r-=h*this.pitchDelta,t.yaw=p,t.pitch=r,o=this.currentViewport.view.direction.multiplyScalar(-t.radius),s=(new Oe).addVectors(a,o),t.position.copy(s),"OrthographicCamera"!=n.type&&(l=2*t.radius*Math.tan(Be.degToRad(n.fov/2)),u=-this.panDelta.x*l,c=this.panDelta.y*l,t.pan(u,c)),d=t.radius+ +this.radiusDelta,e=t.direction.multiplyScalar(-d),h=(new Oe).addVectors(t.getPivot(),e),this.constantlyForward&&d<OR&&(d=OR),t.radius=d,t.position.copy(h),p=t.radius,this.viewer.setMoveSpeed&&this.viewer.setMoveSpeed(p),this.stop())}}])}(),NR=function(){function u(){ue(this,u),this.onStartListeners=[],this.onEndListeners=[],this.element=null}return A(u,[{key:"onStart",value:function(e){this.onStartListeners.push(e)}},{key:"onEnd",value:function(e){this.onEndListeners.push(e)}}],[{key:"createButton",value:(n=J(X().mark(function e(a,t){var o,n,s,l,i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(e){e.style.position="absolute",e.style.bottom="20px",e.style.padding="12px 6px",e.style.border="1px solid #fff",e.style.borderRadius="4px",e.style.background="rgba(0,0,0,0.1)",e.style.color="#fff",e.style.font="normal 13px sans-serif",e.style.textAlign="center",e.style.opacity="0.7",e.style.outline="none",e.style.zIndex="999"},i=function(){var i=null;function e(e){e.addEventListener("end",r);var t,n=q(o.onStartListeners);try{for(n.s();!(t=n.n()).done;)(0,t.value)()}catch(e){n.e(e)}finally{n.f()}a.xr.setSession(e),l(),i=e}function r(){i.removeEventListener("end",r);var e,t=q(o.onEndListeners);try{for(t.s();!(e=t.n()).done;)(0,e.value)()}catch(e){t.e(e)}finally{t.f()}s(),i=null}o.element.style.display="",o.element.style.cursor="pointer",s(),o.element.onmouseenter=function(){o.element.style.opacity="1.0"},o.element.onmouseleave=function(){o.element.style.opacity="0.7"},o.element.onclick=function(){null===i?navigator.xr.requestSession("immersive-vr",{optionalFeatures:["local-floor","bounded-floor","hand-tracking"]}).then(e):i.end()}},l=function(){o.element.innerHTML='\n\t\t\t\t<div style="font-size: 0.5em;">EXIT</div>\n\t\t\t\t<div style="font-weight: bold;">VR</div>\n\t\t\t'},s=function(){o.element.innerHTML='\n\t\t\t\t<div style="font-size: 0.5em;">ENTER</div>\n\t\t\t\t<div style="font-weight: bold;">VR</div>\n\t\t\t'},t&&console.error('THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.'),o=new u,n=document.createElement("button"),o.element=n,"xr"in navigator)return o.element.id="VRButton",o.element.style.display="none",r(o.element),e.next=14,navigator.xr.isSessionSupported("immersive-vr");e.next=23;break;case 14:if(e.sent)return i(),e.abrupt("return",o);e.next=20;break;case 20:return e.abrupt("return",null);case 21:e.next=25;break;case 23:return!1===window.isSecureContext?console.log("WEBXR NEEDS HTTPS"):console.log("WEBXR not available"),e.abrupt("return",null);case 25:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})}]);var n}(),zR=(Zd="undefined"!=typeof self?self:void 0,Zl=function(){return n=[function(e,t,n){var i;void 0!==(n="function"==typeof(i=function(){var r=function(){},s="undefined",l=["trace","debug","info","warn","error"];function i(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function u(e,t){for(var n=0;n<l.length;n++){var i=l[n];this[i]=n<e?r:this.methodFactory(i,e,t)}this.log=this.debug}function c(e,t,n){return"debug"===(e=e)&&(e="log"),("undefined"==typeof console?"undefined":O(console))!==s&&(void 0!==console[e]?i(console,e):void 0!==console.log?i(console,"log"):r)||function(e,t,n){return function(){("undefined"==typeof console?"undefined":O(console))!==s&&(u.call(this,t,n),this[e].apply(this,arguments))}}.apply(this,arguments)}function t(n,e,t){var i,r=this,a="loglevel";function o(){var e;if(("undefined"==typeof window?"undefined":O(window))!==s){try{e=window.localStorage[a]}catch(e){}if(O(e)===s)try{var t=window.document.cookie,n=t.indexOf(encodeURIComponent(a)+"=");-1!==n&&(e=/^([^;]+)/.exec(t.slice(n))[1])}catch(e){}return e=void 0===r.levels[e]?void 0:e}}n&&(a+=":"+n),r.name=n,r.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},r.methodFactory=t||c,r.getLevel=function(){return i},r.setLevel=function(t,e){if(!("number"==typeof(t="string"==typeof t&&void 0!==r.levels[t.toUpperCase()]?r.levels[t.toUpperCase()]:t)&&0<=t&&t<=r.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(i=t,!1!==e&&function(){var e=(l[t]||"silent").toUpperCase();if(("undefined"==typeof window?"undefined":O(window))!==s){try{return window.localStorage[a]=e}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"="+e+";"}catch(e){}}}(),u.call(r,t,n),("undefined"==typeof console?"undefined":O(console))===s&&t<r.levels.SILENT)return"No console available for logging"},r.setDefaultLevel=function(e){o()||r.setLevel(e,!1)},r.enableAll=function(e){r.setLevel(r.levels.TRACE,e)},r.disableAll=function(e){r.setLevel(r.levels.SILENT,e)};t=o();r.setLevel(t=null==t?null==e?"WARN":e:t,!1)}var n=new t,a={},e=(n.getLogger=function(e){if("string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");return a[e]||(a[e]=new t(e,n.getLevel(),n.methodFactory))},("undefined"==typeof window?"undefined":O(window))!==s?window.log:void 0);return n.noConflict=function(){return("undefined"==typeof window?"undefined":O(window))!==s&&window.log===n&&(window.log=e),n},n.getLoggers=function(){return a},n})?i.call(t,n,t,e):i)&&(e.exports=n)},function(e,t,n){function p(e){this._pointer=0,this._data=e,this._eof=!1}function i(e,t){{if(e<=9)return t;if(10<=e&&e<=59)return parseFloat(t);if(60<=e&&e<=99)return parseInt(t);if(100<=e&&e<=109)return t;if(110<=e&&e<=149)return parseFloat(t);if(160<=e&&e<=179)return parseInt(t);if(210<=e&&e<=239)return parseFloat(t);if(270<=e&&e<=289)return parseInt(t);if(290<=e&&e<=299){if("0"===t)return!1;if("1"===t)return!0;throw TypeError("String '"+t+"' cannot be cast to Boolean type")}return 300<=e&&e<=369?t:370<=e&&e<=389?parseInt(t):390<=e&&e<=399?t:400<=e&&e<=409?parseInt(t):410<=e&&e<=419?t:420<=e&&e<=429?parseInt(t):430<=e&&e<=439?t:440<=e&&e<=459?parseInt(t):460<=e&&e<=469?parseFloat(t):470<=e&&e<=481||999===e||1e3<=e&&e<=1009?t:1010<=e&&e<=1059?parseFloat(t):1060<=e&&e<=1071?parseInt(t):(console.log("WARNING: Group code does not have a defined type: %j",{code:e,value:t}),t)}}n.r(t),p.prototype.next=function(){var e;if(this.hasNext())return e={code:parseInt(this._data[this._pointer])},this._pointer++,e.value=i(e.code,this._data[this._pointer].trim()),this._pointer++,0===e.code&&"EOF"===e.value&&(this._eof=!0),this.lastReadGroup=e;throw this._eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer])},p.prototype.peek=function(){var e;if(this.hasNext())return(e={code:parseInt(this._data[this._pointer])}).value=i(e.code,this._data[this._pointer+1].trim()),e;throw this._eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer])},p.prototype.rewind=function(e){this._pointer=this._pointer-2*(e=e||1)},p.prototype.hasNext=function(){return!(this._eof||this._pointer>this._data.length-2)},p.prototype.isEOF=function(){return this._eof};var f=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215];function r(e){var t={},n=(e.rewind(),e.next()),i=n.code;if(t.x=n.value,i+=10,(n=e.next()).code!=i)throw new Error("Expected code for point value to be "+i+" but got "+n.code+".");return t.y=n.value,i+=10,(n=e.next()).code!=i?e.rewind():t.z=n.value,t}function s(e,t){switch(t.code){case 0:e.type=t.value;break;case 5:e.handle=t.value;break;case 6:e.lineType=t.value;break;case 8:e.layer=t.value;break;case 48:e.lineTypeScale=t.value;break;case 60:e.visible=0===t.value;break;case 62:e.colorIndex=t.value,e.color=(n=Math.abs(t.value),f[n]);break;case 67:e.inPaperSpace=0!==t.value;break;case 100:break;case 330:e.ownerHandle=t.value;break;case 347:e.materialObjectHandle=t.value;break;case 370:e.lineweight=t.value;break;case 420:e.color=t.value;break;case 1e3:e.extendedData=e.extendedData||{},e.extendedData.customStrings=e.extendedData.customStrings||[],e.extendedData.customStrings.push(t.value);break;case 1001:e.extendedData=e.extendedData||{},e.extendedData.applicationName=t.value;break;default:return}var n}function a(){}function o(){}function l(){}function u(){}function c(){}function d(){}function h(){}function m(){}function v(){}function g(){}function A(){}function y(){}function w(){}function b(){}function x(){}function E(){}a.ForEntityName="3DFACE",a.prototype.parseEntity=function(e,t){var n={type:t.value,vertices:[]};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 70:n.shape=1==(1&t.value),n.hasContinuousLinetypePattern=128==(128&t.value);break;case 10:n.vertices=function(e,t){for(var n=[],i=!1,r=!1,a=0;a<=4;a++){for(var o={};"EOF"!==t&&0!==t.code&&!r;){switch(t.code){case 10:case 11:case 12:case 13:if(i){r=!0;continue}o.x=t.value,i=!0;break;case 20:case 21:case 22:case 23:o.y=t.value;break;case 30:case 31:case 32:case 33:o.z=t.value;break;default:return n}t=e.next()}n.push(o),r=i=!1}return e.rewind(),n}(e,t),t=e.lastReadGroup;break;default:s(n,t)}t=e.next()}return n},o.ForEntityName="ARC",o.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.center=r(e);break;case 40:n.radius=t.value;break;case 50:n.startAngle=Math.PI/180*t.value;break;case 51:n.endAngle=Math.PI/180*t.value,n.angleLength=n.endAngle-n.startAngle;break;default:s(n,t)}t=e.next()}return n},l.ForEntityName="ATTDEF",l.prototype.parseEntity=function(e,t){var n={type:t.value,scale:1,textStyle:"STANDARD"};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 1:n.text=t.value;break;case 2:n.tag=t.value;break;case 3:n.prompt=t.value;break;case 7:n.textStyle=t.value;break;case 10:n.startPoint=r(e);break;case 11:n.endPoint=r(e);break;case 39:n.thickness=t.value;break;case 40:n.textHeight=t.value;break;case 41:n.scale=t.value;break;case 50:n.rotation=t.value;break;case 51:n.obliqueAngle=t.value;break;case 70:n.invisible=!!(1&t.value),n.constant=!!(2&t.value),n.verificationRequired=!!(4&t.value),n.preset=!!(8&t.value);break;case 71:n.backwards=!!(2&t.value),n.mirrored=!!(4&t.value);break;case 72:n.horizontalJustification=t.value;break;case 73:n.fieldLength=t.value;break;case 74:n.verticalJustification=t.value;break;case 100:break;case 210:n.extrusionDirectionX=t.value;break;case 220:n.extrusionDirectionY=t.value;break;case 230:n.extrusionDirectionZ=t.value;break;default:s(n,t)}t=e.next()}return n},u.ForEntityName="CIRCLE",u.prototype.parseEntity=function(e,t){var n,i={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:i.center=r(e);break;case 40:i.radius=t.value;break;case 50:i.startAngle=Math.PI/180*t.value;break;case 51:(n=Math.PI/180*t.value)<i.startAngle?i.angleLength=n+2*Math.PI-i.startAngle:i.angleLength=n-i.startAngle,i.endAngle=n;break;default:s(i,t)}t=e.next()}return i},c.ForEntityName="DIMENSION",c.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 2:n.block=t.value;break;case 10:n.anchorPoint=r(e);break;case 11:n.middleOfText=r(e);break;case 12:n.insertionPoint=r(e);break;case 13:n.linearOrAngularPoint1=r(e);break;case 14:n.linearOrAngularPoint2=r(e);break;case 15:n.diameterOrRadiusPoint=r(e);break;case 16:n.arcPoint=r(e);break;case 70:n.dimensionType=t.value;break;case 71:n.attachmentPoint=t.value;break;case 42:n.actualMeasurement=t.value;break;case 1:n.text=t.value;break;case 50:n.angle=t.value;break;default:s(n,t)}t=e.next()}return n},d.ForEntityName="ELLIPSE",d.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.center=r(e);break;case 11:n.majorAxisEndPoint=r(e);break;case 40:n.axisRatio=t.value;break;case 41:n.startAngle=t.value;break;case 42:n.endAngle=t.value;break;case 2:n.name=t.value;break;default:s(n,t)}t=e.next()}return n},h.ForEntityName="INSERT",h.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 2:n.name=t.value;break;case 41:n.xScale=t.value;break;case 42:n.yScale=t.value;break;case 43:n.zScale=t.value;break;case 10:n.position=r(e);break;case 50:n.rotation=t.value;break;case 70:n.columnCount=t.value;break;case 71:n.rowCount=t.value;break;case 44:n.columnSpacing=t.value;break;case 45:n.rowSpacing=t.value;break;case 210:n.extrusionDirection=r(e);break;default:s(n,t)}t=e.next()}return n},m.ForEntityName="LINE",m.prototype.parseEntity=function(e,t){var n={type:t.value,vertices:[]};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.vertices.unshift(r(e));break;case 11:n.vertices.push(r(e));break;case 210:n.extrusionDirection=r(e);break;case 100:break;default:s(n,t)}t=e.next()}return n},v.ForEntityName="LWPOLYLINE",v.prototype.parseEntity=function(e,t){var n,i={type:t.value,vertices:[]},r=0;for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 38:i.elevation=t.value;break;case 39:i.depth=t.value;break;case 70:i.shape=1==(1&t.value),i.hasContinuousLinetypePattern=128==(128&t.value);break;case 90:r=t.value;break;case 10:(n=i.vertices).push.apply(n,Fe(function(e,t){if(!e||e<=0)throw Error("n must be greater than 0 verticies");for(var n=[],i=!1,r=!1,a=t.lastReadGroup,o=0;o<e;o++){for(var s={};"EOF"!==a&&0!==a.code&&!r;){switch(a.code){case 10:if(i){r=!0;continue}s.x=a.value,i=!0;break;case 20:s.y=a.value;break;case 30:s.z=a.value;break;case 40:s.startWidth=a.value;break;case 41:s.endWidth=a.value;break;case 42:0!=a.value&&(s.bulge=a.value);break;default:return i&&n.push(s),n}a=t.next()}n.push(s),r=i=!1}return t.rewind(),n}(r,e))),i.vertices=i.vertices.filter(function(e){return null!=e.x});break;case 43:0!==t.value&&(i.width=t.value);break;case 210:i.extrusionDirectionX=t.value;break;case 220:i.extrusionDirectionY=t.value;break;case 230:i.extrusionDirectionZ=t.value;break;default:s(i,t)}t=e.next()}return i},g.ForEntityName="MTEXT",g.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 3:case 1:n.text?n.text+=t.value:n.text=t.value;break;case 10:n.position=r(e);break;case 40:n.height=t.value;break;case 41:n.width=t.value;break;case 50:n.rotation=t.value;break;case 71:n.attachmentPoint=t.value;break;case 72:n.drawingDirection=t.value;break;default:s(n,t)}t=e.next()}return n},A.ForEntityName="POINT",A.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.position=r(e);break;case 39:n.thickness=t.value;break;case 210:n.extrusionDirection=r(e);break;case 100:break;default:s(n,t)}t=e.next()}return n},y.ForEntityName="VERTEX",y.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.x=t.value;break;case 20:n.y=t.value;break;case 30:n.z=t.value;break;case 40:case 41:case 42:0!=t.value&&(n.bulge=t.value);break;case 70:n.curveFittingVertex=0!=(1&t.value),n.curveFitTangent=0!=(2&t.value),n.splineVertex=0!=(8&t.value),n.splineControlPoint=0!=(16&t.value),n.threeDPolylineVertex=0!=(32&t.value),n.threeDPolylineMesh=0!=(64&t.value),n.polyfaceMeshVertex=0!=(128&t.value);break;case 50:case 71:n.faceA=t.value;break;case 72:n.faceB=t.value;break;case 73:n.faceC=t.value;break;case 74:n.faceD=t.value;break;default:s(n,t)}t=e.next()}return n},w.ForEntityName="POLYLINE",w.prototype.parseEntity=function(e,t){var n={type:t.value,vertices:[]};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:case 20:case 30:case 39:n.thickness=t.value;break;case 40:case 41:break;case 70:n.shape=0!=(1&t.value),n.includesCurveFitVertices=0!=(2&t.value),n.includesSplineFitVertices=0!=(4&t.value),n.is3dPolyline=0!=(8&t.value),n.is3dPolygonMesh=0!=(16&t.value),n.is3dPolygonMeshClosed=0!=(32&t.value),n.isPolyfaceMesh=0!=(64&t.value),n.hasContinuousLinetypePattern=0!=(128&t.value);break;case 71:case 72:case 73:case 74:case 75:break;case 210:n.extrusionDirection=r(e);break;default:s(n,t)}t=e.next()}return n.vertices=function(e,t){for(var n=new y,i=[];!e.isEOF();)if(0===t.code)if("VERTEX"===t.value)i.push(n.parseEntity(e,t)),t=e.lastReadGroup;else if("SEQEND"===t.value){o=a=r=void 0;var r=e,a=t,o={type:a.value};for(a=r.next();"EOF"!=a&&0!=a.code;)s(o,a),a=r.next();break}return i}(e,t),n},b.ForEntityName="SOLID",b.prototype.parseEntity=function(e,t){var n={type:t.value,points:[]};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.points[0]=r(e);break;case 11:n.points[1]=r(e);break;case 12:n.points[2]=r(e);break;case 13:n.points[3]=r(e);break;case 210:n.extrusionDirection=r(e);break;default:s(n,t)}t=e.next()}return n},x.ForEntityName="SPLINE",x.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.controlPoints||(n.controlPoints=[]),n.controlPoints.push(r(e));break;case 11:n.fitPoints||(n.fitPoints=[]),n.fitPoints.push(r(e));break;case 12:n.startTangent=r(e);break;case 13:n.endTangent=r(e);break;case 40:n.knotValues||(n.knotValues=[]),n.knotValues.push(t.value);break;case 70:0!=(1&t.value)&&(n.closed=!0),0!=(2&t.value)&&(n.periodic=!0),0!=(4&t.value)&&(n.rational=!0),0!=(8&t.value)&&(n.planar=!0),0!=(16&t.value)&&(n.planar=!0,n.linear=!0);break;case 71:n.degreeOfSplineCurve=t.value;break;case 72:n.numberOfKnots=t.value;break;case 73:n.numberOfControlPoints=t.value;break;case 74:n.numberOfFitPoints=t.value;break;case 210:n.normalVector=r(e);break;default:s(n,t)}t=e.next()}return n},E.ForEntityName="TEXT",E.prototype.parseEntity=function(e,t){var n={type:t.value};for(t=e.next();"EOF"!==t&&0!==t.code;){switch(t.code){case 10:n.startPoint=r(e);break;case 11:n.endPoint=r(e);break;case 40:n.textHeight=t.value;break;case 41:n.xScale=t.value;break;case 50:n.rotation=t.value;break;case 1:n.text=t.value;break;case 72:n.halign=t.value;break;case 73:n.valign=t.value;break;default:s(n,t)}t=e.next()}return n};var C=n(0);function B(){var e;this._entityHandlers={},(e=this).registerEntityHandler(a),e.registerEntityHandler(o),e.registerEntityHandler(l),e.registerEntityHandler(u),e.registerEntityHandler(c),e.registerEntityHandler(d),e.registerEntityHandler(h),e.registerEntityHandler(m),e.registerEntityHandler(v),e.registerEntityHandler(g),e.registerEntityHandler(A),e.registerEntityHandler(w),e.registerEntityHandler(b),e.registerEntityHandler(x),e.registerEntityHandler(E)}function M(e){C.debug("unhandled group "+S(e))}function S(e){return e.code+":"+e.value}C.setLevel("error"),B.prototype.parse=function(e,t){throw new Error("read() not implemented. Use readSync()")},B.prototype.registerEntityHandler=function(e){var t=new e;this._entityHandlers[e.ForEntityName]=t},B.prototype.parseSync=function(e){return"string"==typeof e?this._parse(e):(console.error("Cannot read dxf source of type `"+O(e)),null)},B.prototype.parseStream=function(e,t){var n="",i=this;e.on("data",function(e){n+=e}),e.on("end",function(){try{var e=i._parse(n)}catch(e){return t(e)}t(null,e)}),e.on("error",function(e){t(e)})},B.prototype._parse=function(e){var a,o,t={},n=0,e=e.split(/\r\n|\r|\n/g);if((a=new p(e)).hasNext()){var r=this,s=function(e,t){return o.code===e&&o.value===t},i=function(){var e={};for(o=a.next();"EOF"!==o.value;){switch(o.code){case 1:e.xrefPath=o.value,o=a.next();break;case 2:e.name=o.value,o=a.next();break;case 3:e.name2=o.value,o=a.next();break;case 5:e.handle=o.value,o=a.next();break;case 8:e.layer=o.value,o=a.next();break;case 10:e.position=d(),o=a.next();break;case 67:e.paperSpace=!(!o.value||1!=o.value),o=a.next();break;case 70:0!=o.value&&(e.type=o.value),o=a.next();break;case 100:o=a.next();break;case 330:e.ownerHandle=o.value,o=a.next();break;case 0:"ENDBLK"!=o.value&&(e.entities=c(!0));break;default:M(o),o=a.next()}if(s(0,"ENDBLK")){o=a.next();break}}return e},l=function(){var e,t=u[o.value],n={},i=0;for(o=a.next();!s(0,"ENDTAB");)switch(o.code){case 5:n.handle=o.value,o=a.next();break;case 330:n.ownerHandle=o.value,o=a.next();break;case 100:o=("AcDbSymbolTable"===o.value||M(o),a.next());break;case 70:i=o.value,o=a.next();break;case 0:o.value===t.dxfSymbolName?n[t.tableRecordsProperty]=t.parseTableRecords():(M(o),o=a.next());break;default:M(o),o=a.next()}var r=n[t.tableRecordsProperty];return r&&(r.constructor===Array?e=r.length:"object"==O(r)&&(e=Object.keys(r).length),i!==e)&&C.warn("Parsed "+e+" "+t.dxfSymbolName+"'s but expected "+i),o=a.next(),n},u={VPORT:{tableRecordsProperty:"viewPorts",tableName:"viewPort",dxfSymbolName:"VPORT",parseTableRecords:function(){var e=[],t={};for(C.debug("ViewPort {"),o=a.next();!s(0,"ENDTAB");)switch(o.code){case 2:t.name=o.value,o=a.next();break;case 10:t.lowerLeftCorner=d(),o=a.next();break;case 11:t.upperRightCorner=d(),o=a.next();break;case 12:t.center=d(),o=a.next();break;case 13:t.snapBasePoint=d(),o=a.next();break;case 14:t.snapSpacing=d(),o=a.next();break;case 15:t.gridSpacing=d(),o=a.next();break;case 16:t.viewDirectionFromTarget=d(),o=a.next();break;case 17:t.viewTarget=d(),o=a.next();break;case 42:t.lensLength=o.value,o=a.next();break;case 43:t.frontClippingPlane=o.value,o=a.next();break;case 44:t.backClippingPlane=o.value,o=a.next();break;case 45:t.viewHeight=o.value,o=a.next();break;case 50:t.snapRotationAngle=o.value,o=a.next();break;case 51:t.viewTwistAngle=o.value,o=a.next();break;case 79:t.orthographicType=o.value,o=a.next();break;case 110:t.ucsOrigin=d(),o=a.next();break;case 111:t.ucsXAxis=d(),o=a.next();break;case 112:t.ucsYAxis=d(),o=a.next();break;case 110:t.ucsOrigin=d(),o=a.next();break;case 281:t.renderMode=o.value,o=a.next();break;case 281:t.defaultLightingType=o.value,o=a.next();break;case 292:t.defaultLightingOn=o.value,o=a.next();break;case 330:t.ownerHandle=o.value,o=a.next();break;case 63:case 421:case 431:t.ambientColor=o.value,o=a.next();break;case 0:"VPORT"===o.value&&(C.debug("}"),e.push(t),C.debug("ViewPort {"),t={},o=a.next());break;default:M(o),o=a.next()}return C.debug("}"),e.push(t),e}},LTYPE:{tableRecordsProperty:"lineTypes",tableName:"lineType",dxfSymbolName:"LTYPE",parseTableRecords:function(){var e,t,n={},i={};for(C.debug("LType {"),o=a.next();!s(0,"ENDTAB");)switch(o.code){case 2:i.name=o.value,e=o.value,o=a.next();break;case 3:i.description=o.value,o=a.next();break;case 73:0<(t=o.value)&&(i.pattern=[]),o=a.next();break;case 40:i.patternLength=o.value,o=a.next();break;case 49:i.pattern.push(o.value),o=a.next();break;case 0:C.debug("}"),0<t&&t!==i.pattern.length&&C.warn("lengths do not match on LTYPE pattern"),n[e]=i,i={},C.debug("LType {"),o=a.next();break;default:o=a.next()}return C.debug("}"),n[e]=i,n}},LAYER:{tableRecordsProperty:"layers",tableName:"layer",dxfSymbolName:"LAYER",parseTableRecords:function(){var e,t,n={},i={};for(C.debug("Layer {"),o=a.next();!s(0,"ENDTAB");)switch(o.code){case 2:i.name=o.value,e=o.value,o=a.next();break;case 62:i.visible=0<=o.value,i.colorIndex=Math.abs(o.value),i.color=(t=i.colorIndex,f[t]),o=a.next();break;case 70:i.frozen=0!=(1&o.value)||0!=(2&o.value),o=a.next();break;case 0:"LAYER"===o.value&&(C.debug("}"),n[e]=i,C.debug("Layer {"),i={},e=void 0,o=a.next());break;default:M(o),o=a.next()}return C.debug("}"),n[e]=i,n}}},c=function(e){var t=[],n=e?"ENDBLK":"ENDSEC";for(e||(o=a.next());;)if(0===o.code){if(o.value===n)break;var i=r._entityHandlers[o.value];if(null==i){C.warn("Unhandled entity "+o.value),o=a.next();continue}C.debug(o.value+" {"),i=i.parseEntity(a,o),o=a.lastReadGroup,C.debug("}"),h(i),t.push(i)}else o=a.next();return"ENDSEC"==n&&(o=a.next()),t},d=function(){var e={},t=o.code;if(e.x=o.value,t+=10,(o=a.next()).code!=t)throw new Error("Expected code for point value to be "+t+" but got "+o.code+".");return e.y=o.value,t+=10,(o=a.next()).code!=t?a.rewind():e.z=o.value,e},h=function(e){if(!e)throw new TypeError("entity cannot be undefined or null");e.handle||(e.handle=n++)};for(o=a.next();!a.isEOF();)if(0===o.code&&"SECTION"===o.value){if(2!==(o=a.next()).code){console.error("Unexpected code %s after 0:SECTION",S(o)),o=a.next();continue}"HEADER"===o.value?(C.debug("> HEADER"),t.header=function(){var e=null,t=null,n={};for(o=a.next();;){if(s(0,"ENDSEC")){e&&(n[e]=t);break}9===o.code?(e&&(n[e]=t),e=o.value):10===o.code?t={x:o.value}:20===o.code?t.y=o.value:30===o.code?t.z=o.value:t=o.value,o=a.next()}return o=a.next(),n}(),C.debug("<")):"BLOCKS"===o.value?(C.debug("> BLOCKS"),t.blocks=function(){var e,t={};for(o=a.next();"EOF"!==o.value&&!s(0,"ENDSEC");)s(0,"BLOCK")?(C.debug("block {"),e=i(),C.debug("}"),h(e),e.name?t[e.name]=e:C.error('block with handle "'+e.handle+'" is missing a name.')):(M(o),o=a.next());return t}(),C.debug("<")):"ENTITIES"===o.value?(C.debug("> ENTITIES"),t.entities=c(!1),C.debug("<")):"TABLES"===o.value?(C.debug("> TABLES"),t.tables=function(){var e={};for(o=a.next();"EOF"!==o.value&&!s(0,"ENDSEC");)s(0,"TABLE")?(o=a.next(),u[o.value]?(C.debug(o.value+" Table {"),e[u[o.value].tableName]=l(),C.debug("}")):C.debug("Unhandled Table "+o.value)):o=a.next();return o=a.next(),e}(),C.debug("<")):"EOF"===o.value?C.debug("EOF"):C.warn("Skipping section '%s'",o.value)}else o=a.next();return t}throw Error("Empty file")},t.default=B}],i={},r.m=n,r.c=i,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==O(t)&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1).default;function r(e){var t;return(i[e]||(t=i[e]={i:e,l:!1,exports:{}},n[e].call(t.exports,t,t.exports,r),t.l=!0,t)).exports}var n,i},"object"==(void 0===W?"undefined":O(W))&&"object"==("undefined"==typeof module?"undefined":O(module))?module.exports=Zl():"function"==typeof define&&define.amd?define([],Zl):"object"==(void 0===W?"undefined":O(W))?W.DxfParser=Zl():Zd.DxfParser=Zl(),function(){function t(){var e;return ue(this,t),(e=le(this,t)).parser=new Potree.DxfParser,e}return v(t,Qn),A(t,[{key:"load",value:function(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Potree.loadFile(e,{returnText:!0},function(e){e=n.parser.parseSync(e),console.log(e),e=n.createModel(e,i);t(e)})}},{key:"createModel",value:function(e){for(var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=new Z,r=0;r<e.entities.length;r++)(t=GR(e.entities[r],e,n.unsupportTypes))&&((new K).setFromObject(t),i.add(t));return i}}])}());function GR(e,t,n,i){var r,a,o,s,l,u,c,d,h;if(!n||!n.includes(e.type))return"CIRCLE"===e.type||"ARC"===e.type?(c=t,h="CIRCLE"===(u=e).type?(d=u.startAngle||0)+2*Math.PI:(d=u.startAngle,u.endAngle),d=new Qc(0,0,u.radius,d,h).getPoints(32),h=(new V).setFromPoints(d),d=new wl({color:QR(u,c)}),(c=new Ml(h,d)).position.x=u.center.x,c.position.y=u.center.y,c.position.z=u.center.z,h=c):"LWPOLYLINE"===e.type||"LINE"===e.type||"POLYLINE"===e.type?h=HR(e,t):"TEXT"===e.type?h=function(e,t){var n;{var i;n=new Yu(e.text,{height:0,size:e.textHeight||12}),e.rotation&&(i=e.rotation*Math.PI/180,n.rotateZ(i))}return i=new R({color:QR(e,t)}),(t=new Q(n,i)).position.x=e.startPoint.x,t.position.y=e.startPoint.y,t.position.z=e.startPoint.z,t}(e,t):"SOLID"===e.type?h=function(e,t){var n,i=new Wl,r=((n=i.vertices).push(new Oe(e.points[0].x,e.points[0].y,e.points[0].z)),n.push(new Oe(e.points[1].x,e.points[1].y,e.points[1].z)),n.push(new Oe(e.points[2].x,e.points[2].y,e.points[2].z)),n.push(new Oe(e.points[3].x,e.points[3].y,e.points[3].z)),new Oe),a=new Oe;r.subVectors(n[1],n[0]),a.subVectors(n[2],n[0]),r.cross(a),r.z<0?(i.faces.push(new br(2,1,0)),i.faces.push(new br(2,3,1))):(i.faces.push(new br(0,1,2)),i.faces.push(new br(1,3,2)));return n=new R({color:QR(e,t)}),new Q(i,n)}(e,t):"POINT"===e.type?(d=e,u=t,(c=new Wl).vertices.push(new Oe(d.position.x,d.position.y,d.position.z)),d=QR(d,u),(u=new Float32Array(3))[0]=d.r,u[1]=d.g,u[2]=d.b,c.colors=u,c.computeBoundingBox(),d=new Dl({size:.05,vertexColors:Tp}),h=new Fl(c,d)):"INSERT"===e.type?h=VR(e,t,n,i):"SPLINE"===e.type?h=function(e,t){var n,t=QR(e,t),i=e.controlPoints.map(function(e){return new Re(e.x,e.y)}),r=[];if(2===e.degreeOfSplineCurve||3===e.degreeOfSplineCurve)for(var a=0;a+2<i.length;a+=2)n=new(2===e.degreeOfSplineCurve?rd:ad)(i[a],i[a+1],i[a+2]),r.push.apply(r,n.getPoints(50));else n=new od(i),r=n.getPoints(100);var o=(new V).setFromPoints(r),t=new wl({linewidth:1,color:t});return new Ml(o,t)}(e,t):"MTEXT"===e.type?h=function(e,t){var t=QR(e,t),n=new Yu(e.text,{size:.8*e.height,height:1}),t=new R({color:t}),i=new Q(n,t),n=new K,r=(n.setFromObject(i),n.max.x-n.min.x);if(r>e.width)return void console.log("Can't render this multipline MTEXT entity, sorry.",e);switch(i.position.z=0,e.attachmentPoint){case 1:i.position.x=e.position.x,i.position.y=e.position.y-e.height;break;case 2:i.position.x=e.position.x-r/2,i.position.y=e.position.y-e.height;break;case 3:i.position.x=e.position.x-r,i.position.y=e.position.y-e.height;break;case 4:i.position.x=e.position.x,i.position.y=e.position.y-e.height/2;break;case 5:i.position.x=e.position.x-r/2,i.position.y=e.position.y-e.height/2;break;case 6:i.position.x=e.position.x-r,i.position.y=e.position.y-e.height/2;break;case 7:i.position.x=e.position.x,i.position.y=e.position.y;break;case 8:i.position.x=e.position.x-r/2,i.position.y=e.position.y;break;case 9:i.position.x=e.position.x-r,i.position.y=e.position.y;break;default:return}return i}(e,t):"ELLIPSE"===e.type?(i=QR(n=e,i=t),o=Math.sqrt(Math.pow(n.majorAxisEndPoint.x,2)+Math.pow(n.majorAxisEndPoint.y,2)),s=o*n.axisRatio,l=Math.atan2(n.majorAxisEndPoint.y,n.majorAxisEndPoint.x),o=new Vc(n.center.x,n.center.y,o,s,n.startAngle,n.endAngle,!1,l).getPoints(50),s=(new V).setFromPoints(o),n=new wl({linewidth:1,color:i}),h=new Ml(s,n)):"DIMENSION"===e.type?0==(l=7&e.dimensionType)?h=VR(e,t,r,a,!0):console.log("Unsupported Dimension type: "+l):console.log("Unsupported Entity Type: "+e.type),(h="LWPOLYLINE"!==e.type&&"LINE"!==e.type&&"POLYLINE"!==e.type?h:HR(e,t))&&(h.dxfInfo=e),h;console.warn("����һ��dxf������Ƶ�type��",e.type)}function HR(e,t){var n,i,r,a,o,s=new Wl,l=QR(e,t);if(!e.vertices)return console.log("entity missing vertices.");for(o=0;o<e.vertices.length;o++)e.vertices[o].bulge?(a=e.vertices[o].bulge,r=e.vertices[o],i=o+1<e.vertices.length?e.vertices[o+1]:s.vertices[0],r=new JR.BulgeGeometry(r,i,a),s.vertices.push.apply(s.vertices,r.vertices)):(i=e.vertices[o],s.vertices.push(new Oe(i.x,i.y,0)));return e.shape&&s.vertices.push(s.vertices[0]),new Ml(s,(n=e.lineType?t.tables.lineType.lineTypes[e.lineType]:n)&&n.pattern&&0!==n.pattern.length?new pc({color:l,gapSize:4,dashSize:4}):new wl({linewidth:1,color:l}))}function VR(e,t,n,i,r){var a=t.blocks[e.name];if(!a.entities)return null;for(var o=new Z,s=(i&&i.add(o),r||(e.position&&(o.position.x=e.position.x,o.position.y=e.position.y,o.position.z=e.position.z),e.xScale&&(o.scale.x=e.xScale),e.yScale&&(o.scale.y=e.yScale),e.rotation&&(o.rotation.z=e.rotation*Math.PI/180),null!=e.zScale&&e.extrusionDirection&&(o.position.x*=Math.sign(e.zScale),o.scale.x*=Math.sign(e.zScale),o.rotation.z*=Math.sign(e.zScale))),o.updateMatrixWorld(),a.entities.filter(function(e){return!1!==e.visible})),l=0;l<s.length;l++){var u=GR(s[l],t,n,o);u&&!o.children.includes(u)&&o.add(u)}return o}function QR(e,t){var n=0;return e.color?n=e.color:t.tables&&t.tables.layer&&t.tables.layer.layers[e.layer]&&(n=t.tables.layer.layers[e.layer].color),n=null!=n&&16777215!==n?n:0}var jR,WR,JR={Math:{}},qR=(JR.Math.angle2=function(e,t){e=new Re(e.x,e.y),t=new Re(t.x,t.y);return t.sub(e),t.normalize(),t.y<0?-Math.acos(t.x):Math.acos(t.x)},JR.Math.polar=function(e,t,n){var i={};return i.x=e.x+t*Math.cos(n),i.y=e.y+t*Math.sin(n),i},JR.BulgeGeometry=function(e,t,n,i){var r,a,o,s,l,u,c;for(Wl.call(this),this.startPoint=s=e?new Re(e.x,e.y):new Re(0,0),this.endPoint=t=t?new Re(t.x,t.y):new Re(1,0),this.bulge=n=n||1,n=4*Math.atan(n),l=s.distanceTo(t)/2/Math.sin(n/2),o=JR.Math.polar(e,l,JR.Math.angle2(s,t)+(Math.PI/2-n/2)),this.segments=i=i||Math.max(Math.abs(Math.ceil(n/(Math.PI/18))),6),u=JR.Math.angle2(o,s),c=n/i,this.vertices.push(new Oe(s.x,s.y,0)),a=1;a<=i-1;a++)r=JR.Math.polar(o,Math.abs(l),u+c*a),this.vertices.push(new Oe(r.x,r.y,0))},JR.BulgeGeometry.prototype=Object.create(Wl.prototype),console.log(pp),console.log(pp),new Dc),YR={},XR=[],qh=(Potree.isIframeChild=window.parent!=window,function(){function y(e,t){var i,n,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};for(n in ue(this,y),i=le(this,y,[e,$.extend(r,{name:"mainViewer",antialias:!0,preserveDrawingBuffer:!0})]),window.viewer=i,jR=t,"pano"==Potree.settings.editType||"merge"==Potree.settings.editType?(i.modules={Alignment:Hx,SiteModel:Yx,volumeComputer:new zE},Potree.settings.useDepthTex=!1,"pano"==Potree.settings.editType?i.modules.PanoEditor=RE:"merge"==Potree.settings.editType&&(i.modules.MergeEditor=$x,i.modules.CamAniEditor=xE)):i.modules={Clip:Nx,Alignment:Hx,SiteModel:Yx,RouteGuider:new iE,clipping:new aE,ParticleEditor:bE,CamAniEditor:xE,volumeComputer:new zE,MergeEditor:$x},Potree.timeCollect={depthSamChangeImg:{minCount:200,median:25}},Potree.timeCollect)Potree.timeCollect[n].measures=[],Potree.timeCollect[n].sum=0;setTimeout(function(){for(var e in Potree.timeCollect)Potree.timeCollect[e].start=!0},2e3),i.navigateMode="free",i.isEdit=!0,i.waitQueue=[],i.unitConvert=new Qb,i.visible=!0,i.fpVisiDatasets=[],i.atDatasets=[],i.objs=new Z,i.testMaxNodeCount=0,i.tiles3dVisiVCount=0,Potree.Features.EXT_DEPTH.isSupported(i.renderer.getContext())||console.error("ExtFragDepth unsupported! 边缘增强和测量线遮挡失效"),i.guiLoaded=!1,i.guiLoadTasks=[],i.onVrListeners=[],i.messages=[],i.elMessages=$('\n\t\t<div id="message_listing" \n\t\t\tstyle="position: absolute; z-index: 1000; left: 10px; bottom: 10px">\n\t\t</div>'),$(e).append(i.elMessages),i.fakeMeasure={};try{Potree.settings.isOfficial||(0===$(e).find("#potree_map").length&&(a=$('\n <div id="potree_map" class="mapBox" style="position: absolute; left: 50px; top: 50px; width: 400px; height: 400px; display: none">\n <div id="potree_map_header" style="position: absolute; width: 100%; height: 25px; top: 0px; background-color: rgba(0,0,0,0.5); z-index: 1000; border-top-left-radius: 3px; border-top-right-radius: 3px;">\n </div>\n <div id="potree_map_content" class="map" style="position: absolute; z-index: 100; top: 25px; width: 100%; height: calc(100% - 25px); border: 2px solid rgba(0,0,0,0.5); box-sizing: border-box;"></div>\n </div>\n '),$(e).append(a)),0===$(e).find("#potree_description").length&&(o=$('<div id="potree_description" class="potree_info_text"></div>'),$(e).append(o)),0===$(e).find("#potree_annotations").length&&(s=$('\n <div id="potree_annotation_container" \n style="position: absolute; z-index: 100000; width: 100%; height: 100%; pointer-events: none;"></div>'),$(e).append(s)),0===$(e).find("#potree_quick_buttons").length&&(l=$('\n <div id="potree_quick_buttons" class="quick_buttons_container" style="">\n </div>\n '),$(e).append(l)),$(e).append($("<div id='potree_labels'></div>")),jR)||"merge"==Potree.settings.editType||(jR=$("<div id='mapGaode'></div>"),$(e).append(jR),jR=jR[0]),i.tiles3dMemoryUsage=0,i.pointCloudLoadedCallback=r.onPointCloudLoaded||function(){},i.server=null,i.fov=60,i.isFlipYZ=!1,i.useDEMCollisions=!1,i.generateDEM=!1,i.minNodeSize=30,i.edlStrength=1,i.edlRadius=1.4,i.edlOpacity=1,i.useEDL=!1,i.description="",i.classifications=xm.DEFAULT,i.moveSpeed=1,i.lengthUnit=Im.METER,i.lengthUnitDisplay=Im.METER,i.showBoundingBox=!1,i.showAnnotations=!0,i.freeze=!1,i.elevationGradientRepeat=Sm.CLAMP,i.filterReturnNumberRange=[0,7],i.filterNumberOfReturnsRange=[0,7],i.filterGPSTimeRange=[-1/0,1/0],i.filterPointSourceIDRange=[0,65535],i.potreeRenderer=null,i.edlRenderer=null,i.pRenderer=null,i.scene=null,i.sceneVR=null,i.overlay=null,i.overlayCamera=null,i.inputHandler=null,i.controls=null,i.clippingTool=null,i.transformationTool=null,i.navigationCube=null,i.compass=null,i.skybox=null,i.clock=new Wd,i.background=null,i.buffers=new Map,r.noDragAndDrop||i.initDragAndDrop(),"undefined"!=typeof Stats&&(i.stats=new Stats,i.stats.showPanel(0),document.body.appendChild(i.stats.dom)),i.overlay=new Fs,i.overlayCamera=new Ad(0,1,1,0,-1e3,1e3),i.pRenderer=new E1(i.renderer);i.shadowTestCam=new ya(90,1,2.5,10),i.shadowTestCam.position.set(3.5,-2.8,8.561),i.shadowTestCam.lookAt(new Oe(0,0,4.87));var a,o,s,l,u=new mv(i.renderer),c=(i.sceneVR=new Fs,i.setScene(u),i.composer=new kR(i.renderer),i.composer.scaleRatio=4,i.composer.readTarget=!0,i.outlinePass=new RR),d=(c.renderToScreen=!0,c.enabled=!1,i.composer.addPass(c),c.edgeStrength=4,c.edgeGlow=0,c.visibleEdgeColor=new Se("#09a1b3"),i.mainViewport=new og(i.scene.view,i.scene.cameraP,{left:0,bottom:0,width:1,height:1,name:"MainView"}),i.viewports=[i.mainViewport],Potree.settings.showCompass&&(i.compass=new f1(Potree.settings.compassDom,i.mainViewport)),i.magnifier=new WE(i),i.reticule=new YE(i),i.scene.scene.add(i.magnifier),i.scene.scene.add(i.reticule),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(i.mapViewer=new Z0(jR)),i.inputHandler=new rg(i,i.scene.scene),i.inputHandler.containsMouse=!0,i.clippingTool=new UA(i),i.transformationTool=new zy(i),i.navigationCube=new _1(i),i.navigationCube.visible=!1,i.createControls(),i.clippingTool.setScene(i.scene),function(e){1===i.scene.pointclouds.length&&(e=e.pointcloud.boundingBox.getSize(new Oe).length(),i.setMoveSpeed(e/=2e3))}),h=function(e){i.inputHandler.deselect(e.volume)};i.addEventListener("scene_changed",function(e){i.inputHandler.setScene(e.scene),i.clippingTool.setScene(i.scene),e.scene.hasEventListener("pointcloud_added",d)||e.scene.addEventListener("pointcloud_added",d),e.scene.hasEventListener("volume_removed",d)||e.scene.addEventListener("volume_removed",h)}),i.scene.addEventListener("volume_removed",h),i.scene.addEventListener("pointcloud_added",d),i.setFOV(60),i.setEDLEnabled(!1),i.setEDLRadius(3),i.setEDLStrength(.01),i.setEDLOpacity(1),i.setPointBudget(1e6),i.setShowBoundingBox(!1),i.setFreeze(!1),i.setControls(i.fpControls),i.setBackground(new Se(Potree.config.background),1),i.scaleFactor=1,i.loadSettingsFromURL(),i.renderer.setAnimationLoop(i.loop.bind(i)),i.loadGUI=i.loadGUI.bind(i),i.annotationTool=new Ob(i),i.measuringTool=new ly(i),i.volumeTool=new Jm(i),i.tagTool=new p1(i),Ub.init(i,i.mapViewer?[i,i.mapViewer]:[i]),("pano"==Potree.settings.editType?i.modules.PanoEditor:"merge"==Potree.settings.editType?i.modules.MergeEditor:(i.modules.SiteModel.init(),i.modules.ParticleEditor)).init(),i.modules.Alignment.init(),i.images360=new W0(i),i.scene.scene.add(i.objs),YR={objLoader:new XE(qR),mtlLoader:new $E(qR),glbLoader:new IC(void 0,i.renderer,Potree.settings.libsUrl),plyLoader:new DR(qR),dxfLoader:new zR,shapeLoader:new Potree.ShapefileLoader},i.modules.volumeComputer&&i.modules.volumeComputer.init()}catch(e){i.onCrash(e)}var p="",f=(Object.defineProperty(Potree.settings,"pointDensity",{get:function(){return p},set:function(e){var t,n;e&&(n=(t=Potree.config.pointDensity[e]).pointBudget,"magnifier"==e?n=Math.max(Potree.pointBudget,Potree.config.pointDensity.magnifier.pointBudget):i.magnifier.visible&&(n=Math.max(n,Potree.config.pointDensity.magnifier.pointBudget)),viewer.setMinNodeSize(t.minNodeSize||Potree.config.minNodeSize),viewer.setPointBudget(n),p=e,i.setPointLevels(),i.dispatchEvent("pointDensityChanged"))}}),""),m=(Object.defineProperty(Potree.settings,"UserPointDensity",{get:function(){return f},set:function(e){f!=e&&("showPointCloud"==Potree.settings.displayMode&&4!=i.viewports.length&&(Potree.settings.pointDensity=e),f=e,i.dispatchEvent("UserPointDensityChanged"))}}),Potree.settings.cameraFar);Object.defineProperty(Potree.settings,"cameraFar",{get:function(){return m},set:function(e){e!=m&&("showPanos"==Potree.settings.displayMode||i.fixCamFar||(i.mainViewport.camera.far=e,i.mainViewport.camera.updateProjectionMatrix()),m=e)}}),i.reticule.addEventListener("update",function(e){i.reticule.hoverViewport&&(i.reticule.hoverViewport.needRender=!0),i.lazyRenderViewports(),i.mapViewer&&i.mapViewer.attachedToViewer&&(i.mapViewer.viewports[0].needRender||i.needRender)&&(i.mapViewer.needRender=!0)}),i.addEventListener("pointcloud_changed",function(e){i.screenshoting?i.viewports.filter(function(e){return!e.noPointcloud}).forEach(function(e){return e.needRender=!0}):i.lazyRenderViewports()}),i.addEventListener("allLoaded",function(){setTimeout(i.testPointcloudsMaxLevel.bind(i),1e3),i.scene.pointclouds.forEach(function(e){e.addEventListener("isVisible",function(e){"displayMode"!=e.reason&&"overlinePass"!=e.reason&&i.updateModelBound("visibleChanged"),i.dispatchEvent("pointcloud_changed")}),e.material.addEventListener("material_property_changed",function(){i.dispatchEvent("pointcloud_changed")})}),window.addEventListener("unfocusPage",function(e){console.log("unfocusPage",document.title),i.setDisplay(!1)}),window.addEventListener("focusPage",function(e){console.log("focusPage",document.title),i.setDisplay(!0)})}),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(i.addEventListener("switchFloorplanSelect",function(e){var t;i.selectedFloorplan=e.pointcloud,i.updateFpVisiDatasets(),e.pointcloud?t=[e.pointcloud]:i.fpVisiDatasets.length&&(t=i.fpVisiDatasets),t&&i.mapViewer.fitToDatasets(t)}),i.modules.SiteModel.bus.addEventListener("FloorChange",function(e){i.updateFpVisiDatasets(),i.updatePanosVisibles(e.currentFloor)}),i.mapViewer.mapLayer.addEventListener("floorplanLoaded",function(){i.updateCadVisibles(i.fpVisiDatasets,!0)}));function v(e){("updateModelBound"==e.type||e.viewport==i.mainViewport&&(e.changeInfo.positionChanged||g!=i.images360.zoomLevel))&&(g=i.images360.zoomLevel,"updateModelBound"!=e.type&&!e.changeInfo.positionChanged||i.updateDatasetAt(),Potree.settings.ifShowMarker)&&"merge"!=Potree.settings.editType&&j.intervalTool.isWaiting("updateMarkerVisibles",function(){i.mainViewport.view.isFlying()||i.updateMarkerVisibles()},500)}var g,A;return i.addEventListener("camera_changed",v),i.addEventListener("updateModelBound",v),i.addEventListener("showMarkerChanged",function(){i.updatePanosVisibles(i.modules.SiteModel.currentFloor),i.updateMarkerVisibles()}),i.images360.addEventListener("getNeighbourAuto",function(e){e.panos.includes(i.images360.currentPano)&&j.intervalTool.isWaiting("updateMarkerVisibles",function(){i.updateMarkerVisibles()},500)}),document.addEventListener("visibilitychange",function(e){var t=!document.hidden;i.dispatchEvent({type:"pageVisible",v:t}),i.screenshoting&&!t?A=setInterval(function(){i.screenshoting&&i.loop(Date.now())},50):t&&A&&clearInterval(A)}),i}return v(y,ag),A(y,[{key:"lazyRenderViewports",value:function(e){var t=this.viewports;if(1==t.length||this.needRender)return this.needRender=!0;var n=Date.now(),i=(t.forEach(function(e){200<n-e.lastRenderTime&&(e.needRender=!0)}),t.filter(function(e){return e.needRender}).length),t=t.filter(function(e){return!e.needRender}).sort(function(e,t){return e.lastRenderTime-t.lastRenderTime});i<1?t.slice(0,1-i).forEach(function(e){e.needRender=!0}):t[0]&&200<n-t[0].lastRenderTime&&(t[0].needRender=!0)}},{key:"ifPointBlockedByIntersect",value:function(t,e,n){var i,r=Date.now(),a=null!=e;if(this.shelterCount){var o=XR.find(function(e){return e.point.equals(t)}),s=this.mainViewport.view.position.clone();if(null==e&&this.images360.isAtPano(.05)&&(e=this.images360.currentPano.id),o){null!=e?i=o.panos[e]:o.notAtPano.cameraPos&&o.notAtPano.cameraPos.equals(s)&&(i=o.notAtPano.ifShelter);var l=XR.indexOf(o);XR.splice(l,1)}else{var u,o={point:t,panos:{},notAtPano:{}};if(100<XR.length)for(;1e3<r-(u=XR[0]).lastTime&&u!=o&&100!=XR.length;)XR.splice(0,1)}if(null==i){if(delete o.waitCompute,this.mainViewport.view.isFlying())return c();if(null!=e){l=this.images360.getPano(e);if(!(n||this.shelterCount.byTex<this.shelterCount.maxByTex)||!l.depthTex)return o.waitCompute={panoId:e,forceGet:a},c();i=!!viewer.inputHandler.ifBlockedByIntersect({point:t,margin:Potree.config.shelterMargin,useDepthTex:!0,pano:l,viewport:this.mainViewport}),o.panos[e]=i,this.shelterCount.byTex++}else{if(!(this.shelterCount.byCloud<this.shelterCount.maxByCloud))return o.waitCompute={cameraPos:s},c();i=!!viewer.inputHandler.ifBlockedByIntersect({point:t,margin:Potree.config.shelterMargin,pickWindowSize:3}),o.notAtPano={cameraPos:s,ifShelter:i},this.shelterCount.byCloud++}}return o.ifShelter=i,o.lastTime=r,XR.push(o),i}function c(){return XR.push(o),o.lastTime=r,o.ifShelter}}},{key:"computeShelter",value:function(){for(var i=this,e=0,r=0,t=XR.length,n=[],a=j.getBestCount("shelterMaxDepthSample",1,50,1,13),o=t-1;0<=o;o--){var s=XR[o];if(s.waitCompute)if(null!=s.waitCompute.panoId)if(s.waitCompute.forceGet||s.waitCompute.panoId==this.images360.currentPano.id&&this.images360.isAtPano(.1))if(this.images360.currentPano.depthTex){if(a<=e)break;e++;var l=!!viewer.inputHandler.ifBlockedByIntersect({point:s.point,margin:Potree.config.shelterMargin,useDepthTex:!0,viewport:this.mainViewport});s.panos[this.images360.currentPano.id]=l,s.ifShelter=l,delete s.waitCompute}else this.images360.currentPano.pointcloud.hasDepthTex||n.push(s);else delete s.waitCompute;else n.push(s)}if(e<a&&n.length){var t=this.lastFrameChanged?j.getBestCount("shelterMaxCloud",0,2,4,8):5,u=[];if(t){for(var c=0;c<n.length;c++){var d=n[c];!d.waitCompute.cameraPos||viewer.mainViewport.view.position.equals(d.waitCompute.cameraPos)?u.push(d):delete d.waitCompute}var h=u.map(function(e){return e.point});j.batchHandling.getSlice("shelterByCloud",h,{maxUseCount:t,useEquals:!0,stopWhenAllUsed:!0}).list.forEach(function(t){var e=u.find(function(e){return e.point.equals(t)}),n=!!viewer.inputHandler.ifBlockedByIntersect({point:e.point,margin:Potree.config.shelterMargin,pickWindowSize:3,viewport:i.mainViewport});e.waitCompute.cameraPos?e.notAtPano={cameraPos:e.waitCompute.cameraPos,ifShelter:n}:e.panos[i.images360.currentPano.id]=n,e.ifShelter=n,r++,delete e.waitCompute})}}(e||r)&&j.intervalTool.isWaiting("shelterComputed",function(){i.dispatchEvent("shelterComputed")},340)}},{key:"updateDatasetAt",value:function(n){function e(){var t=viewer.mainViewport.view.position,e=i.scene.pointclouds.filter(function(e){return(e.visible||e.unvisibleReasons&&1==e.unvisibleReasons.length&&"displayMode"==e.unvisibleReasons[0].reason)&&e.ifContainsPoint(t)});j.getDifferenceSet(e,i.atDatasets).length&&(i.atDatasets=e,"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(i.updateFpVisiDatasets(),viewer.modules.SiteModel.currentFloor||i.updatePanosVisibles()),i.dispatchEvent({type:"pointcloudAtChange",pointclouds:e})),n=!1}var i=this;n?e():j.intervalTool.isWaiting("atWhichDataset",e,300)}},{key:"updatePanosVisibles",value:function(e){var n,i=this;Potree.settings.ifShowMarker&&(n=e,viewer.images360.panos.forEach(function(t){var e=n?n.panos.includes(t):i.atDatasets.some(function(e){return e.panos.includes(t)});Potree.Utils.updateVisible(t,"buildingChange",e,2)}),this.dispatchEvent("content_changed"))}},{key:"updateMarkerVisibles",value:function(){var n,t,e,i,r,a,o,s,l=this;if(Potree.settings.ifShowMarker)return n=8*this.images360.zoomLevel,t=50*this.images360.zoomLevel,e=vf.isMobile()?8:15,i=function(e){if(l.images360.isAtPano()&&!l.mainViewport.view.isFlying())return!l.images360.currentPano.neighbours.includes(e)&&l.images360.currentPano!=e},r=new Map,a=function(){viewer.images360.panos.forEach(function(e){var t=r.get(e).visible;t&&0,Potree.Utils.updateVisible(e.marker,"limitMarkerShow",t)}),l.dispatchEvent("content_changed")},o=function(e,t){var n=viewer.mainViewport.camera.position,i=r.get(e);return i.dis=i.dis||n.distanceTo(e.marker.position),i.sin=i.sin||Math.sqrt(Math.abs(n.z-e.marker.position.z)/i.dis),i.dis<t*i.sin},viewer.images360.panos.forEach(function(e){var t={};r.set(e,t),e.visible&&!i(e)&&o(e,n)&&(t.visible=!0)}),viewer.images360.panos.filter(function(e){return r.get(e).visible}).length>=e?a():(s=viewer.images360.panos.filter(function(e){return e.visible&&!i(e)&&o(e,t)})).length<=e?(s.forEach(function(e){return r.get(e).visible=!0}),a()):(s.sort(function(e,t){return r.get(e).dis-r.get(t).dis}),s.slice(0,e).forEach(function(e){return r.get(e).visible=!0}),void a())}},{key:"updateFpVisiDatasets",value:function(){this.modules.Clip;var e,t=this.modules.SiteModel,n=this.modules.Alignment,i=t.currentFloor;this.selectedFloorplan?(e=[this.selectedFloorplan],this.updateCadVisibles(e)):t.editing||n.editing?(e=this.scene.pointclouds.filter(function(e){return Potree.Utils.getObjVisiByReason(e,"datasetSelection")}),this.updateCadVisibles(e)):(0==(t=0==(t=i?this.findPointcloudsAtFloor(i):[]).length&&this.focusDatasets?this.focusDatasets:t).length&&(t=this.atDatasets),this.updateCadVisibles(t))}},{key:"findPointcloudsAtFloor",value:function(a){var o=[],t=viewer.scene.pointclouds.filter(function(e){var t=0;if(e.belongToEntity&&(e.belongToEntity==a||e.belongToEntity.buildParent==a))return!0;if(e.panos.length){var n=e.panos.filter(function(e){return a.ifContainsPoint(e.position)}).length/e.panos.length;if(.5<n)return!0;t+=2*n}var i,r,n=a.coverPointcloudHeight(e,!0);n<.2||(r=(i=a.intersectPointcloudArea(e,!0)).toEntity,i=i.toPointcloud,(r=Math.max(r,i))<.2)||o.push({score:t+=r*n,pointcloud:e})});return o.forEach(function(e){.5<e.score&&t.push(e.pointcloud)}),t}},{key:"updateCadVisibles",value:function(n,e){var t=this.fpVisiDatasets,n=this.fpVisiDatasets=n;if(!e&&0==j.getDifferenceSet(t,n).length)return;viewer.scene.pointclouds.forEach(function(e){var t=viewer.mapViewer.mapLayer.getFloorplan(e.dataset_id),e=n.includes(e);t&&Potree.Utils.updateVisible(t.objectGroup,"buildingChange",e)}),viewer.mapViewer.mapLayer.needUpdate=!0,viewer.mapViewer.needRender=!0}},{key:"testPointcloudsMaxLevel",value:function(){function e(){i=!0;var n=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).camera||r.scene.getActiveCamera();j.intervalTool.isWaiting("testPointcloudsMaxLevel",function(){if(!(!i&&50<a||"showPanos"==Potree.settings.displayMode||r.pauseTestMaxLevel)){i=!1,a++;r.testMaxNodeCount;var t=!0;if(viewer.scene.pointclouds.forEach(function(e){e.testMaxNodeLevel(n)&&(t=!1)}),!t)return!0;r.removeEventListener("camera_changed",e),console.log("testPointcloudsMaxLevel结束")}},a<10?250:500)}var i,r=this,a=0;this.addEventListener("camera_changed",e),e()}},{key:"setPointLevels",value:function(){this.scene.pointclouds.forEach(function(e){e.setPointLevel()})}},{key:"onCrash",value:function(e){var t;throw console.error(e),$(this.renderArea).empty(),0===$(this.renderArea).find("#potree_failpage").length&&((t=$('\n\t\t\t<div id="#potree_failpage" class="potree_failpage"> \n\t\t\t\t\n\t\t\t\t<h1>Potree Encountered An Error </h1>\n\n\t\t\t\t<p>\n\t\t\t\tThis may happen if your browser or graphics card is not supported.\n\t\t\t\t<br>\n\t\t\t\tWe recommend to use \n\t\t\t\t<a href="https://www.google.com/chrome/browser" target="_blank" style="color:initial">Chrome</a>\n\t\t\t\tor \n\t\t\t\t<a href="https://www.mozilla.org/" target="_blank">Firefox</a>.\n\t\t\t\t</p>\n\n\t\t\t\t<p>\n\t\t\t\tPlease also visit <a href="http://webglreport.com/" target="_blank">webglreport.com</a> and \n\t\t\t\tcheck whether your system supports WebGL.\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\tIf you are already using one of the recommended browsers and WebGL is enabled, \n\t\t\t\tconsider filing an issue report at <a href="https://github.com/potree/potree/issues" target="_blank">github</a>,<br>\n\t\t\t\tincluding your operating system, graphics card, browser and browser version, as well as the \n\t\t\t\terror message below.<br>\n\t\t\t\tPlease do not report errors on unsupported browsers.\n\t\t\t\t</p>\n\n\t\t\t\t<pre id="potree_error_console" style="width: 100%; height: 100%"></pre>\n\t\t\t\t\n\t\t\t</div>')).find("#potree_error_console").html(e.stack),$(this.renderArea).append(t)),e}},{key:"setScene",value:function(e){var t,n=this;e!==this.scene&&(t=this.scene,this.scene=e,this.dispatchEvent({type:"scene_changed",oldScene:t,scene:e}),$(".annotation").detach(),this.scene.annotations.traverse(function(e){n.renderArea.appendChild(e.domElement[0])}),this.onAnnotationAdded||(this.onAnnotationAdded=function(e){e.annotation.traverse(function(e){$("#potree_annotation_container").append(e.domElement),e.scene=n.scene})}),t&&t.annotations.removeEventListener("annotation_added",this.onAnnotationAdded),this.scene.annotations.addEventListener("annotation_added",this.onAnnotationAdded))}},{key:"setControls",value:function(e){e!==this.controls&&(this.controls&&(this.controls.setEnable(!1),this.controls.moveSpeed=this.moveSpeed),(this.controls=e).moveSpeed&&this.setMoveSpeed(e.moveSpeed),this.controls.setEnable(!0))}},{key:"getControls",value:function(){return this.renderer.xr.isPresenting?this.vrControls:this.controls}},{key:"getMinNodeSize",value:function(){return this.minNodeSize}},{key:"setMinNodeSize",value:function(e){this.minNodeSize!==e&&(this.minNodeSize=e,this.dispatchEvent({type:"minnodesize_changed",viewer:this}))}},{key:"getBackground",value:function(){return this.background}},{key:"setBackground",value:function(e,t){var n=this;"skybox"===e?(t=t||Potree.resourcePath+"/textures/skybox/xingkong.jpg",this.skybox=ne.loadSkybox(t,this.skybox,function(){n.background=e})):this.background=e,this.backgroundOpacity=1,this.dispatchEvent({type:"background_changed",viewer:this})}},{key:"setDescription",value:function(e){this.description=e,$("#potree_description").html(e)}},{key:"getDescription",value:function(){return this.description}},{key:"setShowBoundingBox",value:function(e){this.showBoundingBox!==e&&(this.showBoundingBox=e,this.dispatchEvent({type:"show_boundingbox_changed",viewer:this}))}},{key:"getShowBoundingBox",value:function(){return this.showBoundingBox}},{key:"setMoveSpeed",value:function(e){this.getMoveSpeed()!==e&&(this.mainViewport.setMoveSpeed(e),this.dispatchEvent({type:"move_speed_changed",viewer:this,speed:e}))}},{key:"getMoveSpeed",value:function(){return this.mainViewport.moveSpeed}},{key:"setWeightClassification",value:function(e){for(var t=0;t<this.scene.pointclouds.length;t++)this.scene.pointclouds[t].material.weightClassification=e,this.dispatchEvent({type:"attribute_weights_changed"+t,viewer:this})}},{key:"setFreeze",value:function(e){e=Boolean(e),this.freeze!==e&&(this.freeze=e,this.dispatchEvent({type:"freeze_changed",viewer:this}))}},{key:"getFreeze",value:function(){return this.freeze}},{key:"setElevationGradientRepeat",value:function(e){this.elevationGradientRepeat!==e&&(this.elevationGradientRepeat=e,this.dispatchEvent({type:"elevation_gradient_repeat_changed",viewer:this}))}},{key:"setPointBudget",value:function(e){Potree.pointBudget!==e&&e&&(Potree.pointBudget=parseInt(e),this.dispatchEvent({type:"point_budget_changed",viewer:this}))}},{key:"getPointBudget",value:function(){return Potree.pointBudget}},{key:"setShowAnnotations",value:function(e){this.showAnnotations!==e&&(this.showAnnotations=e,this.dispatchEvent({type:"show_annotations_changed",viewer:this}))}},{key:"getShowAnnotations",value:function(){return this.showAnnotations}},{key:"setDEMCollisionsEnabled",value:function(e){this.useDEMCollisions!==e&&(this.useDEMCollisions=e,this.dispatchEvent({type:"use_demcollisions_changed",viewer:this}))}},{key:"getDEMCollisionsEnabled",value:function(){return this.useDEMCollisions}},{key:"setEDLEnabled",value:function(e){e=Boolean(e)&&sm.SHADER_EDL.isSupported(),this.useEDL!==e&&(this.useEDL=e,this.dispatchEvent({type:"use_edl_changed",viewer:this}),this.dispatchEvent("pointcloud_changed"))}},{key:"getEDLEnabled",value:function(){return this.useEDL}},{key:"setEDLRadius",value:function(e){this.edlRadius!==e&&(this.edlRadius=e,this.dispatchEvent({type:"edl_radius_changed",viewer:this}),this.dispatchEvent("pointcloud_changed"))}},{key:"getEDLRadius",value:function(){return this.edlRadius}},{key:"setEDLStrength",value:function(e){this.edlStrength!==e&&(this.edlStrength=e,this.dispatchEvent({type:"edl_strength_changed",viewer:this}),this.dispatchEvent("pointcloud_changed"))}},{key:"getEDLStrength",value:function(){return this.edlStrength}},{key:"setEDLOpacity",value:function(e){this.edlOpacity!==e&&(this.edlOpacity=e,this.dispatchEvent({type:"edl_opacity_changed",viewer:this}),this.dispatchEvent("pointcloud_changed"))}},{key:"getEDLOpacity",value:function(){return this.edlOpacity}},{key:"setFOV",value:function(e){var t;this.fov!==e&&(t=this.fov,this.fov=e,this.scene.cameraP.fov=this.fov,this.scene.cameraP.updateProjectionMatrix(),this.dispatchEvent({type:"fov_changed",viewer:this,oldFov:t,fov:this.fov}))}},{key:"getFOV",value:function(){return this.fov}},{key:"disableAnnotations",value:function(){this.scene.annotations.traverse(function(e){e.domElement.css("pointer-events","none")})}},{key:"enableAnnotations",value:function(){this.scene.annotations.traverse(function(e){e.domElement.css("pointer-events","auto")})}},{key:"setClassifications",value:function(e){this.classifications=e,this.dispatchEvent({type:"classifications_changed",viewer:this})}},{key:"setClassificationVisibility",value:function(e,t){this.classifications[e]?this.classifications[e].visible!==t&&(this.classifications[e].visible=t,this.dispatchEvent({type:"classification_visibility_changed",viewer:this})):(this.classifications[e]={visible:t,name:"no name"},this.dispatchEvent({type:"classification_visibility_changed",viewer:this}))}},{key:"toggleAllClassificationsVisibility",value:function(){for(var e=0,t=0,n=0,i=Object.keys(this.classifications);n<i.length;n++){var r=i[n];this.classifications[r].visible&&e++,t++}for(var a=!0,o=(e===t&&(a=!1),!1),s=0,l=Object.keys(this.classifications);s<l.length;s++){var u=l[s];this.classifications[u].visible!==a&&(this.classifications[u].visible=a,o=!0)}o&&this.dispatchEvent({type:"classification_visibility_changed",viewer:this})}},{key:"setFilterReturnNumberRange",value:function(e,t){this.filterReturnNumberRange=[e,t],this.dispatchEvent({type:"filter_return_number_range_changed",viewer:this})}},{key:"setFilterNumberOfReturnsRange",value:function(e,t){this.filterNumberOfReturnsRange=[e,t],this.dispatchEvent({type:"filter_number_of_returns_range_changed",viewer:this})}},{key:"setFilterGPSTimeRange",value:function(e,t){this.filterGPSTimeRange=[e,t],this.dispatchEvent({type:"filter_gps_time_range_changed",viewer:this})}},{key:"setFilterPointSourceIDRange",value:function(e,t){this.filterPointSourceIDRange=[e,t],this.dispatchEvent({type:"filter_point_source_id_range_changed",viewer:this})}},{key:"setLengthUnit",value:function(e){switch(e){case"m":this.lengthUnit=Im.METER,this.lengthUnitDisplay=Im.METER;break;case"ft":this.lengthUnit=Im.FEET,this.lengthUnitDisplay=Im.FEET;break;case"in":this.lengthUnit=Im.INCH,this.lengthUnitDisplay=Im.INCH}this.dispatchEvent({type:"length_unit_changed",viewer:this,value:e})}},{key:"setLengthUnitAndDisplayUnit",value:function(e,t){switch(e){case"m":this.lengthUnit=Im.METER;break;case"ft":this.lengthUnit=Im.FEET;break;case"in":this.lengthUnit=Im.INCH}switch(t){case"m":this.lengthUnitDisplay=Im.METER;break;case"ft":this.lengthUnitDisplay=Im.FEET;break;case"in":this.lengthUnitDisplay=Im.INCH}this.dispatchEvent({type:"length_unit_changed",viewer:this,value:e})}},{key:"zoomTo",value:function(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=this.mainViewport.view,a=this.scene.cameraP.clone(),e=(a.rotation.copy(this.scene.cameraP.rotation),a.rotation.order="ZXY",a.rotation.x=Math.PI/2+r.pitch,a.rotation.z=r.yaw,a.updateMatrix(),a.updateMatrixWorld(),a.zoomTo(e,t),t=(t=e.boundingSphere||(e.geometry&&e.geometry.boundingSphere?e.geometry.boundingSphere:e.boundingBox.getBoundingSphere(new bi))).clone().applyMatrix4(e.matrixWorld),r.position.clone()),a=a.position.clone(),o=r.getPivot(),t=t.center,s=(r.radius,a.distanceTo(t),TWEEN.Easing.Quartic.Out),l=e.clone(),e=new TWEEN.Tween(l).to(a,i),u=(e.easing(s),e.onUpdate(function(){r.position.copy(l)}),e.start(),o.clone()),a=new TWEEN.Tween(u).to(t,i);a.easing(s),a.onUpdate(function(){r.lookAt(u)}),a.onComplete(function(){r.lookAt(u),n.dispatchEvent({type:"focusing_finished",target:n})}),this.dispatchEvent({type:"focusing_started",target:this}),a.start()}},{key:"moveToGpsTimeVicinity",value:function(e){var e=Potree.Utils.findClosestGpsTime(e,viewer),t=e.node.pointcloud.deepestNodeAt(e.position).getBoundingBox(),t=t.min.distanceTo(t.max),t=this.scene.getActiveCamera().getWorldDirection(new Oe).multiplyScalar(t),t=e.position.clone().sub(t);this.scene.view.position.copy(t),this.scene.view.lookAt(e.position)}},{key:"showAbout",value:function(){$(function(){$("#about-panel").dialog()})}},{key:"getGpsTimeExtent",value:function(){var e,t=[1/0,-1/0],n=q(this.scene.pointclouds);try{for(n.s();!(e=n.n()).done;){var i=e.value.pcoGeometry.pointAttributes.attributes.find(function(e){return"gps-time"===e.name});i&&(t[0]=Math.min(t[0],i.range[0]),t[1]=Math.max(t[1],i.range[1]))}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"fitToScreen",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.getBoundingBox(this.scene.pointclouds),i=new Z;i.boundingBox=n,this.zoomTo(i,e,t),this.controls.stop()}},{key:"toggleNavigationCube",value:function(){this.navigationCube.visible=!this.navigationCube.visible}},{key:"setTopView",value:function(e){(e=e||this.scene.view).setCubeView("top"),this.fitToScreen()}},{key:"setBottomView",value:function(){this.scene.view.yaw=-Math.PI,this.scene.view.pitch=Math.PI/2,this.fitToScreen()}},{key:"setFrontView",value:function(e){(e=e||this.scene.view).yaw=0,e.pitch=0,this.fitToScreen()}},{key:"setBackView",value:function(e){(e=e||this.scene.view).yaw=Math.PI,e.pitch=0,this.fitToScreen()}},{key:"setLeftView",value:function(){this.scene.view.yaw=-Math.PI/2,this.scene.view.pitch=0,this.fitToScreen()}},{key:"setRightView",value:function(){this.scene.view.yaw=Math.PI/2,this.scene.view.pitch=0,this.fitToScreen()}},{key:"flipYZ",value:function(){this.isFlipYZ=!this.isFlipYZ,console.log("TODO")}},{key:"setCameraMode",value:function(e){this.scene.cameraMode=e,viewer.mainViewport.camera=e==Cm.PERSPECTIVE?this.scene.cameraP:this.scene.cameraO;var t,n=q(this.scene.pointclouds);try{for(n.s();!(t=n.n()).done;)t.value.material.useOrthographicCamera=e==Cm.ORTHOGRAPHIC}catch(e){n.e(e)}finally{n.f()}}},{key:"getProjection",value:function(){var e=this.scene.pointclouds[0];return e?e.projection:null}},{key:"loadProject",value:(i=J(X().mark(function e(t,n){var i,r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if((i=e.sent).ok)return e.next=6,i.text();e.next=11;break;case 6:i=e.sent,"Potree"===(r=JSON5.parse(i)).type&&Potree.loadProject(viewer,r,n),e.next=12;break;case 11:console.warn("未能加载:"+t);case 12:case"end":return e.stop()}},e)})),function(e,t){return i.apply(this,arguments)})},{key:"saveProject",value:function(){return Potree.saveProject(this)}},{key:"loadSettingsFromURL",value:function(){var e,t,n;ne.getParameterByName("pointSize")&&this.setPointSize(parseFloat(ne.getParameterByName("pointSize"))),ne.getParameterByName("FOV")&&this.setFOV(parseFloat(ne.getParameterByName("FOV"))),ne.getParameterByName("opacity")&&this.setOpacity(parseFloat(ne.getParameterByName("opacity"))),ne.getParameterByName("edlEnabled")&&(e="true"===ne.getParameterByName("edlEnabled"),this.setEDLEnabled(e)),ne.getParameterByName("edlRadius")&&this.setEDLRadius(parseFloat(ne.getParameterByName("edlRadius"))),ne.getParameterByName("edlStrength")&&this.setEDLStrength(parseFloat(ne.getParameterByName("edlStrength"))),ne.getParameterByName("pointBudget")&&this.setPointBudget(parseFloat(ne.getParameterByName("pointBudget"))),ne.getParameterByName("showBoundingBox")&&("true"===ne.getParameterByName("showBoundingBox")?this.setShowBoundingBox(!0):this.setShowBoundingBox(!1)),ne.getParameterByName("material")&&(e=ne.getParameterByName("material"),this.setMaterial(e)),ne.getParameterByName("pointSizing")&&(e=ne.getParameterByName("pointSizing"),this.setPointSizing(e)),ne.getParameterByName("quality")&&(e=ne.getParameterByName("quality"),this.setQuality(e)),ne.getParameterByName("position")&&(e=ne.getParameterByName("position").replace("[","").replace("]","").split(";"),t=parseFloat(e[0]),n=parseFloat(e[1]),e=parseFloat(e[2]),this.scene.view.position.set(t,n,e)),ne.getParameterByName("target")&&(t=ne.getParameterByName("target").replace("[","").replace("]","").split(";"),n=parseFloat(t[0]),e=parseFloat(t[1]),t=parseFloat(t[2]),this.scene.view.lookAt(new Oe(n,e,t))),ne.getParameterByName("background")&&(n=ne.getParameterByName("background"),this.setBackground(n))}},{key:"createControls",value:function(){this.fpControls=new ng(this,this.mainViewport),this.fpControls.enabled=!1,this.fpControls.addEventListener("start",this.disableAnnotations.bind(this)),this.fpControls.addEventListener("end",this.enableAnnotations.bind(this)),this.orbitControls=new UR(this),this.orbitControls.enabled=!1,this.orbitControls.addEventListener("start",this.disableAnnotations.bind(this)),this.orbitControls.addEventListener("end",this.enableAnnotations.bind(this))}},{key:"toggleSidebar",value:function(){var e=$("#potree_render_area");"0px"!==e.css("left")?e.css("left","0px"):e.css("left","300px")}},{key:"toggleMap",value:function(){this.mapView&&this.mapView.toggle()}},{key:"onGUILoaded",value:function(e){this.guiLoaded?e():this.guiLoadTasks.push(e)}},{key:"promiseGuiLoaded",value:function(){var t=this;return new Promise(function(e){t.guiLoaded?e():t.guiLoadTasks.push(e)})}},{key:"loadGUI",value:function(e){var i=this,r=(e&&this.onGUILoaded(e),$("#potree_sidebar_container"));return r.load(new URL(Potree.scriptPath+"/"+(Potree.settings.sidebar||"sidebar1.html")).href,function(){r.css("width","300px"),r.css("height","100%");var e=document.createElement("img"),t=(e.src=new URL(Potree.resourcePath+"/icons/menu_button.svg").href,e.onclick=i.toggleSidebar,e.classList.add("potree_menu_toggle"),document.createElement("img")),n=(t.src=new URL(Potree.resourcePath+"/icons/map_icon.png").href,t.style.display="none",t.onclick=function(e){i.toggleMap()},t.id="potree_map_toggle",$("#potree_quick_buttons").get(0));n.append(e),n.append(t),NR.createButton(i.renderer).then(function(e){var t;null==e?console.log("VR not supported or active."):(i.renderer.xr.enabled=!0,(t=e.element).style.position="",t.style.bottom="",t.style.left="",t.style.margin="4px",t.style.fontSize="100%",t.style.width="2.5em",t.style.height="2.5em",t.style.padding="0",t.style.textShadow="black 2px 2px 2px",t.style.display="block",n.append(t),e.onStart(function(){i.dispatchEvent({type:"vr_start"})}),e.onEnd(function(){i.dispatchEvent({type:"vr_end"})}))}),i18n.init({lng:"en",resGetPath:Potree.resourcePath+"/lang/__lng__/__ns__.json",preload:["en","fr","de","jp","se","es","zh"],getAsync:!0,debug:!1},function(e){$("body").i18n()}),$(function(){var e=new Fb(i),t=(e.init(),i.sidebar=e,$("<div>").load(new URL(Potree.scriptPath+"/profile.html").href,function(){$(document.body).append(t.children()),i.profileWindow=new jm(i),i.profileWindowController=new Wm(i),$("#profile_window").draggable({handle:$("#profile_titlebar"),containment:$(document.body)}),$("#profile_window").resizable({containment:$(document.body),handles:"n, e, s, w"}),$(function(){i.guiLoaded=!0;var e,t=q(i.guiLoadTasks);try{for(t.s();!(e=t.n()).done;)(0,e.value)()}catch(e){t.e(e)}finally{t.f()}})}))})}),this.promiseGuiLoaded()}},{key:"setLanguage",value:function(e){i18n.setLng(e),$("body").i18n()}},{key:"setServer",value:function(e){this.server=e}},{key:"initDragAndDrop",value:function(){var c=this;function e(e){e.dataTransfer.dropEffect="copy",e.preventDefault()}var t=function(){var t=J(X().mark(function e(t){var n,i,r,a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:console.log(t),t.preventDefault(),n=q(t.dataTransfer.items),e.prev=3,n.s();case 5:if((a=n.n()).done)e.next=49;else{if(i=a.value,console.log(i),"file"!==i.kind)return e.abrupt("continue",47);e.next=10}break;case 10:if(r=i.getAsFile(),a=r.name.toLowerCase().endsWith(".json"),o=r.name.toLowerCase().endsWith(".gpkg"),a)return e.prev=14,e.next=17,r.text();e.next=28;break;case 17:l=e.sent,"Potree"===(l=JSON.parse(l)).type&&Potree.loadProject(viewer,l),e.next=26;break;case 22:e.prev=22,e.t0=e.catch(14),console.error("failed to parse the dropped file as JSON"),console.error(e.t0);case 26:e.next=47;break;case 28:o?0<viewer.scene.pointclouds.length?e.next=36:(console.error("At least one point cloud is needed that specifies the coordinate reference system before loading vector data."),e.next=47):e.next=47;break;case 36:return proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4.defs("pointcloud",c.getProjection()),s=proj4("WGS84","pointcloud"),e.next=41,r.arrayBuffer();case 41:return l=e.sent,u={transform:s,source:r.name},e.next=45,Potree.GeoPackageLoader.loadBuffer(l,u);case 45:u=e.sent,viewer.scene.addGeopackage(u);case 47:e.next=5;break;case 49:e.next=54;break;case 51:e.prev=51,e.t1=e.catch(3),n.e(e.t1);case 54:return e.prev=54,n.f(),e.finish(54);case 57:case"end":return e.stop()}},e,null,[[3,51,54,57],[14,22]])}));return function(e){return t.apply(this,arguments)}}();$("body")[0].addEventListener("dragenter",e),$("body")[0].addEventListener("dragover",e),$("body")[0].addEventListener("drop",t)}},{key:"updateAnnotations",value:function(){for(var s=this,l=(this.visibleAnnotations||(this.visibleAnnotations=new Set),this.scene.annotations.updateBounds(),this.scene.cameraP.updateMatrixWorld(),this.scene.cameraO.updateMatrixWorld(),this.renderer.getSize(new Re)),u=this,c=[],e=(this.scene.annotations.traverse(function(e){if(e===s.scene.annotations)return!0;if(!e.visible)return!1;e.scene=s.scene;var t=e.domElement,n=e.position.clone(),i=(n.add(e.offset),n=n||e.boundingBox.getCenter(new Oe),u.scene.cameraP.position.distanceTo(n)),r=e.boundingBox.getBoundingSphere(new bi).radius,a=new Oe,o=0,n=(a.copy(n).project(s.scene.getActiveCamera()),a.x=l.x*(a.x+1)/2,a.y=l.y*(1-(a.y+1)/2),o=u.scene.cameraMode==Cm.PERSPECTIVE?(n=Math.PI*u.scene.cameraP.fov/180,n=Math.tan(n/2),r*(.5*l.y/(n*i))):ne.projectedRadiusOrtho(r,u.scene.cameraO.projectionMatrix,l.x,l.y),t.css("left",a.x+"px"),t.css("top",a.y+"px"),1e7-i*(1e7/s.scene.cameraP.far));if(e.descriptionVisible&&(n+=1e7),t.css("z-index",parseInt(n)),0<e.children.length)return r=o>e.collapseThreshold||e.boundingBox.containsPoint(s.scene.getActiveCamera().position),(e.expand=r)||-1<=a.z&&a.z<=1&&c.push(e),r;-1<=a.z&&a.z<=1&&c.push(e)}),new Set(this.visibleAnnotations)),t=0,n=c;t<n.length;t++){var i=n[t];i.display=!0,e.delete(i)}this.visibleAnnotations=c;var r,a=q(e);try{for(a.s();!(r=a.n()).done;)r.value.display=!1}catch(e){a.e(e)}finally{a.f()}}},{key:"updateMaterialDefaults",value:function(e){var t=e.material,e=e.getAttribute("intensity");null!=e&&t.intensityRange[0]===1/0&&(t.intensityRange=Fe(e.range))}},{key:"update",value:function(e,t){viewer.addTimeMark("update","start"),TWEEN.update(t),df.update(e),this.dispatchEvent({type:"update_start",delta:e,timestamp:t}),this.updateScreenSize();var n,i=this.scene,r=i.getActiveCamera(),a=this.scene.pointclouds.filter(function(e){return e.visible}),o=(Potree.pointLoadLimit=2*Potree.pointBudget,q(a));try{for(o.s();!(n=o.n()).done;){var s=n.value,l=(s.showBoundingBox=this.showBoundingBox,s.generateDEM=this.generateDEM,s.minimumNodePixelSize=this.minNodeSize,s.material);l.uniforms.uFilterReturnNumberRange.value=this.filterReturnNumberRange,l.uniforms.uFilterNumberOfReturnsRange.value=this.filterNumberOfReturnsRange,l.uniforms.uFilterGPSTimeClipRange.value=this.filterGPSTimeRange,l.uniforms.uFilterPointSourceIDClipRange.value=this.filterPointSourceIDRange,l.classification=this.classifications,l.recomputeClassification(),this.updateMaterialDefaults(s)}}catch(e){o.e(e)}finally{o.f()}if(this.showBoundingBox){var u,c=this.scene.scene.getObjectByName("potree_bounding_box_root"),d=(c||((g=new Z).name="potree_bounding_box_root",this.scene.scene.add(g),c=g),[]),h=q(this.scene.pointclouds);try{for(h.s();!(u=h.n()).done;){var p,f=q(u.value.visibleNodes.filter(function(e){return void 0!==e.boundingBoxNode}));try{for(f.s();!(p=f.n()).done;){var m=p.value.boundingBoxNode;d.push(m)}}catch(e){f.e(e)}finally{f.f()}}}catch(e){h.e(e)}finally{h.f()}c.children=d}this.boundNeedUpdate&&this.updateModelBound(),this.scene.cameraP.fov=this.fov;var v,g=this.getControls(),A=(g===this.deviceControls?(this.controls.setScene(i),this.controls.update(e),this.scene.cameraP.position.copy(i.view.position),this.scene.cameraO.position.copy(i.view.position)):null!==g&&(g.setScene(i),g.update(e),this.viewports.forEach(function(e){e.active&&e.view.applyToCamera(e.camera)})),this.lastFrameChanged=this.cameraChanged(),[]),y=(A.push.apply(A,Fe(this.scene.volumes.filter(function(e){return e.clip&&e instanceof Jy}))),q(this.scene.profiles));try{for(y.s();!(v=y.n()).done;){var w=v.value;A.push.apply(A,Fe(w.boxes))}}catch(e){y.e(e)}finally{y.f()}var b,c=A.filter(function(e){return 0!==e.matrixWorld.determinant()&&e.clip}).map(function(e){e.updateMatrixWorld();var t=e.matrixWorld.clone().invert();return{box:e,inverse:t}}),x=c.find(function(e){return e.box.clipTask==Bm.SHOW_INSIDE_Big&&!e.box.highlight}),E=c.filter(function(e){return e.box.clipTask==Bm.SHOW_INSIDE&&!e.box.highlight}),C=c.filter(function(e){return e.box.clipTask==Bm.SHOW_OUTSIDE&&!e.box.highlight}),B=c.filter(function(e){return e.box.highlight}),M=this.modules.volumeComputer?this.modules.volumeComputer.prisms.filter(function(e){return!e.isNew&&e.visible&&!e.dontHighlight&&(e.baseModel||!e.modelHaventLoad)}):[],S=q(a);try{for(S.s();!(b=S.n()).done;)b.value.material.setClipBoxes(x,E,C,B,M)}catch(e){S.e(e)}finally{S.f()}var T,_=q(a);try{for(_.s();!(T=_.n()).done;)T.value.material.elevationGradientRepeat=this.elevationGradientRepeat}catch(e){_.e(e)}finally{_.f()}this.navigationCube.update(r.rotation),this.updateAnnotations(),this.mapView&&(this.mapView.update(e),this.mapView.sceneProjection)&&$("#potree_map_toggle").css("display","block"),this.transformationTool.update(),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&this.modules.ParticleEditor.update(e),this.mapViewer&&this.mapViewer.update(e),this.dispatchEvent({type:"update",delta:e,timestamp:t}),viewer.addTimeMark("update","end"),this.reticule.updateVisible()}},{key:"updateViewPointcloud",value:function(e,t,n){var i,t=Potree.updatePointClouds(this.scene.pointclouds,e,t),r=(performance.now(),e.position),a=1/0,o=q(this.scene.orientedImages);try{for(o.s();!(i=o.n()).done;){var s,l=q(i.value.images);try{for(l.s();!(s=l.n()).done;)var u=s.value.mesh.position.distanceTo(r),a=Math.min(a,u)}catch(e){l.e(e)}finally{l.f()}}}catch(e){o.e(e)}finally{o.f()}var c=e.near,d=e.far;e.limitFar||t.lowestSpacing===1/0||(t=-this.getBoundingBox().applyMatrix4(e.matrixWorldInverse).min.z,t=Math.max(1.5*t,1e4),t=Math.max(t,c+1e4),e.far=t),d!=e.far&&e.updateProjectionMatrix()}},{key:"getPRenderer",value:function(){return this.useHQ?(this.hqRenderer||(this.hqRenderer=new Zm(this)),this.hqRenderer.useEDL=this.useEDL,this.hqRenderer):(this.edlRenderer||(this.edlRenderer=new T1(this)),this.edlRenderer)}},{key:"renderVR",value:function(){var e=this.renderer,t=(e.setClearColor(5570560,0),e.clear(),e.xr),n=new ya,i=t.getCamera(n);if(2===i.cameras.length){var t=this.vrControls.getCamera.bind(this.vrControls),r=("skybox"===viewer.background?e.setClearColor(16711680,1):"gradient"===viewer.background?e.setClearColor(1122867,1):"black"===viewer.background?e.setClearColor(0,1):"white"===viewer.background?e.setClearColor(16777215,1):e.setClearColor(0,0),e.clear(),"skybox"===this.background?(n=this.skybox,r=t(),n.camera.rotation.copy(r.rotation),n.camera.fov=r.fov,n.camera.aspect=r.aspect,(r=n.parent).rotation.x=Math.PI/2,r.updateMatrix(),r.updateMatrixWorld(),n.camera.updateMatrix(),n.camera.updateMatrixWorld(),n.camera.updateProjectionMatrix(),e.render(n.scene,n.camera)):this.background,this.renderer.xr.getSession().updateRenderState({depthNear:.1,depthFar:1e4}),null),a=null;(r=t()).position.z-=.8*r.scale.x,r.parent=null,r.near=viewer.scene.getActiveCamera().near,r.far=viewer.scene.getActiveCamera().far,r.updateMatrix(),r.updateMatrixWorld(),this.scene.scene.updateMatrix(),this.scene.scene.updateMatrixWorld(),this.scene.scene.matrixAutoUpdate=!1;var o,a=r.matrixWorld.clone().clone().invert(),s=(this.scene.scene.matrix.copy(a),this.scene.scene.matrixWorld.copy(a),r.matrix.identity(),r.matrixWorld.identity(),r.matrixWorldInverse.identity(),e.render(this.scene.scene,r),this.scene.scene.matrixWorld.identity(),q(this.scene.pointclouds));try{for(s.s();!(o=s.n()).done;){var l=o.value,u=i.cameras[0].viewport;l.material.useEDL=!1,l.screenHeight=u.height,l.screenWidth=u.width}}catch(e){s.e(e)}finally{s.f()}var c,d=q(i.cameras);try{for(d.s();!(c=d.n()).done;){var h=c.value,p=h.viewport;e.setViewport(p.x,p.y,p.width,p.height);var f,m=h.projectionMatrix.clone().invert(),v=new ei(0,1,-1,1).applyMatrix4(m).y/Math.PI*180,g=(h.fov=v,q(this.scene.pointclouds));try{for(g.s();!(f=g.n()).done;)f.value.material.useEDL=!1}catch(e){g.e(e)}finally{g.f()}var A=a.clone().invert(),y=(A.multiply(h.matrixWorld),A.clone().invert());this.pRenderer.render(this.scene.scenePointCloud,h,null,{viewOverride:y})}}catch(e){d.e(e)}finally{d.f()}n=t();n.parent=null,e.render(this.sceneVR,n),e.resetState()}}},{key:"clear",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.background||this.background,n=(null==e.backgroundOpacity?this:e).backgroundOpacity,i=this.renderer;t instanceof Se?i.setClearColor(t,n):"skybox"===t||"gradient"===t?i.setClearColor(0,n):"black"===t?i.setClearColor(0,1):"white"===t?i.setClearColor(16777215,1):i.setClearColor(t,n),e.target||i.clear()}},{key:"getBuffer",value:function(e){var t=this.buffers.get(e);return t||(t=new ti(e.resolution.x,e.resolution.y,{minFilter:ht,magFilter:ht,format:It,type:Ct}),this.buffers.set(e,rtEDL)),t}},{key:"renderDefault",value:(t=J(X().mark(function e(){var t,n,i,r,a,o,s,l,u,c,d,h,p=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=0<p.length&&void 0!==p[0]?p[0]:{},this.visible){e.next=3;break}return e.abrupt("return");case 3:n=this.getPRenderer(),i=t.viewports||this.viewports,viewer.addTimeMark("renderDefault","start"),r=t.target?new Re(t.target.width,t.target.height):this.renderer.getSize(new Re),a=0;case 8:if(a<i.length){if(o=i[a],(s=$.extend({},t)).viewport=o,s.camera=s.camera||o.camera,s.extraEnableLayers=o.extraEnableLayers,s.cameraLayers=o.cameraLayers,l=Math.ceil(r.x*o.left),u=Math.ceil(r.y*o.bottom),d=t.target?(c=r.x*o.width,r.y*o.height):(c=o.resolution.x,o.resolution.y),0==c||0==d)return e.abrupt("continue",49);e.next=20}else e.next=52;break;case 20:if(c=Math.ceil(c),d=Math.ceil(d),h=o.width<1||o.height<1,t.target?(t.target.viewport.set(l,u,c,d),h&&t.target.scissor.set(l,u,c,d),t.target.scissorTest=h,this.renderer.setRenderTarget(t.target)):(o.forViewOffset?(o.forViewOffset.camera.setViewOffset(r.x,r.y,l,r.y-u-d,c,d),this.renderer.setViewport(0,0,r.x,r.y),o.resolution.copy(o.forViewOffset.originViewport.resolution),o.resolution2.copy(o.forViewOffset.originViewport.resolution2)):this.renderer.setViewport(l,u,c,d),h&&this.renderer.setScissor(l,u,c,d),this.renderer.setScissorTest(h)),this.ifEmitResize({viewport:o}),viewer.dispatchEvent({type:"render.begin",viewer:viewer,viewport:o,params:s}),o.beforeRender&&o.beforeRender(),!o.render){e.next=32;break}if(o.render($.extend({},s,{renderer:this.renderer,clear:this.clear.bind(this),resize:null,renderBG:this.renderBG.bind(this),force:!0}))){e.next=30;break}return e.abrupt("continue",49);case 30:e.next=36;break;case 32:this.clear(s),n.clearTargets(s),this.renderBG(o),Potree.settings.notAdditiveBlending&&(s.renderBeforeCloud=!0,this.renderOverlay1(s));case 36:if(o.noPointcloud)e.next=44;else{if(t.needWaitLoadPoint)return e.next=40,this.waitPointLoad(null,t.maxTimeForPointLoad,o);e.next=42}break;case 40:e.next=43;break;case 42:this.updateViewPointcloud(s.camera,o.resolution,!0);case 43:n.render(s);case 44:Potree.settings.notAdditiveBlending?(s.renderBeforeCloud=!1,this.renderOverlay1(s),this.renderOverlay2(s)):this.renderOverlay(s),o.afterRender&&o.afterRender(),this.dispatchEvent({type:"render.end",viewer:this,viewport:o}),o.needRender=!1,o.lastRenderTime=Date.now();case 49:a++,e.next=8;break;case 52:this.renderer.setRenderTarget(null),viewer.scene.pointclouds[0]&&this.addFakeMeasure("visibleNodes",viewer.scene.pointclouds[0].visibleNodes.length),this.addFakeMeasure("numVisiblePoints",Potree.numVisiblePoints/1e5),viewer.addTimeMark("renderDefault","end");case 56:case"end":return e.stop()}},e,this)})),function(){return t.apply(this,arguments)})},{key:"renderBG",value:function(e){var t,n,i,r,a,o=e.background||viewer.background;0!=(null==e.backgroundOpacity?viewer:e).backgroundOpacity&&("skybox"===o?(t="OrthographicCamera"==e.camera.type?viewer.skybox.cameraOrtho:viewer.skybox.camera,a=.02*Potree.config.skyboxBgWidth/2,e.skyboxFixPos?t.position.set(0,0,0):(i=(r=(new Oe).subVectors(e.camera.position,viewer.bound.center)).length(),n=of.easeOutQuart(Math.min(i,100),0,a,100),r.multiplyScalar(n/i),t.position.copy(r)),t.rotation.copy(e.camera.rotation),t.aspect=e.camera.aspect,"OrthographicCamera"==e.camera.type?(t.left=e.camera.left,t.right=e.camera.right,t.top=e.camera.top,t.bottom=e.camera.bottom,n=Potree.config.skyboxBgWidth/2-a,i=Math.max(t.right/n,t.top/n,e.skyboxMinZoom||0),r=Math.max(20,i),a=Be.clamp(e.camera.zoom-1,1,80),t.zoom=of.easeOutCubic(a-1,i,r-i,79)):(t.fov=e.camera.fov,t.zoom=1),e.skyboxRenderFun&&e.skyboxRenderFun(),t.updateProjectionMatrix(),t.updateMatrixWorld(),viewer.renderer.render(viewer.skybox.scene,t)):"gradient"===o?(viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg),viewer.renderer.render(viewer.scene.scene,viewer.scene.cameraBG)):"overlayColor"===o&&(viewer.scene.bg2.material.color.copy(e.backgroundColor),viewer.scene.bg2.material.opacity=e.backgroundOpacity,viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg2),viewer.renderer.render(viewer.scene.scene,viewer.scene.cameraBG)))}},{key:"renderOverlay",value:function(e){viewer.addTimeMark("renderOverlay","start"),this.renderOverlay1(e),this.renderOverlay2(e),viewer.addTimeMark("renderOverlay","end")}},{key:"renderOverlay1",value:function(t){var e,n=t.camera||this.scene.getActiveCamera(),i=t.renderer||this.renderer;this.reticule.updateAtViewports(t.viewport),i.setRenderTarget(t.target||null),t.cameraLayers?e=t.cameraLayers:"mapViewport"==t.viewport.name?e=["bothMapAndScene","light"]:(e=["sceneObjects","light","bothMapAndScene"],t.drawedModelOnRT||e.push("model")),e.length&&(Potree.Utils.setCameraLayers(n,e,t.extraEnableLayers),"renderBeforeCloud"in t&&this.scene.scene.traverse(function(e){e.material&&Potree.Utils.updateVisible(e,"renderOpa",!(t.renderBeforeCloud&&(e.material.opacity<1||!e.material.depthTest)||!t.renderBeforeCloud&&1==e.material.opacity&&e.material.depthTest))}),viewer.dispatchEvent({type:"render.begin2",name:"scene",viewport:t.viewport}),i.render(this.scene.scene,n),"renderBeforeCloud"in t)&&this.scene.scene.traverse(function(e){e.material&&Potree.Utils.updateVisible(e,"renderOpa",!0)}),this.dispatchEvent({type:"render.pass.scene",viewer:viewer})}},{key:"renderOverlay2",value:function(e){var t=e.renderer||this.renderer,n=e.camera||this.scene.getActiveCamera();t.clearDepth(),e.magnifier||(this.dispatchEvent({type:"render.pass.perspective_overlay",camera:n,screenshot:e.screenshot,viewport:e.viewport,renderer:t}),e.screenshot)||"mapViewport"==e.viewport.name||(Potree.Utils.setCameraLayers(n,["magnifier"]),t.render(this.scene.scene,n)),"mapViewport"!=e.viewport.name&&(Potree.Utils.setCameraLayers(n,["volume","transformationTool"]),t.render(this.clippingTool.sceneVolume,n),t.render(this.transformationTool.scene,n))}},{key:"setLimitFar",value:function(e){viewer.mainViewport.camera.limitFar=!!e,e&&(viewer.mainViewport.camera.near=.02,viewer.mainViewport.camera.far="showPanos"==Potree.settings.displayMode?viewer.farWhenShowPano:Potree.settings.cameraFar,viewer.mainViewport.camera.updateProjectionMatrix())}},{key:"setClipState",value:function(t){t=!!t,this.clipUnabled!=!t&&(this.scene.volumes.filter(function(e){return e instanceof Potree.BoxVolume}).map(function(e){e.clip=t,Potree.Utils.updateVisible(e,"setClipState",t)}),this.clipUnabled=!t)}},{key:"render",value:(e=J(X().mark(function e(){var t,n,i,r,a,o,s=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=0<s.length&&void 0!==s[0]?s[0]:{},viewer.addTimeMark("render","start"),n=this.renderer.xr.isPresenting,i=viewer.modules.SiteModel,this.screenshoting&&!t.screenshot)return e.abrupt("return");e.next=6;break;case 6:a=i.editing&&i.selected&&("room"==i.selected.buildType||"floor"==i.selected.buildType),Potree.settings.pointEnableRT=!this.screenshoting&&(0<this.scene.measurements.filter(function(e){return e.visible}).length||a),n?(this.renderVR(),e.next=26):e.next=12;break;case 12:r=!!t.viewports,a=t.viewports||this.viewports,0<(a=(a=this.needRender?a:a.filter(function(e){return e.needRender})).filter(function(e){return e.active})).length?(t.viewports=a,this.outlinePass.selectedObjects.length&&0<this.outlinePass.edgeStrength&&!t.screenshot?(o=this.inputHandler.interactiveScenes.concat(this.scene.scene).concat(viewer.scene.scenePointCloud),this.composer.render(o,null,this.viewports,this.renderDefault.bind(this)),e.next=25):e.next=23):e.next=25;break;case 23:return e.next=25,this.renderDefault(t);case 25:r||(this.needRender=!1);case 26:viewer.addTimeMark("render","end");case 27:case"end":return e.stop()}},e,this)})),function(){return e.apply(this,arguments)})},{key:"startScreenshot",value:function(){var g,A,e,y,t,w,b,n,i,r,a,o,x=this,E=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},C=1<arguments.length&&void 0!==arguments[1]?arguments[1]:800,B=2<arguments.length&&void 0!==arguments[2]?arguments[2]:400,M=3<arguments.length?arguments[3]:void 0,S=E.getImageDeferred||$.Deferred(),T=E.finishDeferred||$.Deferred(),_=E.map?this.mapViewer:this,P=E.map||"measure"==E.type||E.type.includes("prism2d");return"showPanos"==Potree.settings.displayMode&&viewer.mainViewport.view.isFlying("pos")?(E.getImageDeferred=S,E.finishDeferred=T,viewer.mainViewport.view.addEventListener("flyingDone",function(){x.startScreenshot(E,C,B,M)},{once:!0})):(g=Date.now(),A=(this.pauseTestMaxLevel=!0,this.screenshoting=!0,console.log("startScreenshot: "+g),function(){w.forEach(function(e){e.view.applyToCamera(e.camera),x.dispatchEvent({type:"camera_changed",camera:e.camera,viewport:e,changeInfo:{positionChanged:!0,changed:!0}})})}),e=function(){var e=J(X().mark(function e(){var t,n,i,r,a,o,s,l,u,c,d,h,p,f,m,v;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(P&&(viewer.mapViewer.needRender=!0),E.beforeScreenshot&&E.beforeScreenshot(),n=function(){var e=J(X().mark(function e(){var t,n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:x.needRender=!0,w.forEach(function(e){return e.active=!0}),E.useRenderTarget?(t=_.makeScreenshot(new Re(C,B),null,M),t=t.dataUrl,e.next=10):e.next=6;break;case 6:return n=_.renderer.domElement,e.next=9,_.render({screenshot:!0,width:C,height:B,resize:!0,needWaitLoadPoint:!!E.splitRenderInfo,maxTimeForPointLoad:E.maxTimeForPointLoad});case 9:t=n.toDataURL("image/png",M);case 10:return e.abrupt("return",t);case 11:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),!E.splitRenderInfo){e.next=33;break}a=E.splitRenderInfo,r=a.wc,a=a.hc,o=viewer.mainViewport.camera,s=[],l=Math.ceil(1/r*C),u=Math.ceil(1/a*B),viewer.updateScreenSize({forceUpdateSize:!0,width:l,height:u,forTarget:E.useRenderTarget}),c=0;case 10:if(!(c<r)){e.next=27;break}d=[],h=0;case 13:if(h<a)return f=Math.ceil((-r/2+.5+c)*l),p=Math.ceil((-a/2+.5+h)*u),o.setViewOffset(l,u,f,p,l,u),e.next=18,n();e.next=23;break;case 18:f=e.sent,d.push({dataUrl:f,width:l,height:u});case 20:h++,e.next=13;break;case 23:s.push(d);case 24:c++,e.next=10;break;case 27:return o.clearViewOffset(),e.next=30,ne.combineImgs(s,M,C,B);case 30:i=e.sent,e.next=36;break;case 33:return e.next=35,n();case 35:i=e.sent;case 36:E.splitRenderInfo&&(viewer.viewports=[viewer.mainViewport]),Potree.settings.isOfficial||j.downloadFile(i,"screenshot.png"),m=function(){b.viewports.forEach(function(t){var e=w.find(function(e){return e.name==t.name});e.left=t.left,e.bottom=t.bottom,e.width=t.width,e.height=t.height,e.view.copy(t.view),e.camera.isOrthographicCamera&&(e.camera.zoom=e.view.zoom)}),_.updateScreenSize({forceUpdateSize:!0}),A(),T.resolve({dataUrl:i,pose:t}),E.map||setTimeout(function(){x.screenshoting||(Potree.settings.pointDensity="high")},500),x.screenshoting=!1,console.log("screenshot done: "+g,"costTime",Date.now()-g+"ms")},x.backgroundOpacity=b.bgOpacity,x.background=b.background,x.pauseTestMaxLevel=!1,b.displayMode&&(Potree.settings.displayMode=b.displayMode),"measure"!=E.type&&!E.type.includes("prism2d")||(x.modules.SiteModel.pauseUpdateEntity=!1,x.focusDatasets=null,x.scene.measurements.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot",!0)}),"measure"!=E.type)||E.measurement.setSelected(!1,"screenshot"),E.type.includes("prism2d")&&(E.prisms||[E.prism]).forEach(function(e){e.changeStyleForScreenshot(!1),"prism2d-single"==E.type&&(e.baseModel&&(Potree.Utils.updateVisible(e.baseModel,"screenshot",!1,3,"cancel"),Potree.Utils.setObjectLayers(e.baseModel,"model")),e.setEditState(!1))}),x.images360.panos.forEach(function(e){Potree.Utils.updateVisible(e,"screenshot",!0)}),Potree.Utils.updateVisible(x.reticule,"screenshot",!0),P&&(Potree.Utils.updateVisible(x.mapViewer.cursor,"screenshot",!0),b.attachedToViewer!=x.mapViewer.attachedToViewer&&x.mapViewer.attachToMainViewer(!!b.attachedToViewer),b.attachedToViewer&&x.mapViewer.splitDir!=b.oldSplitDir&&x.mapViewer.changeSplitScreenDir(b.oldSplitDir),y.noPointcloud=b.noPointcloud,Potree.Utils.updateVisible(viewer.mapViewer.mapLayer.sceneGroup,"screenshot-prism",!0)),v=function(){"showPanos"==Potree.settings.displayMode?viewer.images360.flyToPano({pano:b.pano,duration:0,callback:function(){m()}}):m()},E.ifGetPose?Potree.sdk.scene.getPose().done(function(e){t=e,S.resolve({dataUrl:i,pose:t}),v()}):v();case 50:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),t=this.mainViewport,w=[],b={viewports:[],pano:"showPanos"==Potree.settings.displayMode?viewer.images360.currentPano:null,bgOpacity:this.backgroundOpacity,background:this.background},n=(E.type.includes("prism2d")||(w.push(t),t.camera.isOrthographicCamera&&(t.view.zoom=t.camera.zoom),b.viewports.push(t.clone())),P&&((y=this.mapViewer.viewports[0]).view.zoom=y.camera.zoom,w.push(y),b.viewports.push(y.clone()),b.attachedToViewer=this.mapViewer.attachedToViewer,b.noPointcloud=y.noPointcloud,b.displayMode=Potree.settings.displayMode,Potree.Utils.updateVisible(this.mapViewer.cursor,"screenshot",!1)),w.forEach(function(e){return e.active=!1}),E.hideMarkers&&this.images360.panos.forEach(function(e){Potree.Utils.updateVisible(e,"screenshot",!1)}),Potree.Utils.updateVisible(this.reticule,"screenshot",!1),null!=E.bgOpacity&&(this.backgroundOpacity=E.bgOpacity),null!=E.background&&(this.background=E.background),Potree.settings.pointDensity=E.pointDensity||"screenshot",function(e){x.focusDatasets=[],e.forEach(function(e){e.points_datasets.forEach(function(t){var e=viewer.scene.pointclouds.find(function(e){return e.dataset_id==t});e&&!x.focusDatasets.includes(e)&&x.focusDatasets.push(e)})}),x.updateFpVisiDatasets()}),"measure"==E.type?(this.scene.measurements.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot",e==E.measurement)}),E.measurement.setSelected(!0,"screenshot"),Potree.settings.floorplanEnable&&(b.oldSplitDir=this.mapViewer.splitDir,this.mapViewer.attachToMainViewer(!0,"measure",.5,{dir:"leftRight"})),viewer.updateScreenSize({forceUpdateSize:!0,width:C,height:B,forTarget:E.useRenderTarget}),i=function(){P=x.mapViewer.attachedToViewer,A(),P?x.waitPointLoad(function(){console.log("waitMap: "+g,Date.now(),x.mapViewer.mapLayer.loadingInProgress),x.mapViewer.waitLoadDone(e.bind(x))},E.maxTimeForPointLoad):x.waitPointLoad(e,E.maxTimeForPointLoad)},this.focusOnObject(E.measurement,"measure",0,{basePanoSize:1024,gotoBestView:!0}).promise.done(function(){x.updateDatasetAt(!0),x.modules.SiteModel.updateEntityAt(!0,{measure:E.measurement}),x.modules.SiteModel.inEntity||n([E.measurement]),x.modules.SiteModel.pauseUpdateEntity=!0,!x.mapViewer.mapLayer.maps.some(function(e){return e.name.includes("floorplan")&&e.objectGroup.visible})&&x.mapViewer.attachedToViewer?(x.mapViewer.attachToMainViewer(!1),viewer.updateScreenSize({forceUpdateSize:!0,width:C,height:B,forTarget:E.useRenderTarget}),x.focusOnObject(E.measurement,"measure",0,{basePanoSize:1024,gotoBestView:!0}).promise.done(function(){i()})):i()})):E.type.includes("prism2d")?(r=[],a="prism2d-all"==E.type?E.prisms:[E.prism],this.mapViewer.attachToMainViewer(!0,"screenshot",1,{}),viewer.updateScreenSize({forceUpdateSize:!0,width:C,height:B,forTarget:E.useRenderTarget}),a.forEach(function(e){r.push.apply(r,Fe(e.points)),e.setSelected(!1),e.changeStyleForScreenshot(!0,{hideLabel:"prism2d-all"!=E.type,showName:"prism2d-all"==E.type}),"prism2d-single"==E.type&&(e.baseModel&&(Potree.Utils.updateVisible(e.baseModel,"screenshot",!0,3,"add"),Potree.Utils.setObjectLayers(e.baseModel,"bothMapAndScene")),e.setEditState(!0))}),this.scene.measurements.forEach(function(e){return Potree.Utils.updateVisible(e,"screenshot",a.includes(e))}),this.backgroundOpacity=0,this.focusOnObject({points:r},"prisms2d",0,{minMapWidth:.5,onlyMap:!0,focusBoundCenter:!0,boundExpandRatio:1.4}).promise.done(function(){A(),"prism2d-all"==E.type?(n(a),x.mapViewer.waitLoadDone(e.bind(x))):(y.noPointcloud=!1,Potree.settings.displayMode="showPointCloud",Potree.Utils.updateVisible(viewer.mapViewer.mapLayer.sceneGroup,"screenshot-prism",!1),x.waitPointLoad(e,5e3))})):(o=function(){A(),E.splitRenderInfo?e():x.waitPointLoad(e,E.maxTimeForPointLoad)},E.focusObjectInfo?(viewer.updateScreenSize({forceUpdateSize:!0,width:C,height:B,forTarget:E.useRenderTarget}),this.focusOnObject.apply(this,Fe(E.focusObjectInfo)).promise.done(function(){o()})):o())),{getImagePromise:S.promise(),finishPromise:T.promise()}}},{key:"waitPointLoad",value:(n=J(X().mark(function e(s,l){var u,c,t=arguments;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return u=2<t.length&&void 0!==t[2]?t[2]:viewer.mainViewport,c=3<t.length?t[3]:void 0,e.abrupt("return",new Promise(function(e,t){function n(){viewer.removeEventListener("update",r),viewer.removeEventListener("overPointBudget",i),a||s&&s(),a=!0,e()}function i(i){var r;i.restQueueSize<10||(r=viewer.scene.pointclouds.filter(function(e){return e.visibleNodes.length}),console.log("准备decreaseLevel, numVisiblePoints",i.numVisiblePoints,"最小numVisiblePoints占比",1/r.length),r.forEach(function(e){var t,n;e.numVisiblePoints/i.numVisiblePoints<1/r.length||(t=e.maxLevel,n=e.visibleNodes.map(function(e){return e.getLevel()}),n=Math.max.apply(null,n),e.maxLevel=n-1,console.warn(e.dataset_id,"decreaseLevel,新maxLevel",n-1,"原maxlevel",t))}))}function r(){var e=(u.forViewOffset||u).camera;Potree.updatePointClouds(viewer.scene.pointclouds,e,c||u.resolution)}viewer.addEventListener("update",r),r();var a,o=l||2e3;document.hidden&&(o*=6),setTimeout(function(){var e;Potree.pointsLoading&&"showPointCloud"==Potree.settings.displayMode?(viewer.addEventListener("pointsLoaded",function(){a||console.log("加载完毕"," numVisiblePoints",Potree.numVisiblePoints),n()},{once:!0}),e=function(){if(document.hidden)return setTimeout(e,o);a||console.warn("超时, numVisiblePoints",Potree.numVisiblePoints),n()},setTimeout(e,o)):(console.log("已经加载完,无需再加载点云 numVisiblePoints",Potree.numVisiblePoints),n())},200)}));case 3:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"focusOnObject",value:function(r,e,a){function t(e){var t,n,i;o.mapViewer&&!u.dontMoveMap&&(t=u.minMapWidth||2,t=new Re(t,t),r.points?(n=new K,r.points.forEach(function(e){n.expandByPoint(e)})):n=r.boundingBox,u.focusBoundCenter&&n.getCenter(s),(i=(i=n.getSize(new Oe)).clone().multiplyScalar(u.boundExpandRatio||te.linearClamp(Math.max(i.x,i.y),[.5,30],[2.5,1.2]))).x=Math.max(t.x,i.x),i.y=Math.max(t.y,i.y),o.mapViewer.moveTo(s.clone(),i,a,u.margin,null,e))}var l,o=this,u=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},n=u.deferred||$.Deferred(),s=new Oe,c=new Oe,d=(a=null==a?1200:a,u.endCamera||viewer.scene.getActiveCamera()),i=d.position.clone();!u.dontChangeCamDir||null!=u.endYaw&&null!=u.endPitch||(u.endYaw=viewer.mainViewport.view.yaw,u.endPitch=viewer.mainViewport.view.pitch);if(u.onlyMap)t(function(){n.resolve()});else{var h,p=function(e,t,n,i){r=(u.dontChangeCamDir?d:(a=d.clone(),(s=viewer.mainViewport.view.clone()).position.copy(i),s.lookAt(n),null!=u.endPitch&&(s.pitch=u.endPitch,s.yaw=u.endYaw),s.applyToCamera(a),a)).matrixWorldInverse;var r,a,o=new K,s=e?(e.forEach(function(e){e=e.clone().applyMatrix4(r);o.expandByPoint(e)}),1.2):(o=t.applyMatrix4(r),1);l=o.getSize(new Oe),u.boundScale&&(s=u.boundScale),l.x*=s,l.y*=s;return l.x=Math.max(1e-4,l.x),l.y=Math.max(1e-4,l.y),"OrthographicCamera"==d.type?v=l.length()/2:(a=l.x/l.y,v=d.aspect>a?l.y/2/Math.tan(Be.degToRad(d.fov/2))+l.z/2:(e=Mf.getHFOVForCamera(d,!0),l.x/2/Math.tan(e/2)+l.z/2),v+=d.near),v=Math.max(.1,v),t=u.dontChangeCamDir?viewer.mainViewport.view.direction.negate():(new Oe).subVectors(i,n).normalize(),u.dontLookUp&&t.z<0&&t.negate(),c.copy(n).add(t.multiplyScalar(v)),c};if(this.images360.flying)h=function(){o.focusOnObject(r,e,a,$.extend(u,{deferred:n})),o.images360.removeEventListener("cameraMoveDone",h)},this.images360.addEventListener("cameraMoveDone",h);else{if("measure"==e){if(0==r.points.length)return{promise:n.resolve()};if(s.copy(r.getCenter()),u.gotoBestView?2<r.points.length?(0<(y=r.getFacePlane(s).normal.clone()).dot(this.mainViewport.view.direction)&&y.negate(),i.copy(s).add(y)):(y=(new Oe).subVectors(r.points[0],r.points[1]).normalize(),m=(new ir).setFromNormalAndCoplanarPoint(y,s),(f=(new Oe).subVectors(i,s).normalize()).z=Math.max(f.z,.4),i.copy(s).add(f),g=i.distanceTo(s),f=y.clone().multiplyScalar(g),y=(new Th).set(i.clone().add(f),i.clone().add(f.negate())),m.intersectLine(y,i)):2<r.points.length?(g=r.getFacePlane(s).normal.clone(),f=this.mainViewport.view.direction.angleTo(g),(m=Be.degToRad(60))<f&&f<Math.PI-m&&(f<Math.PI/2&&g.negate(),y=(new Oe).subVectors(d.position,s).normalize(),m=(new Oe).addVectors(y,g),i.copy(s.clone().add(m)))):2==r.points.length?(f=(new Oe).subVectors(r.points[0],r.points[1]).normalize(),((y=this.mainViewport.view.direction.angleTo(f))<(g=.25*Math.PI)||y>Math.PI-g)&&(y>Math.PI/2&&f.negate(),m=(new Oe).subVectors(d.position,s).normalize(),g=(new Oe).addVectors(f,m).normalize(),y=(new Oe).addVectors(m,g),i.copy(s.clone().add(y)))):console.error("measure 没有facePlane points点数还不为2?"),c=p(r.points,null,s,i),t(),"showPointCloud"==Potree.settings.displayMode);else if("showPanos"==Potree.settings.displayMode){r.measureType.includes("MulDistance")&&(A=r.points[Math.round(r.points.length/2)],w=(new Oe).subVectors(A,c).normalize());var f=viewer.images360.fitPanoTowardPoint({target:s,dir:w,point:c,bestDistance:0,checkIntersect:u.checkIntersect,gotoBestView:u.gotoBestView}),m={promise:n.promise()};if(f&&f.msg&&(f=f.pano,m.msg=f.msg),f)if(viewer.images360.flyToPano({pano:f,target:A||s,duration:a,deferred:n,dontMoveMap:!0,basePanoSize:u.basePanoSize}),viewer.images360.currentPano==f)return{msg:1.5<(g=viewer.images360.currentPano.position.distanceTo(s))/(y=c.distanceTo(s))&&10<g-y?"tooFar":"posNoChange",promise:n.promise()};return m}}else if("tag"==e||"point"==e){s.copy(r.position);var v,g,A,y,w=u.distance||3;if(!u.dontMoveMap&&this.mapViewer&&this.mapViewer.moveTo(s.clone(),null,a),"showPointCloud"==Potree.settings.displayMode)u.dontChangePos?c.copy(i):(v=w,A=(u.direction?u.direction.clone():this.mainViewport.view.direction).negate(),u.dontLookUp&&A.z<0&&(A.z*=-1),c.copy(s).add(A.multiplyScalar(v))),u.sameFloor&&(f=this.modules.SiteModel.pointInWhichEntity(s,"floor"))&&this.modules.SiteModel.pointInWhichEntity(c,"floor")!=f&&(g=new bh,y=s,m=(new Oe).subVectors(c,s).normalize(),g.set(y,m),(A=Potree.Utils.getIntersect(null,[f.box],null,g))?(f=Be.clamp(A.distance-.2,d.near,A.distance),c.addVectors(y,m.multiplyScalar(f)),console.log("移动到楼层")):console.error("?no intersect?")),u.checkIntersect&&(g=this.inputHandler.ifBlockedByIntersect({point:c,margin:0,cameraPos:s}))&&(c.copy(g.location),console.log("移近"));else if("showPanos"==Potree.settings.displayMode)return A=viewer.images360.fitPanoTowardPoint({point:s,dir:this.mainViewport.view.direction,checkIntersect:u.checkIntersect,sameFloor:u.sameFloor,bestDistance:w,maxDis:u.maxDis}),y={promise:n.promise()},A&&A.msg&&(A=A.pano,y.msg=A.msg),A&&viewer.images360.flyToPano({pano:A,target:s,duration:a,deferred:n,dontMoveMap:!0,basePanoSize:u.basePanoSize}),y}else if(r.boundingBox&&"boundingBox"==e){s=r.boundingBox.getCenter(new Oe);if(u.dir&&i.copy(s).sub(u.dir),c=p(r.points,r.boundingBox.clone(),s,i),"showPanos"==Potree.settings.displayMode)return m=viewer.images360.fitPanoTowardPoint({point:c,bestDistance:0}),f={promise:n.promise()},m&&m.msg&&(m=m.pano,f.msg=m.msg),m&&viewer.images360.flyToPano({pano:m,target:s,duration:a,deferred:n,dontMoveMap:!0,basePanoSize:u.basePanoSize}),m||console.error("no pano"),f;t()}u.startCamera&&u.endCamera?viewer.mainViewport.view.tranCamera(this.mainViewport,{endPosition:c,target:s,boundSize:l,callback:function(){n.resolve()},startCamera:u.startCamera,endCamera:u.endCamera,midCamera:this.scene.cameraBasic,endYaw:u.endYaw,endPitch:u.endPitch},a):"OrthographicCamera"==d.type?viewer.mainViewport.view.moveOrthoCamera(this.mainViewport,{endPosition:c,target:s,boundSize:l,endYaw:u.endYaw,endPitch:u.endPitch,callback:function(){n.resolve()}},a):viewer.mainViewport.view.setView({position:c,target:s,duration:a,endYaw:u.endYaw,endPitch:u.endPitch,callback:function(){n.resolve()}}),this.dispatchEvent({type:"focusOnObject",CamTarget:s,position:c})}}return{promise:n.promise()}}},{key:"flyToDataset",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=t instanceof Z?t:t.pointcloud||this.scene.pointclouds.find(function(e){return e.dataset_id==t.id}),e=null==t.duration?1e3:t.duration;if((t.focusOnPoint||!n.panosBound)&&n.root.geometryNode)return a=n.root.geometryNode.geometry.attributes.position.array,s=n.root.geometryNode.geometry.attributes.position.count,s=Math.ceil(s/2),(a=new Oe(a[3*s+0],a[3*s+1],a[3*s+2])).applyMatrix4(n.root.sceneNode.matrixWorld),viewer.focusOnObject({position:a},"point",e,{dontChangeCamDir:!0,distance:15}),t.dontMoveMap||viewer.mapViewer.fitToPointcloud(n,e),void console.log("flyToDataset focusOnPoint done");function i(){var e=[W0.scoreFunctions.distanceSquared({position:o})];if((e=j.sortByScore(n.panos,[],e)).length)return e[0].item}var r,a,o=n.bound.getCenter(new Oe);if("showPanos"==Potree.settings.displayMode){var s=i();if(!s)return!1;if(s==this.images360.currentPano)return"posNoChange";this.images360.flyToPano({pano:s})}else{if(a=o,n.panosBound&&(a=n.panosBound.center.clone(),s=i())&&(r=s.position,a.z=r.z),this.modules.Clip.editing)a.z=o.z,this.modules.Clip.bus.dispatchEvent({type:"flyToPos",position:a,duration:e});else{if(te.closeTo(a,this.images360.position))return"posNoChange";viewer.mainViewport.view.setView({position:a,target:r,duration:e})}t.dontMoveMap||viewer.mapViewer.fitToPointcloud(n,e)}return!0}},{key:"findClosestDatasetOnMap",value:function(n){var e=viewer.scene.pointclouds.filter(function(e){return e.visible}),t=viewer.bound.boundSize.length(),e=Potree.Common.sortByScore(e,[],[function(e){var t=n.clone().setZ(e.panosBound?e.panosBound.center.z:(e.bound.min.z+e.bound.max.z)/2);return-(e.panosBound?e.panosBound.bounding:e.bound).distanceToPoint(t)},function(e){return e in viewer.fpVisiDatasets?t:0}]);return e[0]&&e[0].item}},{key:"addTimeMark",value:function(e,t){var n=Potree.timeCollect[e],i=n&&n.start&&n.measures.length<n.minCount;(i||Potree.measureTimings)&&(performance.mark(e+"-"+t),"end"==t)&&(t=performance.measure(e,e+"-start",e+"-end"),i)&&(n.measures.push(t.duration),n.sum+=t.duration,n.ave=n.sum/n.measures.length,n.measures.sort(function(e,t){return e-t}),n.median=n.measures[parseInt(n.measures.length/2)])}},{key:"addFakeMeasure",value:function(e,t){Potree.measureTimings&&(this.fakeMeasure[e]||(this.fakeMeasure[e]=[]),this.fakeMeasure[e].push({name:e,duration:t}))}},{key:"resolveTimings",value:function(e,t){if(this.toggle||(this.toggle=e),1e3<e-this.toggle){if(t){var n,i=performance.getEntriesByType("measure");for(n in this.fakeMeasure)i.push.apply(i,Fe(this.fakeMeasure[n]));var r,a=new Set,o=q(i);try{for(o.s();!(r=o.n()).done;){var s=r.value;a.add(s.name)}}catch(e){o.e(e)}finally{o.f()}var l,u=new Map,c=q(a);try{for(c.s();!(l=c.n()).done;){var d=l.value;u.set(d,{measures:[],sum:0,n:0,min:1/0,max:-1/0})}}catch(e){c.e(e)}finally{c.f()}var h,p=q(i);try{for(p.s();!(h=p.n()).done;){var f=h.value,m=u.get(f.name);m.measures.push(f),m.sum+=f.duration,m.n++,m.min=Math.min(m.min,f.duration),m.max=Math.max(m.max,f.duration)}}catch(e){p.e(e)}finally{p.f()}var v,g=q(u);try{for(g.s();!(v=g.n()).done;){var A=U(v.value,2),y=(A[0],A[1]),w=(y.mean=y.sum/y.n,y.measures.slice());w.sort(function(e,t){return e.duration-t.duration}),1===y.n?y.median=w[0].duration:1<y.n&&(y.median=w[parseInt(y.n/2)].duration)}}catch(e){g.e(e)}finally{g.f()}var b,x=Array.from(a).reduce(function(e,t){return Math.max(e,t.length)},0)+5,E=" ".concat("NAME".padEnd(x)," |")+" ".concat("MIN".padStart(6)," |")+" ".concat("MEDIAN".padStart(6)," |")+" ".concat("MAX".padStart(6)," |")+" ".concat("AVE".padStart(6)," |")+" ".concat("SAMPLES".padStart(4)," \n"),C=(E+=" ".concat("-".repeat(E.length),"\n"),q(a=Array.from(a).sort()));try{for(C.s();!(b=C.n()).done;){var B=b.value,M=u.get(B),S=M.min.toFixed(3),T=M.median.toFixed(3),_=M.max.toFixed(3),P=M.mean.toFixed(3),D=M.n;E+=" ".concat(B.padEnd(x)," |")+" ".concat(S.padStart(6)," |")+" ".concat(T.padStart(6)," |")+" ".concat(_.padStart(6)," |")+" ".concat(P.padStart(6)," |")+" ".concat(D.toString().padStart(4),"\n")}}catch(e){C.e(e)}finally{C.f()}E+="\n",console.log(E)}this.fakeMeasure={},performance.clearMarks(),performance.clearMeasures(),this.toggle=e}}},{key:"loop",value:function(e){var t,n=this;this.paused||(performance.getEntriesByName("loopWaitNext-start").length&&viewer.addTimeMark("loopWaitNext","end"),this.stats&&this.stats.begin(),performance.mark("loop-start"),this.dispatchEvent("loopStart"),this.interacted=!1,this.shelterCount={byTex:0,byCloud:0,maxByTex:100,maxByCloud:0},t=this.clock.getDelta(),this.update(t,e),this.magnifier.render(),this.render(),this.objs.children.forEach(function(e){"3dTiles"==e.fileType&&e.traverse(function(e){if(e.runtime)return e.runtime.update(t,n.renderer,n.mainViewport.camera),{stopContinue:!0}})}),Potree.framenumber++,this.images360.tileDownloader.update(),this.images360.panoRenderer.update(),this.images360.getNeighbours(this.interacted),this.computeShelter(),this.stats&&this.stats.end(),viewer.addTimeMark("loop","end"),viewer.addTimeMark("loopWaitNext","start"),this.resolveTimings(e,Potree.measureTimings))}},{key:"postError",value:function(e){e=this.postMessage(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:{});return e.element.addClass("potree_message_error"),e}},{key:"postMessage",value:function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=new NA(e);return i.element.css("display","none"),i.elClose.click(function(){i.element.slideToggle(100);var e=t.messages.indexOf(i);0<=e&&t.messages.splice(e,1)}),this.elMessages.prepend(i.element),i.element.slideToggle(100),this.messages.push(i),void 0!==n.duration&&setTimeout(function(){i.element.animate({opacity:0},500),i.element.slideToggle(200)},n.duration),i}},{key:"getBoundingBox",value:function(e){return this.bound||this.updateModelBound(),this.bound.boundingBox.clone()}},{key:"updateModelBound",value:function(e){var t=this;this.boundNeedUpdate=!1,this.bound=ne.computePointcloudsBound(this.scene.pointclouds.filter(function(e){return e.visible||e.unvisibleReasons&&1==e.unvisibleReasons.length&&"displayMode"==e.unvisibleReasons[0].reason})),Potree.settings.boundAddObjs&&(this.objs.children.forEach(function(e){t.bound.boundingBox.union(e.boundingBox.clone().applyMatrix4(e.matrixWorld))}),this.bound.boundingBox.getSize(this.bound.boundSize),this.bound.boundingBox.getCenter(this.bound.center)),viewer.farWhenShowPano=10*this.bound.boundSize.length(),viewer.scene.pointclouds.forEach(function(e){e.material.heightMin=t.bound.boundingBox.min.z,e.material.heightMax=t.bound.boundingBox.max.z}),this.dispatchEvent({type:"updateModelBound"})}},{key:"waitForLoad",value:function(e,t){this.waitQueue.push({object:e,isLoadedCallback:t}),1===this.waitQueue.length&&this.dispatchEvent({type:"loading",show:!0})}},{key:"ifAllLoaded",value:function(){0<this.waitQueue.length&&(this.waitQueue=this.waitQueue.filter(function(e){return!e.isLoadedCallback()})),0===this.waitQueue.length&&this.dispatchEvent({type:"loading",show:!1})}},{key:"cancelLoad",value:function(t){this.waitQueue=this.waitQueue.filter(function(e){return e.object!=t}),this.ifAllLoaded()}},{key:"setView",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};null!=t.pano?this.images360.flyToPano(t):this.mainViewport.view.setView($.extend({},t,{callback:function(){t.displayMode&&(Potree.settings.displayMode=t.displayMode),!t.pano&&t.currentPano&&(e.images360.currentPano=t.currentPano),t.callback&&t.callback()}}))}},{key:"setPointStandardMat",value:function(e,t,n){var i=this;if(console.log("setPointStandardMat",e),e){if(this.pointStatesBefore)return console.warn("已设置过pointStatesBefore!");this.pointStatesBefore={opacity:new Map,size:new Map,density:Potree.settings.pointDensity,useEDL:this.getEDLEnabled(),shape:viewer.scene.pointclouds[0].material.shape},viewer.scene.pointclouds.forEach(function(e){i.pointStatesBefore.opacity.set(e,e.temp.pointOpacity),i.pointStatesBefore.colorType=e.material.activeAttributeName,n&&i.pointStatesBefore.size.set(e,e.temp.pointSize)}),t&&(Potree.settings.pointDensity=t),n&&(Potree.settings.sizeFitToLevel=!0),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="rgba",e.material.shape=Potree.PointShape.SQUARE,n&&e.changePointSize(Potree.config.material.realPointSize,!0),e.changePointOpacity(1)}),viewer.setEDLEnabled(!1)}else{if(!this.pointStatesBefore)return console.error("未设置过pointStatesBefore!");Potree.settings.sizeFitToLevel=!1,t&&(Potree.settings.pointDensity=this.pointStatesBefore.pointDensity),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName=i.pointStatesBefore.colorType,e.changePointOpacity(i.pointStatesBefore.opacity.get(e)),e.material.shape=i.pointStatesBefore.shape;var t=i.pointStatesBefore.size.get(e);t&&e.changePointSize(t)}),viewer.setEDLEnabled(this.pointStatesBefore.useEDL),this.pointStatesBefore=null}}},{key:"transformObject",value:function(e){var t=viewer.inputHandler.selection[0];e?(t&&t!=e&&this.transformObject(null),e.boundingBox||(e.boundingBox=new K),viewer.inputHandler.selection.includes(e)||viewer.inputHandler.toggleSelection(e)):t&&viewer.inputHandler.toggleSelection(t)}},{key:"pointInWhichPointcloud",value:function(n){var e=j.sortByScore(this.scene.pointclouds,[],[function(e){var t=e.pcoGeometry.tightBoundingBox.getSize(new Oe),e=e.bound.getCenter(new Oe);return t.length()/2/n.distanceTo(e)}]),t=e[0];return t&&1<t.score?e[0].item:null}},{key:"modelLoaded",value:function(n){var s,e,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=2<arguments.length?arguments[2]:void 0,l=(n.isModel=!0,new K);if(i.parentInfo)return n.name=i.name,i.parentInfo.loadedCount++,i.parentInfo.modelGroup.add(n),i.parentInfo.loadedCount==i.parentInfo.url.length?this.modelLoaded(i.parentInfo.modelGroup,i.parentInfo,t):void 0;n.name=null!=i.name?i.name:i.fileType,n.fileType=i.fileType,n.boundingBox=l,n.opacity=1,n.updateMatrixWorld(),null!=i.id&&(n.dataset_id=i.id),i.loadCostTime=Date.now()-i.loadStartTime,console.log("加载完毕:",j.getNameFromURL(i.url),"耗时(ms)",i.loadCostTime),"3dTiles"==i.fileType?(s=!n.runtime,(n.runtime?[n]:n.children).forEach(function(e){var t=new K,n=e.runtime.getTileset().tileset,i=n.root.boundingVolume.box;if(i){var r=new Oe(i[0],i[1],i[2]),a=(new Oe,new Oe(i[3],i[4],i[5])),o=new Oe(i[6],i[7],i[8]),i=new Oe(i[9],i[10],i[11]),a=a.length(),o=o.length(),i=i.length();t.min.set(-a,-o,-i),t.max.set(a,o,i),s&&(e.position.copy(r),e.position.z*=-1,t.translate(e.position))}else{if(!n.root.boundingVolume.sphere)return console.error("json boundingVolume 缺少信息");a=n.root.boundingVolume.sphere,o=(ie(Oe,Fe(a)),a[3]/2);t.min.set(-o,-o,-o),t.max.set(o,o,o)}console.log("3d tiles json",n),n.root.refine="ADD",n.refine="ADD",l.union(t)})):(Potree.Utils.setObjectLayers(n,Potree.settings.showObjectsOnMap?"bothMapAndScene":"model"),n.traverse(function(e){var t;(e.isMesh||e instanceof Fl||e.isLine)&&(e.renderOrder=Potree.config.renderOrders.model,e.geometry.computeBoundingBox(),l.union(e.geometry.boundingBox.clone().applyMatrix4(e.matrixWorld)),!i.unlit||e.material instanceof t0||(t=new t0({map:e.material.map,opacity:e.material.opacity,color:e.material.color}),e.material=t),!i.useStandandMat||e.material instanceof oc||(e.material=new oc),e.material)})),this.objs.add(n),i.transform&&((e=function(e){var t=i.transform[e];t&&(t instanceof Array?n[e].fromArray(t):n[e].copy(t))})("position"),e("rotation"),e("scale")),i.moveWithPointcloud&&(n.updateMatrix(),n.matrixAutoUpdate=!1,n.matrix.premultiply(viewer.scene.pointclouds[0].transformMatrix),n.matrixWorldNeedsUpdate=!0),n.updateMatrixWorld(),$x.getBoundCenter(n),t&&t(n,i),this.dispatchEvent({type:"modelLoaded",model:n})}},{key:"loadModel",value:(r=J(X().mark(function e(i,r,a,o){var n,t,s,l,u,c,d,h,p=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:console.log("开始加载",j.getNameFromURL(i.url)),new K,i.objurl&&(i.url=i.objurl,i.fileType="obj"),i.url instanceof Array?1!=i.url.length?e.next=8:(i.url=i.url[0],e.next=12):e.next=12;break;case 8:return i.loadedCount=0,i.modelGroup=new Z,i.url.forEach(function(e,t){var n=j.CloneObject(i);n.url=e,n.name="child-"+t,n.parentInfo=i,p.loadModel(n,r,a,o)}),e.abrupt("return");case 12:i.url=j.dealURL(i.url),i.loadStartTime=Date.now(),n=function(e,t){p.modelLoaded(e,t||i,r)},t=function(e){e.lengthComputable&&(e=e.loaded/e.total*100,a)&&a(e)},"obj"!=i.fileType?e.next=20:(i.mtlurl?YR.mtlLoader.load(i.mtlurl,function(e){e.preload(),YR.objLoader.setMaterials(e).load(i.objurl,function(e,t){n(e)},t,o)},t,o):YR.objLoader.load(i.objurl,function(e,t){n(e)},t,o),e.next=58);break;case 20:"glb"!=i.fileType?e.next=25:(YR.glbLoader.unlitMat=!0,YR.glbLoader.load(i.url,function(e,t){n(e.scene)},t,o),e.next=58);break;case 25:"ply"!=i.fileType?e.next=29:(YR.plyLoader.load(i.url,function(e){console.log("ply加载完毕",e),e=e.index?new Q(e):new Fl(e,new Dl({vertexColors:!0,size:.02})),n(e)}),e.next=58);break;case 29:if("3dTiles"==i.fileType)return e.next=32,TR.load({url:i.url,gltfLoader:YR.glbLoader,options:{maximumScreenSpaceError:i.maximumScreenSpaceError||80,debug:vf.urlHasValue("tilesBox"),parent:this.scene.scene,is4dkk:i.is4dkk,updateTime:i.updateTime}});e.next=44;break;case 32:s=e.sent,console.log(s),s.model.runtime=s.runtime,l=!1,(u=s.runtime.getTileset()).addEventListener("endTileLoading",function(e){0!=e.loadingCount||l||(l=!0,console.log("loaded!!!!!!!!!!!!!"))}),u.addEventListener("tileLoaded",function(e){var t=(s.model.parent==p.objs?s.model:s.model.parent).opacity;$x.changeOpacity(e.tileContent,t)}),c=!0,Object.defineProperty(s.model,"visible",{get:function(){return c},set:function(e){c=e,u.visible=e,u.nextForceUpdate=!0}}),n(s.model),e.next=58;break;case 44:"dxf"!=i.fileType?e.next=48:(YR.dxfLoader.load(i.url,function(e){n(e)},i),e.next=58);break;case 48:if("shp"==i.fileType)return YR.shapeLoader.transform=viewer.transform.lonlatToLocal,e.next=52,YR.shapeLoader.load(i.url);e.next=57;break;case 52:d=e.sent,d=d.node,n(d),e.next=58;break;case 57:"3dgs"==i.fileType&&((h=new Potree.GaussianSplats3D.Viewer({rootElement:this.renderArea,threeScene:this.scene.scene,renderer:this.renderer,camera:this.mainViewport.camera,useBuiltInControls:!1})).addSplatScene(i.url,{streamView:!0}).then(function(){h.start(),h.splatMesh.updateMatrix(),h.splatMesh.updateMatrixWorld(),h.splatMesh.visible=!1,h.splatMesh.onSplatTreeReadyCallback=function(){var e=h.splatMesh.splatTree.subTrees[0],t=e.sceneMax,e=e.sceneMin;h.splatMesh.boundingBox.min.copy(e),h.splatMesh.boundingBox.max.copy(t),n(h.splatMesh)}}),viewer.addEventListener("render.begin2",function(e){"scene"==e.name&&(h.update(),h.initialized)&&h.splatRenderReady&&(h.splatMesh.visible=!0)}));case 58:case"end":return e.stop()}},e,this)})),function(e,t,n,i){return r.apply(this,arguments)})},{key:"removeModel",value:function(e){this.objs.remove(e);e.traverse(function(e){(e=e).geometry&&e.geometry.dispose(),e.material&&e.material.dispose()}),Potree.settings.boundAddObjs&&this.updateModelBound()}},{key:"setDisplay",value:function(n){var i=this,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"setDisplay";n=!!n,this.objs.children.forEach(function(e){var t;"3dTiles"==e.fileType&&(t=e.runtime.getTileset(),Potree.Utils.updateVisible(e,r,n),n||t._cache.trim(),e.runtime.update(16,i.renderer,i.mainViewport.camera,!0),n)&&i.dispatchEvent("content_changed")}),n?Potree.pointBudget=6e6:(Potree.pointBudget=0,Potree.updatePointClouds(this.scene.pointclouds,this.mainViewport.camera,this.mainViewport.resolution),this.images360.panoRenderer.disposeIdelTargets(),this.images360.depthSampler.clearTexData()),this.dispatchEvent({type:"setDisplay",state:n}),this.paused=!n}},{key:"addFire",value:function(){var e;"t-CwfhfqJ"==Potree.settings.number&&(e=Potree.Utils.datasetPosTransform({pointcloud:viewer.scene.pointclouds[0],position:new Oe(4.4318,-.580291847759,-.78),fromDataset:!0}),viewer.modules.ParticleEditor.addParticle({type:"fire",positions:[e],radius:.42,height:10}),viewer.modules.ParticleEditor.addParticle({type:"smoke",positions:[(new Oe).addVectors(e,new Oe(0,0,.3))],positionStyle:"sphere",positionRadius:.3,sizeTween:[[0,.3,.9,1],[.05,.1,1,.8]],opacityBase:.2,opacityTween:[[0,.3,.7,.95,1],[0,.2,1,.1,0]],velocityBase:new Oe(0,0,1),velocitySpread:new Oe(.2,.2,-.3),accelerationBase:.2,accelerationSpread:.7,radius:0,particleDeathAge:3}),viewer.modules.ParticleEditor.addParticle({type:"explode",name:"fire splash",position:(new Oe).addVectors(e,new Oe(0,0,.3)),size:.1,sizeRange:.3,sizeTween:[[0,.05,.3,.45],[0,.02,.1,.05]],opacityTween:[[0,.05,.3,.45],[1,1,.5,0]],speed:1,speedRange:4,radius:.1,acceleration:.3,accelerationRange:1,particleSpaceTime:0,strength:4}))}},{key:"addVideo",value:function(){var a,e,o=this;"SS-t-P6zBR73Gke"==Potree.settings.number&&(a=new Nu(1,1,1,1),e=this.videoInfo=[{id:"40-2",url:"https://laser-oss.4dkankan.com/testdata/SS-t-P6zBR73Gke/temp/poi/2022/05/10/0aabafee-36b8-455d-9c11-0780bf694786.mp4",rotation:[-1.494468618954883,-1.4987317433158989,-3.061254983446741],position:[19.801820617361624,2.884673619844108,-.03362305858221648],scale:[3.5741423153151763,2.8738725275578703,1]},{id:40,url:"https://laser-oss.4dkankan.com/testdata/SS-t-P6zBR73Gke/temp/poi/2022/05/09/7896d6ef-a2d6-4fd7-949c-768782a5b484.mp4",rotation:[-1.5487684197910518,.021848470169552752,-3.1387534893955236],position:[17.277316608096,2.0840432922115846,-.0931149415437065],scale:[2.0821757723834047,.6129478480765236,1],visibles:[40]}],e.forEach(function(e){var n=e;function t(){i.play(),o.removeEventListener("global_mousedown",t)}var i=$('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0],e=(i.setAttribute("crossOrigin","Anonymous"),i.src=n.url||Potree.resourcePath+"/video/".concat(Potree.settings.number,"/").concat(n.id,".mp4"),new Ul(i)),r=o.videoPlane=new Q(a,new R({color:"#ffffff",transparent:!0,depthTest:!1,opacity:0,map:e}));r.position.fromArray(n.position),r.rotation.fromArray(n.rotation),n.scale&&r.scale.fromArray(n.scale),o.scene.scene.add(r),(n.plane=r).boundingBox=new K(new Oe(0,-.5,0),new Oe(1,-.4,.2)),i.addEventListener("loadeddata",function(e){i.play(),n.visibles||(r.material.opacity=1),n.scale||r.scale.set(i.videoWidth/1e3,i.videoHeight/1e3,1),console.log("video loadeddata",n.id)}),n.visibles&&o.images360.addEventListener("flyToPano",function(t){n.visibles.includes(t.toPano.pano.id)?setTimeout(function(){var e;r.visible=!0,i.currentTime=0,i.play(),i.paused&&(e=function(){r.visible&&i.play(),o.removeEventListener("global_mousedown",e)},o.addEventListener("global_mousedown",e)),Potree.settings.zoom.enabled=!1,df.start(uf(r.material,"opacity",1),.4*t.toPano.duration,function(){},0,of.easeInOutQuad)},.6*t.toPano.duration):df.start(uf(r.material,"opacity",0),.4*t.toPano.duration,function(){n||(r.visible=!1,i.pause(),Potree.settings.zoom.enabled=!0)},0,of.easeInOutQuad)}),o.addEventListener("global_mousedown",t),Potree.settings.isTest&&r.addEventListener("select",function(e){console.log(e)})}))}},{key:"addTube",value:function(t){var v,n,i,g=this;for(i in t)!function(){if(i==Potree.settings.number){var e=t[i],m=new K;for(m.min.set(-1,-1,-1),m.max.set(1,1,1),v=0,n=function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.color,n=e.path,i=e.height,r=e.fromDataset,a=e.radius,o=void 0===a?.08:a,a=e.datasetId,s=void 0===a?Potree.settings.originDatasetId:a,a=e.spaceDis,l=e.tension,l=void 0===l?.1:l,u=e.visiEntity,e="tube_"+v,c=2*Math.PI/30,d=[],h=0;h<30;h++){var p=c*h;d.push(new Re(o*Math.cos(p),o*Math.sin(p)))}t=new oc({color:t,roughness:.9,metalness:.3}),n=n.map(function(e){return e instanceof Array&&(e=(new Oe).fromArray(e)),(e=r?Potree.Utils.datasetPosTransform({fromDataset:!0,position:e,datasetId:s}):(new Oe).copy(e)).setZ(e.z+i)});console.log(n);var f=new Q(ov.getExtrudeGeo(d,null,{extrudePath:n,tension:l,spaceDis:a}),t);f.name=e,(window[e]=f).boundingBox=m,f.matrixAutoUpdate=!1,r||f.matrix.copy(viewer.scene.pointclouds[0].transformMatrix),f.matrixWorldNeedsUpdate=!0,g.scene.scene.add(f),u&&g.modules.SiteModel.bus.addEventListener("buildingChange",function(e){Potree.Utils.updateVisible(f,"isInEntity",e.entity&&e.entity.name==u)})};v<e.length;)n(e[v]),v++}}()}},{key:"addSprite",value:function(e){var t=new(null!=e.text?TextSprite:(t=texLoader.load(src),e.map=t,Sprite))(e);return t}}]);var r,n,e,t,i}()),nu=function(){function t(e){ue(this,t),(a=le(this,t)).viewer=e,a.renderer=e.renderer,a.scene=null,a.sceneControls=new Fs,a.rotationSpeed=5,a.fadeFactor=20,a.yawDelta=0,a.pitchDelta=0,a.panDelta=new Re(0,0),a.radiusDelta=0,a.doubleClockZoomEnabled=!0,a.tweens=[];var a,o=null;return a.addEventListener("touchstart",function(e){o=e}),a.addEventListener("touchend",function(e){o=e}),a.addEventListener("touchmove",function(e){var t,n,i,r;2===e.touches.length&&2===o.touches.length?(t=e,r=(i=o).touches[0].pageX-i.touches[1].pageX,i=i.touches[0].pageY-i.touches[1].pageY,r=Math.sqrt(r*r+i*i),i=t.touches[0].pageX-t.touches[1].pageX,t=t.touches[0].pageY-t.touches[1].pageY,i=Math.sqrt(i*i+t*t),t=a.scene.view.radius+a.radiusDelta,a.radiusDelta=t/(i/r)-t,a.stopTweens()):3===e.touches.length&&3===o.touches.length&&(r=((i=o).touches[0].pageX+i.touches[1].pageX+i.touches[2].pageX)/3,t=(i.touches[0].pageY+i.touches[1].pageY+i.touches[2].pageY)/3,i=(e.touches[0].pageX+e.touches[1].pageX+e.touches[2].pageX)/3,n=(e.touches[0].pageY+e.touches[1].pageY+e.touches[2].pageY)/3,i=(i-r)/a.renderer.domElement.clientWidth,r=(n-t)/a.renderer.domElement.clientHeight,a.panDelta.x+=i,a.panDelta.y+=r,a.stopTweens()),o=e}),a.addEventListener("drag",function(e){var t,n;null===e.drag.object&&(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,a.dispatchEvent({type:"start"})),t=e.drag.lastDrag.x/a.renderer.domElement.clientWidth,n=e.drag.lastDrag.y/a.renderer.domElement.clientHeight,e.drag.mouse===Tm.LEFT?(a.yawDelta+=t*a.rotationSpeed,a.pitchDelta+=n*a.rotationSpeed,a.stopTweens()):e.drag.mouse===Tm.RIGHT&&(a.panDelta.x+=t,a.panDelta.y+=n,a.stopTweens()))}),a.addEventListener("drop",function(e){a.dispatchEvent({type:"end"})}),a.addEventListener("mousewheel",function(e){var t=a.scene.view.radius+a.radiusDelta;a.radiusDelta+=-e.delta*t*.1,a.stopTweens()}),a.addEventListener("dblclick",function(e){a.doubleClockZoomEnabled&&a.zoomToLocation(e.mouse)}),a}return v(t,mm),A(t,[{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.radiusDelta=0,this.panDelta.set(0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u=this,c=this.scene.getActiveCamera(),d=ne.getMousePointCloudIntersection(e,c,this.viewer,this.scene.pointclouds,{pickClipped:!0});null!==d&&(t=0,n=this.renderer.domElement,e=ne.mouseToRay(e,c,n.clientWidth,n.clientHeight),n=(c=d.pointcloud.nodesOnRay(d.pointcloud.visibleNodes,e))[c.length-1].getBoundingSphere(new bi).radius,t=Math.min(this.scene.view.radius,n),t=Math.max(.2,t),e=this.scene.view.direction.multiplyScalar(-1),c=(new Oe).addVectors(d.location,e.multiplyScalar(t)),n=TWEEN.Easing.Quartic.Out,i={x:0},(r=new TWEEN.Tween(i).to({x:1},600)).easing(n),this.tweens.push(r),a=this.scene.view.position.clone(),o=c.clone(),s=this.scene.view.radius,l=c.distanceTo(d.location),r.onUpdate(function(){var e=i.x;u.scene.view.position.x=(1-e)*a.x+e*o.x,u.scene.view.position.y=(1-e)*a.y+e*o.y,u.scene.view.position.z=(1-e)*a.z+e*o.z,u.scene.view.radius=(1-e)*s+e*l,u.viewer.setMoveSpeed(u.scene.view.radius)}),r.onComplete(function(){u.tweens=u.tweens.filter(function(e){return e!==r})}),r.start())}},{key:"stopTweens",value:function(){this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]}},{key:"update",value:function(e){var t=this.scene.view,n=Math.min(1,this.fadeFactor*e),i=t.yaw,r=t.pitch,a=t.getPivot(),n=(i-=n*this.yawDelta,r-=n*this.pitchDelta,t.yaw=i,t.pitch=r,this.scene.view.direction.multiplyScalar(-t.radius)),i=(new Oe).addVectors(a,n);t.position.copy(i);r=Math.min(1,this.fadeFactor*e)*t.radius*3,a=-this.panDelta.x*r,n=this.panDelta.y*r,t.pan(a,n),i=Math.min(1,this.fadeFactor*e),r=t.radius+i*this.radiusDelta,a=t.direction.multiplyScalar(-r),n=(new Oe).addVectors(t.getPivot(),a),t.radius=r,t.position.copy(n),i=t.radius,this.viewer.setMoveSpeed(i),a=Math.min(1,this.fadeFactor*e),r=Math.max(0,1-this.fadeFactor*e);this.yawDelta*=r,this.pitchDelta*=r,this.panDelta.multiplyScalar(r),this.radiusDelta-=a*this.radiusDelta}}])}(),ck=function(){function t(e){var r;ue(this,t),(r=le(this,t)).viewer=e,r.renderer=e.renderer,r.scene=null,r.sceneControls=new Fs,r.rotationSpeed=200,r.moveSpeed=10,r.lockElevation=!1,r.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["R".charCodeAt(0),33],DOWN:["F".charCodeAt(0),34]},r.fadeFactor=50,r.yawDelta=0,r.pitchDelta=0,r.translationDelta=new Oe(0,0,0),r.translationWorldDelta=new Oe(0,0,0),r.tweens=[];return r.addEventListener("drag",function(e){var t,n,i;null===e.drag.object&&(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,r.dispatchEvent({type:"start"})),t=r.viewer.getMoveSpeed(),n=e.drag.lastDrag.x/r.renderer.domElement.clientWidth,i=e.drag.lastDrag.y/r.renderer.domElement.clientHeight,e.drag.mouse===Tm.LEFT?(r.yawDelta+=n*r.rotationSpeed,r.pitchDelta+=i*r.rotationSpeed):e.drag.mouse===Tm.RIGHT&&(r.translationDelta.x-=n*t*100,r.translationDelta.z+=i*t*100))}),r.addEventListener("drop",function(e){r.dispatchEvent({type:"end"})}),r.addEventListener("mousewheel",function(e){var t=r.viewer.getMoveSpeed();e.delta<0?t*=.9:0<e.delta&&(t/=.9),t=Math.max(t,.1),r.viewer.setMoveSpeed(t)}),r.addEventListener("dblclick",function(e){r.zoomToLocation(e.mouse)}),r}return v(t,mm),A(t,[{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.translationDelta.set(0,0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u=this,c=this.scene.getActiveCamera(),d=ne.getMousePointCloudIntersection(e,c,this.viewer,this.scene.pointclouds);null!==d&&(t=0,n=this.renderer.domElement,e=ne.mouseToRay(e,c,n.clientWidth,n.clientHeight),n=(c=d.pointcloud.nodesOnRay(d.pointcloud.visibleNodes,e))[c.length-1].getBoundingSphere(new bi).radius,t=Math.min(this.scene.view.radius,n),t=Math.max(.2,t),e=this.scene.view.direction.multiplyScalar(-1),c=(new Oe).addVectors(d.location,e.multiplyScalar(t)),n=TWEEN.Easing.Quartic.Out,i={x:0},(r=new TWEEN.Tween(i).to({x:1},600)).easing(n),this.tweens.push(r),a=this.scene.view.position.clone(),o=c.clone(),s=this.scene.view.radius,l=c.distanceTo(d.location),r.onUpdate(function(){var e=i.x;u.scene.view.position.x=(1-e)*a.x+e*o.x,u.scene.view.position.y=(1-e)*a.y+e*o.y,u.scene.view.position.z=(1-e)*a.z+e*o.z,u.scene.view.radius=(1-e)*s+e*l,u.viewer.setMoveSpeed(u.scene.view.radius/2.5)}),r.onComplete(function(){u.tweens=u.tweens.filter(function(e){return e!==r})}),r.start())}},{key:"update",value:function(e){var t=this.scene.view,n=([this.yawDelta,this.pitchDelta,this.translationDelta.length(),this.translationWorldDelta.length()].some(function(e){return.001<Math.abs(e)})&&0<this.tweens.length&&(this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]),this.viewer.inputHandler),i=this.keys.FORWARD.some(function(e){return n.pressedKeys[e]}),r=this.keys.BACKWARD.some(function(e){return n.pressedKeys[e]}),a=this.keys.LEFT.some(function(e){return n.pressedKeys[e]}),o=this.keys.RIGHT.some(function(e){return n.pressedKeys[e]}),s=this.keys.UP.some(function(e){return n.pressedKeys[e]}),l=this.keys.DOWN.some(function(e){return n.pressedKeys[e]}),u=(this.lockElevation?((u=t.direction).z=0,u.normalize(),i&&r?this.translationWorldDelta.set(0,0,0):i?this.translationWorldDelta.copy(u.multiplyScalar(this.viewer.getMoveSpeed())):r&&this.translationWorldDelta.copy(u.multiplyScalar(-this.viewer.getMoveSpeed()))):i&&r?this.translationDelta.y=0:i?this.translationDelta.y=this.viewer.getMoveSpeed():r&&(this.translationDelta.y=-this.viewer.getMoveSpeed()),a&&o?this.translationDelta.x=0:a?this.translationDelta.x=-this.viewer.getMoveSpeed():o&&(this.translationDelta.x=this.viewer.getMoveSpeed()),s&&l?this.translationWorldDelta.z=0:s?this.translationWorldDelta.z=this.viewer.getMoveSpeed():l&&(this.translationWorldDelta.z=-this.viewer.getMoveSpeed()),t.yaw),i=t.pitch,r=(u-=this.yawDelta*e,i-=this.pitchDelta*e,t.yaw=u,t.pitch=i,t.translate(this.translationDelta.x*e,this.translationDelta.y*e,this.translationDelta.z*e),t.translateWorld(this.translationWorldDelta.x*e,this.translationWorldDelta.y*e,this.translationWorldDelta.z*e),t.radius=3*this.viewer.getMoveSpeed(),Math.max(0,1-this.fadeFactor*e));this.yawDelta*=r,this.pitchDelta*=r,this.translationDelta.multiplyScalar(r),this.translationWorldDelta.multiplyScalar(r)}}])}(),Yl=(Ad.prototype.zoomTo=function(e){(e.geometry||e.boundingBox)&&this.updateProjectionMatrix()},ya.prototype.zoomTo=function(e,t){var n,i;(e.geometry||e.boundingSphere||e.boundingBox)&&(e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(),t=t||1,e=(n=(n=e.boundingSphere||(e.geometry&&e.geometry.boundingSphere?e.geometry.boundingSphere:e.boundingBox.getBoundingSphere(new bi))).clone().applyMatrix4(e.matrixWorld)).radius,i=this.fov*Math.PI/180,this.aspect<1&&(i*=this.aspect),e=Math.abs(e/Math.sin(i/2))*t,i=this.getWorldDirection(new Oe).multiplyScalar(-e),this.position.copy(n.center.clone().add(i)))},_i.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:null:-(this.origin.dot(e.normal)+e.constant)/t},new Ju),yp={major:1,minor:8,suffix:".0"},Fu=new sp,Iu=(console.log("Potree "+yp.major+"."+yp.minor+yp.suffix),W.scriptPath="",document.currentScript&&document.currentScript.src?W.scriptPath=new URL(document.currentScript.src+"/..").href:("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("potree.js",document.baseURI).href,W.scriptPath=new URL(("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("potree.js",document.baseURI).href)+"/..").href),"/"===W.scriptPath.slice(-1)&&(W.scriptPath=W.scriptPath.slice(0,-1)),W.scriptPath+"/resources");function KR(e,t,n,i){return ZR.apply(this,arguments)}function ZR(){return(ZR=J(X().mark(function e(t,n,i,r){var a,o,s,l,u;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=(n=n||{}).fetchMethod||"get",delete n.fetchMethod,Potree.fileServer?(Potree.fileServer[a](t,{params:n}).then(function(e){(e=e.data?e.data:e).data&&(e=e.data),i&&i(e)}).catch(r),e.next=27):e.next=7;break;case 7:if(e.prev=7,0<Object.keys(n).length)for(s in t+="?",o=0,n)0<o&&(t+="&"),t=(t=t+s+"=")+n[s],o++;return l={},"post"==a&&(l.method="POST"),e.next=13,fetch(t,l);case 13:return l=e.sent,e.next=16,l.text();case 16:return u=e.sent,(u=n.returnText?u:JSON.parse(u)).data&&(u=u.data),i&&i(u),e.abrupt("return",u);case 23:e.prev=23,e.t0=e.catch(7),console.log("loadFile出错",e.t0),r&&r(e.t0);case 27:case"end":return e.stop()}},e,null,[[7,23]])}))).apply(this,arguments)}function $R(){return($R=J(X().mark(function e(t,n,i){var r;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=n||Potree.settings.number,r=(Potree.fileServer?"/laser/dataset/":"".concat(Potree.settings.urls.prefix,"/laser/dataset/")).concat(n,"/getDataSet"),e.abrupt("return",KR(r,null,t,i));case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function eL(){return(eL=J(X().mark(function e(t,n){var i,r,a=this;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(Potree.settings.floorplanEnable||n||!Potree.fileServer){e.next=2;break}return e.abrupt("return");case 2:i="all"==t?viewer.scene.pointclouds.map(function(e){return e.dataset_id}):[t],r=function(t,e,n){if(!n||0==n.length)return console.log("平面图没有数据",t,e);e==Potree.settings.floorplanType[t]&&((e=viewer.mapViewer.mapLayer.maps.find(function(e){return e.name=="floorplan_"+t}))&&viewer.mapViewer.mapLayer.removeMap(e),n=viewer.mapViewer.mapLayer.addMapEntity(n.data||n,t),e&&(n.visibleReasons=e.visibleReasons,n.unvisibleReasons=e.unvisibleReasons),0)},i.forEach(function(e){var t=Potree.settings.floorplanType[e],n="";if(Potree.fileServer||(n=Potree.settings.urls.prefix),t)return n="".concat(n,"/laser/tiledMap/").concat(Potree.settings.number,"/tiledMap/").concat(t,"/").concat(e),Potree.settings.floorplanRequests[e]=!0,KR(n,null,r.bind(a,e,t))});case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function tL(){return(tL=J(X().mark(function e(t,n){var i;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=(Potree.fileServer?"/laser/filter/":"".concat(Potree.settings.urls.prefix,"/laser/filter/")).concat(Potree.settings.number,"/query"),e.abrupt("return",KR(i,{datasetId:t},n));case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}function nL(){return(nL=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Potree.fileServer||(n="".concat(Potree.scriptPath,"/data/panoEdit/vision_edit.txt")),e.abrupt("return",KR(n,null,t));case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}function iL(){return(iL=J(X().mark(function e(t){var n;return X().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n="/laser/init/getSceneNumVersion/".concat(Potree.settings.number),e.abrupt("return",KR(n,{fetchMethod:"post"},t,t));case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}(WR=jQuery).fn.extend({selectgroup:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=WR(this),t=o.prop("id"),s="".concat(t),t=void 0!==e.title?e.title:"",l=[],e=(o.find("option").each(function(e,t){var n=WR(t).prop("id"),i=WR(t).html(),t=WR(t).prop("value"),i=WR('\n\t\t\t\t\t<span style="flex-grow: 1; display: inherit">\n\t\t\t\t\t<label for="'.concat(n,'" class="ui-button" style="width: 100%; padding: .4em .1em">').concat(i,'</label>\n\t\t\t\t\t<input type="radio" name="').concat(s,'" id="').concat(n,'" value="').concat(t,'" style="display: none"/>\n\t\t\t\t\t</span>\n\t\t\t\t')),r=i.find("label"),a=i.find("input");a.change(function(){o.find("label").removeClass("ui-state-active"),o.find("label").addClass("ui-state-default"),a.is(":checked")&&r.addClass("ui-state-active")}),l.push(i)}),WR('\n\t\t\t\t<fieldset style="border: none; margin: 0px; padding: 0px">\n\t\t\t\t\t<legend>'.concat(t,'</legend>\n\t\t\t\t\t<span style="display: flex">\n\n\t\t\t\t\t</span>\n\t\t\t\t</fieldset>\n\t\t\t'))),n=e.find("span"),i=0,r=l;i<r.length;i++)n.append(r[i]);n.find("label").each(function(e,t){WR(t).css("margin","0px"),WR(t).css("border-radius","0px"),WR(t).css("border","1px solid black"),WR(t).css("border-left","none")}),n.find("label:first").each(function(e,t){WR(t).css("border-radius","4px 0px 0px 4px")}),n.find("label:last").each(function(e,t){WR(t).css("border-radius","0px 4px 4px 0px"),WR(t).css("border-left","none")}),o.empty(),o.append(e)}}),W.Action=hv,W.Annotation=pv,W.Box3Helper=qm,W.BoxVolume=Jy,W.CameraAnimation=U1,W.CameraMode=Cm,W.ClassificationScheme=xm,W.ClipMethod=Mm,W.ClipTask=Bm,W.ClipVolume=OA,W.ClippingTool=UA,W.ElevationGradientRepeat=Sm,W.Enum=dh,W.EnumItem=Em,W.EptBinaryLoader=SA,W.EptKey=Rh,W.EptLaszipLoader=tc,W.EptLazBatcher=TA,W.EptLoader=MA,W.EptZstandardLoader=ch,W.EventDispatcher=mm,W.ExtendPointCloudMaterial=ev,W.ExtendPointCloudOctree=eA,W.ExtendScene=mv,W.EyeDomeLightingMaterial=mA,W.Features=sm,W.FirstPersonControls=ck,W.GeoPackageLoader=ep,W.Geopackage=FA,W.Gradients=wm,W.HierarchicalSlider=$1,W.Images360=W0,W.KeyCodes=Ym,W.LRU=sp,W.LRUItem=$m,W.LengthUnits=Im,W.LineDraw=av,W.Log=function(){var e=Array.from(arguments),n=e[e.length-1],i=(n&&n.font?(n=n.font,e.pop()):n={},""),t=n.color||"#13f",r=n.fontSize||12;e.forEach(function(e,t){0<t&&(i+=" , "),n.toFixed&&(e=Potree.math.toPrecision(e,n.toFixed)),i+=e}),console.warn("%c".concat(i),"color:".concat(t,";font-size:").concat(r,"px"))},W.MOUSE=Tm,W.MapViewer=Z0,W.Measure=iy,W.MeasuringTool=ly,W.MeshDraw=ov,W.Message=NA,W.NodeLoader=EA,W.NormalizationEDLMaterial=Km,W.NormalizationMaterial=Xm,W.OctreeLoader=$u,W.OrbitControls=nu,W.OrientedImage=gb,W.OrientedImageLoader=Lh,W.OrientedImages=Ab,W.POCLoader=wA,W.PointAttribute=cm,W.PointAttributeTypes=lm,W.PointAttributes=dm,W.PointCloudEptGeometry=kp,W.PointCloudEptGeometryNode=sh,W.PointCloudOctreeGeometry=Am,W.PointCloudOctreeGeometryNode=ym,W.PointCloudSM=jh,W.PointCloudTree=gm,W.PointCloudTreeNode=vm,W.PointShape=Pm,W.PointSizeType=_m,W.Points=hm,W.PolygonClipVolume=rm,W.Profile=If,W.ProfileData=tA,W.ProfileRequest=uh,W.ProfileTool=Nh,W.Renderer=Gm,W.ScreenBoxSelectTool=Ny,W.ShapefileLoader=ah,W.SphereVolume=qy,W.SpotLightHelper=Dd,W.TextSprite=cv,W.TransformationTool=zy,W.TreeType=Dm,W.Utils=ne,W.Version=am,W.Viewer=qh,W.Volume=Wy,W.VolumeTool=Jm,W.WorkerPool=Ju,W.XHRFactory=Sf,W.config=yv,W.debug={},W.framenumber=0,W.loadDatasets=function(e,t,n){return $R.apply(this,arguments)},W.loadFile=KR,W.loadImgVersion=function(e){return iL.apply(this,arguments)},W.loadMapEntity=function(e,t){return eL.apply(this,arguments)},W.loadPanos=function(e,t){return tL.apply(this,arguments)},W.loadPanosInfo=function(e){return nL.apply(this,arguments)},W.loadPointCloud=function(n,t,i,e,r,a){var o=new Promise(function(t){n&&(0<n.indexOf("ept.json")?MA.load(n,function(e){e?(e=new eA(e),t({type:"pointcloud_loaded",pointcloud:e})):console.error(new Error("failed to load point cloud from URL: ".concat(n)))}):0<n.indexOf("cloud.js")?wA.load(n,e,function(e){e?(e=new eA(e),t({type:"pointcloud_loaded",pointcloud:e})):(console.error(new Error("failed to load point cloud from URL: ".concat(n))),a&&a())}):0<n.indexOf(".vpc")?PointCloudArena4DGeometry.load(n,function(e){e?(e=new PointCloudArena4D(e),t({type:"pointcloud_loaded",pointcloud:e})):console.error(new Error("failed to load point cloud from URL: ".concat(n)))}):console.error(new Error("failed to load point cloud from URL: ".concat(n))))});if(!r)return o;o.then(function(e){(e=e).pointcloud.name=t,e.pointcloud.sceneCode=i,r(e)})},W.loadProject=function(e,t){return fA.apply(this,arguments)},W.lru=Fu,W.maxNodesLoading=6,W.mergeEditStart=function(e,t){function o(e){var t=u.mainViewport.camera,n=new Oe(e.pointer.x,e.pointer.y,-1).unproject(t),e=new Oe(e.pointer.x,e.pointer.y,1).unproject(t).sub(n),i=(t=(0-n.z)/e.z)*e.x+n.x,t=t*e.y+n.y;c.moveBoundCenterTo(l,new Oe(i,t,l.boundCenter.z)),l.dispatchEvent("position_changed")}function s(){return c.focusOn(l),n(),{stopContinue:!0}}Potree.settings.editType="merge",Potree.settings.intersectOnObjs=!0,Potree.settings.boundAddObjs=!0,Potree.settings.unableNavigate=!0;var l,u=new Potree.Viewer(e,t),n=(u.modules.Alignment,u.setEDLEnabled(!1),u.setFOV(Potree.config.view.fov),u.mainViewport.view.position.set(30,30,30),u.mainViewport.view.lookAt(0,0,0),u.updateModelBound(),u.transformationTool.setModeEnable(["translation","rotation"]),u.inputHandler.fixSelection=!0,Potree.settings.sizeFitToLevel=!0,Potree.loadPointCloudScene=function(e,t,n,i,o,s){function r(e){var t=e.cloudPath,n=e.sceneName,i=e.sceneCode,r=e.timeStamp,a=e.color;Potree.loadPointCloud(t,n,i,r,function(e){var t=u.scene,e=e.pointcloud,n=Potree.config.material,i=e.material,n=(i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(n.realPointSize),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,a&&(e.color=e.material.color=a),e.timeStamp=r,t.addPointCloud(e),u.updateModelBound(),u.bound);n.boundSize,n.center;u.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="high"),Potree.Log("loadPointCloudDone 点云加载完毕",{font:[null,10]}),u.dispatchEvent("allLoaded"),o(e)},s)}var a;"laser"==t?(a=e,Potree.loadDatasets(function(e){var e=e.find(function(e){return e.sceneCode==a}),t=e.updateTime?e.updateTime.replace(/[^0-9]/gi,""):"",n="".concat(Potree.settings.urls.prefix1,"/").concat(e.webBin);r({cloudPath:n,sceneName:e.sceneName,sceneCode:a,timeStamp:t,color:e.color})},a,s)):(t=t+"|"+n+"|"+i,e instanceof Array&&(1==e.length?e=e[0]:console.error("有多个点云?暂时还不支持",e,t)),r({cloudPath:e+"/cloud.js",sceneName:t,sceneCode:t,timeStamp:""}))},function(){l=null,u.removeEventListener("global_mousemove",o),u.removeEventListener("global_click",s)}),c=u.modules.MergeEditor;return Potree.addModel=function(r,a,e,t){var n,i=function(e){var t,n,i;e.dataset_id=r.id,r.position&&e.position.copy(r.position),r.rotation&&e.rotation.copy(r.rotation),r.scale&&e.scale.set(r.scale,r.scale,r.scale),e.isPointcloud&&(e.renderOrder=Potree.config.renderOrders.model),Potree.settings.maintainBtmZ?(t=function(){e.updateMatrixWorld(),u.updateModelBound()},i=function(){c.maintainBoundXY(e),c.setModelBtmHeight(e),t(),e.dispatchEvent("transformChanged")},e.addEventListener("position_changed",function(){t(),c.getBoundCenter(e),c.computeBtmHeight(e),r.bottomRange&&(e.btmHeight>r.bottomRange.max||e.btmHeight<r.bottomRange.min)&&(e.btmHeight=Be.clamp(e.btmHeight,r.bottomRange.min,r.bottomRange.max),c.setModelBtmHeight(e),t()),e.dispatchEvent("transformChanged")}),e.addEventListener("rotation_changed",i),e.addEventListener("scale_changed",i)):(n=function(){e.updateMatrixWorld(),u.updateModelBound()},i=function(){c.maintainBoundCenter(e),n(),e.dispatchEvent("transformChanged")},e.addEventListener("position_changed",function(){n(),c.getBoundCenter(e),e.dispatchEvent("transformChanged")}),e.addEventListener("rotation_changed",i),e.addEventListener("scale_changed",i)),e.addEventListener("transformChanged",function(){c.modelTransformCallback(e)}),e.updateMatrixWorld(),u.updateModelBound(),c.getBoundCenter(e),e.lastMatrixWorld=e.matrixWorld.clone(),a(e),r.isFirstLoad?(c.moveBoundCenterTo(e,new Oe(0,0,0)),c.setModelBtmHeight(e,0),"single"!=r.mode&&(l=e,u.addEventListener("global_mousemove",o),u.addEventListener("global_click",s,{importance:3})),e.dispatchEvent("position_changed")):l=null,c.modelAdded(e)};"glb"==r.type?(n={fileType:r.type,id:r.id,url:r.url,name:r.title},u.loadModel(n,function(e){e.isModel=!0,e.traverse(function(e){return e.material&&(e.material.transparent=!0)}),i(e)},e,t)):"osgb"==r.type||"b3dm"==r.type?u.loadModel({fileType:"3dTiles",id:r.id,name:r.title,maximumScreenSpaceError:r.maximumScreenSpaceError,url:r.url},function(e){e.isModel=!0,i(e)},onprogress):"shp"==r.type?u.loadModel({fileType:"shp",id:r.id,name:r.title,url:r.url},callback,onprogress):"3dgs"==r.type?u.loadModel({fileType:"3dgs",id:r.id,name:r.title,url:r.url},function(e){e.isModel=!0,i(e)},onprogress):Potree.loadPointCloudScene(r.url,r.type,r.modelId,r.title,function(e){e.matrixAutoUpdate=!0,e.initialPosition=e.position.clone(),e.pos1MatrixInvert=(new Me).setPosition(e.initialPosition).invert(),i(e)},t)},{THREE:Rp}},W.numNodesLoading=0,W.panoEditStart=function(e,t,n){function c(e){d.sidebar&&d.sidebar.addAlignmentButton(e);var t=e.panos[0].dataRotation.z+Math.PI,n=e.panos[0].dataPosition.clone();i.rotate(e,null,t),i.translate(e,n),e.updateMatrixWorld()}Potree.settings.editType="pano",Potree.settings.number=t,Potree.settings.unableNavigate=!0,Potree.settings.sizeFitToLevel=!0;var d=new Potree.Viewer(e),i=d.modules.Alignment,h=(d.setEDLEnabled(!1),d.setFOV(Potree.config.view.fov),0),r=(Potree.settings.isOfficial||(d.loadGUI(function(){d.setLanguage("en"),$("#menu_tools").next().show(),$("#panos").show(),$("#alignment").show(),d.toggleSidebar()}),Potree.settings.sizeFitToLevel=!0),Potree.loadPanosDone=function(a,o){Potree.settings.datasetsPanos[a]={panoData:o,panos:[]},console.log("panoData",a,o);var s=o.length,l=0,u=Object.keys(Potree.settings.datasetsPanos).length;o.forEach(function(r,e){var t="".concat(Potree.settings.urls.prefix1,"/").concat(Potree.settings.webSite,"/").concat(Potree.settings.number,"/data/bundle_").concat(Potree.settings.number,"/building/uuidcloud/").concat(r.uuid,"/cloud.js"),n=a+"-"+r.uuid;r.index=e,Potree.loadPointCloud(t,n,n,0,function(e){var t=d.scene,e=e.pointcloud,n=Potree.config.material,i=e.material;i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(.1),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,e.color=n.pointColor,e.dataset_id=a,e.panoUuid=r.uuid,e.timeStamp=0,t.addPointCloud(e),++l==s&&(h++,d.images360.addPanoData(o,a),h==u)&&(d.scene.pointclouds.forEach(function(e){c(e)}),d.images360.loadDone(),d.scene.add360Images(d.images360),d.updateModelBound(),i=d.bound,n=i.boundSize,i=i.center,Potree.Log("中心点: ".concat(te.toPrecision(i.toArray(),2),", boundSize: ").concat(te.toPrecision(n.toArray(),2)," "),{font:[null,12]}),d.scene.view.setView({position:i.clone().add(new Oe(10,5,10)),target:i}),d.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="panoEdit"),Potree.Log("loadPointCloudDone 点云加载完毕",{font:[null,10]}),d.dispatchEvent("allLoaded"))})})});Potree.settings.isOfficial||(Potree.settings.datasetsPano={testDataset:null},Potree.loadPanosInfo(function(e){r("testDataset",e.sweepLocations)}))},W.pointBudget=1e6,W.resourcePath=Iu,W.saveProject=function(e){var t,n=e.scene;return{type:"Potree",version:1.7,settings:{pointBudget:(t=e).getPointBudget(),fov:t.getFOV(),edlEnabled:t.getEDLEnabled(),edlRadius:t.getEDLRadius(),edlStrength:t.getEDLStrength(),background:t.getBackground(),minNodeSize:t.getMinNodeSize(),showBoundingBoxes:t.getShowBoundingBox()},view:{position:(t=(t=e).scene.view).position.toArray(),target:t.getPivot().toArray()},classification:e.classifications,pointclouds:n.pointclouds.map(nA),measurements:n.measurements.map(oA),volumes:n.volumes.map(rA),cameraAnimations:n.cameraAnimations.map(aA),profiles:n.profiles.map(iA),annotations:uA(e),orientedImages:n.orientedImages.map(sA),geopackages:n.geopackages.map(lA)}},W.settings=zh,W.start=function(e,t,n){Potree.settings.number=n||"t-o5YMR13",Potree.settings.isOfficial||vf.isMobile()&&Av(),vf.urlHasValue("google")&&(Potree.settings.mapCompany="google"),vf.urlHasValue("timing")&&(Potree.measureTimings=1);var c=new Potree.Viewer(e,t),d=c.modules.Alignment;c.setEDLEnabled(!1),c.setFOV(Potree.config.view.fov),Potree.settings.cameraFar=Potree.config.view.far,Potree.settings.isOfficial||(c.loadGUI(function(){c.setLanguage("en"),$("#menu_tools").next().show(),$("#menu_scene").next().show(),$("#siteModel").show(),c.toggleSidebar()}),Potree.settings.sizeFitToLevel=!0,Potree.settings.rotAroundPoint=!1),Potree.loadDatasetsCallback=function(e,s){if(!e||0==e.length)return console.error("getDataSet加载的数据为空");Potree.datasetData=e,c.transform=null;function o(e,t){var n=t.location.slice(0,3),n=c.transform.lonlatToLocal.forward(n);c.sidebar&&c.sidebar.addAlignmentButton(e),d.rotate(e,null,t.orientation),d.translate(e,new Oe(n[0],n[1],t.location[2]-i.location[2])),e.updateMatrixWorld(),Potree.Log("点云".concat(e.dataset_id,"(").concat(e.name,")旋转值:").concat(e.orientationUser,", 位置").concat(te.toPrecision(e.translateUser.toArray(),3),", 经纬度 ").concat(t.location,", spacing ").concat(e.material.spacing),{font:[null,13]})}var l=e.length,u=0,i=(Potree.settings.originDatasetId||(Potree.settings.originDatasetId=e[0].id),e.find(function(e){return e.id==Potree.settings.originDatasetId})),t=i.location.slice(0,2),t=(window.AMapWith84&&(t=[(t=AMapWith84.wgs84ToAMap({x:t[0],y:t[1]})).x,t.y]),proj4.defs("LOCAL","+proj=tmerc +ellps=WGS84 +lon_0="+t[0].toPrecision(15)+" +lat_0="+t[1].toPrecision(15)),proj4.defs("LOCAL_MAP","+proj=tmerc +ellps=WGS84 +lon_0="+t[0].toPrecision(15)+" +lat_0="+t[1].toPrecision(15)),proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4("WGS84","LOCAL")),n=proj4("+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs;");if(c.transform={lonlatToLocal:t,lonlatTo4550:n},window.AMapWith84&&"google"!=Potree.settings.mapCompany)for(var r in c.transform)!function(e){var r=e.forward,a=e.inverse;e.forward=function(e,t){var n,i=null==e.x,t=(n=i?{x:e[0],y:e[1]}:e,t?n:AMapWith84.wgs84ToAMap(n));return i?(t=[t.x,t.y],null!=e[2]&&(t[2]=e[2])):null!=e.z&&(t.z=e.z),r(t)},e.inverse=function(e,t){var n=null==e.x,i=a(e);return n&&(i={x:i[0],y:i[1]}),i=t?i:AMapWith84.aMapToWgs84(i),n?(i=[i.x,i.y],null!=e[2]&&(i[2]=e[2])):null!=e.z&&(i.z=e.z),i}}(c.transform[r]);c.mapViewer&&c.mapViewer.mapLayer.maps[0].updateProjection(),e.forEach(function(r,e){var t,n,a;s?((t=c.scene.pointclouds.find(function(e){return e.dataset_id==r.id}))||(Potree.Log("数据集id变了,自动使用第一个",{font:["#500"]}),t=c.scene.pointclouds[0]),d.translate(t,t.translateUser.clone().negate()),d.rotate(t,null,-t.orientationUser),o(t,r)):(t=r.sceneCode||r.name,n=(Potree.settings.isLocal&&r.mapping?"".concat(Potree.settings.urls.prefix1,"/").concat(r.mapping,"/"):"".concat(Potree.settings.urls.prefix1,"/")).concat(r.webBin),a=r.updateTime?r.updateTime.replace(/[^0-9]/gi,""):"",Potree.loadPointCloud(n,r.name,t,a,function(e){var t=c.scene,e=e.pointcloud,n=Potree.config.material,i=e.material;e.datasetData=r,e.dataset_id=r.id,e.hasDepthTex=Potree.settings.useDepthTex&&(!!r.has_depth||Potree.settings.isLocalhost&&"SS-t-7DUfWAUZ3V"==Potree.settings.number),i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(n.realPointSize),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,e.color=e.material.color=r.color,e.timeStamp=a,o(e,r),t.addPointCloud(e),Potree.settings.isOfficial||(Potree.settings.floorplanEnables[r.id]=!0,Potree.settings.floorplanType[r.id]="default"),Potree.loadPanos(r.id,function(e){c.images360.addPanoData(e,r.id),++u==l&&Potree.loadImgVersion(function(){var n,i,r,a,e,t,o;Potree.settings.panoVersion=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).imgVersion,c.images360.loadDone(),c.scene.add360Images(c.images360),c.mapViewer.addListener(c.images360),c.updateModelBound(),(t=c.bound).boundSize,t.center,Potree.settings.isOfficial||Potree.loadMapEntity("all"),s||(c.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="high"),Potree.Log("loadPointCloudDone 点云加载完毕",{font:[null,10]})),""!==(o=vf.urlHasValue("pano",!0))?(t=c.images360.panos.find(function(e){return e.id==o}))&&c.images360.focusPano({pano:t,duration:0,callback:function(){}}):((t=c.bound).boundSize,t=t.center,(t=c.images360.findNearestPano(t))?c.images360.flyToPano({pano:t,duration:0,target:c.images360.bound.center.setZ(t.position.z)}):(c.mainViewport.view.pitch=-.7,t=c.bound.boundingBox.clone(),c.focusOnObject({boundingBox:t},"boundingBox",0,{dontChangeCamDir:!0}),20<c.bound.boundSize.length()&&(c.mainViewport.camera.far=1e4,c.mainViewport.camera.updateProjectionMatrix(),c.fixCamFar=!0,n=0,i=function(){c.fixCamFar=!1,c.mainViewport.camera.far=Potree.settings.cameraFar,c.mainViewport.camera.updateProjectionMatrix(),c.removeEventListener("pageVisible",a),clearTimeout(r)},a=function(e){if(!e||!1!==e.v){c.removeEventListener("pageVisible",a);var t=c.scene.pointclouds.find(function(e){return e.root.geometryNode});if(console.log("初始加载focus点云",e,t),!t){if(n<10){if(document.hidden)return console.log("focus hidden"),c.addEventListener("pageVisible",a);n++,r=setTimeout(a,200)}else console.log("初始加载focus点云 放弃"),i();return console.warn("no!!!!!!!!!!!!!!")}c.flyToDataset({focusOnPoint:!0,pointcloud:t,duration:0}),console.warn("ok!!!!!!!!!!!!!!!!"),i()}},e=function(){r=setTimeout(a,300)},c.addEventListener("setPose",function(){c.removeEventListener("pointcloud_changed",e),i()}),c.addEventListener("pointcloud_changed",e,{once:!0})))),c.addVideo(),c.scene.pointclouds.some(function(e){return!e.hasDepthTex})&&(Potree.config.shelterMargin*=3),console.log("allLoaded"),c.addTube({"t-8KbK1JjubE":[{path:[{x:-109.83,y:-68.33,z:-7.52},{x:-95.17,y:-59.3,z:-7.38},{x:-38.75,y:-24.01,z:-6.01},{x:.5,y:.19,z:-3.89},{x:39.29,y:24.41,z:-1.31},{x:43.58,y:27.7,z:-.97},{x:40.22,y:35.37,z:-.67},{x:39.18,y:36.71,z:.35},{x:38.69,y:36.04,z:18.04}],color:"#b86",radius:.08,height:.13},{path:[{x:-108.24,y:-70.61,z:-7.52},{x:-57.8,y:-39.31,z:-6.72},{x:-18.8,y:-15.35,z:-5.01},{x:55.87,y:31.67,z:-.04},{x:110.53,y:66.48,z:5.14}],color:"#48a",radius:.08,height:-.5}]}),c.dispatchEvent("allLoaded")})})}))})},n&&Potree.loadDatasets(Potree.loadDatasetsCallback),window.testTransform=function(e,t,n){proj4.defs("NAVVIS:test","+proj=tmerc +ellps=WGS84 +lon_0="+e[0].toPrecision(15)+" +lat_0="+e[1].toPrecision(15));e=proj4("WGS84","NAVVIS:test");return t?e.forward(t):e.inverse(n)},window.THREE=Rp,window.buttonFunction=function(){c.scene.pointclouds.forEach(function(e){return e.predictNodeMaxLevel()})},Potree.settings.isLocalhost&&c.inputHandler.addEventListener("keydown",function(e){"t"==e.event.key?(c.images360.cube.visible=!0,c.images360.cube.material.wireframe=!0):"y"==e.event.key&&(c.images360.cube.material.wireframe=!1,c.images360.cube.visible="showPanos"==Potree.settings.displayMode)})},W.version=yp,W.workerPool=Yl,Object.defineProperty(W,"__esModule",{value:!0})});
|