diff --git a/package.json b/package.json index 9a5041ae3..f7539cc53 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,11 @@ "nprogress": "0.2.0", "path-to-regexp": "2.4.0", "qrcode.vue": "^1.6.2", + "script-loader": "^0.7.2", "sessionstorage": "^0.1.0", "stompjs": "^2.3.3", "storejs": "^1.0.25", + "three": "^0.107.0", "vue": "2.6.10", "vue-i18n": "^8.12.0", "vue-router": "3.0.6", @@ -49,6 +51,8 @@ "babel-core": "7.0.0-bridge.0", "babel-eslint": "10.0.1", "babel-jest": "23.6.0", + "babel-preset-env": "1.6.1", + "babel-preset-stage-2": "6.24.1", "chalk": "2.4.2", "connect": "3.6.6", "copy-webpack-plugin": "^4.5.2", diff --git a/src/assets/jl3d/.gitkeep b/src/assets/jl3d/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/assets/jl3d/inflate.min.js b/src/assets/jl3d/inflate.min.js deleted file mode 100644 index 312b0774f..000000000 --- a/src/assets/jl3d/inflate.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';var l=void 0,aa=this;function r(c,d){var a=c.split("."),b=aa;!(a[0]in b)&&b.execScript&&b.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)!a.length&&d!==l?b[e]=d:b=b[e]?b[e]:b[e]={}};var t="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array&&"undefined"!==typeof DataView;function v(c){var d=c.length,a=0,b=Number.POSITIVE_INFINITY,e,f,g,h,k,m,n,p,s,x;for(p=0;pa&&(a=c[p]),c[p]>=1;x=g<<16|p;for(s=m;s>>=1;switch(c){case 0:var d=this.input,a=this.a,b=this.c,e=this.b,f=d.length,g=l,h=l,k=b.length,m=l;this.d=this.f=0;if(a+1>=f)throw Error("invalid uncompressed block header: LEN");g=d[a++]|d[a++]<<8;if(a+1>=f)throw Error("invalid uncompressed block header: NLEN");h=d[a++]|d[a++]<<8;if(g===~h)throw Error("invalid uncompressed block header: length verify");if(a+g>d.length)throw Error("input buffer is broken");switch(this.i){case A:for(;e+ -g>b.length;){m=k-e;g-=m;if(t)b.set(d.subarray(a,a+m),e),e+=m,a+=m;else for(;m--;)b[e++]=d[a++];this.b=e;b=this.e();e=this.b}break;case y:for(;e+g>b.length;)b=this.e({p:2});break;default:throw Error("invalid inflate mode");}if(t)b.set(d.subarray(a,a+g),e),e+=g,a+=g;else for(;g--;)b[e++]=d[a++];this.a=a;this.b=e;this.c=b;break;case 1:this.j(ba,ca);break;case 2:for(var n=C(this,5)+257,p=C(this,5)+1,s=C(this,4)+4,x=new (t?Uint8Array:Array)(D.length),S=l,T=l,U=l,u=l,M=l,F=l,z=l,q=l,V=l,q=0;q=P?8:255>=P?9:279>=P?7:8;var ba=v(O),Q=new (t?Uint8Array:Array)(30),R,ga;R=0;for(ga=Q.length;R=g)throw Error("input buffer is broken");a|=e[f++]<>>d;c.d=b-d;c.a=f;return h} -function E(c,d){for(var a=c.f,b=c.d,e=c.input,f=c.a,g=e.length,h=d[0],k=d[1],m,n;b=g);)a|=e[f++]<>>16;if(n>b)throw Error("invalid code length: "+n);c.f=a>>n;c.d=b-n;c.a=f;return m&65535} -w.prototype.j=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length-258,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(this.b=b,a=this.e(),b=this.b),a[b++]=f;else{g=f-257;k=I[g];0=e&&(this.b=b,a=this.e(),b=this.b);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; -w.prototype.w=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(a=this.e(),e=a.length),a[b++]=f;else{g=f-257;k=I[g];0e&&(a=this.e(),e=a.length);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; -w.prototype.e=function(){var c=new (t?Uint8Array:Array)(this.b-32768),d=this.b-32768,a,b,e=this.c;if(t)c.set(e.subarray(32768,c.length));else{a=0;for(b=c.length;aa;++a)e[a]=e[d+a];this.b=32768;return e}; -w.prototype.z=function(c){var d,a=this.input.length/this.a+1|0,b,e,f,g=this.input,h=this.c;c&&("number"===typeof c.p&&(a=c.p),"number"===typeof c.u&&(a+=c.u));2>a?(b=(g.length-this.a)/this.o[2],f=258*(b/2)|0,e=fd&&(this.c.length=d),c=this.c);return this.buffer=c};function W(c,d){var a,b;this.input=c;this.a=0;if(d||!(d={}))d.index&&(this.a=d.index),d.verify&&(this.A=d.verify);a=c[this.a++];b=c[this.a++];switch(a&15){case ha:this.method=ha;break;default:throw Error("unsupported compression method");}if(0!==((a<<8)+b)%31)throw Error("invalid fcheck flag:"+((a<<8)+b)%31);if(b&32)throw Error("fdict flag is not supported");this.q=new w(c,{index:this.a,bufferSize:d.bufferSize,bufferType:d.bufferType,resize:d.resize})} -W.prototype.k=function(){var c=this.input,d,a;d=this.q.k();this.a=this.q.a;if(this.A){a=(c[this.a++]<<24|c[this.a++]<<16|c[this.a++]<<8|c[this.a++])>>>0;var b=d;if("string"===typeof b){var e=b.split(""),f,g;f=0;for(g=e.length;f>>0;b=e}for(var h=1,k=0,m=b.length,n,p=0;0>>0)throw Error("invalid adler-32 checksum");}return d};var ha=8;r("Zlib.Inflate",W);r("Zlib.Inflate.prototype.decompress",W.prototype.k);var X={ADAPTIVE:B.s,BLOCK:B.t},Y,Z,$,ia;if(Object.keys)Y=Object.keys(X);else for(Z in Y=[],$=0,X)Y[$++]=Z;$=0;for(ia=Y.length;$y;c=p<=y?++b:--b){r=e.charAt(c);if(r===t.NULL){break}i+=r}}return new n(o,a,i)};n.unmarshall=function(n){var i;return function(){var r,o,s,u;s=n.split(RegExp(""+t.NULL+t.LF+"*"));u=[];for(r=0,o=s.length;r0){u.push(e(i))}}return u}()};n.marshall=function(e,i,r){var o;o=new n(e,i,r);return o.toString()+t.NULL};return n}();e=function(){var e;function r(t){this.ws=t;this.ws.binaryType="arraybuffer";this.counter=0;this.connected=false;this.heartbeat={outgoing:1e4,incoming:1e4};this.maxWebSocketFrameSize=16*1024;this.subscriptions={}}r.prototype.debug=function(t){var e;return typeof window!=="undefined"&&window!==null?(e=window.console)!=null?e.log(t):void 0:void 0};e=function(){if(Date.now){return Date.now()}else{return(new Date).valueOf}};r.prototype._transmit=function(t,e,i){var r;r=n.marshall(t,e,i);if(typeof this.debug==="function"){this.debug(">>> "+r)}while(true){if(r.length>this.maxWebSocketFrameSize){this.ws.send(r.substring(0,this.maxWebSocketFrameSize));r=r.substring(this.maxWebSocketFrameSize);if(typeof this.debug==="function"){this.debug("remaining = "+r.length)}}else{return this.ws.send(r)}}};r.prototype._setupHeartbeat=function(n){var r,o,s,u,a,c;if((a=n.version)!==i.VERSIONS.V1_1&&a!==i.VERSIONS.V1_2){return}c=function(){var t,e,i,r;i=n["heart-beat"].split(",");r=[];for(t=0,e=i.length;t>> PING"):void 0}}(this))}if(!(this.heartbeat.incoming===0||o===0)){s=Math.max(this.heartbeat.incoming,o);if(typeof this.debug==="function"){this.debug("check PONG every "+s+"ms")}return this.ponger=i.setInterval(s,function(t){return function(){var n;n=e()-t.serverActivity;if(n>s*2){if(typeof t.debug==="function"){t.debug("did not receive server activity for the last "+n+"ms")}return t.ws.close()}}}(this))}};r.prototype._parseConnect=function(){var t,e,n,i;t=1<=arguments.length?o.call(arguments,0):[];i={};switch(t.length){case 2:i=t[0],e=t[1];break;case 3:if(t[1]instanceof Function){i=t[0],e=t[1],n=t[2]}else{i.login=t[0],i.passcode=t[1],e=t[2]}break;case 4:i.login=t[0],i.passcode=t[1],e=t[2],n=t[3];break;default:i.login=t[0],i.passcode=t[1],e=t[2],n=t[3],i.host=t[4]}return[i,e,n]};r.prototype.connect=function(){var r,s,u,a;r=1<=arguments.length?o.call(arguments,0):[];a=this._parseConnect.apply(this,r);u=a[0],this.connectCallback=a[1],s=a[2];if(typeof this.debug==="function"){this.debug("Opening Web Socket...")}this.ws.onmessage=function(i){return function(r){var o,u,a,c,f,h,l,p,d,g,b,m;c=typeof ArrayBuffer!=="undefined"&&r.data instanceof ArrayBuffer?(o=new Uint8Array(r.data),typeof i.debug==="function"?i.debug("--- got data length: "+o.length):void 0,function(){var t,e,n;n=[];for(t=0,e=o.length;t { - // console.log(e.data); - if(e.data.type){ - for(let i=e.data.body.length-1;i>=0;i--){ - - postMessage(e.data.body[i]); - } - } - - - if(e.data == "on"){ - - update = setInterval("uptrain()", 50); - } - - if(e.data == "off"){ - clearInterval(update); - } -} - - -} -function uptrain(){ - - postMessage(i); -} - -timedCount(); diff --git a/src/assets/jl3d/zhongxian.obj b/src/assets/jl3d/zhongxian.obj deleted file mode 100644 index e42a5189c..000000000 --- a/src/assets/jl3d/zhongxian.obj +++ /dev/null @@ -1,3797 +0,0 @@ -# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware -# ļ:26.04.2019 15:06:45 - -# -# shape Section_18_0_12239 -# - -v 90.3940 0.0000 -129.2717 -v 447.9187 0.0000 -129.2717 -# 2 vertices - -g Section_18_0_12239 -l 1 2 - -# -# shape Section_0_0_99275 -# - -v 90.3940 0.0000 -215.9115 -v 447.9187 0.0000 -215.9115 -# 2 vertices - -g Section_0_0_99275 -l 3 4 - -# -# shape Section_2_0_08596 -# - -v 447.9187 0.0000 -215.9115 -v 952.7095 0.0000 -215.9116 -# 2 vertices - -g Section_2_0_08596 -l 5 6 - -# -# shape Section_20_0_03642 -# - -v 447.9001 0.0000 -129.2717 -v 952.7092 0.0000 -129.2717 -# 2 vertices - -g Section_20_0_03642 -l 7 8 - -# -# shape Section_4_0_23755 -# - -v 952.7095 0.0000 -215.9116 -v 1321.4677 0.0000 -215.9115 -# 2 vertices - -g Section_4_0_23755 -l 9 10 - -# -# shape Section_22_0_84459 -# - -v 952.7373 0.0000 -129.2714 -v 1321.4661 0.0000 -129.2714 -# 2 vertices - -g Section_22_0_84459 -l 11 12 - -# -# shape Section_6_0_03505 -# - -v 1321.4677 0.0000 -215.9115 -v 2677.3992 0.0000 -215.9110 -# 2 vertices - -g Section_6_0_03505 -l 13 14 - -# -# shape Section_24_0_21366 -# - -v 1321.4661 0.0000 -129.2714 -v 2677.4009 0.0000 -129.2713 -# 2 vertices - -g Section_24_0_21366 -l 15 16 - -# -# shape Section_11_0_73616 -# - -v 2677.4021 0.0000 -215.9109 -v 3260.7607 0.0000 -215.9110 -# 2 vertices - -g Section_11_0_73616 -l 17 18 - -# -# shape Section_26_0_73056 -# - -v 2677.4009 0.0000 -129.2713 -v 3260.7854 0.0000 -129.2713 -# 2 vertices - -g Section_26_0_73056 -l 19 20 - -# -# shape Section_12_0_30175 -# - -v 3260.7854 0.0000 -215.9110 -v 3539.7085 0.0000 -215.9110 -# 2 vertices - -g Section_12_0_30175 -l 21 22 - -# -# shape Section_27_0_41598 -# - -v 3260.7607 0.0000 -129.2717 -v 3539.7026 0.0000 -129.2713 -# 2 vertices - -g Section_27_0_41598 -l 23 24 - -# -# shape Section_2_0_31395 -# - -v 3539.7085 0.0000 -129.2717 -v 3913.0012 0.0000 -129.2717 -# 2 vertices - -g Section_2_0_31395 -l 25 26 - -# -# shape Section_3_0_46469 -# - -v 3913.0012 0.0000 -129.2717 -v 4286.2061 0.0000 -129.2703 -# 2 vertices - -g Section_3_0_46469 -l 27 28 - -# -# shape Section_119_0_51671 -# - -v 3539.7085 0.0000 -129.2717 -v 3575.5640 0.0000 -131.0548 -v 3610.9690 0.0000 -134.6345 -v 3646.5806 0.0000 -138.4984 -v 3682.1553 0.0000 -142.1885 -v 3859.7642 0.0000 -165.5937 -v 3912.9185 0.0000 -172.5916 -# 7 vertices - -g Section_119_0_51671 -l 29 30 31 32 33 34 35 - -# -# shape Section_0_0_28826 -# - -v 3539.7493 0.0000 -215.9115 -v 3913.0090 0.0000 -215.9115 -# 2 vertices - -g Section_0_0_28826 -l 36 37 - -# -# shape Section_1_0_33314 -# - -v 3913.0173 0.0000 -215.9115 -v 4286.2505 0.0000 -215.9114 -# 2 vertices - -g Section_1_0_33314 -l 38 39 - -# -# shape Section_121_0_03981 -# - -v 3912.9185 0.0000 -172.5916 -v 3859.7637 0.0000 -179.5896 -v 3682.2019 0.0000 -202.9939 -v 3646.6272 0.0000 -206.6841 -v 3611.0300 0.0000 -210.4763 -v 3575.2634 0.0000 -213.9376 -v 3539.7085 0.0000 -215.9110 -# 7 vertices - -g Section_121_0_03981 -l 40 41 42 43 44 45 46 - -# -# shape Section_122_0_50529 -# - -v 3912.9185 0.0000 -172.5916 -v 3966.2598 0.0000 -165.5690 -v 4143.7979 0.0000 -142.1889 -v 4179.3726 0.0000 -138.4986 -v 4214.8721 0.0000 -134.5242 -v 4250.3999 0.0000 -131.2813 -v 4286.2061 0.0000 -129.2703 -# 7 vertices - -g Section_122_0_50529 -l 47 48 49 50 51 52 53 - -# -# shape Section_88_0_53621 -# - -v 4286.2505 0.0000 -215.9114 -v 4631.1001 0.0000 -245.5861 -# 2 vertices - -g Section_88_0_53621 -l 54 55 - -# -# shape Section_90_0_85795 -# - -v 4286.2505 0.0000 -129.2709 -v 4631.1123 0.0000 -99.5968 -# 2 vertices - -g Section_90_0_85795 -l 56 57 - -# -# shape Section_89_0_45640 -# - -v 4631.1177 0.0000 -245.5859 -v 4975.4780 0.0000 -280.2622 -v 5011.0527 0.0000 -283.9523 -v 5046.5850 0.0000 -287.6970 -v 5082.2896 0.0000 -291.2003 -v 5117.9307 0.0000 -293.1797 -# 6 vertices - -g Section_89_0_45640 -l 58 59 60 61 62 63 - -# -# shape Section_0_0_77352 -# - -v 5117.9219 0.0000 -293.1799 -v 4465.2837 0.0000 -293.1793 -# 2 vertices - -g Section_0_0_77352 -l 64 65 - -# -# shape Section_91_0_47425 -# - -v 4631.1001 0.0000 -99.5968 -v 4975.4780 0.0000 -64.9205 -v 5011.0527 0.0000 -61.2303 -v 5046.5273 0.0000 -57.2863 -v 5082.2041 0.0000 -53.8483 -v 5117.9307 0.0000 -52.0026 -# 6 vertices - -g Section_91_0_47425 -l 66 67 68 69 70 71 - -# -# shape Section_1_0_22643 -# - -v 5117.9307 0.0000 -52.0026 -v 4465.2837 0.0000 -52.0008 -# 2 vertices - -g Section_1_0_22643 -l 72 73 - -# -# shape Section_132_0_23300 -# - -v 5117.9219 0.0000 -293.1799 -v 5672.0850 0.0000 -293.1799 -# 2 vertices - -g Section_132_0_23300 -l 74 75 - -# -# shape Section_151_0_36849 -# - -v 5117.9307 0.0000 -52.0026 -v 5672.0942 0.0000 -52.0068 -# 2 vertices - -g Section_151_0_36849 -l 76 77 - -# -# shape Section_4_0_72890 -# - -v 5672.0845 0.0000 -293.1799 -v 6272.1113 0.0000 -293.1799 -# 2 vertices - -g Section_4_0_72890 -l 78 79 - -# -# shape Section_156_0_66569 -# - -v 5672.0942 0.0000 -52.0068 -v 6272.1064 0.0000 -52.0052 -# 2 vertices - -g Section_156_0_66569 -l 80 81 - -# -# shape Section_7_0_12159 -# - -v 6272.1113 0.0000 -293.1799 -v 9138.7510 0.0000 -293.1797 -# 2 vertices - -g Section_7_0_12159 -l 82 83 - -# -# shape Section_157_0_04755 -# - -v 6272.1064 0.0000 -52.0052 -v 7215.2505 0.0000 -52.0031 -# 2 vertices - -g Section_157_0_04755 -l 84 85 - -# -# shape Section_158_0_41245 -# - -v 7215.2505 0.0000 -52.0031 -v 8053.7534 0.0000 -52.0123 -# 2 vertices - -g Section_158_0_41245 -l 86 87 - -# -# shape Section_149_0_20798 -# - -v 7215.2505 0.0000 -52.0031 -v 7251.4233 0.0000 -53.4939 -v 7286.5322 0.0000 -57.2281 -v 7322.1284 0.0000 -61.2302 -v 7357.7041 0.0000 -64.9207 -v 8177.0146 0.0000 -172.5916 -# 6 vertices - -g Section_149_0_20798 -l 88 89 90 91 92 93 - -# -# shape Section_150_0_25850 -# - -v 8177.0083 0.0000 -172.5916 -v 8996.2979 0.0000 -280.2622 -v 9031.8730 0.0000 -283.9523 -v 9067.1328 0.0000 -287.8803 -v 9102.8672 0.0000 -291.3953 -v 9138.7510 0.0000 -293.1797 -# 6 vertices - -g Section_150_0_25850 -l 94 95 96 97 98 99 - -# -# shape Section_8_0_89036 -# - -v 9138.7510 0.0000 -293.1797 -v 9373.7715 0.0000 -293.1799 -# 2 vertices - -g Section_8_0_89036 -l 100 101 - -# -# shape Section_12_0_13849 -# - -v 8053.7534 0.0000 -52.0123 -v 11185.0176 0.0000 -52.0054 -# 2 vertices - -g Section_12_0_13849 -l 102 103 - -# -# shape Section_164_0_57100 -# - -v 9373.7715 0.0000 -293.1799 -v 9684.1455 0.0000 -293.1799 -# 2 vertices - -g Section_164_0_57100 -l 104 105 - -# -# shape Section_166_0_89207 -# - -v 9684.1318 0.0000 -293.1799 -v 10029.1328 0.0000 -293.1799 -# 2 vertices - -g Section_166_0_89207 -l 106 107 - -# -# shape Section_168_0_40975 -# - -v 10029.1191 0.0000 -293.1799 -v 11185.0176 0.0000 -293.1799 -# 2 vertices - -g Section_168_0_40975 -l 108 109 - -# -# shape Section_170_0_01028 -# - -v 11185.0176 0.0000 -293.1799 -v 11785.0410 0.0000 -293.1799 -# 2 vertices - -g Section_170_0_01028 -l 110 111 - -# -# shape Section_13_0_00457 -# - -v 11185.0176 0.0000 -52.0054 -v 11785.0420 0.0000 -52.0052 -# 2 vertices - -g Section_13_0_00457 -l 112 113 - -# -# shape Section_184_0_75652 -# - -v 11785.0420 0.0000 -52.0052 -v 12357.2979 0.0000 -52.0046 -# 2 vertices - -g Section_184_0_75652 -l 114 115 - -# -# shape Section_186_0_61165 -# - -v 12357.2979 0.0000 -52.0046 -v 14012.3916 0.0000 -52.0035 -# 2 vertices - -g Section_186_0_61165 -l 116 117 - -# -# shape Section_187_0_36857 -# - -v 14012.3916 0.0000 -52.0035 -v 15339.0537 0.0000 -52.0104 -# 2 vertices - -g Section_187_0_36857 -l 118 119 - -# -# shape Section_172_0_94728 -# - -v 11785.0410 0.0000 -293.1799 -v 14012.4014 0.0000 -293.1799 -# 2 vertices - -g Section_172_0_94728 -l 120 121 - -# -# shape Section_173_0_71763 -# - -v 14012.4014 0.0000 -293.1799 -v 15339.0029 0.0000 -293.1797 -# 2 vertices - -g Section_173_0_71763 -l 122 123 - -# -# shape Section_198_0_45800 -# - -v 15339.0029 0.0000 -293.1797 -v 15303.1553 0.0000 -291.3496 -v 15267.6543 0.0000 -287.9903 -v 15232.1250 0.0000 -283.9523 -v 15196.5928 0.0000 -280.2619 -v 14781.4385 0.0000 -232.3148 -# 6 vertices - -g Section_198_0_45800 -l 124 125 126 127 128 129 - -# -# shape Section_197_0_10285 -# - -v 14781.4385 0.0000 -232.3148 -v 14366.2822 0.0000 -184.3680 -v 14330.7070 0.0000 -180.6779 -v 14295.2578 0.0000 -176.6940 -v 14259.5605 0.0000 -173.2387 -v 14223.7676 0.0000 -171.4505 -# 6 vertices - -g Section_197_0_10285 -l 130 131 132 133 134 135 - -# -# shape Section_0_0_88940 -# - -v 15339.0537 0.0000 -52.0104 -v 15303.1836 0.0000 -53.9518 -v 15267.6543 0.0000 -57.4131 -v 15232.1250 0.0000 -61.2303 -v 15196.5723 0.0000 -64.9205 -v 14711.7480 0.0000 -145.9809 -v 14688.3467 0.0000 -149.2253 -v 14663.0811 0.0000 -152.1855 -# 8 vertices - -g Section_0_0_88940 -l 136 137 138 139 140 141 142 143 - -# -# shape Section_199_0_11491 -# - -v 14663.0957 0.0000 -152.1874 -v 14515.0693 0.0000 -164.1981 -v 14367.0488 0.0000 -171.4504 -v 14331.2441 0.0000 -171.4505 -v 14223.8291 0.0000 -171.4508 -# 5 vertices - -g Section_199_0_11491 -l 144 145 146 147 148 - -# -# shape Section_193_0_89731 -# - -v 14223.7676 0.0000 -171.4505 -v 14012.3994 0.0000 -171.4506 -# 2 vertices - -g Section_193_0_89731 -l 149 150 - -# -# shape Section_192_0_06916 -# - -v 14012.3877 0.0000 -171.4505 -v 13279.4736 0.0000 -171.4505 -# 2 vertices - -g Section_192_0_06916 -l 151 152 - -# -# shape Section_199_0_42890 -# - -v 15339.0205 0.0000 -293.1799 -v 15878.4082 0.0000 -293.1799 -# 2 vertices - -g Section_199_0_42890 -l 153 154 - -# -# shape Section_188_0_86133 -# - -v 15339.0537 0.0000 -52.0104 -v 15878.4170 0.0000 -52.0098 -# 2 vertices - -g Section_188_0_86133 -l 155 156 - -# -# shape Section_209_0_12895 -# - -v 15878.4082 0.0000 -293.1799 -v 16478.4336 0.0000 -293.1799 -# 2 vertices - -g Section_209_0_12895 -l 157 158 - -# -# shape Section_0_0_79950 -# - -v 15878.4150 0.0000 -52.0098 -v 16478.4414 0.0000 -52.0093 -# 2 vertices - -g Section_0_0_79950 -l 159 160 - -# -# shape Section_58_0_69637 -# - -v 16478.4414 0.0000 -52.0093 -v 16852.7891 0.0000 -52.0091 -# 2 vertices - -g Section_58_0_69637 -l 161 162 - -# -# shape Section_219_0_28129 -# - -v 16478.4336 0.0000 -293.1799 -v 17710.3672 0.0000 -293.1799 -# 2 vertices - -g Section_219_0_28129 -l 163 164 - -# -# shape Section_59_0_45007 -# - -v 16852.7891 0.0000 -52.0091 -v 18177.7422 0.0000 -52.0080 -# 2 vertices - -g Section_59_0_45007 -l 165 166 - -# -# shape Section_220_0_98544 -# - -v 17710.3672 0.0000 -293.1799 -v 18177.7539 0.0000 -293.1799 -# 2 vertices - -g Section_220_0_98544 -l 167 168 - -# -# shape Section_221_0_27555 -# - -v 18177.7539 0.0000 -293.1799 -v 18777.7695 0.0000 -293.1799 -# 2 vertices - -g Section_221_0_27555 -l 169 170 - -# -# shape Section_12_0_34406 -# - -v 18177.7422 0.0000 -52.0080 -v 18777.7695 0.0000 -52.0074 -# 2 vertices - -g Section_12_0_34406 -l 171 172 - -# -# shape Section_14_0_79529 -# - -v 18777.7695 0.0000 -52.0074 -v 19083.4375 0.0000 -52.0072 -# 2 vertices - -g Section_14_0_79529 -l 173 174 - -# -# shape Section_223_0_13629 -# - -v 18777.7695 0.0000 -293.1799 -v 20162.5469 0.0000 -293.1799 -# 2 vertices - -g Section_223_0_13629 -l 175 176 - -# -# shape Section_16_0_62752 -# - -v 19083.4453 0.0000 -52.0072 -v 20654.5313 0.0000 -52.0055 -# 2 vertices - -g Section_16_0_62752 -l 177 178 - -# -# shape Section_21_0_70897 -# - -v 20654.5293 0.0000 -52.0055 -v 21254.5508 0.0000 -52.0050 -# 2 vertices - -g Section_21_0_70897 -l 179 180 - -# -# shape Section_225_0_87535 -# - -v 20162.5430 0.0000 -293.1799 -v 20654.5137 0.0000 -293.1799 -# 2 vertices - -g Section_225_0_87535 -l 181 182 - -# -# shape Section_227_0_14563 -# - -v 20654.5137 0.0000 -293.1799 -v 21254.5391 0.0000 -293.1799 -# 2 vertices - -g Section_227_0_14563 -l 183 184 - -# -# shape Section_23_0_11003 -# - -v 21254.5508 0.0000 -52.0050 -v 21653.3066 0.0000 -52.0048 -# 2 vertices - -g Section_23_0_11003 -l 185 186 - -# -# shape Section_25_0_54514 -# - -v 21653.3066 0.0000 -52.0048 -v 22590.8320 0.0000 -52.0056 -# 2 vertices - -g Section_25_0_54514 -l 187 188 - -# -# shape Section_235_0_28977 -# - -v 21254.5391 0.0000 -293.1799 -v 21749.7871 0.0000 -293.1799 -# 2 vertices - -g Section_235_0_28977 -l 189 190 - -# -# shape Section_237_0_28794 -# - -v 21749.7871 0.0000 -293.1799 -v 21953.6680 0.0000 -293.1799 -# 2 vertices - -g Section_237_0_28794 -l 191 192 - -# -# shape Section_238_0_89382 -# - -v 21953.6680 0.0000 -293.1799 -v 22228.4668 0.0000 -293.1797 -# 2 vertices - -g Section_238_0_89382 -l 193 194 - -# -# shape Section_30_0_99229 -# - -v 22228.4668 0.0000 -293.1797 -v 24557.0098 0.0000 -293.1799 -# 2 vertices - -g Section_30_0_99229 -l 195 196 - -# -# shape Section_0_0_17782 -# - -v 22228.4668 0.0000 -293.1797 -v 22264.0215 0.0000 -291.2562 -v 22299.9668 0.0000 -287.8008 -v 22335.3457 0.0000 -283.9523 -v 22370.9063 0.0000 -280.2625 -v 23190.2168 0.0000 -172.5916 -# 6 vertices - -g Section_0_0_17782 -l 197 198 199 200 201 202 - -# -# shape Section_1_0_78783 -# - -v 23190.2168 0.0000 -172.5916 -v 24009.5352 0.0000 -64.9204 -v 24045.1094 0.0000 -61.2302 -v 24080.5859 0.0000 -56.9476 -v 24116.1465 0.0000 -53.5883 -v 24151.9883 0.0000 -52.0025 -# 6 vertices - -g Section_1_0_78783 -l 203 204 205 206 207 208 - -# -# shape Section_26_0_80062 -# - -v 22590.8164 0.0000 -52.0040 -v 24151.9883 0.0000 -52.0025 -# 2 vertices - -g Section_26_0_80062 -l 209 210 - -# -# shape Section_27_0_13193 -# - -v 24151.9883 0.0000 -52.0025 -v 24557.0098 0.0000 -52.0100 -# 2 vertices - -g Section_27_0_13193 -l 211 212 - -# -# shape Section_27_0_36794 -# - -v 24557.0156 0.0000 -52.0099 -v 25157.0410 0.0000 -52.0094 -# 2 vertices - -g Section_27_0_36794 -l 213 214 - -# -# shape Section_8_0_40913 -# - -v 24557.0156 0.0000 -293.1799 -v 25157.0313 0.0000 -293.1799 -# 2 vertices - -g Section_8_0_40913 -l 215 216 - -# -# shape Section_10_0_25178 -# - -v 25157.0313 0.0000 -293.1799 -v 27324.1719 0.0000 -293.1799 -# 2 vertices - -g Section_10_0_25178 -l 217 218 - -# -# shape Section_33_0_52998 -# - -v 25157.0410 0.0000 -52.0094 -v 25771.7578 0.0000 -52.0090 -# 2 vertices - -g Section_33_0_52998 -l 219 220 - -# -# shape Section_34_0_76758 -# - -v 25771.7617 0.0000 -52.0088 -v 27623.5469 0.0000 -52.0073 -# 2 vertices - -g Section_34_0_76758 -l 221 222 - -# -# shape Section_12_0_19332 -# - -v 27324.1719 0.0000 -293.1799 -v 27623.5488 0.0000 -293.1799 -# 2 vertices - -g Section_12_0_19332 -l 223 224 - -# -# shape Section_14_0_74338 -# - -v 27623.5469 0.0000 -293.1799 -v 28223.5703 0.0000 -293.1799 -# 2 vertices - -g Section_14_0_74338 -l 225 226 - -# -# shape Section_36_0_54737 -# - -v 27623.5527 0.0000 -52.0072 -v 28223.5703 0.0000 -52.0068 -# 2 vertices - -g Section_36_0_54737 -l 227 228 - -# -# shape Section_38_0_52915 -# - -v 28223.5703 0.0000 -52.0068 -v 28887.2500 0.0000 -52.0061 -# 2 vertices - -g Section_38_0_52915 -l 229 230 - -# -# shape Section_16_0_67282 -# - -v 28223.5723 0.0000 -293.1799 -v 29832.1738 0.0000 -293.1799 -# 2 vertices - -g Section_16_0_67282 -l 231 232 - -# -# shape Section_43_0_32672 -# - -v 28887.2578 0.0000 -52.0061 -v 30674.8828 0.0000 -52.0046 -# 2 vertices - -g Section_43_0_32672 -l 233 234 - -# -# shape Section_18_0_11464 -# - -v 29832.1816 0.0000 -293.1799 -v 30674.8867 0.0000 -293.1799 -# 2 vertices - -g Section_18_0_11464 -l 235 236 - -# -# shape Section_23_0_67143 -# - -v 30674.8789 0.0000 -293.1799 -v 31274.9082 0.0000 -293.1799 -# 2 vertices - -g Section_23_0_67143 -l 237 238 - -# -# shape Section_48_0_56935 -# - -v 30674.8809 0.0000 -52.0044 -v 31274.9082 0.0000 -52.0039 -# 2 vertices - -g Section_48_0_56935 -l 239 240 - -# -# shape Section_25_0_29535 -# - -v 31274.9082 0.0000 -293.1799 -v 32508.7344 0.0000 -293.1799 -# 2 vertices - -g Section_25_0_29535 -l 241 242 - -# -# shape Section_150_0_25581 -# - -v 31274.9082 0.0000 -52.0039 -v 31901.7832 0.0000 -52.0038 -# 2 vertices - -g Section_150_0_25581 -l 243 244 - -# -# shape Section_151_0_61448 -# - -v 31901.7891 0.0000 -52.0044 -v 32599.6055 0.0000 -52.0025 -# 2 vertices - -g Section_151_0_61448 -l 245 246 - -# -# shape Section_53_0_49841 -# - -v 32599.6094 0.0000 -52.0029 -v 32821.7344 0.0000 -52.0027 -# 2 vertices - -g Section_53_0_49841 -l 247 248 - -# -# shape Section_26_0_54621 -# - -v 32508.7344 0.0000 -293.1799 -v 32821.7617 0.0000 -293.1797 -# 2 vertices - -g Section_26_0_54621 -l 249 250 - -# -# shape Section_54_0_79537 -# - -v 32821.7617 0.0000 -293.1797 -v 32964.9844 0.0000 -293.1797 -v 33236.2188 0.0000 -293.1799 -# 3 vertices - -g Section_54_0_79537 -l 251 252 253 - -# -# shape Section_56_0_10468 -# - -v 32821.7305 0.0000 -293.1799 -v 32857.4766 0.0000 -291.6879 -v 32893.1445 0.0000 -287.8435 -v 32928.6406 0.0000 -283.9523 -v 32964.1719 0.0000 -280.2627 -v 33159.4570 0.0000 -254.5493 -# 6 vertices - -g Section_56_0_10468 -l 254 255 256 257 258 259 - -# -# shape Section_36_0_92437 -# - -v 33497.2070 0.0000 -215.9114 -v 32832.2734 0.0000 -215.9124 -# 2 vertices - -g Section_36_0_92437 -l 260 261 - -# -# shape Section_57_0_33227 -# - -v 33159.4570 0.0000 -254.5493 -v 33354.7539 0.0000 -228.8294 -v 33390.3281 0.0000 -225.1391 -v 33425.8750 0.0000 -221.1953 -v 33461.2383 0.0000 -217.7340 -v 33497.2070 0.0000 -215.9114 -# 6 vertices - -g Section_57_0_33227 -l 262 263 264 265 266 267 - -# -# shape Section_68_0_60464 -# - -v 32821.7617 0.0000 -52.0031 -v 33236.2227 0.0000 -52.0041 -# 2 vertices - -g Section_68_0_60464 -l 268 269 - -# -# shape Section_39_0_85323 -# - -v 32832.2734 0.0000 -129.2715 -v 33497.2305 0.0000 -129.2715 -# 2 vertices - -g Section_39_0_85323 -l 270 271 - -# -# shape Section_66_0_66044 -# - -v 32821.7617 0.0000 -52.0031 -v 32857.5234 0.0000 -53.5364 -v 32893.1328 0.0000 -57.3767 -v 32928.6406 0.0000 -61.2302 -v 32964.2148 0.0000 -64.9202 -v 33159.4570 0.0000 -90.6399 -# 6 vertices - -g Section_66_0_66044 -l 272 273 274 275 276 277 - -# -# shape Section_67_0_20640 -# - -v 33159.4531 0.0000 -90.6396 -v 33354.7539 0.0000 -116.3541 -v 33390.3281 0.0000 -120.0442 -v 33425.6289 0.0000 -123.8737 -v 33461.4805 0.0000 -127.3290 -v 33497.2070 0.0000 -129.2716 -# 6 vertices - -g Section_67_0_20640 -l 278 279 280 281 282 283 - -# -# shape Section_64_0_32678 -# - -v 33497.2305 0.0000 -129.2715 -v 33731.8203 0.0000 -129.2717 -# 2 vertices - -g Section_64_0_32678 -l 284 285 - -# -# shape Section_89_0_10279 -# - -v 33731.8203 0.0000 -129.2717 -v 33966.3945 0.0000 -129.2716 -# 2 vertices - -g Section_89_0_10279 -l 286 287 - -# -# shape Section_90_0_10385 -# - -v 33966.3945 0.0000 -129.2716 -v 34141.7031 0.0000 -129.2713 -# 2 vertices - -g Section_90_0_10385 -l 288 289 - -# -# shape Section_58_0_50917 -# - -v 33497.2305 0.0000 -215.9115 -v 33731.8203 0.0000 -215.9116 -# 2 vertices - -g Section_58_0_50917 -l 290 291 - -# -# shape Section_81_0_49806 -# - -v 33731.8203 0.0000 -215.9116 -v 33966.4102 0.0000 -215.9116 -# 2 vertices - -g Section_81_0_49806 -l 292 293 - -# -# shape Section_82_0_55864 -# - -v 33966.3945 0.0000 -215.9117 -v 34141.7031 0.0000 -215.9115 -# 2 vertices - -g Section_82_0_55864 -l 294 295 - -# -# shape Section_74_0_18861 -# - -v 33236.2227 0.0000 -293.1799 -v 33743.7578 0.0000 -293.1799 -# 2 vertices - -g Section_74_0_18861 -l 296 297 - -# -# shape Section_75_0_19432 -# - -v 33743.7539 0.0000 -293.1799 -v 34074.9375 0.0000 -293.1803 -# 2 vertices - -g Section_75_0_19432 -l 298 299 - -# -# shape Section_93_0_24023 -# - -v 33236.2148 0.0000 -52.0027 -v 34749.8867 0.0000 -52.0000 -# 2 vertices - -g Section_93_0_24023 -l 300 301 - -# -# shape Section_94_0_08575 -# - -v 34749.8867 0.0000 -52.0000 -v 35719.8789 0.0000 -52.0025 -# 2 vertices - -g Section_94_0_08575 -l 302 303 - -# -# shape Section_1_0_58173 -# - -v 35719.8789 0.0000 -52.0025 -v 35684.1953 0.0000 -53.7801 -v 35648.5313 0.0000 -57.2753 -v 35613.0000 0.0000 -61.2302 -v 35577.4258 0.0000 -64.9204 -v 35233.1133 0.0000 -101.0391 -# 6 vertices - -g Section_1_0_58173 -l 304 305 306 307 308 309 - -# -# shape Section_116_0_74124 -# - -v 35233.1133 0.0000 -101.0391 -v 35146.8984 0.0000 -110.3029 -v 35060.6836 0.0000 -119.1164 -v 34974.4688 0.0000 -125.7699 -v 34888.2227 0.0000 -129.2703 -# 5 vertices - -g Section_116_0_74124 -l 310 311 312 313 314 - -# -# shape Section_11_0_67486 -# - -v 34888.2148 0.0000 -129.2709 -v 34514.9453 0.0000 -129.2718 -# 2 vertices - -g Section_11_0_67486 -l 315 316 - -# -# shape Section_10_0_13766 -# - -v 34514.9492 0.0000 -129.2717 -v 34141.7031 0.0000 -129.2713 -# 2 vertices - -g Section_10_0_13766 -l 317 318 - -# -# shape Section_8_0_08337 -# - -v 34141.7070 0.0000 -215.9117 -v 34514.9609 0.0000 -215.9115 -# 2 vertices - -g Section_8_0_08337 -l 319 320 - -# -# shape Section_9_0_72841 -# - -v 34514.9609 0.0000 -215.9115 -v 34888.2148 0.0000 -215.9114 -# 2 vertices - -g Section_9_0_72841 -l 321 322 - -# -# shape Section_88_0_74919 -# - -v 34514.9180 0.0000 -172.5653 -v 34745.7852 0.0000 -202.9939 -v 34781.3359 0.0000 -206.6841 -v 34816.8359 0.0000 -210.2112 -v 34852.4531 0.0000 -213.9823 -v 34888.2266 0.0000 -215.9102 -# 6 vertices - -g Section_88_0_74919 -l 323 324 325 326 327 328 - -# -# shape Section_78_0_57107_ -# - -v 34074.9375 0.0000 -293.1799 -v 34692.7305 0.0000 -293.1798 -# 2 vertices - -g Section_78_0_57107_ -l 329 330 - -# -# shape Section_79_0_68176 -# - -v 34692.7188 0.0000 -293.1797 -v 35719.8945 0.0000 -293.1799 -# 2 vertices - -g Section_79_0_68176 -l 331 332 - -# -# shape Section_87_0_89620 -# - -v 34141.7031 0.0000 -129.2713 -v 34177.3398 0.0000 -130.7979 -v 34212.9258 0.0000 -134.5199 -v 34248.5820 0.0000 -138.4984 -v 34284.1563 0.0000 -142.1885 -v 34461.7383 0.0000 -165.5937 -v 34514.9180 0.0000 -172.5653 -# 7 vertices - -g Section_87_0_89620 -l 333 334 335 336 337 338 339 - -# -# shape Section_85_0_50254 -# - -v 34141.7070 0.0000 -215.9117 -v 34158.0195 0.0000 -215.9518 -v 34177.5664 0.0000 -213.9157 -v 34213.0586 0.0000 -210.2508 -v 34248.5820 0.0000 -206.6841 -v 34284.1563 0.0000 -202.9939 -v 34461.7344 0.0000 -179.5896 -v 34514.9180 0.0000 -172.5653 -# 8 vertices - -g Section_85_0_50254 -l 340 341 342 343 344 345 346 347 - -# -# shape Section_86_0_57388 -# - -v 34514.9180 0.0000 -172.5653 -v 34568.2539 0.0000 -165.5692 -v 34745.7617 0.0000 -142.1889 -v 34781.3359 0.0000 -138.4986 -v 34816.8711 0.0000 -134.6011 -v 34852.5820 0.0000 -131.2417 -v 34888.2148 0.0000 -129.2709 -# 7 vertices - -g Section_86_0_57388 -l 348 349 350 351 352 353 354 - -# -# shape Section_113_0_39493 -# - -v 34888.2266 0.0000 -215.9102 -v 34974.4688 0.0000 -219.4106 -v 35060.6836 0.0000 -226.0640 -v 35146.8984 0.0000 -234.8775 -v 35233.1133 0.0000 -244.1413 -# 5 vertices - -g Section_113_0_39493 -l 355 356 357 358 359 - -# -# shape Section_126_0_33124 -# - -v 34074.9375 0.0000 -293.1799 -v 34094.2578 0.0000 -293.3638 -v 34110.8164 0.0000 -294.9954 -v 34146.3281 0.0000 -298.4507 -v 34181.8164 0.0000 -302.4074 -v 34217.3906 0.0000 -306.0974 -v 34302.6133 0.0000 -314.4849 -v 34387.8320 0.0000 -321.9749 -v 34473.0508 0.0000 -328.1617 -v 34527.3008 0.0000 -331.6832 -# 10 vertices - -g Section_126_0_33124 -l 360 361 362 363 364 365 366 367 368 369 - -# -# shape Section_77_0_91490 -# - -v 34527.3008 0.0000 -331.6832 -v 34558.2617 0.0000 -333.6933 -v 34643.4844 0.0000 -337.3546 -v 34678.9531 0.0000 -338.4032 -# 4 vertices - -g Section_77_0_91490 -l 370 371 372 373 - -# -# shape Section_76_0_34214 -# - -v 34678.9609 0.0000 -338.4034 -v 35145.0039 0.0000 -338.4029 -# 2 vertices - -g Section_76_0_34214 -l 374 375 - -# -# shape Section_0_0_40238 -# - -v 35233.1133 0.0000 -244.1413 -v 35577.4258 0.0000 -280.2622 -v 35613.0000 0.0000 -283.9523 -v 35648.4219 0.0000 -287.6360 -v 35684.0547 0.0000 -291.1991 -v 35719.8789 0.0000 -293.1797 -# 6 vertices - -g Section_0_0_40238 -l 376 377 378 379 380 381 - -# -# shape Section_97_0_91886 -# - -v 35719.8945 0.0000 -293.1799 -v 35955.5078 0.0000 -293.1799 -# 2 vertices - -g Section_97_0_91886 -l 382 383 - -# -# shape Section_95_0_02842 -# - -v 35719.8789 0.0000 -52.0025 -v 35955.5117 0.0000 -52.0026 -# 2 vertices - -g Section_95_0_02842 -l 384 385 - -# -# shape Section_139_0_34068 -# - -v 35955.5078 0.0000 -52.0031 -v 36555.5313 0.0000 -52.0026 -# 2 vertices - -g Section_139_0_34068 -l 386 387 - -# -# shape Section_141_0_30126 -# - -v 36555.5313 0.0000 -52.0026 -v 36999.9570 0.0000 -52.0020 -# 2 vertices - -g Section_141_0_30126 -l 388 389 - -# -# shape Section_113_0_33503 -# - -v 35955.5078 0.0000 -293.1799 -v 36555.5313 0.0000 -293.1799 -# 2 vertices - -g Section_113_0_33503 -l 390 391 - -# -# shape Section_115_0_00513 -# - -v 36555.5313 0.0000 -293.1799 -v 37678.7813 0.0000 -293.1799 -# 2 vertices - -g Section_115_0_00513 -l 392 393 - -# -# shape Section_143_0_14398 -# - -v 36999.9570 0.0000 -52.0019 -v 37904.1289 0.0000 -52.0012 -# 2 vertices - -g Section_143_0_14398 -l 394 395 - -# -# shape Section_145_0_68245 -# - -v 37904.1289 0.0000 -52.0012 -v 38504.1523 0.0000 -52.0006 -# 2 vertices - -g Section_145_0_68245 -l 396 397 - -# -# shape Section_117_0_17201 -# - -v 37678.7695 0.0000 -293.1799 -v 37904.1172 0.0000 -293.1799 -# 2 vertices - -g Section_117_0_17201 -l 398 399 - -# -# shape Section_119_0_89484 -# - -v 37904.1289 0.0000 -293.1799 -v 38504.1367 0.0000 -293.1799 -# 2 vertices - -g Section_119_0_89484 -l 400 401 - -# -# shape Section_121_0_98292 -# - -v 38504.1367 0.0000 -293.1799 -v 40721.9023 0.0000 -293.1799 -# 2 vertices - -g Section_121_0_98292 -l 402 403 - -# -# shape Section_147_0_21043 -# - -v 38504.1523 0.0000 -52.0006 -v 39009.7031 0.0000 -52.0004 -# 2 vertices - -g Section_147_0_21043 -l 404 405 - -# -# shape Section_155_0_05387 -# - -v 39009.7031 0.0000 -52.0004 -v 41049.2656 0.0000 -51.9987 -# 2 vertices - -g Section_155_0_05387 -l 406 407 - -# -# shape Section_157_0_98887 -# - -v 41049.2656 0.0000 -51.9986 -v 41649.2852 0.0000 -51.9980 -# 2 vertices - -g Section_157_0_98887 -l 408 409 - -# -# shape Section_159_0_24640 -# - -v 41649.2852 0.0000 -51.9980 -v 42113.2891 0.0000 -51.9975 -# 2 vertices - -g Section_159_0_24640 -l 410 411 - -# -# shape Section_123_0_33373 -# - -v 40721.9023 0.0000 -293.1799 -v 41049.2656 0.0000 -293.1799 -# 2 vertices - -g Section_123_0_33373 -l 412 413 - -# -# shape Section_125_0_60222 -# - -v 41049.2656 0.0000 -293.1799 -v 41649.2852 0.0000 -293.1799 -# 2 vertices - -g Section_125_0_60222 -l 414 415 - -# -# shape Section_127_0_63213 -# - -v 41649.2852 0.0000 -293.1799 -v 43864.7070 0.0000 -293.1799 -# 2 vertices - -g Section_127_0_63213 -l 416 417 - -# -# shape Section_164_0_48112 -# - -v 42113.2891 0.0000 -51.9975 -v 44176.4609 0.0000 -51.9961 -# 2 vertices - -g Section_164_0_48112 -l 418 419 - -# -# shape Section_129_0_12832 -# - -v 43864.7070 0.0000 -293.1799 -v 44176.4688 0.0000 -293.1799 -# 2 vertices - -g Section_129_0_12832 -l 420 421 - -# -# shape Section_166_0_06012 -# - -v 44176.4609 0.0000 -51.9961 -v 44776.4766 0.0000 -51.9955 -# 2 vertices - -g Section_166_0_06012 -l 422 423 - -# -# shape Section_168_0_02822 -# - -v 44776.4766 0.0000 -51.9955 -v 45252.6563 0.0000 -51.9949 -# 2 vertices - -g Section_168_0_02822 -l 424 425 - -# -# shape Section_131_0_62903 -# - -v 44176.4688 0.0000 -293.1799 -v 44776.4609 0.0000 -293.1799 -# 2 vertices - -g Section_131_0_62903 -l 426 427 - -# -# shape Section_133_0_01315 -# - -v 44776.4609 0.0000 -293.1799 -v 45883.4141 0.0000 -293.1799 -# 2 vertices - -g Section_133_0_01315 -l 428 429 - -# -# shape Section_170_0_41675 -# - -v 45252.6484 0.0000 -51.9948 -v 46124.2930 0.0000 -51.9941 -# 2 vertices - -g Section_170_0_41675 -l 430 431 - -# -# shape Section_135_0_03356 -# - -v 45883.4141 0.0000 -293.1799 -v 46124.2930 0.0000 -293.1799 -# 2 vertices - -g Section_135_0_03356 -l 432 433 - -# -# shape Section_137_0_67941 -# - -v 46124.2930 0.0000 -293.1799 -v 46724.2969 0.0000 -293.1799 -# 2 vertices - -g Section_137_0_67941 -l 434 435 - -# -# shape Section_172_0_28721 -# - -v 46124.2930 0.0000 -51.9941 -v 46724.3164 0.0000 -51.9936 -# 2 vertices - -g Section_172_0_28721 -l 436 437 - -# -# shape Section_138_0_31284 -# - -v 46724.2969 0.0000 -293.1799 -v 47312.4883 0.0000 -293.1797 -# 2 vertices - -g Section_138_0_31284 -l 438 439 - -# -# shape Section_173_0_06901 -# - -v 46724.3164 0.0000 -51.9936 -v 47312.4961 0.0000 -51.9881 -# 2 vertices - -g Section_173_0_06901 -l 440 441 - -# -# shape Section_197_0_42538 -# - -v 47312.4961 0.0000 -51.9881 -v 47937.8047 0.0000 -52.0028 -# 2 vertices - -g Section_197_0_42538 -l 442 443 - -# -# shape Section_198_0_68775 -# - -v 47937.7930 0.0000 -52.0027 -v 48627.3672 0.0000 -52.0027 -# 2 vertices - -g Section_198_0_68775 -l 444 445 - -# -# shape Section_174_0_12166 -# - -v 47312.4883 0.0000 -293.1797 -v 47937.7969 0.0000 -293.1799 -# 2 vertices - -g Section_174_0_12166 -l 446 447 - -# -# shape Section_179_0_93813 -# - -v 47937.7969 0.0000 -293.1799 -v 49579.7461 0.0000 -293.1799 -# 2 vertices - -g Section_179_0_93813 -l 448 449 - -# -# shape Section_180_0_79259 -# - -v 49579.7500 0.0000 -293.1799 -v 50210.6484 0.0000 -293.1797 -# 2 vertices - -g Section_180_0_79259 -l 450 451 - -# -# shape Section_210_0_53497 -# - -v 50210.6484 0.0000 -52.0026 -v 49579.7422 0.0000 -52.0030 -# 2 vertices - -g Section_210_0_53497 -l 452 453 - -# -# shape Section_209_0_44779 -# - -v 49579.7344 0.0000 -52.0030 -v 48906.8047 0.0000 -52.0050 -# 2 vertices - -g Section_209_0_44779 -l 454 455 - -# -# shape Section_201_0_05283 -# - -v 48906.8047 0.0000 -52.0050 -v 48627.3672 0.0000 -52.0027 -# 2 vertices - -g Section_201_0_05283 -l 456 457 - -# -# shape Section_129_0_48639 -# - -v 48627.3711 0.0000 -52.0042 -v 48607.0859 0.0000 -51.8758 -v 48591.6797 0.0000 -50.5321 -v 48556.1602 0.0000 -46.8378 -v 48520.4883 0.0000 -42.7753 -v 48484.9141 0.0000 -39.0851 -v 48399.6953 0.0000 -30.6982 -v 48314.4766 0.0000 -23.2081 -v 48229.2578 0.0000 -17.0213 -v 48144.0391 0.0000 -11.4895 -v 48058.8203 0.0000 -7.8287 -v 48023.3320 0.0000 -6.7796 -# 12 vertices - -g Section_129_0_48639 -l 458 459 460 461 462 463 464 465 466 467 468 469 - -# -# shape Section_200_0_86678 -# - -v 47926.9570 0.0000 -6.7790 -v 47557.2930 0.0000 -6.7801 -# 2 vertices - -g Section_200_0_86678 -l 470 471 - -# -# shape Section_8_0_39030 -# - -v 47312.4883 0.0000 -293.1797 -v 47331.7461 0.0000 -292.6609 -v 47348.1523 0.0000 -291.5071 -v 47383.8164 0.0000 -287.6725 -v 47419.3672 0.0000 -283.9523 -v 47454.9414 0.0000 -280.2622 -v 47799.2461 0.0000 -244.1411 -# 7 vertices - -g Section_8_0_39030 -l 472 473 474 475 476 477 478 - -# -# shape Section_109_0_42938 -# - -v 47799.2578 0.0000 -244.1412 -v 47885.4727 0.0000 -234.8773 -v 47971.6875 0.0000 -226.0636 -v 48057.9023 0.0000 -219.4100 -v 48144.1641 0.0000 -215.9115 -# 5 vertices - -g Section_109_0_42938 -l 479 480 481 482 483 - -# -# shape Section_9_0_49344 -# - -v 47312.4961 0.0000 -51.9881 -v 47330.4375 0.0000 -52.1648 -v 47348.2891 0.0000 -53.4204 -v 47383.7813 0.0000 -57.2550 -v 47419.3672 0.0000 -61.2301 -v 47454.9414 0.0000 -64.9208 -v 47799.2656 0.0000 -101.0391 -# 7 vertices - -g Section_9_0_49344 -l 484 485 486 487 488 489 490 - -# -# shape Section_111_0_69039 -# - -v 47799.2773 0.0000 -101.0396 -v 47885.4805 0.0000 -110.3029 -v 47971.6953 0.0000 -119.1164 -v 48057.9102 0.0000 -125.7699 -v 48144.1641 0.0000 -129.2716 -# 5 vertices - -g Section_111_0_69039 -l 491 492 493 494 495 - -# -# shape Section_22_0_95802 -# - -v 48144.1641 0.0000 -129.2716 -v 48517.4414 0.0000 -129.2711 -# 2 vertices - -g Section_22_0_95802 -l 496 497 - -# -# shape Section_23_0_66747 -# - -v 48517.4414 0.0000 -129.2711 -v 48890.6875 0.0000 -129.2709 -# 2 vertices - -g Section_23_0_66747 -l 498 499 - -# -# shape Section_21_0_08540 -# - -v 48890.6875 0.0000 -215.9114 -v 48517.4375 0.0000 -215.9115 -# 2 vertices - -g Section_21_0_08540 -l 500 501 - -# -# shape Section_20_0_64934 -# - -v 48517.4453 0.0000 -215.9115 -v 48144.1641 0.0000 -215.9115 -# 2 vertices - -g Section_20_0_64934 -l 502 503 - -# -# shape Section_191_0_38773 -# - -v 48144.1641 0.0000 -215.9115 -v 48162.4609 0.0000 -215.5317 -v 48179.8789 0.0000 -214.2359 -v 48215.8711 0.0000 -210.3487 -v 48251.0430 0.0000 -206.6841 -v 48286.6172 0.0000 -202.9939 -v 48464.1523 0.0000 -179.6137 -v 48517.6445 0.0000 -172.5648 -# 8 vertices - -g Section_191_0_38773 -l 504 505 506 507 508 509 510 511 - -# -# shape Section_194_0_20382 -# - -v 48517.6445 0.0000 -172.5648 -v 48570.6484 0.0000 -179.5890 -v 48748.2344 0.0000 -202.9939 -v 48783.8086 0.0000 -206.6841 -v 48819.4375 0.0000 -210.3496 -v 48854.6602 0.0000 -213.8529 -v 48873.0898 0.0000 -215.5806 -v 48890.6875 0.0000 -215.9114 -# 8 vertices - -g Section_194_0_20382 -l 512 513 514 515 516 517 518 519 - -# -# shape Section_192_0_38510 -# - -v 48890.6914 0.0000 -129.2710 -v 48855.0156 0.0000 -131.1759 -v 48819.2852 0.0000 -134.4675 -v 48783.8086 0.0000 -138.4986 -v 48748.2461 0.0000 -142.1890 -v 48570.6445 0.0000 -165.5936 -v 48517.6445 0.0000 -172.5648 -# 7 vertices - -g Section_192_0_38510 -l 520 521 522 523 524 525 526 - -# -# shape Section_193_0_22469 -# - -v 48517.6445 0.0000 -172.5648 -v 48464.1445 0.0000 -165.5686 -v 48286.6172 0.0000 -142.1887 -v 48251.0430 0.0000 -138.4987 -v 48215.5391 0.0000 -134.5983 -v 48180.0078 0.0000 -130.9673 -v 48160.7695 0.0000 -129.4742 -v 48144.1641 0.0000 -129.2716 -# 8 vertices - -g Section_193_0_22469 -l 527 528 529 530 531 532 533 534 - -# -# shape Section_187_0_19664 -# - -v 48890.6875 0.0000 -215.9114 -v 49045.7930 0.0000 -215.9118 -# 2 vertices - -g Section_187_0_19664 -l 535 536 - -# -# shape Section_203_0_58066 -# - -v 48890.6914 0.0000 -129.2710 -v 49045.7930 0.0000 -129.2710 -# 2 vertices - -g Section_203_0_58066 -l 537 538 - -# -# shape Section_189_0_69359 -# - -v 49045.7930 0.0000 -215.9118 -v 49281.5938 0.0000 -215.9116 -# 2 vertices - -g Section_189_0_69359 -l 539 540 - -# -# shape Section_205_0_30376 -# - -v 49045.7930 0.0000 -129.2710 -v 49281.5977 0.0000 -129.2711 -# 2 vertices - -g Section_205_0_30376 -l 541 542 - -# -# shape Section_190_0_54694 -# - -v 49281.5938 0.0000 -215.9113 -v 49535.1875 0.0000 -215.9116 -# 2 vertices - -g Section_190_0_54694 -l 543 544 - -# -# shape Section_206_0_28493 -# - -v 49281.5977 0.0000 -129.2711 -v 49535.1875 0.0000 -129.2710 -# 2 vertices - -g Section_206_0_28493 -l 545 546 - -# -# shape Section_53_0_97074 -# - -v 49535.1875 0.0000 -129.2710 -v 50210.6445 0.0000 -129.2710 -# 2 vertices - -g Section_53_0_97074 -l 547 548 - -# -# shape Section_50_0_30440 -# - -v 49535.1953 0.0000 -215.9113 -v 50210.6445 0.0000 -215.9115 -# 2 vertices - -g Section_50_0_30440 -l 549 550 - -# -# shape Section_183_0_54630 -# - -v 49535.1875 0.0000 -215.9116 -v 49552.5313 0.0000 -216.0818 -v 49570.9375 0.0000 -217.5455 -v 49606.6289 0.0000 -221.3340 -v 49642.0742 0.0000 -225.1387 -v 49677.6484 0.0000 -228.8289 -v 49872.9141 0.0000 -254.5430 -# 7 vertices - -g Section_183_0_54630 -l 551 552 553 554 555 556 557 - -# -# shape Section_184_0_87646 -# - -v 49872.9141 0.0000 -254.5430 -v 50068.1953 0.0000 -280.2622 -v 50103.7695 0.0000 -283.9524 -v 50139.3047 0.0000 -287.8041 -v 50174.6953 0.0000 -291.4012 -v 50192.2422 0.0000 -292.8562 -v 50210.6484 0.0000 -293.1797 -# 7 vertices - -g Section_184_0_87646 -l 558 559 560 561 562 563 564 - -# -# shape Section_207_0_44740 -# - -v 49535.1953 0.0000 -129.2716 -v 49553.6250 0.0000 -128.8702 -v 49570.8633 0.0000 -127.4789 -v 49606.4961 0.0000 -123.7461 -v 49642.0742 0.0000 -120.0442 -v 49677.6406 0.0000 -116.3469 -v 49872.9141 0.0000 -90.6333 -# 7 vertices - -g Section_207_0_44740 -l 565 566 567 568 569 570 571 - -# -# shape Section_208_0_65451 -# - -v 49872.9180 0.0000 -90.6336 -v 50068.1953 0.0000 -64.9206 -v 50103.7695 0.0000 -61.2303 -v 50138.9258 0.0000 -57.4205 -v 50174.6797 0.0000 -53.9652 -v 50190.0703 0.0000 -52.2400 -v 50210.6484 0.0000 -52.0026 -# 7 vertices - -g Section_208_0_65451 -l 572 573 574 575 576 577 578 - -# -# shape Section_181_0_34069 -# - -v 50210.6602 0.0000 -293.1799 -v 50512.1016 0.0000 -293.1799 -# 2 vertices - -g Section_181_0_34069 -l 579 580 - -# -# shape Section_211_0_82729 -# - -v 50210.6484 0.0000 -52.0026 -v 50512.1016 0.0000 -52.0027 -# 2 vertices - -g Section_211_0_82729 -l 581 582 - -# -# shape Section_0_0_32587 -# - -v 50512.1016 0.0000 -293.1799 -v 50817.1523 0.0000 -293.1799 -# 2 vertices - -g Section_0_0_32587 -l 583 584 - -# -# shape Section_27_0_10907 -# - -v 50512.1055 0.0000 -52.0031 -v 51426.0586 0.0000 -52.0022 -# 2 vertices - -g Section_27_0_10907 -l 585 586 - -# -# shape Section_29_0_74868 -# - -v 51426.0586 0.0000 -52.0022 -v 52026.0820 0.0000 -52.0017 -# 2 vertices - -g Section_29_0_74868 -l 587 588 - -# -# shape Section_31_0_29571 -# - -v 52026.0820 0.0000 -52.0016 -v 52327.5820 0.0000 -52.0013 -# 2 vertices - -g Section_31_0_29571 -l 589 590 - -# -# shape Section_2_0_27867 -# - -v 50817.1523 0.0000 -293.1799 -v 51426.0625 0.0000 -293.1799 -# 2 vertices - -g Section_2_0_27867 -l 591 592 - -# -# shape Section_0_0_99524 -# - -v 51426.0625 0.0000 -293.1799 -v 52026.0820 0.0000 -293.1799 -# 2 vertices - -g Section_0_0_99524 -l 593 594 - -# -# shape Section_2_0_11751 -# - -v 52026.0898 0.0000 -293.1799 -v 53771.9023 0.0000 -293.1799 -# 2 vertices - -g Section_2_0_11751 -l 595 596 - -# -# shape Section_36_0_07283 -# - -v 52327.5820 0.0000 -52.0013 -v 54042.3047 0.0000 -51.9998 -# 2 vertices - -g Section_36_0_07283 -l 597 598 - -# -# shape Section_4_0_05238 -# - -v 53771.9023 0.0000 -293.1799 -v 54042.3047 0.0000 -293.1799 -# 2 vertices - -g Section_4_0_05238 -l 599 600 - -# -# shape Section_6_0_94559 -# - -v 54042.3047 0.0000 -293.1799 -v 54642.3086 0.0000 -293.1799 -# 2 vertices - -g Section_6_0_94559 -l 601 602 - -# -# shape Section_8_0_37290 -# - -v 54642.3086 0.0000 -293.1799 -v 56707.4570 0.0000 -293.1799 -# 2 vertices - -g Section_8_0_37290 -l 603 604 - -# -# shape Section_38_0_19298 -# - -v 54042.3008 0.0000 -52.0000 -v 54642.3242 0.0000 -51.9994 -# 2 vertices - -g Section_38_0_19298 -l 605 606 - -# -# shape Section_40_0_85597 -# - -v 54642.3242 0.0000 -51.9994 -v 55301.9102 0.0000 -51.9988 -# 2 vertices - -g Section_40_0_85597 -l 607 608 - -# -# shape Section_42_0_94345 -# - -v 55301.9102 0.0000 -51.9988 -v 57003.4688 0.0000 -51.9975 -# 2 vertices - -g Section_42_0_94345 -l 609 610 - -# -# shape Section_10_0_50958 -# - -v 56707.4570 0.0000 -293.1799 -v 57003.4766 0.0000 -293.1799 -# 2 vertices - -g Section_10_0_50958 -l 611 612 - -# -# shape Section_12_0_87988 -# - -v 57003.4766 0.0000 -293.1799 -v 57603.4883 0.0000 -293.1799 -# 2 vertices - -g Section_12_0_87988 -l 613 614 - -# -# shape Section_44_0_55538 -# - -v 57003.4805 0.0000 -51.9973 -v 57603.5000 0.0000 -51.9968 -# 2 vertices - -g Section_44_0_55538 -l 615 616 - -# -# shape Section_14_0_60332 -# - -v 57603.4883 0.0000 -293.1799 -v 59604.9375 0.0000 -293.1799 -# 2 vertices - -g Section_14_0_60332 -l 617 618 - -# -# shape Section_48_0_35946 -# - -v 57603.5000 0.0000 -51.9968 -v 58298.2852 0.0000 -51.9961 -# 2 vertices - -g Section_48_0_35946 -l 619 620 - -# -# shape Section_49_0_25734 -# - -v 58298.2813 0.0000 -51.9961 -v 59948.0430 0.0000 -51.9947 -# 2 vertices - -g Section_49_0_25734 -l 621 622 - -# -# shape Section_16_0_20454 -# - -v 59604.9375 0.0000 -293.1799 -v 59948.0234 0.0000 -293.1799 -# 2 vertices - -g Section_16_0_20454 -l 623 624 - -# -# shape Section_53_0_14603 -# - -v 59948.0156 0.0000 -51.9949 -v 60548.0430 0.0000 -51.9944 -# 2 vertices - -g Section_53_0_14603 -l 625 626 - -# -# shape Section_21_0_68650 -# - -v 59948.0352 0.0000 -293.1799 -v 60548.0469 0.0000 -293.1799 -# 2 vertices - -g Section_21_0_68650 -l 627 628 - -# -# shape Section_22_0_78114 -# - -v 60548.0469 0.0000 -293.1799 -v 61803.2656 0.0000 -293.1797 -# 2 vertices - -g Section_22_0_78114 -l 629 630 - -# -# shape Section_54_0_32339 -# - -v 60548.0430 0.0000 -51.9944 -v 63726.8047 0.0000 -52.0025 -# 2 vertices - -g Section_54_0_32339 -l 631 632 - -# -# shape Section_23_0_42583 -# - -v 61803.2656 0.0000 -293.1797 -v 62593.2578 0.0000 -293.1799 -# 2 vertices - -g Section_23_0_42583 -l 633 634 - -# -# shape Section_0_0_70490 -# - -v 62593.2578 0.0000 -293.1799 -v 64495.5859 0.0000 -293.1799 -# 2 vertices - -g Section_0_0_70490 -l 635 636 - -# -# shape Section_2_0_32440 -# - -v 64495.5781 0.0000 -293.1799 -v 64733.9961 0.0000 -293.1799 -# 2 vertices - -g Section_2_0_32440 -l 637 638 - -# -# shape Section_34_0_46242 -# - -v 64733.9727 0.0000 -52.0028 -v 64495.5938 0.0000 -52.0028 -# 2 vertices - -g Section_34_0_46242 -l 639 640 - -# -# shape Section_32_0_97749 -# - -v 64495.5781 0.0000 -52.0028 -v 64218.8750 0.0000 -52.0027 -# 2 vertices - -g Section_32_0_97749 -l 641 642 - -# -# shape Section_55_0_58259 -# - -v 63726.8047 0.0000 -52.0025 -v 64218.8750 0.0000 -52.0027 -# 2 vertices - -g Section_55_0_58259 -l 643 644 - -# -# shape Section_26_0_51893 -# - -v 63726.8047 0.0000 -52.0025 -v 63709.7031 0.0000 -52.2693 -v 63691.0859 0.0000 -53.5488 -v 63655.4492 0.0000 -57.3640 -v 63619.9258 0.0000 -61.2302 -v 63584.3516 0.0000 -64.9204 -v 62765.0469 0.0000 -172.5917 -# 7 vertices - -g Section_26_0_51893 -l 645 646 647 648 649 650 651 - -# -# shape Section_25_0_02116 -# - -v 62765.0469 0.0000 -172.5917 -v 61945.7383 0.0000 -280.2626 -v 61910.1445 0.0000 -283.9523 -v 61874.6484 0.0000 -287.7387 -v 61838.9648 0.0000 -291.3018 -v 61824.3516 0.0000 -292.8558 -v 61803.2734 0.0000 -293.1799 -# 7 vertices - -g Section_25_0_02116 -l 652 653 654 655 656 657 658 - -# -# shape Section_4_0_67615 -# - -v 64733.9961 0.0000 -293.1799 -v 65334.0195 0.0000 -293.1799 -# 2 vertices - -g Section_4_0_67615 -l 659 660 - -# -# shape Section_36_0_94633 -# - -v 64733.9727 0.0000 -52.0028 -v 65334.0195 0.0000 -52.0028 -# 2 vertices - -g Section_36_0_94633 -l 661 662 - -# -# shape Section_6_0_35711 -# - -v 65334.0195 0.0000 -293.1799 -v 67364.2734 0.0000 -293.1799 -# 2 vertices - -g Section_6_0_35711 -l 663 664 - -# -# shape Section_38_0_05644 -# - -v 65334.0195 0.0000 -52.0028 -v 65971.5859 0.0000 -52.0028 -# 2 vertices - -g Section_38_0_05644 -l 665 666 - -# -# shape Section_40_0_17447 -# - -v 65971.5781 0.0000 -52.0027 -v 67204.8359 0.0000 -52.0028 -# 2 vertices - -g Section_40_0_17447 -l 667 668 - -# -# shape Section_44_0_35569 -# - -v 67204.8203 0.0000 -52.0031 -v 68044.0469 0.0000 -52.0034 -# 2 vertices - -g Section_44_0_35569 -l 669 670 - -# -# shape Section_42_0_20130 -# - -v 68044.0469 0.0000 -52.0034 -v 68644.0703 0.0000 -52.0034 -# 2 vertices - -g Section_42_0_20130 -l 671 672 - -# -# shape Section_52_0_61446 -# - -v 68644.0547 0.0000 -52.0034 -v 70642.2734 0.0000 -52.0034 -# 2 vertices - -g Section_52_0_61446 -l 673 674 - -# -# shape Section_54_0_82493 -# - -v 70642.2734 0.0000 -52.0034 -v 71242.3203 0.0000 -52.0034 -# 2 vertices - -g Section_54_0_82493 -l 675 676 - -# -# shape Section_56_0_43947 -# - -v 71242.3203 0.0000 -52.0034 -v 71898.7656 0.0000 -52.0033 -# 2 vertices - -g Section_56_0_43947 -l 677 678 - -# -# shape Section_58_0_79173 -# - -v 71898.7734 0.0000 -52.0034 -v 74591.2578 0.0000 -52.0034 -# 2 vertices - -g Section_58_0_79173 -l 679 680 - -# -# shape Section_59_0_15763 -# - -v 74591.2578 0.0000 -52.0034 -v 75126.0000 0.0000 -52.0029 -# 2 vertices - -g Section_59_0_15763 -l 681 682 - -# -# shape Section_31_0_26942 -# - -v 75126.0000 0.0000 -293.1797 -v 74591.2813 0.0000 -293.1799 -# 2 vertices - -g Section_31_0_26942 -l 683 684 - -# -# shape Section_30_0_01026 -# - -v 74591.2813 0.0000 -293.1799 -v 71242.3125 0.0000 -293.1799 -# 2 vertices - -g Section_30_0_01026 -l 685 686 - -# -# shape Section_19_0_81957 -# - -v 71242.3125 0.0000 -293.1799 -v 70642.2813 0.0000 -293.1799 -# 2 vertices - -g Section_19_0_81957 -l 687 688 - -# -# shape Section_17_0_67451 -# - -v 70642.2969 0.0000 -293.1799 -v 70279.4922 0.0000 -293.1799 -# 2 vertices - -g Section_17_0_67451 -l 689 690 - -# -# shape Section_15_0_36127 -# - -v 70279.5000 0.0000 -293.1799 -v 68644.0625 0.0000 -293.1799 -# 2 vertices - -g Section_15_0_36127 -l 691 692 - -# -# shape Section_14_0_83491 -# - -v 68644.0625 0.0000 -293.1799 -v 68044.0391 0.0000 -293.1799 -# 2 vertices - -g Section_14_0_83491 -l 693 694 - -# -# shape Section_8_0_18178 -# - -v 68044.0313 0.0000 -293.1799 -v 67364.2813 0.0000 -293.1799 -# 2 vertices - -g Section_8_0_18178 -l 695 696 - -# -# shape Section_16_0_16986 -# - -v 75126.0000 0.0000 -293.1797 -v 75108.6328 0.0000 -292.8650 -v 75090.2813 0.0000 -291.2432 -v 75054.4063 0.0000 -287.4421 -v 75019.1250 0.0000 -283.9523 -v 74983.5469 0.0000 -280.2622 -v 74638.5469 0.0000 -248.0620 -# 7 vertices - -g Section_16_0_16986 -l 697 698 699 700 701 702 703 - -# -# shape Section_118_0_70715 -# - -v 74638.5156 0.0000 -248.0618 -v 74294.2969 0.0000 -215.9114 -# 2 vertices - -g Section_118_0_70715 -l 704 705 - -# -# shape Section_120_0_36439 -# - -v 74294.2969 0.0000 -129.2711 -v 74639.1875 0.0000 -99.5968 -# 2 vertices - -g Section_120_0_36439 -l 706 707 - -# -# shape Section_17_0_66719 -# - -v 74639.1875 0.0000 -99.5968 -v 74983.5469 0.0000 -64.9204 -v 75019.1250 0.0000 -61.2302 -v 75054.6094 0.0000 -57.3556 -v 75090.2813 0.0000 -53.9482 -v 75108.2266 0.0000 -52.2206 -v 75126.0000 0.0000 -52.0029 -# 7 vertices - -g Section_17_0_66719 -l 708 709 710 711 712 713 714 - -# -# shape Section_35_0_18476 -# - -v 74294.2969 0.0000 -129.2711 -v 73921.0781 0.0000 -129.2711 -# 2 vertices - -g Section_35_0_18476 -l 715 716 - -# -# shape Section_34_0_93192 -# - -v 73921.0781 0.0000 -129.2711 -v 73547.7891 0.0000 -129.2703 -# 2 vertices - -g Section_34_0_93192 -l 717 718 - -# -# shape Section_32_0_73469 -# - -v 73547.8203 0.0000 -215.9113 -v 73921.0859 0.0000 -215.9116 -# 2 vertices - -g Section_32_0_73469 -l 719 720 - -# -# shape Section_33_0_16657 -# - -v 73921.0859 0.0000 -215.9115 -v 74294.2969 0.0000 -215.9114 -# 2 vertices - -g Section_33_0_16657 -l 721 722 - -# -# shape Section_64_0_30802 -# - -v 73547.7891 0.0000 -129.2703 -v 73571.3594 0.0000 -129.4784 -v 73583.6016 0.0000 -130.7982 -v 73619.0625 0.0000 -134.5414 -v 73654.6641 0.0000 -138.4985 -v 73690.2422 0.0000 -142.1887 -v 73867.8125 0.0000 -165.5936 -v 73921.0000 0.0000 -172.4194 -# 8 vertices - -g Section_64_0_30802 -l 723 724 725 726 727 728 729 730 - -# -# shape Section_66_0_86985 -# - -v 73921.0000 0.0000 -172.4194 -v 73867.8438 0.0000 -179.5898 -v 73690.2422 0.0000 -202.9939 -v 73654.6641 0.0000 -206.6841 -v 73619.0938 0.0000 -210.4046 -v 73583.6875 0.0000 -214.0518 -v 73568.1016 0.0000 -215.5470 -v 73547.8203 0.0000 -215.9113 -# 8 vertices - -g Section_66_0_86985 -l 731 732 733 734 735 736 737 738 - -# -# shape Section_65_0_93334 -# - -v 73921.0000 0.0000 -172.4194 -v 73974.3281 0.0000 -179.6137 -v 74151.8438 0.0000 -202.9939 -v 74187.4219 0.0000 -206.6841 -v 74222.8438 0.0000 -210.4775 -v 74258.7031 0.0000 -214.0784 -v 74277.1250 0.0000 -215.5376 -v 74294.3047 0.0000 -215.9101 -# 8 vertices - -g Section_65_0_93334 -l 739 740 741 742 743 744 745 746 - -# -# shape Section_67_0_79695 -# - -v 74294.3281 0.0000 -129.2702 -v 74277.4531 0.0000 -129.4448 -v 74258.5938 0.0000 -130.9085 -v 74222.9766 0.0000 -134.5287 -v 74187.4219 0.0000 -138.4985 -v 74151.8438 0.0000 -142.1886 -v 73974.3281 0.0000 -165.5685 -v 73921.0000 0.0000 -172.4194 -# 8 vertices - -g Section_67_0_79695 -l 747 748 749 750 751 752 753 754 - -# -# shape Section_95_0_04987 -# - -v 73547.7891 0.0000 -215.9115 -v 73467.0313 0.0000 -214.0054 -v 73447.5859 0.0000 -212.6490 -# 3 vertices - -g Section_95_0_04987 -l 755 756 757 - -# -# shape Section_93_0_12504 -# - -v 73547.7891 0.0000 -129.2703 -v 73468.7813 0.0000 -127.0936 -v 73447.5547 0.0000 -125.5063 -# 3 vertices - -g Section_93_0_12504 -l 758 759 760 - -# -# shape Section_99_0_71809 -# - -v 73447.5703 0.0000 -212.6491 -v 73386.7578 0.0000 -208.4059 -v 73307.0625 0.0000 -198.6749 -# 3 vertices - -g Section_99_0_71809 -l 761 762 763 - -# -# shape Section_97_0_15804 -# - -v 73447.5547 0.0000 -125.5063 -v 73390.2266 0.0000 -121.2154 -v 73312.7578 0.0000 -111.1165 -# 3 vertices - -g Section_97_0_15804 -l 764 765 766 - -# -# shape Section_77_0_91926 -# - -v 73312.7578 0.0000 -111.1165 -v 73236.5234 0.0000 -100.3868 -v 73166.3984 0.0000 -87.0197 -v 73094.2109 0.0000 -70.4730 -v 73024.2188 0.0000 -52.1981 -v 72957.1641 0.0000 -32.0049 -v 72879.1172 0.0000 -5.5164 -v 72804.1641 0.0000 23.5724 -v 72726.7969 0.0000 58.7740 -v 72653.1328 0.0000 95.9502 -# 10 vertices - -g Section_77_0_91926 -l 767 768 769 770 771 772 773 774 775 776 - -# -# shape Section_101_0_54030 -# - -v 72601.5781 0.0000 26.2230 -v 72676.0547 0.0000 -10.9053 -v 72754.9531 0.0000 -47.0871 -v 72830.3984 0.0000 -77.7740 -v 72908.9375 0.0000 -105.8613 -v 73006.4219 0.0000 -135.8875 -v 73077.6406 0.0000 -154.6524 -v 73151.8828 0.0000 -171.7504 -v 73228.5625 0.0000 -187.2875 -v 73307.0703 0.0000 -198.6747 -# 10 vertices - -g Section_101_0_54030 -l 777 778 779 780 781 782 783 784 785 786 - -# -# shape Section_88_0_66391 -# - -v 72653.1250 0.0000 95.9503 -v 72583.1484 0.0000 133.7874 -# 2 vertices - -g Section_88_0_66391 -l 787 788 - -# -# shape Section_84_0_15495 -# - -v 72601.5781 0.0000 26.2230 -v 72529.0859 0.0000 65.9774 -# 2 vertices - -g Section_84_0_15495 -l 789 790 - -# -# shape Section_78_0_57730 -# - -v 72398.5000 0.0000 147.3311 -v 72338.1016 0.0000 188.7653 -# 2 vertices - -g Section_78_0_57730 -l 791 792 - -# -# shape Section_85_0_88256 -# - -v 72453.3359 0.0000 214.1685 -v 72388.5703 0.0000 258.0259 -# 2 vertices - -g Section_85_0_88256 -l 793 794 - -# -# shape Section_87_0_94704 -# - -v 72583.1484 0.0000 133.7874 -v 72518.9297 0.0000 171.8164 -v 72453.3281 0.0000 214.1682 -# 3 vertices - -g Section_87_0_94704 -l 795 796 797 - -# -# shape Section_83_0_54306 -# - -v 72398.5000 0.0000 147.3311 -v 72464.4297 0.0000 104.8908 -v 72529.0859 0.0000 65.9774 -# 3 vertices - -g Section_83_0_54306 -l 798 799 800 - -# -# shape Section_60_0_31095 -# - -v 75126.0000 0.0000 -293.1797 -v 75444.9922 0.0000 -293.1799 -# 2 vertices - -g Section_60_0_31095 -l 801 802 - -# -# shape Section_89_0_12691 -# - -v 75126.0000 0.0000 -52.0029 -v 75444.9922 0.0000 -52.0042 -# 2 vertices - -g Section_89_0_12691 -l 803 804 - -# -# shape Section_102_0_27996 -# - -v 75444.9922 0.0000 -52.0042 -v 76045.0156 0.0000 -52.0029 -# 2 vertices - -g Section_102_0_27996 -l 805 806 - -# -# shape Section_100_0_33090 -# - -v 75444.9844 0.0000 -293.1799 -v 76045.0078 0.0000 -293.1799 -# 2 vertices - -g Section_100_0_33090 -l 807 808 - -# -# shape Section_101_0_08996 -# - -v 76045.0078 0.0000 -293.1799 -v 76572.3516 0.0000 -293.1799 -# 2 vertices - -g Section_101_0_08996 -l 809 810 - -# -# shape Section_103_0_26619 -# - -v 76045.0156 0.0000 -52.0029 -v 76572.3281 0.0000 -52.0030 -# 2 vertices - -g Section_103_0_26619 -l 811 812 - -# -# shape Section_116_0_09792 -# - -v 76572.3281 0.0000 -52.0030 -v 77058.5391 0.0000 -52.0067 -# 2 vertices - -g Section_116_0_09792 -l 813 814 - -# -# shape Section_148_0_79707 -# - -v 77058.5391 0.0000 -52.0048 -v 78583.0625 0.0000 -52.0026 -# 2 vertices - -g Section_148_0_79707 -l 815 816 - -# -# shape Section_149_0_86272 -# - -v 78583.0625 0.0000 -52.0026 -v 79470.4844 0.0000 -52.0025 -# 2 vertices - -g Section_149_0_86272 -l 817 818 - -# -# shape Section_146_0_75074 -# - -v 79470.4844 0.0000 -52.0025 -v 79736.6016 0.0000 -52.0027 -# 2 vertices - -g Section_146_0_75074 -l 819 820 - -# -# shape Section_147_0_55087 -# - -v 79736.6250 0.0000 -52.0028 -v 80002.7578 0.0000 -52.0027 -# 2 vertices - -g Section_147_0_55087 -l 821 822 - -# -# shape Section_137_0_58106 -# - -v 80002.7266 0.0000 -293.1793 -v 79736.6172 0.0000 -293.1793 -# 2 vertices - -g Section_137_0_58106 -l 823 824 - -# -# shape Section_136_0_79191 -# - -v 79736.6172 0.0000 -293.1793 -v 79470.4844 0.0000 -293.1797 -# 2 vertices - -g Section_136_0_79191 -l 825 826 - -# -# shape Section_135_0_69641 -# - -v 79470.4844 0.0000 -293.1797 -v 78466.9453 0.0000 -293.1799 -# 2 vertices - -g Section_135_0_69641 -l 827 828 - -# -# shape Section_134_0_98324 -# - -v 78466.9688 0.0000 -293.1799 -v 77058.5391 0.0000 -293.1799 -# 2 vertices - -g Section_134_0_98324 -l 829 830 - -# -# shape Section_104_0_43343 -# - -v 77058.5469 0.0000 -293.1799 -v 76572.3516 0.0000 -293.1799 -# 2 vertices - -g Section_104_0_43343 -l 831 832 - -# -# shape Section_25_0_19519 -# - -v 76572.3516 0.0000 -293.1799 -v 76590.4297 0.0000 -292.8268 -v 76608.1641 0.0000 -291.2672 -v 76643.5391 0.0000 -287.7467 -v 76679.2031 0.0000 -283.9523 -v 76714.7734 0.0000 -280.2625 -v 77059.1172 0.0000 -244.1411 -# 7 vertices - -g Section_25_0_19519 -l 833 834 835 836 837 838 839 - -# -# shape Section_123_0_41284 -# - -v 77059.1172 0.0000 -244.1412 -v 77145.3359 0.0000 -234.8773 -v 77231.5469 0.0000 -226.0636 -v 77317.7578 0.0000 -219.4100 -v 77404.0313 0.0000 -215.9115 -# 5 vertices - -g Section_123_0_41284 -l 840 841 842 843 844 - -# -# shape Section_125_0_26976 -# - -v 77404.0313 0.0000 -129.2703 -v 77317.7813 0.0000 -125.7699 -v 77231.5703 0.0000 -119.1164 -v 77145.3594 0.0000 -110.3029 -v 77059.1406 0.0000 -101.0391 -# 5 vertices - -g Section_125_0_26976 -l 845 846 847 848 849 - -# -# shape Section_26_0_93949 -# - -v 77059.1250 0.0000 -101.0391 -v 76714.7656 0.0000 -64.9201 -v 76679.2031 0.0000 -61.2301 -v 76643.6406 0.0000 -57.3792 -v 76608.2344 0.0000 -53.6360 -v 76592.1641 0.0000 -52.1483 -v 76572.3516 0.0000 -52.0027 -# 7 vertices - -g Section_26_0_93949 -l 850 851 852 853 854 855 856 - -# -# shape Section_42_0_50874 -# - -v 77404.0313 0.0000 -215.9115 -v 77777.2578 0.0000 -215.9116 -# 2 vertices - -g Section_42_0_50874 -l 857 858 - -# -# shape Section_43_0_91146 -# - -v 77777.2578 0.0000 -215.9115 -v 78150.5313 0.0000 -215.9114 -# 2 vertices - -g Section_43_0_91146 -l 859 860 - -# -# shape Section_108_0_69821 -# - -v 78150.5313 0.0000 -215.9114 -v 78290.9219 0.0000 -215.9115 -# 2 vertices - -g Section_108_0_69821 -l 861 862 - -# -# shape Section_140_0_48703 -# - -v 78290.9219 0.0000 -215.9115 -v 78583.0547 0.0000 -215.9116 -# 2 vertices - -g Section_140_0_48703 -l 863 864 - -# -# shape Section_141_0_87277 -# - -v 78583.0547 0.0000 -215.9116 -v 78795.0156 0.0000 -215.9113 -# 2 vertices - -g Section_141_0_87277 -l 865 866 - -# -# shape Section_62_0_21205 -# - -v 78795.0469 0.0000 -215.9113 -v 79470.4844 0.0000 -215.9115 -# 2 vertices - -g Section_62_0_21205 -l 867 868 - -# -# shape Section_65_0_72012 -# - -v 79470.4844 0.0000 -129.2710 -v 78795.0469 0.0000 -129.2716 -# 2 vertices - -g Section_65_0_72012 -l 869 870 - -# -# shape Section_143_0_42068 -# - -v 78795.0469 0.0000 -129.2716 -v 78583.0469 0.0000 -129.2710 -# 2 vertices - -g Section_143_0_42068 -l 871 872 - -# -# shape Section_142_0_83804 -# - -v 78583.0469 0.0000 -129.2710 -v 78290.9297 0.0000 -129.2711 -# 2 vertices - -g Section_142_0_83804 -l 873 874 - -# -# shape Section_118_0_76161 -# - -v 78290.9219 0.0000 -129.2710 -v 78150.5234 0.0000 -129.2710 -# 2 vertices - -g Section_118_0_76161 -l 875 876 - -# -# shape Section_45_0_70006 -# - -v 78150.5234 0.0000 -129.2710 -v 77777.3125 0.0000 -129.2711 -# 2 vertices - -g Section_45_0_70006 -l 877 878 - -# -# shape Section_44_0_89908 -# - -v 77777.3125 0.0000 -129.2711 -v 77404.0313 0.0000 -129.2703 -# 2 vertices - -g Section_44_0_89908 -l 879 880 - -# -# shape Section_112_0_34708 -# - -v 77404.0313 0.0000 -129.2703 -v 77421.7344 0.0000 -129.4961 -v 77439.8203 0.0000 -131.0318 -v 77475.3281 0.0000 -134.8470 -v 77510.9063 0.0000 -138.4984 -v 77546.4844 0.0000 -142.1885 -v 77723.9922 0.0000 -165.5685 -v 77777.1016 0.0000 -172.6200 -# 8 vertices - -g Section_112_0_34708 -l 881 882 883 884 885 886 887 888 - -# -# shape Section_110_0_97949 -# - -v 77777.1016 0.0000 -172.6200 -v 77723.9922 0.0000 -179.6137 -v 77546.4844 0.0000 -202.9939 -v 77510.9063 0.0000 -206.6841 -v 77475.4844 0.0000 -210.3308 -v 77439.8828 0.0000 -214.0261 -v 77424.0313 0.0000 -215.4513 -v 77404.0234 0.0000 -215.9093 -# 8 vertices - -g Section_110_0_97949 -l 889 890 891 892 893 894 895 896 - -# -# shape Section_113_0_57042 -# - -v 77777.1016 0.0000 -172.6200 -v 77830.4844 0.0000 -179.5890 -v 78008.0781 0.0000 -202.9939 -v 78043.6563 0.0000 -206.6841 -v 78078.9141 0.0000 -210.4607 -v 78114.6719 0.0000 -214.0120 -v 78133.3828 0.0000 -215.5237 -v 78150.5234 0.0000 -215.9118 -# 8 vertices - -g Section_113_0_57042 -l 897 898 899 900 901 902 903 904 - -# -# shape Section_111_0_30071 -# - -v 78150.5234 0.0000 -129.2710 -v 78132.4063 0.0000 -129.6833 -v 78115.0078 0.0000 -131.0030 -v 78079.0625 0.0000 -134.6263 -v 78043.6563 0.0000 -138.4987 -v 78008.0938 0.0000 -142.1890 -v 77830.4844 0.0000 -165.5931 -v 77777.1016 0.0000 -172.6200 -# 8 vertices - -g Section_111_0_30071 -l 905 906 907 908 909 910 911 912 - -# -# shape Section_144_0_90844 -# - -v 78795.0469 0.0000 -129.2716 -v 78814.3125 0.0000 -128.7554 -v 78830.9063 0.0000 -127.4999 -v 78866.3281 0.0000 -123.8350 -v 78901.9219 0.0000 -120.0442 -v 78937.5000 0.0000 -116.3541 -v 79132.7422 0.0000 -90.6333 -# 7 vertices - -g Section_144_0_90844 -l 913 914 915 916 917 918 919 - -# -# shape Section_145_0_04135 -# - -v 79132.7578 0.0000 -90.6336 -v 79328.0313 0.0000 -64.9204 -v 79363.6094 0.0000 -61.2302 -v 79399.1563 0.0000 -57.4170 -v 79434.6563 0.0000 -53.9557 -v 79454.2344 0.0000 -52.3947 -v 79470.4766 0.0000 -52.0028 -# 7 vertices - -g Section_145_0_04135 -l 920 921 922 923 924 925 926 - -# -# shape Section_138_0_29473 -# - -v 78795.0469 0.0000 -215.9113 -v 78813.3516 0.0000 -216.3886 -v 78830.8594 0.0000 -217.7460 -v 78866.3516 0.0000 -221.1733 -v 78901.9219 0.0000 -225.1387 -v 78937.4844 0.0000 -228.8236 -v 79132.7422 0.0000 -254.5430 -# 7 vertices - -g Section_138_0_29473 -l 927 928 929 930 931 932 933 - -# -# shape Section_139_0_40275 -# - -v 79132.7422 0.0000 -254.5430 -v 79328.0313 0.0000 -280.2622 -v 79363.6094 0.0000 -283.9524 -v 79398.9297 0.0000 -287.8559 -v 79434.6406 0.0000 -291.3592 -v 79451.6719 0.0000 -292.5741 -v 79470.4844 0.0000 -293.1797 -# 7 vertices - -g Section_139_0_40275 -l 934 935 936 937 938 939 940 - -# -# shape Section_120_0_31789 -# - -v 3912.9185 0.0000 -172.5916 -v 3966.2603 0.0000 -179.6142 -v 4143.7979 0.0000 -202.9939 -v 4179.3726 0.0000 -206.6841 -v 4214.9917 0.0000 -210.4664 -v 4250.4868 0.0000 -213.9956 -v 4266.7754 0.0000 -215.3530 -v 4286.2012 0.0000 -215.9125 -# 8 vertices - -g Section_120_0_31789 -l 941 942 943 944 945 946 947 948 - -# -# shape Section_199_0_92540 -# - -v 47926.9570 0.0000 -6.7790 -v 48023.3320 0.0000 -6.7796 -# 2 vertices - -g Section_199_0_92540 -l 949 950 - diff --git a/src/components/QueryListPage/QueryListPage.vue b/src/components/QueryListPage/QueryListPage.vue index 55174169f..ea6077051 100644 --- a/src/components/QueryListPage/QueryListPage.vue +++ b/src/components/QueryListPage/QueryListPage.vue @@ -400,6 +400,7 @@ export default { if (this.queryList.afterQuery && this.queryList.afterQuery instanceof Function) { this.queryList.afterQuery(response.data); } + const resultData = response.data; this.$set(this.queryList, 'data', resultData.list); this.$set(this.queryList, 'total', resultData.total); diff --git a/src/i18n/langs/zh/map.js b/src/i18n/langs/zh/map.js index 356d23165..078039d87 100644 --- a/src/i18n/langs/zh/map.js +++ b/src/i18n/langs/zh/map.js @@ -12,6 +12,9 @@ export default { physicalView: '物理视图', mixedView: '混合视图', normal: '正常', + add: '添加', + are: '是', + deny: '否', save: '保存', updata: '更新', @@ -20,6 +23,8 @@ export default { saveAs: '另存为', publish: '发布', deleteObj: '删除', + remove: '移除', + lastStep: '上一步', confirm: '确 定', cancel: '取 消', cancelledDelete: '已取消删除', @@ -138,6 +143,7 @@ export default { countMax: '计数器最大值:', pointX: '坐标 x:', pointY: '坐标 y:', + meter: '米', code: '编码:', imageName: '图片名称:', @@ -302,5 +308,125 @@ export default { zzkContent: '站中控内容:', stationControlPositionX: '坐标 x:', stationControlPositionY: '坐标 y:', - stationControlZok: '中控' + stationControlZok: '中控', + + stationstandName: '选择车站名称:', + stationstandDirection: '站台方向:', + stationstandHasDoor: '是否显示屏蔽门:', + stationstandNameColon: '站台名称:', + stationstandTopBottom: '上下行方向:', + stationstandShowName: '是否显示名称:', + stationstandWidth: '宽度 w:', + stationstandHeight: '高度 h:', + stationstandPositionX: '坐标 x:', + stationstandPositionY: '坐标 y:', + + switchCode: '道岔编码:', + switchName: '道岔名称:', + switchShowName: '是否显示道岔名称:', + switchPositionX: '道岔名称x偏移量:', + switchPositionY: '道岔名称y偏移量:', + turnTime: '道岔时间:', + timeoutShow: '是否显示道岔时间:', + sectionACode: '关联的A Section Code:', + sectionBCode: '关联的B Section Code:', + sectionCCode: '关联的C Section Code:', + switchTpX: '时间x坐标偏移量:', + switchTpY: '时间y坐标偏移量:', + + textCode: '文字编码:', + textContent: '文本内容:', + textFont: '字体格式:', + textFontColor: '字体颜色:', + + trainCode: '列车编号:', + groupNumber: '车组号:', + modelCode: '车类型:', + + trainmodelCreate: '新建车类型', + trainmodelUpdate: '更新列车模型', + trainTypeName: '列车类型名称:', + trainLength: '列车长度:', + trainSafeDistance: '安全距离:', + trainMaxSafeDistance: '最大安全距离:', + averageVelocity: '平均速度:', + averageDeceleration: '平均减速度:', + defaultVelocity: '默认速度:', + maxVelocity: '最大速度:', + + trainWindowCode: '车次窗编码:', + trainWindowWidth: '车次窗宽度:', + trainWindowHeight: '车次窗高度:', + trainWindowSectionCode: '关联区段:', + + deleteTrainWindow: '一键删除车次窗', + createTrainWindow: '一键创建车次窗', + + zcCodeColon: '编码:', + showZc: '是否可见:', + + pathUnitList: '路径单元列表', + startSectionCode: '始端停车点', + endSectionCode: '终端停车点', + pathUnitCode: '路径单元code', + pathUnitMapName: '所属地图名称', + orderNum: '优先级', + pathName: '进路名称', + affiliationStationCode: '所属车站名称', + startingSignalName: '始端信号机名称', + endingSignalName: '终端信号机名称', + + routeID: '进路ID', + routeName: '进路名称:', + routeMapId: '所属地图名称', + routeStationName: '所属车站名称', + routeStartSignalCode: '始端信号机名称', + routeEndSignalCode: '终端信号机名称', + + startSectionCodeColon: '始端停车点:', + endSectionCodeColon: '终端停车点:', + + routePreview: '进路预览', + accessType: '进路性质类型', + automaticAccessType: '自动进路类型', + nearSectionCode: '接近区段名称', + continueProtectSwitchData: '延续保护道岔数据', + accessSideTurnoutData: '进路侧防道岔数据', + + turnBackRailName: '折返轨名称', + routeSegmentData: '进路自动触发区段数据', + routeProtectsData: '进路延续保护区段数据', + accessPhysical: '进路物理区段数据', + routeAccessScreenData: '进路屏蔽门数据', + routeAccessTurnoutData: '进路道岔数据', + hostileApproachData: '敌对进路数据', + relation: '关系', + associatedRoute: '关联进路:', + + associatedHostileRecord: '关联敌对记录', + routeArc: '是否自动追踪/联锁自动触发:', + routeFlt: '是否车队/联锁自动进路:', + delayUnlockingTime: '延时解锁时间:', + accessTypeColon: '进路性质类型:', + + automaticAccessTypeColon: '自动进路类型:', + startSignalId: '始端信号机ID:', + endSignalId: '终端信号机ID:', + + switchType: '道岔类型', + switchId: '道岔ID', + accessSwitchList: '进路道岔数据:', + accessStandList: '进路屏蔽门数据:', + accessSectionList: '进路物理区段数据:', + turnBackSectionCode: '折返轨ID:', + routeFlankProtectionList: '侧防道岔数据:', + routeOverlapSwitchList: '延续保护道岔数据:', + routeOverlapSectionList: '进路延续保护区段数据:', + routeTriggerSectionList: '进路自动触发区段数据:', + nearSectionCodeColon: '接近区段ID:', + + thenList: '交路列表', + startStation: '起始站', + endStation: '终到站', + }; diff --git a/src/i18n/langs/zh/rules.js b/src/i18n/langs/zh/rules.js index cba8f1b80..c32a0efb5 100644 --- a/src/i18n/langs/zh/rules.js +++ b/src/i18n/langs/zh/rules.js @@ -80,6 +80,59 @@ export default { stationControlJjzkContent: '请输入紧急站控内容', stationControlZzkContent: '请输入站中控内容', stationControlPositionX: '请输入坐标x', - stationControlPositionY: '请输入坐标y' + stationControlPositionY: '请输入坐标y', + + pleaseReSelectDevice: '请重新选择设备', + stationCode: '请选择关联车站', + stationstandCountName: '请输入计数器名称', + doorLocationType: '请选择站台方向', + deviceStationCode: '请选择所属设备集中站', + stationstandDirection: '请选择上下行方向', + stationstandWidth: '请输入车站宽度', + stationstandHeight: '请输入车站高度', + stationstandPositionX: '请输入x坐标', + stationstandPositionY: '请输入y坐标', + + switchName: '请输入道岔名称', + switchNamePointX: '请输入道岔名称坐标x', + switchNamePointY: '请输入道岔名称坐标y', + switchStationCode: '请输入设备集中站', + switchTurnTime: '请输入道岔时间', + switchTpX: '请输入时间坐标x', + switchTpY: '请输入时间坐标y', + + selectText: '请选择Text', + pleaseEnterContent: '请输入内容', + textFont: '请选择文字格式', + textFontColor: '请选择文字颜色', + pleaseEnterGroupNumber: '请输入车组号', + selectTrainType: '请选择车类型', + trainPositionX: '请输入x坐标位置', + trainPositionY: '请输入y坐标位置', + pleaseEnterTrainNumber: '请填写车组号', + + trainCode: '列车模型Code不能为空', + pleaseEnterTrainTypeName: '请输入列车类型名称', + trainLength: '请输入列车长度', + safeDistance: '请输入安全距离', + maxSafeDistance: '请输入最大安全距离', + averageVelocity: '请输入平均速度', + averageDeceleration: '请输入平均减速度', + defaultVelocity: '请输入默认速度', + maxVelocity: '请输入最大速度', + + trainWindowWidth: '请输入车次窗宽度', + trainWindowHeight: '请输入车次窗高度', + trainWindowSectionCode: '请输入关联区段', + + visible: '请选择是否可见', + pleaseSelectStartSignal: '请选择开始信号机', + pleaseSelectEndSignal: '请选择结束信号机', + + pleaseEnterPathName: '请输入进路名称', + proximitySection: '请选择接近区段', + accessPropertyType: '请选择进路性质类型', + autoAccessType: '请选择自动进路类型', + physicalSegmentData: '请选择进路物理区段数据', }; diff --git a/src/i18n/langs/zh/tip.js b/src/i18n/langs/zh/tip.js index a1ac6a5d1..bec20dc9f 100644 --- a/src/i18n/langs/zh/tip.js +++ b/src/i18n/langs/zh/tip.js @@ -10,15 +10,22 @@ export default { cancelGeneration: '已取消批量生成', updateSuccessfully: '更新成功', + saveSuccessfully: '保存成功', updateFailed: '更新失败', successfullyDelete: '删除成功', failDelete: '删除失败', + operationAbnormal: '操作异常', + createSuccess: '创建成功', cannotCoincide: '起始坐标和结束坐标不能重合', cannotMerged: '存在非物理区段,不能合并', linkCannotMerged: '不在同一Link上的物理区段不能合并', selectedSectionEmpty: '选择的区段为空', + selectedStationEmpty: '选择的车站为空', + + selectMap: '请先选择地图', + selectTrainType: '请选择查看的列车模型', stationFont: '车站字体', kilometerFont: '公里标字体', @@ -32,5 +39,7 @@ export default { recoveryPrivilegesSuccessful: '回收权限成功', recoveryPrivilegesFailed: '回收权限失败', unpackingSuccessful: '解包成功', - unpackingFailed: '解包失败' + unpackingFailed: '解包失败', + pleaseEnterNameQuery: '请输入名称查询', + routeSameID: '相同ID的数据已存在' }; diff --git a/src/jlmap3d/config/Camera.js b/src/jlmap3d/config/SetCamera.js similarity index 100% rename from src/jlmap3d/config/Camera.js rename to src/jlmap3d/config/SetCamera.js diff --git a/src/jlmap3d/component/Helper.js b/src/jlmap3d/config/SetLights.js similarity index 96% rename from src/jlmap3d/component/Helper.js rename to src/jlmap3d/config/SetLights.js index bc51e08be..80bb050a4 100644 --- a/src/jlmap3d/component/Helper.js +++ b/src/jlmap3d/config/SetLights.js @@ -1,4 +1,4 @@ -export function Helper(scene){ +export function SetLights(scene){ //创建辅助网格平面 // let planeGeometry = new THREE.PlaneBufferGeometry( 40000, 40000 ); // planeGeometry.rotateX( - Math.PI / 2 ); diff --git a/src/jlmap3d/config/Render.js b/src/jlmap3d/config/SetRender.js similarity index 100% rename from src/jlmap3d/config/Render.js rename to src/jlmap3d/config/SetRender.js diff --git a/src/jlmap3d/config/Scene.js b/src/jlmap3d/config/SetScene.js similarity index 100% rename from src/jlmap3d/config/Scene.js rename to src/jlmap3d/config/SetScene.js diff --git a/src/jlmap3d/edit/Jlmap3ddata.js b/src/jlmap3d/edit/Jlmap3ddata.js index ae69109b3..ef0be8a51 100644 --- a/src/jlmap3d/edit/Jlmap3ddata.js +++ b/src/jlmap3d/edit/Jlmap3ddata.js @@ -3,14 +3,14 @@ import { getPublishMapDetail,getMapDetail,set3dMapData,get3dMapData } from '@/ap //原始信息obj化提供给三维建模 import {SetObj} from '@/jlmap3d/edit/utils/SetObj.js'; //componnent -import {SectionList} from '@/jlmap3d/edit/testmodel/SectionList.js'; -import {SignalList} from '@/jlmap3d/edit/testmodel/SignalList.js'; -import {StationStandList} from '@/jlmap3d/edit/testmodel/StationStandList.js'; -import {TrainList} from '@/jlmap3d/edit/testmodel/TrainList.js'; -import {TrainListTest} from '@/jlmap3d/edit/testmodel/TrainListTest.js'; -import {LinkList} from '@/jlmap3d/edit/testmodel/LinkList.js'; +import {SectionList} from '@/jlmap3d/edit/editmodel/SectionList.js'; +import {SignalList} from '@/jlmap3d/edit/editmodel/SignalList.js'; +import {StationStandList} from '@/jlmap3d/edit/editmodel/StationStandList.js'; +import {TrainList} from '@/jlmap3d/edit/editmodel/TrainList.js'; +import {TrainListTest} from '@/jlmap3d/edit/editmodel/TrainListTest.js'; +import {LinkList} from '@/jlmap3d/edit/editmodel/LinkList.js'; -import {RealSectionList} from '@/jlmap3d/edit/testmodel/RealSectionList.js'; +import {RealSectionList} from '@/jlmap3d/edit/editmodel/RealSectionList.js'; import axios from 'axios'; import {getmodels} from '@/jlmap3d/edit/connect/getmodels'; @@ -40,7 +40,7 @@ export function Jlmap3ddata(mapid,scope){ } } - + console.log(isSection); if(isSection == true){ init3d(editmapid,data.data); }else{ diff --git a/src/jlmap3d/edit/testmodel/LinkList.js b/src/jlmap3d/edit/editmodel/LinkList.js similarity index 100% rename from src/jlmap3d/edit/testmodel/LinkList.js rename to src/jlmap3d/edit/editmodel/LinkList.js diff --git a/src/jlmap3d/edit/testmodel/RealSectionList.js b/src/jlmap3d/edit/editmodel/RealSectionList.js similarity index 98% rename from src/jlmap3d/edit/testmodel/RealSectionList.js rename to src/jlmap3d/edit/editmodel/RealSectionList.js index 6f1b22674..be1fa027e 100644 --- a/src/jlmap3d/edit/testmodel/RealSectionList.js +++ b/src/jlmap3d/edit/editmodel/RealSectionList.js @@ -1,4 +1,4 @@ -import {RealSectionModel} from '@/jlmap3d/edit/testmodel/RealSectionModel.js'; +import {RealSectionModel} from '@/jlmap3d/edit/editmodel/RealSectionModel.js'; export function RealSectionList(data) { diff --git a/src/jlmap3d/edit/testmodel/RealSectionModel.js b/src/jlmap3d/edit/editmodel/RealSectionModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/RealSectionModel.js rename to src/jlmap3d/edit/editmodel/RealSectionModel.js diff --git a/src/jlmap3d/edit/testmodel/SectionList.js b/src/jlmap3d/edit/editmodel/SectionList.js similarity index 97% rename from src/jlmap3d/edit/testmodel/SectionList.js rename to src/jlmap3d/edit/editmodel/SectionList.js index 3a62043e0..a7c2261ca 100644 --- a/src/jlmap3d/edit/testmodel/SectionList.js +++ b/src/jlmap3d/edit/editmodel/SectionList.js @@ -1,5 +1,5 @@ -import {SectionModel} from '@/jlmap3d/edit/testmodel/SectionModel.js'; -import {SwitchModel} from '@/jlmap3d/edit/testmodel/SwitchModel.js'; +import {SectionModel} from '@/jlmap3d/edit/editmodel/SectionModel.js'; +import {SwitchModel} from '@/jlmap3d/edit/editmodel/SwitchModel.js'; export function SectionList() { let scope = this; diff --git a/src/jlmap3d/edit/testmodel/SectionModel.js b/src/jlmap3d/edit/editmodel/SectionModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/SectionModel.js rename to src/jlmap3d/edit/editmodel/SectionModel.js diff --git a/src/jlmap3d/edit/testmodel/SignalList.js b/src/jlmap3d/edit/editmodel/SignalList.js similarity index 98% rename from src/jlmap3d/edit/testmodel/SignalList.js rename to src/jlmap3d/edit/editmodel/SignalList.js index 527d6d76a..6b4adf315 100644 --- a/src/jlmap3d/edit/testmodel/SignalList.js +++ b/src/jlmap3d/edit/editmodel/SignalList.js @@ -1,4 +1,4 @@ -import {SignalModel} from '@/jlmap3d/model/SignalModel.js'; +import {SignalModel} from '@/jlmap3d/edit/editmodel/SignalModel.js'; export function SignalList() { diff --git a/src/jlmap3d/edit/testmodel/SignalModel.js b/src/jlmap3d/edit/editmodel/SignalModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/SignalModel.js rename to src/jlmap3d/edit/editmodel/SignalModel.js diff --git a/src/jlmap3d/edit/testmodel/StationStandList.js b/src/jlmap3d/edit/editmodel/StationStandList.js similarity index 98% rename from src/jlmap3d/edit/testmodel/StationStandList.js rename to src/jlmap3d/edit/editmodel/StationStandList.js index 0febf4b6c..9b6d0bff6 100644 --- a/src/jlmap3d/edit/testmodel/StationStandList.js +++ b/src/jlmap3d/edit/editmodel/StationStandList.js @@ -1,4 +1,4 @@ -import {StationStandModel} from '@/jlmap3d/model/StationStandModel.js'; +import {StationStandModel} from '@/jlmap3d/edit/editmodel/StationStandModel.js'; export function StationStandList() { diff --git a/src/jlmap3d/edit/testmodel/StationStandModel.js b/src/jlmap3d/edit/editmodel/StationStandModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/StationStandModel.js rename to src/jlmap3d/edit/editmodel/StationStandModel.js diff --git a/src/jlmap3d/edit/testmodel/SwitchList.js b/src/jlmap3d/edit/editmodel/SwitchList.js similarity index 100% rename from src/jlmap3d/edit/testmodel/SwitchList.js rename to src/jlmap3d/edit/editmodel/SwitchList.js diff --git a/src/jlmap3d/edit/testmodel/SwitchModel.js b/src/jlmap3d/edit/editmodel/SwitchModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/SwitchModel.js rename to src/jlmap3d/edit/editmodel/SwitchModel.js diff --git a/src/jlmap3d/edit/testmodel/TrainList.js b/src/jlmap3d/edit/editmodel/TrainList.js similarity index 97% rename from src/jlmap3d/edit/testmodel/TrainList.js rename to src/jlmap3d/edit/editmodel/TrainList.js index 296f6b36b..67466cc22 100644 --- a/src/jlmap3d/edit/testmodel/TrainList.js +++ b/src/jlmap3d/edit/editmodel/TrainList.js @@ -1,4 +1,4 @@ -import {TrainModel} from '@/jlmap3d/model/TrainModel.js'; +import {TrainModel} from '@/jlmap3d/edit/editmodel/TrainModel.js'; export function TrainList() { diff --git a/src/jlmap3d/edit/testmodel/TrainListTest.js b/src/jlmap3d/edit/editmodel/TrainListTest.js similarity index 98% rename from src/jlmap3d/edit/testmodel/TrainListTest.js rename to src/jlmap3d/edit/editmodel/TrainListTest.js index 50afa51ce..6f6bf17c6 100644 --- a/src/jlmap3d/edit/testmodel/TrainListTest.js +++ b/src/jlmap3d/edit/editmodel/TrainListTest.js @@ -1,4 +1,4 @@ -import {TrainModel} from '@/jlmap3d/model/TrainModel.js'; +import {TrainModel} from '@/jlmap3d/edit/editmodel/TrainModel.js'; export function TrainListTest() { diff --git a/src/jlmap3d/edit/testmodel/TrainModel.js b/src/jlmap3d/edit/editmodel/TrainModel.js similarity index 100% rename from src/jlmap3d/edit/testmodel/TrainModel.js rename to src/jlmap3d/edit/editmodel/TrainModel.js diff --git a/src/jlmap3d/jlmap3dedit.js b/src/jlmap3d/edit/jlmap3dedit.js similarity index 89% rename from src/jlmap3d/jlmap3dedit.js rename to src/jlmap3d/edit/jlmap3dedit.js index 5c829a900..6b546948d 100644 --- a/src/jlmap3d/jlmap3dedit.js +++ b/src/jlmap3d/edit/jlmap3dedit.js @@ -1,6 +1,4 @@ import Vue from 'vue'; -//main -import { Three } from '@/jlmap3d/main/three.min.js'; //模型loader import { AssetLoader } from '@/jlmap3d/main/loaders/AssetLoader.js'; @@ -8,33 +6,25 @@ import { DDSLoader } from '@/jlmap3d/main/loaders/DDSLoader.js'; import { OBJLoader } from '@/jlmap3d/main/loaders/OBJLoader.js'; import { MTLLoader } from '@/jlmap3d/main/loaders/MTLLoader.js'; import { FBXLoader } from '@/jlmap3d/main/loaders/FBXLoader.js'; - //export import { OBJExporter} from '@/jlmap3d/main/export/OBJExporter.js'; //controls -import {OrbitControlsedit} from '@/jlmap3d/edit/control/OrbitControlsEdit.js'; -import { TransformControls } from '@/jlmap3d/edit/control/TransformControls.js'; -import { DragControls } from '@/jlmap3d/edit/control/DragControls.js'; +import {OrbitControlsedit} from '@/jlmap3d/main/control/OrbitControlsEdit.js'; +import { TransformControls } from '@/jlmap3d/main/control/TransformControls.js'; +import { DragControls } from '@/jlmap3d/main/control/DragControls.js'; -//component -import { Helper } from '@/jlmap3d/component/Helper' //setconfig -import { SetCamera } from '@/jlmap3d/config/Camera' -import { SetRender } from '@/jlmap3d/config/Render' -import { SetScene } from '@/jlmap3d/config/Scene' +import { SetCamera } from '@/jlmap3d/config/SetCamera'; +import { SetRender } from '@/jlmap3d/config/SetRender'; +import { SetScene } from '@/jlmap3d/config/SetScene'; +import { SetLights } from '@/jlmap3d/config/SetLights'; //加载器 -import { Jlmap3ddata } from '@/jlmap3d/edit/Jlmap3ddata' +import { Jlmap3ddata } from '@/jlmap3d/edit/Jlmap3ddata'; //操作管理器 -import { Actionmanage } from '@/jlmap3d/edit/actionmanage' - -//connect -import { Jlmap3dSubscribe } from '@/jlmap3d/connect/TrainingConnect' - - -//utils +import { Actionmanage } from '@/jlmap3d/edit/actionmanage'; export function JLmap3dEdit(dom, data, mapid) { var scope = this; @@ -89,7 +79,7 @@ export function JLmap3dEdit(dom, data, mapid) { this.action = new Actionmanage(); this.action.switchaction.on = true; - Helper(scope.scene); + SetLights(scope.scene); this.mapdata = { id:null, @@ -155,7 +145,7 @@ export function JLmap3dEdit(dom, data, mapid) { this.export = function(){ var exporter = new THREE.OBJExporter(); - + console.log(scope.exportmodel); var result = exporter.parse( scope.exportmodel ); console.log(result); diff --git a/src/jlmap3d/edit/utils/SetObj.js b/src/jlmap3d/edit/utils/SetObj.js index 4000950b3..67fce1ace 100644 --- a/src/jlmap3d/edit/utils/SetObj.js +++ b/src/jlmap3d/edit/utils/SetObj.js @@ -203,7 +203,7 @@ export function SetObj(data,scope) { group.add(object); } - + console.log("setobj"); scope.exportmodel = group; - //console.log(group); + console.log(group); } diff --git a/src/jlmap3d/jl3ddrive/jl3ddrive.js b/src/jlmap3d/jl3ddrive/jl3ddrive.js new file mode 100644 index 000000000..b28592772 --- /dev/null +++ b/src/jlmap3d/jl3ddrive/jl3ddrive.js @@ -0,0 +1,392 @@ +import Vue from 'vue'; +// 模型loader +import { AssetLoader } from '@/jlmap3d/main/loaders/AssetLoader.js'; +import {DDSLoader} from '@/jlmap3d/main/loaders/DDSLoader.js'; +import {OBJLoader} from '@/jlmap3d/main/loaders/OBJLoader.js'; +import {MTLLoader} from '@/jlmap3d/main/loaders/MTLLoader.js'; +import { FBXLoader } from '@/jlmap3d/main/loaders/FBXLoader.js'; + +// controls +import {OrbitControls} from '@/jlmap3d/main/control/OrbitControls.js'; +import { DragControls } from '@/jlmap3d/main/control/DragControls.js'; +// component + +// data +import { Jl3ddata } from '@/jlmap3d/main/model/jl3ddata'; + +// setconfig +import { SetCamera } from '@/jlmap3d/config/SetCamera'; +import { SetRender } from '@/jlmap3d/config/SetRender'; +import { SetScene } from '@/jlmap3d/config/SetScene'; +import { SetLights } from '@/jlmap3d/config/SetLights'; + +// 加载器 +import { ModelLoad } from '@/jlmap3d/main/loaders/simulationloader'; +// connect +import {Jl3dDriving} from '@/jlmap3d/jl3ddrive/moveupdate/DrivingConnect'; + +import { getPublishMapVersion, getPublishMapDetail, getPublish3dMapDetail} from '@/api/jlmap3d/load3ddata'; + +// utils +import { UpdateTrain } from '@/jlmap3d/jl3ddrive/moveupdate/UpdateTrain'; +// import { UpdateTrain } from '@/jlmap3d/main/utils/UpdateTrainTest'; +import { ReStart } from '@/jlmap3d/main/utils/ReStart'; + +import {Stats} from '@/jlmap3d/main/lib/stats.min.js'; + +import {MouseControls} from '@/jlmap3d/main/control/FirstControls'; + +var clock = new THREE.Clock(); + +export function JLmapDriving(dom, data, skinCode) { + + const scope = this; + this.dom = dom; + // 渲染循环开关 + this.animateswitch = false; + // 初始化webgl渲染 + const renderer = SetRender(dom); + renderer.domElement.style.position = 'absolute'; + renderer.domElement.style.top = '0'; + document.getElementById('jlsimulation').appendChild(renderer.domElement); + // 定义相机 + let camera = SetCamera(dom); + // 定义场景(渲染容器) + const scene = SetScene(); + + const speed = 0; + + let drivingcode = null; + + // 模型加载器 + this.assetloader = new AssetLoader(); + // 替换材质组,例:信号机不同灯光 + this.materiallist = []; + // 初始化场景线框和灯光 暂时 + SetLights(scene); + // 点击选中的模型 + this.selectmodel = null; + // 鼠标点击模型切换 + this.raycasterswitch = 'stand'; + // 选中物体描边方框 + this.helpbox = null; + // 车门,站台门道岔动画构造器 + this.mixers = []; + // 模型操作命令组 + this.actions = {}; + this.nowspeed = null; + this.nowmxlen = null; + this.atpspeed = null; + this.atospeed = null; + this.trainnum = null; + this.stime = null; + + this.webwork=new Worker('../../static/workertest/trainworker.js'); + // 地图模型数据 + let mapdata = new Jl3ddata(); + + const camera2 = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 2000 ); + camera2.name = 'camera2'; + + const controls3 = new MouseControls(camera2, 1.6); + controls3.enabled = true; + scene.add(controls3.getObject()); + // 订阅仿真socket + this.Subscribe = new Jl3dDriving(scope); + // 连接到通信 + // console.log(this.Subscribe.config); + + // this.webwork.postMessage(this.Subscribe.teststomp); + + this.Subscribe.socketon(scope.Subscribe.topic); + + // 初始化加载数据和模型 + getPublish3dMapDetail(skinCode).then(netdata => { + ModelLoad(data, scope, netdata.data, mapdata, camera, controls3, scene); + }); + + // let stats = new Stats(); + // dom.appendChild( stats.dom ); + // 开启渲染 + animate(); + startWorker(); + // 动画时间 + let delta; + // 循环渲染函数 + function animate() { + // 循环渲染 + // requestAnimationFrame(animate); + // renderer.setAnimationLoop(animate); + requestAnimationFrame(animate); + // 判断渲染是否开启 + if (scope.animateswitch == true) { + // 根据相机渲染场景 + renderer.render(scene, camera2); + // updatcontrols(); + controls3.update(); + // 检测动画构造器播放动画 + + } + + } + + function updatcontrols() { + if (drivingcode) { + controls3.getObject().position.x = mapdata.trainlisttest.list[drivingcode].matrixWorld.elements[12]-27; + controls3.getObject().position.y=10; + controls3.getObject().position.z = mapdata.trainlisttest.list[drivingcode].children[0].matrixWorld.elements[14]; + + } + } + + function startWorker() { + + if (typeof (Worker)!=='undefined') { + + scope.webwork.onmessage = function (event) { + // 更新列车位置 + // stats.update(); + UpdateTrain(camera, mapdata.trainlisttest); + delta = clock.getDelta(); + for (let i=scope.mixers.length-1; i>=0; i--) { + if ( scope.mixers[i] ) { + scope.mixers[i].update( delta ); + } + } + + }; + } + + } + this.updatenowspeed = function(speed) { + scope.nowspeed = speed; + }; + this.updatenowlen = function(maLen) { + scope.nowmxlen = maLen; + }; + this.updateatpspeed = function(atpspeed) { + scope.atpspeed = atpspeed; + }; + this.updateatospeed = function(atospeed) { + scope.atospeed = atospeed; + }; + this.updatetrainnum = function(trainnum) { + scope.trainnum = trainnum; + }; + this.updatestoptime = function(stime) { + scope.stime = stime; + }; + + this.updatedrivingcode = function(code) { + drivingcode = code; + mapdata.trainlisttest.list[drivingcode].children[0].add(controls3.getObject()); + mapdata.trainlisttest.list[drivingcode].children[0].add(scope.assetloader.modellist[4].mesh); + controls3.getObject().position.x = 40; + controls3.getObject().position.y= 12.5; + controls3.getObject().rotation.y = -Math.PI/2; + scope.assetloader.modellist[4].mesh.position.x = 34; + scope.assetloader.modellist[4].mesh.position.y = 0; + }; + + this.dispose = function() { + renderer.setAnimationLoop(null); + renderer.dispose(); + scene.dispose(); + // controls.dispose(); + camera = null; + scope.assetloader = null; + + mapdata = null; + scope.selectmodel = null; + + scope.materiallist = null; + scope.selectmodel = null; + scope.helpbox = null; + scope.mixers = null; + scope.actions = null; + scope.Subscribe = null; + // console.log(scope); + // scope = null; + }; + + this.rayswitch = function(value) { + this.raycasterswitch = value; + if (scope.helpbox) { + scene.remove( scope.helpbox ); + scope.helpbox = null; + } + }; + + this.showstationmsg = function(showtype) { + if (showtype == 'show') { + for (let st=0; st { - ModelLoad(data,scope,netdata.data,mapdata,camera,controls3,scene); - }); - - // let stats = new Stats(); - // dom.appendChild( stats.dom ); - // 开启渲染 - animate(); - startWorker(); - // 动画时间 - let delta; - // 循环渲染函数 - function animate() { - // 循环渲染 - // requestAnimationFrame(animate); - // renderer.setAnimationLoop(animate); - requestAnimationFrame(animate); - // 判断渲染是否开启 - if(scope.animateswitch == true){ - // 根据相机渲染场景 - renderer.render(scene,camera2); - // updatcontrols(); - controls3.update(); - // 检测动画构造器播放动画 - - } - - } - - function updatcontrols(){ - if(drivingcode){ - controls3.getObject().position.x = mapdata.trainlisttest.list[drivingcode].matrixWorld.elements[12]-27; - controls3.getObject().position.y=10; - controls3.getObject().position.z = mapdata.trainlisttest.list[drivingcode].children[0].matrixWorld.elements[14]; - - } - } - - function startWorker(){ - - if(typeof(Worker)!=="undefined"){ - - - scope.webwork.onmessage = function (event) { - // 更新列车位置 - // stats.update(); - UpdateTrain(camera,mapdata.trainlisttest); - delta = clock.getDelta(); - for(let i=scope.mixers.length-1;i>=0;i--){ - if ( scope.mixers[i] ){ - scope.mixers[i].update( delta ); - } - } - - }; - } - - } - this.updatenowspeed = function(speed){ - scope.nowspeed = speed; - } - this.updatenowlen = function(maLen){ - scope.nowmxlen = maLen; - } - this.updateatpspeed = function(atpspeed){ - scope.atpspeed = atpspeed; - } - this.updateatospeed = function(atospeed){ - scope.atospeed = atospeed; - } - this.updatetrainnum = function(trainnum){ - scope.trainnum = trainnum; - } - this.updatestoptime = function(stime){ - scope.stime = stime; - } - - this.updatedrivingcode = function(code){ - drivingcode = code; - mapdata.trainlisttest.list[drivingcode].children[0].add(controls3.getObject()); - mapdata.trainlisttest.list[drivingcode].children[0].add(scope.assetloader.modellist[4].mesh); - controls3.getObject().position.x = 40; - controls3.getObject().position.y= 12.5; - controls3.getObject().rotation.y = -Math.PI/2; - scope.assetloader.modellist[4].mesh.position.x = 34; - scope.assetloader.modellist[4].mesh.position.y = 0; - } - - this.dispose = function(){ - renderer.setAnimationLoop(null); - renderer.dispose(); - scene.dispose(); - // controls.dispose(); - camera = null; - scope.assetloader = null; - - mapdata = null; - scope.selectmodel = null; - - scope.materiallist = null; - scope.selectmodel = null; - scope.helpbox = null; - scope.mixers = null; - scope.actions = null; - scope.Subscribe = null; - // console.log(scope); - // scope = null; - } - - this.rayswitch = function(value){ - this.raycasterswitch = value; - if(scope.helpbox){ - scene.remove( scope.helpbox ); - scope.helpbox = null; - } - }; - - this.showstationmsg = function(showtype){ - if(showtype == "show"){ - for(let st=0;sta&&(a=c[p]),c[p]>=1;x=g<<16|p;for(s=m;s>>=1;switch(c){case 0:var d=this.input,a=this.a,b=this.c,e=this.b,f=d.length,g=l,h=l,k=b.length,m=l;this.d=this.f=0;if(a+1>=f)throw Error("invalid uncompressed block header: LEN");g=d[a++]|d[a++]<<8;if(a+1>=f)throw Error("invalid uncompressed block header: NLEN");h=d[a++]|d[a++]<<8;if(g===~h)throw Error("invalid uncompressed block header: length verify");if(a+g>d.length)throw Error("input buffer is broken");switch(this.i){case A:for(;e+ -g>b.length;){m=k-e;g-=m;if(t)b.set(d.subarray(a,a+m),e),e+=m,a+=m;else for(;m--;)b[e++]=d[a++];this.b=e;b=this.e();e=this.b}break;case y:for(;e+g>b.length;)b=this.e({p:2});break;default:throw Error("invalid inflate mode");}if(t)b.set(d.subarray(a,a+g),e),e+=g,a+=g;else for(;g--;)b[e++]=d[a++];this.a=a;this.b=e;this.c=b;break;case 1:this.j(ba,ca);break;case 2:for(var n=C(this,5)+257,p=C(this,5)+1,s=C(this,4)+4,x=new (t?Uint8Array:Array)(D.length),S=l,T=l,U=l,u=l,M=l,F=l,z=l,q=l,V=l,q=0;q=P?8:255>=P?9:279>=P?7:8;var ba=v(O),Q=new (t?Uint8Array:Array)(30),R,ga;R=0;for(ga=Q.length;R=g)throw Error("input buffer is broken");a|=e[f++]<>>d;c.d=b-d;c.a=f;return h} -function E(c,d){for(var a=c.f,b=c.d,e=c.input,f=c.a,g=e.length,h=d[0],k=d[1],m,n;b=g);)a|=e[f++]<>>16;if(n>b)throw Error("invalid code length: "+n);c.f=a>>n;c.d=b-n;c.a=f;return m&65535} -w.prototype.j=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length-258,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(this.b=b,a=this.e(),b=this.b),a[b++]=f;else{g=f-257;k=I[g];0=e&&(this.b=b,a=this.e(),b=this.b);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; -w.prototype.w=function(c,d){var a=this.c,b=this.b;this.o=c;for(var e=a.length,f,g,h,k;256!==(f=E(this,c));)if(256>f)b>=e&&(a=this.e(),e=a.length),a[b++]=f;else{g=f-257;k=I[g];0e&&(a=this.e(),e=a.length);for(;k--;)a[b]=a[b++-h]}for(;8<=this.d;)this.d-=8,this.a--;this.b=b}; -w.prototype.e=function(){var c=new (t?Uint8Array:Array)(this.b-32768),d=this.b-32768,a,b,e=this.c;if(t)c.set(e.subarray(32768,c.length));else{a=0;for(b=c.length;aa;++a)e[a]=e[d+a];this.b=32768;return e}; -w.prototype.z=function(c){var d,a=this.input.length/this.a+1|0,b,e,f,g=this.input,h=this.c;c&&("number"===typeof c.p&&(a=c.p),"number"===typeof c.u&&(a+=c.u));2>a?(b=(g.length-this.a)/this.o[2],f=258*(b/2)|0,e=fd&&(this.c.length=d),c=this.c);return this.buffer=c};function W(c,d){var a,b;this.input=c;this.a=0;if(d||!(d={}))d.index&&(this.a=d.index),d.verify&&(this.A=d.verify);a=c[this.a++];b=c[this.a++];switch(a&15){case ha:this.method=ha;break;default:throw Error("unsupported compression method");}if(0!==((a<<8)+b)%31)throw Error("invalid fcheck flag:"+((a<<8)+b)%31);if(b&32)throw Error("fdict flag is not supported");this.q=new w(c,{index:this.a,bufferSize:d.bufferSize,bufferType:d.bufferType,resize:d.resize})} -W.prototype.k=function(){var c=this.input,d,a;d=this.q.k();this.a=this.q.a;if(this.A){a=(c[this.a++]<<24|c[this.a++]<<16|c[this.a++]<<8|c[this.a++])>>>0;var b=d;if("string"===typeof b){var e=b.split(""),f,g;f=0;for(g=e.length;f>>0;b=e}for(var h=1,k=0,m=b.length,n,p=0;0>>0)throw Error("invalid adler-32 checksum");}return d};var ha=8;r("Zlib.Inflate",W);r("Zlib.Inflate.prototype.decompress",W.prototype.k);var X={ADAPTIVE:B.s,BLOCK:B.t},Y,Z,$,ia;if(Object.keys)Y=Object.keys(X);else for(Z in Y=[],$=0,X)Y[$++]=Z;$=0;for(ia=Y.length;$b&&(b=a[c]);return b}function C(){Object.defineProperty(this,"id",{value:Xf+=2});this.uuid=H.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}} -function Ob(a,b,c,d,e,f){G.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new rb(a,b,c,d,e,f));this.mergeVertices()}function rb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,l,fa,A,B){var r=f/fa,u=g/A,w=f/2,x=g/2,z=l/2;g=fa+1;var D=A+1,y=f=0,Q,Fa,ta=new n;for(Fa=0;Fam;m++){if(q=d[m])if(h=q[0],k=q[1]){p&&e.addAttribute("morphTarget"+m, -p[h]);f&&e.addAttribute("morphNormal"+m,f[h]);c[m]=k;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function ig(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function $a(a,b,c,d,e,f,g,h,k,m){a=void 0!==a?a:[];V.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h,k,m);this.flipY=!1}function Qb(a,b,c,d){V.call(this,null); -this.image={data:a,width:b,height:c,depth:d};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1}function Rb(a,b,c){var d=a[0];if(0>=d||0/gm, -function(a,c){a=U[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return fe(a)})}function kf(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,c,d,e){a="";for(c=parseInt(c);cd||a.height>d)e=d/Math.max(a.width,a.height);if(1>e||!0===b){if(a instanceof ImageBitmap||a instanceof HTMLImageElement||a instanceof HTMLCanvasElement)return d=b?H.floorPowerOfTwo:Math.floor,b=d(e*a.width),e=d(e*a.height),void 0===B&&(B=h(b,e)),c=c?h(b,e):B,c.width=b,c.height=e,c.getContext("2d").drawImage(a,0,0,b,e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+ -a.width+"x"+a.height+") to ("+b+"x"+e+")."),F?c.transferToImageBitmap():c;"data"in a&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+a.width+"x"+a.height+").")}return a}function m(a){return H.isPowerOfTwo(a.width)&&H.isPowerOfTwo(a.height)}function p(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function q(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,f))*Math.LOG2E}function v(a,c){if(!e.isWebGL2)return a;var d=a;6403===a&& -(5126===c&&(d=33326),5131===c&&(d=33325),5121===c&&(d=33321));6407===a&&(5126===c&&(d=34837),5131===c&&(d=34843),5121===c&&(d=32849));6408===a&&(5126===c&&(d=34836),5131===c&&(d=34842),5121===c&&(d=32856));33325===d||33326===d||34842===d||34836===d?b.get("EXT_color_buffer_float"):(34843===d||34837===d)&&console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.");return d}function l(a){return 1003===a||1004===a||1005===a?9728:9729}function r(b){b= -b.target;b.removeEventListener("dispose",r);var c=d.get(b);void 0!==c.__webglInit&&(a.deleteTexture(c.__webglTexture),d.remove(b));b.isVideoTexture&&delete A[b.id];g.memory.textures--}function u(b){b=b.target;b.removeEventListener("dispose",u);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]); -else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.memory.textures--}function n(a,b){var e=d.get(a);if(a.isVideoTexture){var f=a.id,h=g.render.frame;A[f]!==h&&(A[f]=h,a.update())}if(0r;r++)t[r]=g||l?l?b.image[r].image:b.image[r]:k(b.image[r],!1,!0,e.maxCubemapSize);var u=t[0],n=m(u)||e.isWebGL2,w=f.convert(b.format),y=f.convert(b.type),D=v(w,y); -z(34067,b,n);for(r=0;6>r;r++)if(g)for(var A,fa=t[r].mipmaps,Q=0,Ac=fa.length;Qr;r++)h.__webglFramebuffer[r]=a.createFramebuffer();else if(h.__webglFramebuffer=a.createFramebuffer(),r)if(e.isWebGL2){h.__webglMultisampledFramebuffer=a.createFramebuffer();h.__webglColorRenderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,h.__webglColorRenderbuffer);r=f.convert(b.texture.format);var w=f.convert(b.texture.type);r=v(r,w);w=fa(b);a.renderbufferStorageMultisample(36161,w,r,b.width, -b.height);a.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);a.framebufferRenderbuffer(36160,36064,36161,h.__webglColorRenderbuffer);a.bindRenderbuffer(36161,null);b.depthBuffer&&(h.__webglDepthRenderbuffer=a.createRenderbuffer(),Q(h.__webglDepthRenderbuffer,b,!0));a.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");if(l){c.bindTexture(34067,k.__webglTexture);z(34067,b.texture,t);for(r=0;6>r;r++)y(h.__webglFramebuffer[r], -b,36064,34069+r);p(b.texture,t)&&q(34067,b.texture,b.width,b.height);c.bindTexture(34067,null)}else c.bindTexture(3553,k.__webglTexture),z(3553,b.texture,t),y(h.__webglFramebuffer,b,36064,3553),p(b.texture,t)&&q(3553,b.texture,b.width,b.height),c.bindTexture(3553,null);if(b.depthBuffer){h=d.get(b);k=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(k)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported"); -a.bindFramebuffer(36160,h.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);n(b.depthTexture,0);h=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(36160, -36096,3553,h,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(36160,33306,3553,h,0);else throw Error("Unknown depthTexture format");}else if(k)for(h.__webglDepthbuffer=[],k=0;6>k;k++)a.bindFramebuffer(36160,h.__webglFramebuffer[k]),h.__webglDepthbuffer[k]=a.createRenderbuffer(),Q(h.__webglDepthbuffer[k],b);else a.bindFramebuffer(36160,h.__webglFramebuffer),h.__webglDepthbuffer=a.createRenderbuffer(),Q(h.__webglDepthbuffer,b);a.bindFramebuffer(36160,null)}};this.updateRenderTargetMipmap= -function(a){var b=a.texture,f=m(a)||e.isWebGL2;if(p(b,f)){f=a.isWebGLRenderTargetCube?34067:3553;var g=d.get(b).__webglTexture;c.bindTexture(f,g);q(f,b,a.width,a.height);c.bindTexture(f,null)}};this.updateMultisampleRenderTarget=function(b){if(b.isWebGLMultisampleRenderTarget)if(e.isWebGL2){var c=d.get(b);a.bindFramebuffer(36008,c.__webglMultisampledFramebuffer);a.bindFramebuffer(36009,c.__webglFramebuffer);c=b.width;var f=b.height,g=16384;b.depthBuffer&&(g|=256);b.stencilBuffer&&(g|=1024);a.blitFramebuffer(0, -0,c,f,0,0,c,f,g,9728)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")}}function of(a,b,c){return{convert:function(a){if(1E3===a)return 10497;if(1001===a)return 33071;if(1002===a)return 33648;if(1003===a)return 9728;if(1004===a)return 9984;if(1005===a)return 9986;if(1006===a)return 9729;if(1007===a)return 9985;if(1008===a)return 9987;if(1009===a)return 5121;if(1017===a)return 32819;if(1018===a)return 32820;if(1019===a)return 33635;if(1010===a)return 5120; -if(1011===a)return 5122;if(1012===a)return 5123;if(1013===a)return 5124;if(1014===a)return 5125;if(1015===a)return 5126;if(1016===a){if(c.isWebGL2)return 5131;var d=b.get("OES_texture_half_float");if(null!==d)return d.HALF_FLOAT_OES}if(1021===a)return 6406;if(1022===a)return 6407;if(1023===a)return 6408;if(1024===a)return 6409;if(1025===a)return 6410;if(1026===a)return 6402;if(1027===a)return 34041;if(1028===a)return 6403;if(100===a)return 32774;if(101===a)return 32778;if(102===a)return 32779;if(200=== -a)return 0;if(201===a)return 1;if(202===a)return 768;if(203===a)return 769;if(204===a)return 770;if(205===a)return 771;if(206===a)return 772;if(207===a)return 773;if(208===a)return 774;if(209===a)return 775;if(210===a)return 776;if(33776===a||33777===a||33778===a||33779===a)if(d=b.get("WEBGL_compressed_texture_s3tc"),null!==d){if(33776===a)return d.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===a)return d.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===a)return d.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===a)return d.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840=== -a||35841===a||35842===a||35843===a)if(d=b.get("WEBGL_compressed_texture_pvrtc"),null!==d){if(35840===a)return d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===a)return d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===a)return d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===a)return d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===a&&(d=b.get("WEBGL_compressed_texture_etc1"),null!==d))return d.COMPRESSED_RGB_ETC1_WEBGL;if(37808===a||37809===a||37810===a||37811===a||37812===a||37813===a||37814===a||37815===a||37816=== -a||37817===a||37818===a||37819===a||37820===a||37821===a)if(d=b.get("WEBGL_compressed_texture_astc"),null!==d)return a;if(103===a||104===a){if(c.isWebGL2){if(103===a)return 32775;if(104===a)return 32776}d=b.get("EXT_blend_minmax");if(null!==d){if(103===a)return d.MIN_EXT;if(104===a)return d.MAX_EXT}}if(1020===a){if(c.isWebGL2)return 34042;d=b.get("WEBGL_depth_texture");if(null!==d)return d.UNSIGNED_INT_24_8_WEBGL}return 0}}}function Sb(){E.call(this);this.type="Group"}function Ua(){E.call(this);this.type= -"Camera";this.matrixWorldInverse=new J;this.projectionMatrix=new J;this.projectionMatrixInverse=new J}function S(a,b,c,d){Ua.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Ec(a){S.call(this);this.cameras=a||[]}function pf(a,b,c){qf.setFromMatrixPosition(b.matrixWorld);rf.setFromMatrixPosition(c.matrixWorld); -var d=qf.distanceTo(rf),e=b.projectionMatrix.elements,f=c.projectionMatrix.elements,g=e[14]/(e[10]-1);c=e[14]/(e[10]+1);var h=(e[9]+1)/e[5],k=(e[9]-1)/e[5],m=(e[8]-1)/e[0],p=(f[8]+1)/f[0];e=g*m;f=g*p;p=d/(-m+p);m=p*-m;b.matrixWorld.decompose(a.position,a.quaternion,a.scale);a.translateX(m);a.translateZ(p);a.matrixWorld.compose(a.position,a.quaternion,a.scale);a.matrixWorldInverse.getInverse(a.matrixWorld);b=g+p;g=c+p;a.projectionMatrix.makePerspective(e-m,f+(d-m),h*c/g*b,k*c/g*b,b,g)}function sf(a){function b(){return null!== -e&&!0===e.isPresenting}function c(){if(b()){var c=e.getEyeParameters("left"),f=c.renderWidth*p;c=c.renderHeight*p;D=a.getPixelRatio();a.getSize(x);a.setDrawingBufferSize(2*f,c,1);Q.start()}else d.enabled&&a.setDrawingBufferSize(x.width,x.height,D),Q.stop()}var d=this,e=null,f=null,g=null,h=[],k=new J,m=new J,p=1,q="stage";"undefined"!==typeof window&&"VRFrameData"in window&&(f=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));var v=new J,l=new aa,r=new n,u=new S;u.bounds= -new ba(0,0,.5,1);u.layers.enable(1);var w=new S;w.bounds=new ba(.5,0,.5,1);w.layers.enable(2);var z=new Ec([u,w]);z.layers.enable(1);z.layers.enable(2);var x=new B,D,y=[];this.enabled=!1;this.getController=function(a){var b=h[a];void 0===b&&(b=new Sb,b.matrixAutoUpdate=!1,b.visible=!1,h[a]=b);return b};this.getDevice=function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);Q.setContext(a)};this.setFramebufferScaleFactor=function(a){p=a};this.setFrameOfReferenceType=function(a){q=a};this.setPoseTarget= -function(a){void 0!==a&&(g=a)};this.getCamera=function(a){var c="stage"===q?1.6:0;if(!1===b())return a.position.set(0,c,0),a.rotation.set(0,0,0),a;e.depthNear=a.near;e.depthFar=a.far;e.getFrameData(f);if("stage"===q){var d=e.stageParameters;d?k.fromArray(d.sittingToStandingTransform):k.makeTranslation(0,c,0)}c=f.pose;d=null!==g?g:a;d.matrix.copy(k);d.matrix.decompose(d.position,d.quaternion,d.scale);null!==c.orientation&&(l.fromArray(c.orientation),d.quaternion.multiply(l));null!==c.position&&(l.setFromRotationMatrix(k), -r.fromArray(c.position),r.applyQuaternion(l),d.position.add(r));d.updateMatrixWorld();u.near=a.near;w.near=a.near;u.far=a.far;w.far=a.far;u.matrixWorldInverse.fromArray(f.leftViewMatrix);w.matrixWorldInverse.fromArray(f.rightViewMatrix);m.getInverse(k);"stage"===q&&(u.matrixWorldInverse.multiply(m),w.matrixWorldInverse.multiply(m));a=d.parent;null!==a&&(v.getInverse(a.matrixWorld),u.matrixWorldInverse.multiply(v),w.matrixWorldInverse.multiply(v));u.matrixWorld.getInverse(u.matrixWorldInverse);w.matrixWorld.getInverse(w.matrixWorldInverse); -u.projectionMatrix.fromArray(f.leftProjectionMatrix);w.projectionMatrix.fromArray(f.rightProjectionMatrix);pf(z,u,w);a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&u.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&w.bounds.fromArray(a.rightBounds));a:for(a=0;af.matrixWorld.determinant();Z.setMaterial(e, -h);var k=l(a,c,e,f),m=!1;if(b!==d.id||U!==k.id||ta!==(!0===e.wireframe))b=d.id,U=k.id,ta=!0===e.wireframe,m=!0;f.morphTargetInfluences&&(xa.update(f,d,e,k),m=!0);h=d.index;var p=d.attributes.position;c=1;!0===e.wireframe&&(h=ua.getWireframeAttribute(d),c=2);a=Aa;if(null!==h){var q=ra.get(h);a=Ba;a.setIndex(q)}if(m){if(d&&d.isInstancedBufferGeometry&&!za.isWebGL2&&null===la.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."); -else{Z.initAttributes();m=d.attributes;k=k.getAttributes();var v=e.defaultAttributeValues;for(A in k){var r=k[A];if(0<=r){var t=m[A];if(void 0!==t){var n=t.normalized,u=t.itemSize,w=ra.get(t);if(void 0!==w){var x=w.buffer,z=w.type;w=w.bytesPerElement;if(t.isInterleavedBufferAttribute){var y=t.data,D=y.stride;t=t.offset;y&&y.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(r,y.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=y.meshPerAttribute*y.count)):Z.enableAttribute(r); -O.bindBuffer(34962,x);O.vertexAttribPointer(r,u,z,n,D*w,t*w)}else t.isInstancedBufferAttribute?(Z.enableAttributeAndDivisor(r,t.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=t.meshPerAttribute*t.count)):Z.enableAttribute(r),O.bindBuffer(34962,x),O.vertexAttribPointer(r,u,z,n,0,0)}}else if(void 0!==v&&(n=v[A],void 0!==n))switch(n.length){case 2:O.vertexAttrib2fv(r,n);break;case 3:O.vertexAttrib3fv(r,n);break;case 4:O.vertexAttrib4fv(r,n);break;default:O.vertexAttrib1fv(r,n)}}}Z.disableUnusedAttributes()}null!== -h&&O.bindBuffer(34963,q.buffer)}q=Infinity;null!==h?q=h.count:void 0!==p&&(q=p.count);h=d.drawRange.start*c;p=null!==g?g.start*c:0;var A=Math.max(h,p);g=Math.max(0,Math.min(q,h+d.drawRange.count*c,p+(null!==g?g.count*c:Infinity))-1-A+1);if(0!==g){if(f.isMesh)if(!0===e.wireframe)Z.setLineWidth(e.wireframeLinewidth*(null===G?T:1)),a.setMode(1);else switch(f.drawMode){case 0:a.setMode(4);break;case 1:a.setMode(5);break;case 2:a.setMode(6)}else f.isLine?(e=e.linewidth,void 0===e&&(e=1),Z.setLineWidth(e* -(null===G?T:1)),f.isLineSegments?a.setMode(1):f.isLineLoop?a.setMode(2):a.setMode(3)):f.isPoints?a.setMode(0):f.isSprite&&a.setMode(4);d&&d.isInstancedBufferGeometry?0=za.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+za.maxTextures);ia+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."), -a=!0),b=b.texture);da.setTexture2D(b,c)}}();this.setTexture3D=function(){return function(a,b){da.setTexture3D(a,b)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);da.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."), -a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?da.setTextureCube(b,c):da.setTextureCubeDynamic(b,c)}}();this.setFramebuffer=function(a){L=a};this.getRenderTarget=function(){return G};this.setRenderTarget=function(a,b,c){(G=a)&&void 0===Da.get(a).__webglFramebuffer&&da.setupRenderTarget(a);var d=L,e=!1;a?(d=Da.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube?(d=d[b||0],e=!0):d=a.isWebGLMultisampleRenderTarget?Da.get(a).__webglMultisampledFramebuffer:d,V.copy(a.viewport), -W.copy(a.scissor),ca=a.scissorTest):(V.copy(ea).multiplyScalar(T),W.copy(aa).multiplyScalar(T),ca=pa);M!==d&&(O.bindFramebuffer(36160,d),M=d);Z.viewport(V);Z.scissor(W);Z.setScissorTest(ca);e&&(a=Da.get(a.texture),O.framebufferTexture2D(36160,36064,34069+b||0,a.__webglTexture,c||0))};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=Da.get(a).__webglFramebuffer;if(g){var h=!1;g!==M&&(O.bindFramebuffer(36160,g),h=!0);try{var k=a.texture,m=k.format,p=k.type;1023!== -m&&ja.convert(m)!==O.getParameter(35739)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===p||ja.convert(p)===O.getParameter(35738)||1015===p&&(za.isWebGL2||la.get("OES_texture_float")||la.get("WEBGL_color_buffer_float"))||1016===p&&(za.isWebGL2?la.get("EXT_color_buffer_float"):la.get("EXT_color_buffer_half_float"))?36053===O.checkFramebufferStatus(36160)?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&O.readPixels(b,c,d,e,ja.convert(m), -ja.convert(p),f):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{h&&O.bindFramebuffer(36160,M)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")};this.copyFramebufferToTexture=function(a,b,c){var d=b.image.width,e=b.image.height, -f=ja.convert(b.format);this.setTexture2D(b,0);O.copyTexImage2D(3553,c||0,f,a.x,a.y,d,e,0)};this.copyTextureToTexture=function(a,b,c,d){var e=b.image.width,f=b.image.height,g=ja.convert(c.format),h=ja.convert(c.type);this.setTexture2D(c,0);b.isDataTexture?O.texSubImage2D(3553,d||0,a.x,a.y,e,f,g,h,b.image.data):O.texSubImage2D(3553,d||0,a.x,a.y,g,h,b.image)}}function yd(a,b){this.name="";this.color=new K(a);this.density=void 0!==b?b:2.5E-4}function zd(a,b,c){this.name="";this.color=new K(a);this.near= -void 0!==b?b:1;this.far=void 0!==c?c:1E3}function Ad(){E.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ub(a,b){this.array=a;this.stride=b;this.count=void 0!==a?a.length/b:0;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}function Fc(a,b,c,d){this.data=a;this.itemSize=b;this.offset=c;this.normalized=!0===d}function jb(a){M.call(this);this.type="SpriteMaterial";this.color=new K(16777215);this.map=null;this.rotation=0; -this.sizeAttenuation=!0;this.lights=!1;this.transparent=!0;this.setValues(a)}function Gc(a){E.call(this);this.type="Sprite";if(void 0===Tb){Tb=new C;var b=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]);b=new ub(b,5);Tb.setIndex([0,1,2,0,2,3]);Tb.addAttribute("position",new Fc(b,3,0,!1));Tb.addAttribute("uv",new Fc(b,2,3,!1))}this.geometry=Tb;this.material=void 0!==a?a:new jb;this.center=new B(.5,.5)}function Hc(){E.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0, -value:[]}})}function Ic(a,b){a&&a.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");va.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new J;this.bindMatrixInverse=new J}function Bd(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."), -this.boneInverses=[],a=0,b=this.bones.length;ac;c++){var q=p[h[c]];var l=p[h[(c+1)%3]];f[0]=Math.min(q,l);f[1]=Math.max(q,l);q=f[0]+ -","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)m=g[q],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new n,null!==a.index){k=a.attributes.position;p=a.index;var t=a.groups;0===t.length&&(t=[{start:0,count:p.count,materialIndex:0}]);a=0;for(e=t.length;ac;c++)q=p.getX(m+c),l=p.getX(m+(c+1)%3),f[0]=Math.min(q,l),f[1]=Math.max(q,l),q=f[0]+","+ -f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)m=g[q],h.fromBufferAttribute(k,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,m.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,m=0,d=k.count/3;mc;c++)g=3*m+c,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z);this.addAttribute("position",new F(b,3))}function Lc(a,b,c){G.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b, -stacks:c};this.fromBufferGeometry(new Xb(a,b,c));this.mergeVertices()}function Xb(a,b,c){C.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new n,k=new n,m=new n,p=new n,q=new n,l,t;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");var r=b+1;for(l=0;l<=c;l++){var u=l/c;for(t=0;t<=b;t++){var w=t/b;a(w,u,k);e.push(k.x,k.y,k.z);0<=w-1E-5?(a(w-1E-5,u,m),p.subVectors(k,m)):(a(w+ -1E-5,u,m),p.subVectors(m,k));0<=u-1E-5?(a(w,u-1E-5,m),q.subVectors(k,m)):(a(w,u+1E-5,m),q.subVectors(m,k));h.crossVectors(p,q).normalize();f.push(h.x,h.y,h.z);g.push(w,u)}}for(l=0;ld&&1===a.x&&(k[b]=a.x-1);0===c.x&&0===c.z&&(k[b]=d/2/Math.PI+.5)}C.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new n,d=new n,g=new n,h=0;he&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position",new F(h,3));this.addAttribute("normal",new F(h.slice(),3));this.addAttribute("uv",new F(k,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Nc(a,b){G.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Yb(a,b));this.mergeVertices()} -function Yb(a,b){Aa.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Oc(a,b){G.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new vb(a,b));this.mergeVertices()}function vb(a,b){Aa.call(this,[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],a,b);this.type="OctahedronBufferGeometry";this.parameters= -{radius:a,detail:b}}function Pc(a,b){G.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Zb(a,b));this.mergeVertices()}function Zb(a,b){var c=(1+Math.sqrt(5))/2;Aa.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,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],a,b);this.type="IcosahedronBufferGeometry";this.parameters= -{radius:a,detail:b}}function Qc(a,b){G.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new $b(a,b));this.mergeVertices()}function $b(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;Aa.call(this,[-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,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[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],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Rc(a,b,c,d,e,f){G.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new wb(a,b,c,d,e);this.tangents=a.tangents;this.normals= -a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function wb(a,b,c,d,e){function f(e){p=a.getPointAt(e/b,p);var f=g.normals[e];e=g.binormals[e];for(l=0;l<=d;l++){var m=l/d*Math.PI*2,q=Math.sin(m);m=-Math.cos(m);k.x=m*f.x+q*e.x;k.y=m*f.y+q*e.y;k.z=m*f.z+q*e.z;k.normalize();r.push(k.x,k.y,k.z);h.x=p.x+c*k.x;h.y=p.y+c*k.y;h.z=p.z+c*k.z;t.push(h.x,h.y,h.z)}}C.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d, -closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new n,k=new n,m=new B,p=new n,q,l,t=[],r=[],u=[],w=[];for(q=0;q=b;e-=d)f=vf(e,a[e],a[e+1],f);f&&xb(f,f.next)&&(Uc(f),f=f.next);return f}function Vc(a,b){if(!a)return a;b||(b=a);do{var c=!1;if(a.steiner||!xb(a,a.next)&&0!==qa(a.prev,a,a.next))a=a.next;else{Uc(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b}function Wc(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,k=h;do null===k.z&&(k.z=ke(k.x,k.y,d,e,f)),k.prevZ=k.prev,k=k.nextZ= -k.next;while(k!==h);k.prevZ.nextZ=null;k.prevZ=null;h=k;var m,p,q,l,t=1;do{k=h;var r=h=null;for(p=0;k;){p++;var n=k;for(m=q=0;mq.x?p.x>t.x?p.x:t.x:q.x>t.x?q.x:t.x,D=p.y>q.y?p.y>t.y?p.y:t.y:q.y> -t.y?q.y:t.y;m=ke(p.x=m;){if(w!==r.prev&&w!==r.next&&Dd(p.x,p.y,q.x,q.y,t.x,t.y,w.x,w.y)&&0<=qa(w.prev,w,w.next)){r=!1;break a}w=w.prevZ}r=!0}}else a:if(r=a,p=r.prev,q=r,t=r.next,0<=qa(p,q,t))r=!1;else{for(m=r.next.next;m!==r.prev;){if(Dd(p.x,p.y, -q.x,q.y,t.x,t.y,m.x,m.y)&&0<=qa(m.prev,m,m.next)){r=!1;break a}m=m.next}r=!0}if(r)b.push(k.i/c),b.push(a.i/c),b.push(n.i/c),Uc(a),h=a=n.next;else if(a=n,a===h){if(!g)Wc(Vc(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;k=a;do n=k.prev,r=k.next.next,!xb(n,r)&&wf(n,k,k.next,r)&&Xc(n,r)&&Xc(r,n)&&(g.push(n.i/h),g.push(k.i/h),g.push(r.i/h),Uc(k),Uc(k.next),k=a=r),k=k.next;while(k!==a);a=k;Wc(a,b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(k=g.i!==h.i){k=g;n=h;if(r=k.next.i!==n.i&&k.prev.i!== -n.i){b:{r=k;do{if(r.i!==k.i&&r.next.i!==k.i&&r.i!==n.i&&r.next.i!==n.i&&wf(r,r.next,k,n)){r=!0;break b}r=r.next}while(r!==k);r=!1}r=!r}if(r=r&&Xc(k,n)&&Xc(n,k)){r=k;p=!1;q=(k.x+n.x)/2;n=(k.y+n.y)/2;do r.y>n!==r.next.y>n&&r.next.y!==r.y&&q<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(p=!p),r=r.next;while(r!==k);r=p}k=r}if(k){a=xf(g,h);g=Vc(g,g.next);a=Vc(a,a.next);Wc(g,b,c,d,e,f);Wc(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function ah(a,b){return a.x-b.x}function bh(a,b){var c=b, -d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x=c.x&&c.x>=g&&d!==c.x&&Dd(eh.x)&&Xc(c,a)&&(h=c,m=p)}c=c.next}return h}function ke(a, -b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function ch(a){var b=a,c=a;do b.xqa(a.prev,a,a.next)?0<=qa(a,b,a.next)&&0<=qa(a,a.prev,b):0>qa(a,b,a.prev)||0>qa(a,a.next,b)}function xf(a,b){var c=new le(a.i,a.x,a.y),d=new le(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev=c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function vf(a,b,c,d){a=new le(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a): -(a.prev=a,a.next=a);return a}function Uc(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function le(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next=this.prev=null;this.steiner=!1}function yf(a){var b=a.length;2Number.EPSILON){var k=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/k;b=b.y+d/k;g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new B(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON? -f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new B(f/e,d/e)}function h(a,b){for(N=a.length;0<=--N;){var c=N;var f=N-1;0>f&&(f=a.length-1);var g,h=x+2*A;for(g=0;gp;p++){var l=m[f[p]];var n=m[f[(p+1)%3]];d[0]=Math.min(l,n);d[1]=Math.max(l,n);l=d[0]+","+d[1];void 0===e[l]?e[l]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[l].face2=h}for(l in e)if(d=e[l],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",new F(c,3))}function Cb(a,b,c,d,e,f,g,h){G.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a, -radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new bb(a,b,c,d,e,f,g,h));this.mergeVertices()}function bb(a,b,c,d,e,f,g,h){function k(c){var e,f=new B,k=new n,q=0,u=!0===c?a:b,x=!0===c?1:-1;var C=r;for(e=1;e<=d;e++)l.push(0,w*x,0),v.push(0,x,0),t.push(.5,.5),r++;var E=r;for(e=0;e<=d;e++){var F=e/d*h+g,H=Math.cos(F);F=Math.sin(F);k.x=u*F;k.y=w*x;k.z=u*H;l.push(k.x,k.y,k.z);v.push(0,x,0);f.x=.5*H+.5;f.y=.5*F*x+.5;t.push(f.x,f.y); -r++}for(e=0;ethis.duration&&this.resetDuration()}function eh(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return ic;case "vector":case "vector2":case "vector3":case "vector4":return jc;case "color":return Hd;case "quaternion":return fd;case "bool":case "boolean":return Gd;case "string":return Jd}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+ -a);}function fh(a){if(void 0===a.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");var b=eh(a.type);if(void 0===a.times){var c=[],d=[];sa.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)}function me(a,b,c){var d=this,e=!1,f=0,g=0,h=void 0;this.onStart=void 0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){g++;if(!1===e&&void 0!==d.onStart)d.onStart(a,f,g);e=!0}; -this.itemEnd=function(a){f++;if(void 0!==d.onProgress)d.onProgress(a,f,g);if(f===g&&(e=!1,void 0!==d.onLoad))d.onLoad()};this.itemError=function(a){if(void 0!==d.onError)d.onError(a)};this.resolveURL=function(a){return h?h(a):a};this.setURLModifier=function(a){h=a;return this}}function Ka(a){this.manager=void 0!==a?a:Ba}function Cf(a){this.manager=void 0!==a?a:Ba}function Df(a){this.manager=void 0!==a?a:Ba;this._parser=null}function ne(a){this.manager=void 0!==a?a:Ba;this._parser=null}function gd(a){this.manager= -void 0!==a?a:Ba}function oe(a){this.manager=void 0!==a?a:Ba}function Kd(a){this.manager=void 0!==a?a:Ba}function L(){this.type="Curve";this.arcLengthDivisions=200}function Ea(a,b,c,d,e,f,g,h){L.call(this);this.type="EllipseCurve";this.aX=a||0;this.aY=b||0;this.xRadius=c||1;this.yRadius=d||1;this.aStartAngle=e||0;this.aEndAngle=f||2*Math.PI;this.aClockwise=g||!1;this.aRotation=h||0}function kc(a,b,c,d,e,f){Ea.call(this,a,b,c,c,d,e,f);this.type="ArcCurve"}function pe(){var a=0,b=0,c=0,d=0;return{initCatmullRom:function(e, -f,g,h,k){e=k*(g-e);h=k*(h-f);a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},initNonuniformCatmullRom:function(e,f,g,h,k,m,p){e=((f-e)/k-(g-e)/(k+m)+(g-f)/m)*m;h=((g-f)/m-(h-f)/(m+p)+(h-g)/p)*m;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function oa(a,b,c,d){L.call(this);this.type="CatmullRomCurve3";this.points=a||[];this.closed=b||!1;this.curveType=c||"centripetal";this.tension=d||.5}function Ef(a,b,c,d,e){b=.5*(d-b);e=.5*(e-c);var f=a*a;return(2*c-2*d+b+e)* -a*f+(-3*c+3*d-2*b-e)*f+b*a+c}function hd(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}function id(a,b,c,d,e){var f=1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}function La(a,b,c,d){L.call(this);this.type="CubicBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B;this.v3=d||new B}function Xa(a,b,c,d){L.call(this);this.type="CubicBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n;this.v3=d||new n}function ja(a,b){L.call(this);this.type="LineCurve";this.v1=a|| -new B;this.v2=b||new B}function Ma(a,b){L.call(this);this.type="LineCurve3";this.v1=a||new n;this.v2=b||new n}function Na(a,b,c){L.call(this);this.type="QuadraticBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B}function Ya(a,b,c){L.call(this);this.type="QuadraticBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n}function Oa(a){L.call(this);this.type="SplineCurve";this.points=a||[]}function cb(){L.call(this);this.type="CurvePath";this.curves=[];this.autoClose=!1}function Pa(a){cb.call(this); -this.type="Path";this.currentPoint=new B;a&&this.setFromPoints(a)}function kb(a){Pa.call(this,a);this.uuid=H.generateUUID();this.type="Shape";this.holes=[]}function ia(a,b){E.call(this);this.type="Light";this.color=new K(a);this.intensity=void 0!==b?b:1;this.receiveShadow=void 0}function Ld(a,b,c){ia.call(this,a,c);this.type="HemisphereLight";this.castShadow=void 0;this.position.copy(E.DefaultUp);this.updateMatrix();this.groundColor=new K(b)}function Kb(a){this.camera=a;this.bias=0;this.radius=1; -this.mapSize=new B(512,512);this.map=null;this.matrix=new J}function Md(){Kb.call(this,new S(50,1,.5,500))}function Nd(a,b,c,d,e,f){ia.call(this,a,b);this.type="SpotLight";this.position.copy(E.DefaultUp);this.updateMatrix();this.target=new E;Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(a){this.intensity=a/Math.PI}});this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.penumbra=void 0!==e?e:0;this.decay=void 0!==f?f:1;this.shadow=new Md} -function Od(a,b,c,d){ia.call(this,a,b);this.type="PointLight";Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(a){this.intensity=a/(4*Math.PI)}});this.distance=void 0!==c?c:0;this.decay=void 0!==d?d:1;this.shadow=new Kb(new S(90,1,.5,500))}function jd(a,b,c,d,e,f){Ua.call(this);this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=void 0!==a?a:-1;this.right=void 0!==b?b:1;this.top=void 0!==c?c:1;this.bottom=void 0!==d?d:-1;this.near=void 0!== -e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()}function Pd(){Kb.call(this,new jd(-5,5,5,-5,.5,500))}function Qd(a,b){ia.call(this,a,b);this.type="DirectionalLight";this.position.copy(E.DefaultUp);this.updateMatrix();this.target=new E;this.shadow=new Pd}function Rd(a,b){ia.call(this,a,b);this.type="AmbientLight";this.castShadow=void 0}function Sd(a,b,c,d){ia.call(this,a,b);this.type="RectAreaLight";this.width=void 0!==c?c:10;this.height=void 0!==d?d:10}function Td(a){this.manager=void 0!== -a?a:Ba;this.textures={}}function qe(a){this.manager=void 0!==a?a:Ba}function re(a){this.manager=void 0!==a?a:Ba;this.resourcePath=""}function se(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported.");this.manager=void 0!==a?a:Ba;this.options=void 0}function te(){this.type="ShapePath";this.color=new K;this.subPaths=[];this.currentPath=null}function ue(a){this.type= -"Font";this.data=a}function Ff(a){this.manager=void 0!==a?a:Ba}function kd(){}function ve(a){this.manager=void 0!==a?a:Ba}function Gf(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new S;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new S;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function ld(a,b,c,d){E.call(this);this.type="CubeCamera";var e=new S(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(1,0,0));this.add(e);var f=new S(90, -1,a,b);f.up.set(0,-1,0);f.lookAt(new n(-1,0,0));this.add(f);var g=new S(90,1,a,b);g.up.set(0,0,1);g.lookAt(new n(0,1,0));this.add(g);var h=new S(90,1,a,b);h.up.set(0,0,-1);h.lookAt(new n(0,-1,0));this.add(h);var k=new S(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new n(0,0,1));this.add(k);var m=new S(90,1,a,b);m.up.set(0,-1,0);m.lookAt(new n(0,0,-1));this.add(m);d=d||{format:1022,magFilter:1006,minFilter:1006};this.renderTarget=new mb(c,c,d);this.renderTarget.texture.name="CubeCamera";this.update=function(a, -b){null===this.parent&&this.updateMatrixWorld();var c=a.getRenderTarget(),d=this.renderTarget,p=d.texture.generateMipmaps;d.texture.generateMipmaps=!1;a.setRenderTarget(d,0);a.render(b,e);a.setRenderTarget(d,1);a.render(b,f);a.setRenderTarget(d,2);a.render(b,g);a.setRenderTarget(d,3);a.render(b,h);a.setRenderTarget(d,4);a.render(b,k);d.texture.generateMipmaps=p;a.setRenderTarget(d,5);a.render(b,m);a.setRenderTarget(c)};this.clear=function(a,b,c,d){for(var e=a.getRenderTarget(),f=this.renderTarget, -g=0;6>g;g++)a.setRenderTarget(f,g),a.clear(b,c,d);a.setRenderTarget(e)}}function we(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}function xe(){E.call(this);this.type="AudioListener";this.context=ye.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null;this.timeDelta=0}function lc(a){E.call(this);this.type="Audio";this.listener=a;this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput()); -this.autoplay=!1;this.buffer=null;this.detune=0;this.loop=!1;this.offset=this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function ze(a){lc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function Ae(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);a.getOutput().connect(this.analyser)}function Be(a, -b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b=this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function Hf(a,b,c){c=c||ma.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function ma(a,b,c){this.path=b;this.parsedPath=c||ma.parseTrackName(b);this.node=ma.findNode(a,this.parsedPath.nodeName)|| -a;this.rootNode=a}function If(){this.uuid=H.generateUUID();this._objects=Array.prototype.slice.call(arguments);this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}}function Jf(a,b, -c){this._mixer=a;this._clip=b;this._localRoot=c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400,endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale= -this.timeScale=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd=this.zeroSlopeAtStart=!0}function Ce(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function Ud(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function De(){C.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function Ee(a,b,c){ub.call(this,a,b);this.meshPerAttribute= -c||1}function Fe(a,b,c,d){"number"===typeof c&&(d=c,c=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument."));P.call(this,a,b,c);this.meshPerAttribute=d||1}function Kf(a,b,c,d){this.ray=new tb(a,b);this.near=c||0;this.far=d||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."); -return this.Points}}})}function Lf(a,b){return a.distance-b.distance}function Ge(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e=a.length;dc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new F(b,3));b=new R({fog:!1});this.cone=new W(a,b);this.add(this.cone);this.update()}function Of(a){var b=[];a&&a.isBone&&b.push(a);for(var c= -0;ca?-1:0b;b++)a[b]=(16>b?"0":"")+b.toString(16);return function(){var b=4294967295*Math.random()|0,d=4294967295*Math.random()|0,e=4294967295*Math.random()|0,f=4294967295*Math.random()|0;return(a[b&255]+a[b>>8&255]+a[b>>16&255]+a[b>>24&255]+"-"+a[d&255]+a[d>>8&255]+"-"+a[d>> -16&15|64]+a[d>>24&255]+"-"+a[e&63|128]+a[e>>8&255]+"-"+a[e>>16&255]+a[e>>24&255]+a[f&255]+a[f>>8&255]+a[f>>16&255]+a[f>>24&255]).toUpperCase()}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1; -a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*H.DEG2RAD},radToDeg:function(a){return a*H.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/ -Math.LN2))}};Object.defineProperties(B.prototype,{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(B.prototype,{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+ -a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this}, -addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*= -a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y=a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a, -b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(){var a=new B,b=new B;return function(c,d){a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x= -Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+ -Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+= -(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b); -return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(J.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,m,l,q,n,t,r,u){var p=this.elements;p[0]=a;p[4]=b;p[8]=c;p[12]=d;p[1]=e;p[5]=f;p[9]=g;p[13]=h;p[2]=k;p[6]=m;p[10]=l;p[14]=q;p[3]=n;p[7]=t;p[11]=r;p[15]=u;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new J).fromArray(this.elements)}, -copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x, -b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new n;return function(b){var c=this.elements,d=b.elements,e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length();b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[3]=0;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[7]=0;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return this}}(),makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order."); -var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e);e=Math.sin(e);if("XYZ"===a.order){a=f*h;var k=f*e,m=c*h,p=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=k+m*d;b[5]=a-p*d;b[9]=-c*g;b[2]=p-a*d;b[6]=m+k*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a+p*c,b[4]=m*c-k,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=k*c-m,b[6]=p+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,k=g*e,m=d*h,p=d*e,b[0]=a-p*c,b[4]=-f*e,b[8]=m+k*c,b[1]=k+m*c,b[5]=f*h,b[9]= -p-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,k=f*e,m=c*h,p=c*e,b[0]=g*h,b[4]=m*d-k,b[8]=a*d+p,b[1]=g*e,b[5]=p*d+a,b[9]=k*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=p-a*e,b[8]=m*e+k,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=k*e+m,b[10]=a-p*e):"XZY"===a.order&&(a=f*g,k=f*d,m=c*g,p=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+p,b[5]=f*h,b[9]=k*e-m,b[2]=m*e-k,b[6]=c*h,b[10]=p*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(){var a= -new n(0,0,0),b=new n(1,1,1);return function(c){return this.compose(a,c,b)}}(),lookAt:function(){var a=new n,b=new n,c=new n;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!== -b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],k=c[5],m=c[9],p=c[13],l=c[2],n=c[6],t=c[10],r=c[14],u=c[3],w=c[7],z=c[11];c=c[15];var x=d[0],D=d[4],y=d[8],Q=d[12],B=d[1],A=d[5],C=d[9],F=d[13],E=d[2], -H=d[6],G=d[10],I=d[14],L=d[3],J=d[7],K=d[11];d=d[15];b[0]=a*x+e*B+f*E+g*L;b[4]=a*D+e*A+f*H+g*J;b[8]=a*y+e*C+f*G+g*K;b[12]=a*Q+e*F+f*I+g*d;b[1]=h*x+k*B+m*E+p*L;b[5]=h*D+k*A+m*H+p*J;b[9]=h*y+k*C+m*G+p*K;b[13]=h*Q+k*F+m*I+p*d;b[2]=l*x+n*B+t*E+r*L;b[6]=l*D+n*A+t*H+r*J;b[10]=l*y+n*C+t*G+r*K;b[14]=l*Q+n*F+t*I+r*d;b[3]=u*x+w*B+z*E+c*L;b[7]=u*D+w*A+z*H+c*J;b[11]=u*y+w*C+z*G+c*K;b[15]=u*Q+w*F+z*I+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*= -a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;cthis.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;f=1/h;var m=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=m;b.elements[9]*=m;b.elements[10]*=m;d.setFromRotationMatrix(b); -e.x=g;e.y=h;e.z=k;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),m=1/(f-e);g[0]= -2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4]; -a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});Object.assign(aa,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var l=e[f+1],q=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==l||m!==q){f=1-g;var n=h*d+k*l+m*q+c*e,t=0<=n?1:-1,r=1-n*n;r>Number.EPSILON&&(r=Math.sqrt(r),n=Math.atan2(r,n*t),f=Math.sin(f*n)/r,g=Math.sin(g* -n)/r);t*=g;h=h*f+d*t;k=k*f+l*t;m=m*f+q*t;c=c*f+e*t;f===1-g&&(g=1/Math.sqrt(h*h+k*k+m*m+c*c),h*=g,k*=g,m*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=m;a[b+3]=c}});Object.defineProperties(aa.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w= -a;this.onChangeCallback()}}});Object.assign(aa.prototype,{isQuaternion:!0,set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order."); -var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),k=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"YXZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"ZXY"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"ZYX"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"YZX"===a?(this._x= -c*k*f+h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f-c*d*e):"XZY"===a&&(this._x=c*k*f-h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6];b=b[10];var m=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a=new n,b;return function(c,d){void 0===a&&(a=new n);b=c.dot(d)+1;1E-6>b? -(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),angleTo:function(a){return 2*Math.acos(Math.abs(H.clamp(this.dot(a),-1,1)))},rotateTowards:function(a,b){var c=this.angleTo(a);if(0===c)return this;this.slerp(a,Math.min(1,b/c));return this},inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x* -a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), -this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z; -0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=1-g*g;if(a<=Number.EPSILON)return g=1-b,this._w=g*f+b*this._w,this._x=g*c+b*this._x,this._y=g*d+b*this._y,this._z=g*e+b*this._z,this.normalize();a=Math.sqrt(a);var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x=== -this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(n.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this}, -setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x, -this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+= -a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), -this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new aa;return function(b){b&&b.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a=new aa;return function(b, -c){return this.applyQuaternion(a.setFromAxisAngle(b,c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x, -c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-m*-f;this.y=k*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-k*-e;return this},project:function(a){return this.applyMatrix4(a.matrixWorldInverse).applyMatrix4(a.projectionMatrix)},unproject:function(){var a=new J;return function(b){return this.applyMatrix4(a.getInverse(b.projectionMatrix)).applyMatrix4(b.matrixWorld)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a= -a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x, -Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a=new n,b=new n;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x); -this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x* -this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)}, -cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this,a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new n;return function(b){a.copy(this).projectOnVector(b); -return this.sub(a)}}(),reflect:function(){var a=new n;return function(b){return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(H.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z- -a.z)},setFromSpherical:function(a){return this.setFromSphericalCoords(a.radius,a.phi,a.theta)},setFromSphericalCoords:function(a,b,c){var d=Math.sin(b)*a;this.x=d*Math.sin(c);this.y=Math.cos(b)*a;this.z=d*Math.cos(c);return this},setFromCylindrical:function(a){return this.setFromCylindricalCoords(a.radius,a.theta,a.y)},setFromCylindricalCoords:function(a,b,c){this.x=a*Math.sin(b);this.y=c;this.z=a*Math.cos(b);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z= -a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0=== -b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(pa.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,k){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)}, -copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;cc;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c= -this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a}});var tc,lb={getDataURL:function(a){if("undefined"==typeof HTMLCanvasElement)return a.src;if(!(a instanceof HTMLCanvasElement)){void 0===tc&&(tc=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"));tc.width=a.width;tc.height=a.height;var b=tc.getContext("2d");a instanceof ImageData?b.putImageData(a,0,0):b.drawImage(a,0,0,a.width,a.height);a=tc}return 2048< -a.width||2048a.x||1a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)%2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y);return a}});Object.defineProperty(V.prototype, -"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(ba.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w= -b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), -this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a, -b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]* -e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d=a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var k=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-k)){if(.1>Math.abs(c+ -e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+k)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI;b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+k)/4;b>f&&b>m?.01>b?(k=0,c=h=.707106781):(k=Math.sqrt(b),h=c/k,c=d/k):f>m?.01>f?(k=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),k=c/h,c=g/h):.01>m?(h=k=.707106781,c=0):(c=Math.sqrt(m),k=d/c,h=g/c);this.set(k,h,c,a);return this}a=Math.sqrt((k-g)*(k-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(k-g)/a;this.y=(d-h)/a;this.z=(e-c)/a; -this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w, -this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new ba,b=new ba);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z); -this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this}, -dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+= -(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a, -b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});Ra.prototype=Object.assign(Object.create(ka.prototype),{constructor:Ra,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width= -a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Zd.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Zd,isWebGLMultisampleRenderTarget:!0,copy:function(a){Ra.prototype.copy.call(this,a);this.samples=a.samples;return this}});mb.prototype=Object.create(Ra.prototype);mb.prototype.constructor= -mb;mb.prototype.isWebGLRenderTargetCube=!0;nb.prototype=Object.create(V.prototype);nb.prototype.constructor=nb;nb.prototype.isDataTexture=!0;Object.assign(Za.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;he&&(e=m);l>f&&(f=l);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e, -f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;he&&(e=m);l>f&&(f=l);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new n);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))}, -intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},intersectsSphere:function(){var a=new n;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0=-a.constant},intersectsTriangle:function(){function a(a){var e;var f=0;for(e=a.length-3;f<=e;f+=3){h.fromArray(a,f);var g=m.x*Math.abs(h.x)+m.y*Math.abs(h.y)+m.z*Math.abs(h.z),k=b.dot(h),l=c.dot(h),p=d.dot(h);if(Math.max(-Math.max(k,l,p),Math.min(k,l,p))>g)return!1}return!0}var b=new n, -c=new n,d=new n,e=new n,f=new n,g=new n,h=new n,k=new n,m=new n,l=new n;return function(h){if(this.isEmpty())return!1;this.getCenter(k);m.subVectors(this.max,k);b.subVectors(h.a,k);c.subVectors(h.b,k);d.subVectors(h.c,k);e.subVectors(c,b);f.subVectors(d,c);g.subVectors(b,d);h=[0,-e.z,e.y,0,-f.z,f.y,0,-g.z,g.y,e.z,0,-e.x,f.z,0,-f.x,g.z,0,-g.x,-e.y,e.x,0,-f.y,f.x,0,-g.y,g.x,0];if(!a(h))return!1;h=[1,0,0,0,1,0,0,0,1];if(!a(h))return!1;l.crossVectors(e,f);h=[l.x,l.y,l.z];return a(h)}}(),clampPoint:function(a, -b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"),b=new n);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new n;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new n;return function(b){void 0===b&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),b=new Ha);this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min); -this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new n,new n,new n,new n,new n,new n,new n,new n];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b); -a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ha.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this}, -setFromPoints:function(){var a=new Za;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e=c=0,f=b.length;e=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius}, -distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),b=new n);b.copy(a);c>this.radius* -this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0===a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new Za);a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&& -a.radius===this.radius}});Object.assign(Sa.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new n,b=new n;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(), -clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){void 0=== -b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new n);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new n;return function(b,c){void 0===c&&(console.warn("THREE.Plane: .intersectLine() target is now required"),c=new n);var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1b&&0a&&0c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],m=c[7],l=c[8],q=c[9],n=c[10],t=c[11],r=c[12],u=c[13],w=c[14];c=c[15];b[0].setComponents(f-a,m-g,t-l,c-r).normalize();b[1].setComponents(f+a,m+g,t+l,c+r).normalize();b[2].setComponents(f+d,m+h,t+q,c+u).normalize();b[3].setComponents(f-d,m-h,t-q,c-u).normalize();b[4].setComponents(f-e,m-k,t-n,c-w).normalize();b[5].setComponents(f+e, -m+k,t+n,c+w).normalize();return this},intersectsObject:function(){var a=new Ha;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ha;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d= -0;6>d;d++)if(b[d].distanceToPoint(c)d;d++){var e=c[d];a.x=0e.distanceToPoint(a))return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});var U={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( PHYSICAL )\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}\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 GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, 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_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 GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.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( specularColor, dotNV );\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}", -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\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif", -clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - 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:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(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}\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};\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}", -cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif", -defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\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, uv ).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 = min( floor( D ) / 255.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#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, 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_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\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_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\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\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 ) && defined( PHYSICAL )\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\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 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 blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, 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\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif", -envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\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 = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\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 TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * 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 = 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;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\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#endif", -lights_pars_begin:"uniform vec3 ambientLightColor;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\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_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\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\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 );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif", -lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#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#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\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#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor;\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\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\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\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 = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\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#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\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\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * 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( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 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, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = 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#endif", -logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\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#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\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:"#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\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 += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif", -morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * 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#endif\n#endif", -normal_fragment_maps:"#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\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\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\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}\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 = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#if defined( 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_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\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\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( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, 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( 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 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\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\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\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 )\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_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif", -shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\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_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\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 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\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\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}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\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 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}", -uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif", -uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\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#endif", -uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\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 \n\t#include \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:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}", -depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}", -depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}", -distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}", -equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}", -equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", -linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}", -meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_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 \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -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 \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\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 \n\t#include \n\t#include \n\t#include \n}", -meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}", -meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\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 \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -meshphysical_vert:"#define PHYSICAL\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 \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#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 \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}", -normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_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 \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}", -normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_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 \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#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 \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}", -points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}", -points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}", -shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}", -sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}", -sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"}, -gh={clone:Mb,merge:xa},hh={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};Object.assign(K.prototype,{isColor:!0,r:1,g:1,b:1,set:function(a){a&&a.isColor?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setScalar:function(a){this.b=this.g=this.r=a;return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255; -return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b,c,d){b=H.euclideanModulo(b,1);c=H.clamp(c,0,1);d=H.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+ -a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2], -10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/360;var e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2), -16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}a&&0a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}return function(b){this.r=a(b.r);this.g=a(b.g);this.b= -a(b.b);return this}}(),copyLinearToSRGB:function(){function a(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}return function(b){this.r=a(b.r);this.g=a(b.g);this.b=a(b.b);return this}}(),convertSRGBToLinear:function(){this.copySRGBToLinear(this);return this},convertLinearToSRGB:function(){this.copyLinearToSRGB(this);return this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){void 0=== -a&&(console.warn("THREE.Color: .getHSL() target is now required"),a={h:0,s:0,l:0});var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var k=e-f;f=.5>=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(cMath.abs(g)?(this._x=Math.atan2(-m,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-l,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?(this._y=Math.atan2(-l,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(l, --1,1)),.99999>Math.abs(l)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-m,k),this._y=Math.atan2(-l,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order= -b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new J;return function(b,c,d){a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new aa;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x= -a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new n(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(ae.prototype,{set:function(a){this.mask=1<g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e= -this.faceVertexUvs.length;cthis.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;0!==this.rotation&&(d.rotation=this.rotation);!0===this.polygonOffset&&(d.polygonOffset=!0);0!==this.polygonOffsetFactor&&(d.polygonOffsetFactor=this.polygonOffsetFactor);0!==this.polygonOffsetUnits&&(d.polygonOffsetUnits=this.polygonOffsetUnits); -1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize=this.dashSize);void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new n;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a= -new n,b=new n,c=new n;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),m=c.dot(this.direction),l=-c.dot(b),n=c.lengthSq(),v=Math.abs(1-k*k);if(0=-t?e<=t?(h=1/v,d*=h,e*=h,k=d*(d+k*e+2*m)+e*(k*d+e+2*l)+n):(e=h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):(e=-h,d=Math.max(0,-(k*e+m)),k=-d*d+e*(e+2*l)+n):e<=-t?(d=Math.max(0,-(-k*h+m)),e=0b)return null; -b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceSqToPoint(a.center)<=a.radius*a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin); -return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(da||h>c)return null; -if(h>g||g!==g)g=h;if(ac?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new n;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new n,b=new n,c=new n,d=new n;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null; -g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(),applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(ua,{getNormal:function(){var a=new n;return function(b,c,d,e){void 0===e&&(console.warn("THREE.Triangle: .getNormal() target is now required"),e=new n);e.subVectors(d,c);a.subVectors(b, -c);e.cross(a);b=e.lengthSq();return 0=a.x+a.y}}(),getUV:function(){var a=new n;return function(b,c,d,e,f,g,h,k){this.getBarycoord(b,c,d,e,a);k.set(0,0);k.addScaledVector(f,a.x);k.addScaledVector(g,a.y);k.addScaledVector(h,a.z);return k}}()});Object.assign(ua.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this}, -clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){var a=new n,b=new n;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),getMidpoint:function(a){void 0===a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new n);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return ua.getNormal(this.a, -this.b,this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new n);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a,b){return ua.getBarycoord(a,this.a,this.b,this.c,b)},containsPoint:function(a){return ua.containsPoint(a,this.a,this.b,this.c)},getUV:function(a,b,c,d,e){return ua.getUV(a,this.a,this.b,this.c,b,c,d,e)},intersectsBox:function(a){return a.intersectsTriangle(this)},closestPointToPoint:function(){var a= -new n,b=new n,c=new n,d=new n,e=new n,f=new n;return function(g,h){void 0===h&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),h=new n);var k=this.a,m=this.b,l=this.c;a.subVectors(m,k);b.subVectors(l,k);d.subVectors(g,k);var q=a.dot(d),v=b.dot(d);if(0>=q&&0>=v)return h.copy(k);e.subVectors(g,m);var t=a.dot(e),r=b.dot(e);if(0<=t&&r<=t)return h.copy(m);var u=q*r-t*v;if(0>=u&&0<=q&&0>=t)return m=q/(q-t),h.copy(k).addScaledVector(a,m);f.subVectors(g,l);g=a.dot(f);var w= -b.dot(f);if(0<=w&&g<=w)return h.copy(l);q=g*v-q*w;if(0>=q&&0<=v&&0>=w)return u=v/(v-w),h.copy(k).addScaledVector(b,u);v=t*w-g*r;if(0>=v&&0<=r-t&&0<=g-w)return c.subVectors(l,m),u=(r-t)/(r-t+(g-w)),h.copy(m).addScaledVector(c,u);l=1/(v+q+u);m=q*l;u*=l;return h.copy(k).addScaledVector(a,m).addScaledVector(b,u)}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});ya.prototype=Object.create(M.prototype);ya.prototype.constructor=ya;ya.prototype.isMeshBasicMaterial= -!0;ya.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap; -this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;return this};va.prototype=Object.assign(Object.create(E.prototype),{constructor:va,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){E.prototype.copy.call(this,a);this.drawMode=a.drawMode;void 0!==a.morphTargetInfluences&&(this.morphTargetInfluences=a.morphTargetInfluences.slice());void 0!==a.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},a.morphTargetDictionary)); -return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0c.far?null:{distance:b,point:u.clone(),object:a}}function b(b,c,d,e,k,m,l,p,n){f.fromBufferAttribute(k,l);g.fromBufferAttribute(k,p);h.fromBufferAttribute(k,n);if(b=a(b,c,d,e,f,g,h,r))m&&(q.fromBufferAttribute(m,l),v.fromBufferAttribute(m,p),t.fromBufferAttribute(m, -n),b.uv=ua.getUV(r,f,g,h,q,v,t,new B)),m=new Nb(l,p,n),ua.getNormal(f,g,h,m.normal),b.face=m;return b}var c=new J,d=new tb,e=new Ha,f=new n,g=new n,h=new n,k=new n,m=new n,l=new n,q=new B,v=new B,t=new B,r=new n,u=new n;return function(p,n){var u=this.geometry,w=this.material,y=this.matrixWorld;if(void 0!==w&&(null===u.boundingSphere&&u.computeBoundingSphere(),e.copy(u.boundingSphere),e.applyMatrix4(y),!1!==p.ray.intersectsSphere(e)&&(c.getInverse(y),d.copy(p.ray).applyMatrix4(c),null===u.boundingBox|| -!1!==d.intersectsBox(u.boundingBox))))if(u.isBufferGeometry){var z=u.index,C=u.attributes.position,A=u.attributes.uv,F=u.groups;u=u.drawRange;var E,H;if(null!==z)if(Array.isArray(w)){var G=0;for(E=F.length;Ge.far||f.push({distance:r,point:b.clone(),uv:ua.getUV(b,h,k,m,l,q,v,new B),face:null,object:this})}}(),clone:function(){return(new this.constructor(this.material)).copy(this)},copy:function(a){E.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center);return this}}); -Hc.prototype=Object.assign(Object.create(E.prototype),{constructor:Hc,copy:function(a){E.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break; -for(;ef||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}else for(g= -0,r=t.length/3-1;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,m=k.length,g=0;gf||(l.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(l),ud.far||e.push({distance:u, -point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),copy:function(a){E.prototype.copy.call(this,a);this.geometry.copy(a.geometry);this.material.copy(a.material);return this},clone:function(){return(new this.constructor).copy(this)}});W.prototype=Object.assign(Object.create(da.prototype),{constructor:W,isLineSegments:!0,computeLineDistances:function(){var a=new n,b=new n;return function(){var c=this.geometry;if(c.isBufferGeometry)if(null===c.index){for(var d= -c.attributes.position,e=[],f=0,g=d.count;fd.far||e.push({distance:a,distanceToRay:Math.sqrt(f),point:q.clone(),index:c,face:null,object:g}))}var g=this,h=this.geometry,k=this.matrixWorld,m=d.params.Points.threshold;null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=m;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);b.copy(d.ray).applyMatrix4(a); -m/=(this.scale.x+this.scale.y+this.scale.z)/3;var l=m*m;m=new n;var q=new n;if(h.isBufferGeometry){var v=h.index;h=h.attributes.position.array;if(null!==v){var t=v.array;v=0;for(var r=t.length;v=a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Vb.prototype=Object.create(V.prototype);Vb.prototype.constructor=Vb;Vb.prototype.isCompressedTexture=!0;Jc.prototype=Object.create(V.prototype);Jc.prototype.constructor=Jc;Jc.prototype.isCanvasTexture=!0;Kc.prototype=Object.create(V.prototype);Kc.prototype.constructor=Kc;Kc.prototype.isDepthTexture=!0;Wb.prototype=Object.create(C.prototype);Wb.prototype.constructor=Wb;Lc.prototype= -Object.create(G.prototype);Lc.prototype.constructor=Lc;Xb.prototype=Object.create(C.prototype);Xb.prototype.constructor=Xb;Mc.prototype=Object.create(G.prototype);Mc.prototype.constructor=Mc;Aa.prototype=Object.create(C.prototype);Aa.prototype.constructor=Aa;Nc.prototype=Object.create(G.prototype);Nc.prototype.constructor=Nc;Yb.prototype=Object.create(Aa.prototype);Yb.prototype.constructor=Yb;Oc.prototype=Object.create(G.prototype);Oc.prototype.constructor=Oc;vb.prototype=Object.create(Aa.prototype); -vb.prototype.constructor=vb;Pc.prototype=Object.create(G.prototype);Pc.prototype.constructor=Pc;Zb.prototype=Object.create(Aa.prototype);Zb.prototype.constructor=Zb;Qc.prototype=Object.create(G.prototype);Qc.prototype.constructor=Qc;$b.prototype=Object.create(Aa.prototype);$b.prototype.constructor=$b;Rc.prototype=Object.create(G.prototype);Rc.prototype.constructor=Rc;wb.prototype=Object.create(C.prototype);wb.prototype.constructor=wb;wb.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this); -a.path=this.parameters.path.toJSON();return a};Sc.prototype=Object.create(G.prototype);Sc.prototype.constructor=Sc;ac.prototype=Object.create(C.prototype);ac.prototype.constructor=ac;Tc.prototype=Object.create(G.prototype);Tc.prototype.constructor=Tc;bc.prototype=Object.create(C.prototype);bc.prototype.constructor=bc;var ih={triangulate:function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=uf(a,0,e,c,!0),g=[];if(!f)return g;var h;if(d){var k=c;d=[];var m;var l=0;for(m=b.length;l80*c){var t=h=a[0];var r=d=a[1];for(k=c;kh&&(h=l),b>d&&(d=b);h=Math.max(h-t,d-r);h=0!==h?1/h:0}Wc(f,g,c,t,r,h);return g}},ab={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e -ab.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];yf(a);zf(c,a);var f=a.length;b.forEach(yf);for(a=0;aMath.abs(g-k)?[new B(a,1-c),new B(h,1-d), -new B(m,1-e),new B(n,1-b)]:[new B(g,1-c),new B(k,1-d),new B(l,1-e),new B(v,1-b)]}};Yc.prototype=Object.create(G.prototype);Yc.prototype.constructor=Yc;cc.prototype=Object.create(Va.prototype);cc.prototype.constructor=cc;Zc.prototype=Object.create(G.prototype);Zc.prototype.constructor=Zc;zb.prototype=Object.create(C.prototype);zb.prototype.constructor=zb;$c.prototype=Object.create(G.prototype);$c.prototype.constructor=$c;dc.prototype=Object.create(C.prototype);dc.prototype.constructor=dc;ad.prototype= -Object.create(G.prototype);ad.prototype.constructor=ad;ec.prototype=Object.create(C.prototype);ec.prototype.constructor=ec;Ab.prototype=Object.create(G.prototype);Ab.prototype.constructor=Ab;Ab.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);return Bf(this.parameters.shapes,a)};Bb.prototype=Object.create(C.prototype);Bb.prototype.constructor=Bb;Bb.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this);return Bf(this.parameters.shapes,a)};fc.prototype=Object.create(C.prototype); -fc.prototype.constructor=fc;Cb.prototype=Object.create(G.prototype);Cb.prototype.constructor=Cb;bb.prototype=Object.create(C.prototype);bb.prototype.constructor=bb;bd.prototype=Object.create(Cb.prototype);bd.prototype.constructor=bd;cd.prototype=Object.create(bb.prototype);cd.prototype.constructor=cd;dd.prototype=Object.create(G.prototype);dd.prototype.constructor=dd;gc.prototype=Object.create(C.prototype);gc.prototype.constructor=gc;var na=Object.freeze({WireframeGeometry:Wb,ParametricGeometry:Lc, -ParametricBufferGeometry:Xb,TetrahedronGeometry:Nc,TetrahedronBufferGeometry:Yb,OctahedronGeometry:Oc,OctahedronBufferGeometry:vb,IcosahedronGeometry:Pc,IcosahedronBufferGeometry:Zb,DodecahedronGeometry:Qc,DodecahedronBufferGeometry:$b,PolyhedronGeometry:Mc,PolyhedronBufferGeometry:Aa,TubeGeometry:Rc,TubeBufferGeometry:wb,TorusKnotGeometry:Sc,TorusKnotBufferGeometry:ac,TorusGeometry:Tc,TorusBufferGeometry:bc,TextGeometry:Yc,TextBufferGeometry:cc,SphereGeometry:Zc,SphereBufferGeometry:zb,RingGeometry:$c, -RingBufferGeometry:dc,PlaneGeometry:Bc,PlaneBufferGeometry:sb,LatheGeometry:ad,LatheBufferGeometry:ec,ShapeGeometry:Ab,ShapeBufferGeometry:Bb,ExtrudeGeometry:yb,ExtrudeBufferGeometry:Va,EdgesGeometry:fc,ConeGeometry:bd,ConeBufferGeometry:cd,CylinderGeometry:Cb,CylinderBufferGeometry:bb,CircleGeometry:dd,CircleBufferGeometry:gc,BoxGeometry:Ob,BoxBufferGeometry:rb});Db.prototype=Object.create(M.prototype);Db.prototype.constructor=Db;Db.prototype.isShadowMaterial=!0;Db.prototype.copy=function(a){M.prototype.copy.call(this, -a);this.color.copy(a.color);return this};hc.prototype=Object.create(Ca.prototype);hc.prototype.constructor=hc;hc.prototype.isRawShaderMaterial=!0;Wa.prototype=Object.create(M.prototype);Wa.prototype.constructor=Wa;Wa.prototype.isMeshStandardMaterial=!0;Wa.prototype.copy=function(a){M.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity; -this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap=a.metalnessMap;this.alphaMap= -a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Eb.prototype=Object.create(Wa.prototype);Eb.prototype.constructor=Eb;Eb.prototype.isMeshPhysicalMaterial=!0;Eb.prototype.copy=function(a){Wa.prototype.copy.call(this, -a);this.defines={PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearCoat=a.clearCoat;this.clearCoatRoughness=a.clearCoatRoughness;return this};Ja.prototype=Object.create(M.prototype);Ja.prototype.constructor=Ja;Ja.prototype.isMeshPhongMaterial=!0;Ja.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity= -a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity= -a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Fb.prototype=Object.create(Ja.prototype);Fb.prototype.constructor=Fb;Fb.prototype.isMeshToonMaterial=!0;Fb.prototype.copy=function(a){Ja.prototype.copy.call(this,a);this.gradientMap=a.gradientMap; -return this};Gb.prototype=Object.create(M.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isMeshNormalMaterial=!0;Gb.prototype.copy=function(a){M.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth= -a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Hb.prototype=Object.create(M.prototype);Hb.prototype.constructor=Hb;Hb.prototype.isMeshLambertMaterial=!0;Hb.prototype.copy=function(a){M.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap= -a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Ib.prototype= -Object.create(M.prototype);Ib.prototype.constructor=Ib;Ib.prototype.isMeshMatcapMaterial=!0;Ib.prototype.copy=function(a){M.prototype.copy.call(this,a);this.defines={MATCAP:""};this.color.copy(a.color);this.matcap=a.matcap;this.map=a.map;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias; -this.alphaMap=a.alphaMap;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Jb.prototype=Object.create(R.prototype);Jb.prototype.constructor=Jb;Jb.prototype.isLineDashedMaterial=!0;Jb.prototype.copy=function(a){R.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var jh=Object.freeze({ShadowMaterial:Db,SpriteMaterial:jb,RawShaderMaterial:hc,ShaderMaterial:Ca,PointsMaterial:Ia,MeshPhysicalMaterial:Eb, -MeshStandardMaterial:Wa,MeshPhongMaterial:Ja,MeshToonMaterial:Fb,MeshNormalMaterial:Gb,MeshLambertMaterial:Hb,MeshDepthMaterial:gb,MeshDistanceMaterial:hb,MeshBasicMaterial:ya,MeshMatcapMaterial:Ib,LineDashedMaterial:Jb,LineBasicMaterial:R,Material:M}),sa={arraySlice:function(a,b,c){return sa.isTypedArray(a)?new a.constructor(a.subarray(b,void 0!==c?c:a.length)):a.slice(b,c)},convertArray:function(a,b,c){return!a||!c&&a.constructor===b?a:"number"===typeof b.BYTES_PER_ELEMENT?new b(a):Array.prototype.slice.call(a)}, -isTypedArray:function(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)},getKeyframeOrder:function(a){for(var b=a.length,c=Array(b),d=0;d!==b;++d)c[d]=d;c.sort(function(b,c){return a[b]-a[c]});return c},sortedArray:function(a,b,c){for(var d=a.length,e=new a.constructor(d),f=0,g=0;g!==d;++f)for(var h=c[f]*b,k=0;k!==b;++k)e[g++]=a[h+k];return e},flattenJSON:function(a,b,c,d){for(var e=1,f=a[0];void 0!==f&&void 0===f[d];)f=a[e++];if(void 0!==f){var g=f[d];if(void 0!==g)if(Array.isArray(g)){do g= -f[d],void 0!==g&&(b.push(f.time),c.push.apply(c,g)),f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d],void 0!==g&&(b.push(f.time),g.toArray(c,c.length)),f=a[e++];while(void 0!==f)}else{do g=f[d],void 0!==g&&(b.push(f.time),c.push(g)),f=a[e++];while(void 0!==f)}}}};Object.assign(wa.prototype,{evaluate:function(a){var b=this.parameterPositions,c=this._cachedIndex,d=b[c],e=b[c-1];a:{b:{c:{d:if(!(a=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=sa.arraySlice(c,e,f),this.values=sa.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.", -this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&sa.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values, -c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;gg)e=a+1;else if(0b&&(b=0);1Number.EPSILON&&(g.normalize(),c=Math.acos(H.clamp(d[k-1].dot(d[k]),-1,1)),e[k].applyMatrix4(h.makeRotationAxis(g,c))),f[k].crossVectors(d[k],e[k]);if(!0===b)for(c=Math.acos(H.clamp(e[0].dot(e[a]),-1,1)),c/=a,0d;)d+=c;for(;d>c;)d-=c;de&&(e=1);1E-4>d&&(d=e);1E-4>k&&(k=e);Le.initNonuniformCatmullRom(f.x,g.x,h.x,c.x,d,e,k);Me.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,k);Ne.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,k)}else"catmullrom"===this.curveType&&(Le.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),Me.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),Ne.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(Le.calc(a), -Me.calc(a),Ne.calc(a));return b};oa.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;bc.length-2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set(Ef(d,e.x,f.x,g.x,c.x),Ef(d,e.y,f.y,g.y,c.y));return b};Oa.prototype.copy=function(a){L.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths(); -return a[a.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 a=[],b=0,c=0,d=this.curves.length;cNumber.EPSILON){if(0>l&&(g=b[f],k=-k,h=b[e],l=-l),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=ab.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new kb;h.curves=g.curves;b.push(h);return b}var k=!e(f[0].getPoints()); -k=a?!k:k;h=[];var l=[],n=[],q=0;l[q]=void 0;n[q]=[];for(var v=0,t=f.length;vl.opacity&&(l.transparent=!0);d.setTextures(k);return d.parse(l)}}()});var Yd,ye={getContext:function(){void 0===Yd&&(Yd=new (window.AudioContext||window.webkitAudioContext));return Yd},setContext:function(a){Yd=a}};Object.assign(ve.prototype,{load:function(a,b,c,d){var e=new Ka(this.manager);e.setResponseType("arraybuffer");e.setPath(this.path);e.load(a,function(a){a=a.slice(0);ye.getContext().decodeAudioData(a,function(a){b(a)})},c,d)},setPath:function(a){this.path=a; -return this}});Object.assign(Gf.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new J,l=new J;return function(m){if(a!==this||b!==m.focus||c!==m.fov||d!==m.aspect*this.aspect||e!==m.near||f!==m.far||g!==m.zoom||h!==this.eyeSep){a=this;b=m.focus;c=m.fov;d=m.aspect*this.aspect;e=m.near;f=m.far;g=m.zoom;var n=m.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,t=e*Math.tan(H.DEG2RAD*c*.5)/g;l.elements[12]=-h;k.elements[12]=h;var r=-t*d+p;var u=t*d+p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/ -(u-r);this.cameraL.projectionMatrix.copy(n);r=-t*d-p;u=t*d-p;n.elements[0]=2*e/(u-r);n.elements[8]=(u+r)/(u-r);this.cameraR.projectionMatrix.copy(n)}this.cameraL.matrixWorld.copy(m.matrixWorld).multiply(l);this.cameraR.matrixWorld.copy(m.matrixWorld).multiply(k)}}()});ld.prototype=Object.create(E.prototype);ld.prototype.constructor=ld;Object.assign(we.prototype,{start:function(){this.oldTime=this.startTime=("undefined"===typeof performance?Date:performance).now();this.elapsedTime=0;this.running=!0}, -stop:function(){this.getElapsedTime();this.autoStart=this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var b=("undefined"===typeof performance?Date:performance).now();a=(b-this.oldTime)/1E3;this.oldTime=b;this.elapsedTime+=a}return a}});xe.prototype=Object.assign(Object.create(E.prototype),{constructor:xe,getInput:function(){return this.gain},removeFilter:function(){null!== -this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null);return this},getFilter:function(){return this.filter},setFilter:function(a){null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination);return this},getMasterVolume:function(){return this.gain.gain.value}, -setMasterVolume:function(a){this.gain.gain.setTargetAtTime(a,this.context.currentTime,.01);return this},updateMatrixWorld:function(){var a=new n,b=new aa,c=new n,d=new n,e=new we;return function(f){E.prototype.updateMatrixWorld.call(this,f);f=this.context.listener;var g=this.up;this.timeDelta=e.getDelta();this.matrixWorld.decompose(a,b,c);d.set(0,0,-1).applyQuaternion(b);if(f.positionX){var h=this.context.currentTime+this.timeDelta;f.positionX.linearRampToValueAtTime(a.x,h);f.positionY.linearRampToValueAtTime(a.y, -h);f.positionZ.linearRampToValueAtTime(a.z,h);f.forwardX.linearRampToValueAtTime(d.x,h);f.forwardY.linearRampToValueAtTime(d.y,h);f.forwardZ.linearRampToValueAtTime(d.z,h);f.upX.linearRampToValueAtTime(g.x,h);f.upY.linearRampToValueAtTime(g.y,h);f.upZ.linearRampToValueAtTime(g.z,h)}else f.setPosition(a.x,a.y,a.z),f.setOrientation(d.x,d.y,d.z,g.x,g.y,g.z)}}()});lc.prototype=Object.assign(Object.create(E.prototype),{constructor:lc,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl= -!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setMediaElementSource:function(a){this.hasPlaybackControl=!1;this.sourceType="mediaNode";this.source=this.context.createMediaElementSource(a);this.connect();return this},setBuffer:function(a){this.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); -else{var a=this.context.createBufferSource();a.buffer=this.buffer;a.loop=this.loop;a.onended=this.onEnded.bind(this);this.startTime=this.context.currentTime;a.start(this.startTime,this.offset);this.isPlaying=!0;this.source=a;this.setDetune(this.detune);this.setPlaybackRate(this.playbackRate);return this.connect()}},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return!0===this.isPlaying&&(this.source.stop(),this.source.onended= -null,this.offset+=(this.context.currentTime-this.startTime)*this.playbackRate,this.isPlaying=!1),this},stop:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.source.stop(),this.source.onended=null,this.offset=0,this.isPlaying=!1,this},connect:function(){if(0d&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a, -b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){aa.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(Hf.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings, -b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(ma,{Composite:Hf,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new ma.Composite(a,b,c):new ma(a,b,c)},sanitizeNodeName:function(){var a=/[\[\]\.:\/]/g;return function(b){return b.replace(/\s/g,"_").replace(a,"")}}(),parseTrackName:function(){var a="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]", -b=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]");a=/(WCOD+)?/.source.replace("WCOD",a);var c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),d=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),e=new RegExp("^"+b+a+c+d+"$"),f=["material","materials","bones"];return function(a){var b=e.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+a);b={nodeName:b[2],objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&& -b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==f.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b}}(),findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a;if(a.skeleton){var c=a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c= -0;c=b){var n=b++,q=a[n];c[q.uuid]=l;a[l]=q;c[k]=n;a[n]=h;h=0;for(k=e;h!==k;++h){q=d[h];var v=q[l];q[l]=q[n];q[n]=v}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k=arguments[g].uuid,l=d[k];if(void 0!==l)if(delete d[k],lb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0]; -b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a,c=this._clip.duration,d=this.loop,e=this._loopCount,f=2202===d;if(0===a)return-1===e?b:f&&1===(e&1)?c-b:b;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0> -a?-1:1})}else{-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f));if(b>=c||0>b){d=Math.floor(b/c);b-=c*d;e+=Math.abs(d);var g=this.repetitions-e;0>=g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=0a,this._setEndings(a,!a,f)):this._setEndings(!1,!1,f),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:d}))}if(f&& -1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});Ce.prototype= -Object.assign(Object.create(ka.prototype),{constructor:Ce,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],n=l.name,q=k[n];if(void 0===q){q=f[h];if(void 0!==q){null===q._cacheIndex&&(++q.referenceCount,this._addInactiveBinding(q,g,n));continue}q=new Be(ma.create(c,n,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName, -l.getValueSize());++q.referenceCount;this._addInactiveBinding(q,g,n)}f[h]=q;a[h].resultBuffer=q.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b= -a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length}, -get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&athis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new B); -return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new B);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new B;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min); -this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ie.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0=== -a&&(console.warn("THREE.Line3: .getCenter() target is now required"),a=new n);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new n);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b= -new n);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new n,b=new n;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=H.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),c=new n);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a); -this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});md.prototype=Object.create(E.prototype);md.prototype.constructor=md;md.prototype.isImmediateRenderObject=!0;nd.prototype=Object.create(W.prototype);nd.prototype.constructor=nd;nd.prototype.update=function(){var a=new n,b=new n,c=new pa;return function(){var d=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f= -this.geometry.attributes.position,g=this.object.geometry;if(g&&g.isGeometry)for(var h=g.vertices,k=g.faces,l=g=0,n=k.length;lMath.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side=0>b?1:0;this.lookAt(this.plane.normal);E.prototype.updateMatrixWorld.call(this,a)};var Wd,Je;eb.prototype=Object.create(E.prototype);eb.prototype.constructor=eb;eb.prototype.setDirection=function(){var a=new n,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y), -this.quaternion.setFromAxisAngle(a,b))}}();eb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};eb.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};eb.prototype.copy=function(a){E.prototype.copy.call(this,a,!1);this.line.copy(a.line);this.cone.copy(a.cone);return this};eb.prototype.clone= -function(){return(new this.constructor).copy(this)};td.prototype=Object.create(W.prototype);td.prototype.constructor=td;L.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(L.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};Object.assign(cb.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a); -return this.createGeometry(a)},createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var b=new G,c=0,d=a.length;c { - // console.log(e.data); - if(e.data.type){ - for(let i=e.data.body.length-1;i>=0;i--){ - - postMessage(e.data.body[i]); - } - } - - - if(e.data == "on"){ - - update = setInterval("uptrain()", 50); - } - - if(e.data == "off"){ - clearInterval(update); - } -} - - -} -function uptrain(){ - - postMessage(i); -} - -timedCount(); diff --git a/src/jlmap3d/utils/ReStart.js b/src/jlmap3d/main/utils/ReStart.js similarity index 100% rename from src/jlmap3d/utils/ReStart.js rename to src/jlmap3d/main/utils/ReStart.js diff --git a/src/jlmap3d/utils/UpdateTrain.js b/src/jlmap3d/main/utils/UpdateTrain.js similarity index 100% rename from src/jlmap3d/utils/UpdateTrain.js rename to src/jlmap3d/main/utils/UpdateTrain.js diff --git a/src/jlmap3d/utils/UpdateTrainTest.js b/src/jlmap3d/main/utils/UpdateTrainTest.js similarity index 100% rename from src/jlmap3d/utils/UpdateTrainTest.js rename to src/jlmap3d/main/utils/UpdateTrainTest.js diff --git a/src/jmap/theme/beijing_01/planConvert.js b/src/jmap/theme/beijing_01/planConvert.js index 669b123bc..17a3b63fd 100644 --- a/src/jmap/theme/beijing_01/planConvert.js +++ b/src/jmap/theme/beijing_01/planConvert.js @@ -127,7 +127,8 @@ export default { if (index == 0 && train.stationTimeList[index].stationCode != train.stationTimeList[index + 1].stationCode || index == train.stationTimeList.length - 2 && train.stationTimeList[index].secondTime != train.stationTimeList[index + 1].secondTime || index > 0 && index < train.stationTimeList.length - 1) { - opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode]); + const aa = `${train.directionCode}${train.tripNumber}`; + opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode, aa]); } }); diff --git a/src/jmap/theme/chengdu_03/planConvert.js b/src/jmap/theme/chengdu_03/planConvert.js index 0f25c8447..3f7684b29 100644 --- a/src/jmap/theme/chengdu_03/planConvert.js +++ b/src/jmap/theme/chengdu_03/planConvert.js @@ -108,7 +108,8 @@ export default { if (index == 0 && train.stationTimeList[index].stationCode != train.stationTimeList[index + 1].stationCode || index == train.stationTimeList.length - 2 && train.stationTimeList[index].secondTime != train.stationTimeList[index + 1].secondTime || index > 0 && index < train.stationTimeList.length - 1) { - opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode]); + const aa = `${train.directionCode}${train.tripNumber}`; + opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode, aa]); } }); diff --git a/src/jmap/theme/chengdu_04/planConvert.js b/src/jmap/theme/chengdu_04/planConvert.js index ef5489b20..dadb1996b 100644 --- a/src/jmap/theme/chengdu_04/planConvert.js +++ b/src/jmap/theme/chengdu_04/planConvert.js @@ -126,7 +126,8 @@ export default { if (index == 0 && train.stationTimeList[index].stationCode != train.stationTimeList[index + 1].stationCode || index == train.stationTimeList.length - 2 && train.stationTimeList[index].secondTime != train.stationTimeList[index + 1].secondTime || index > 0 && index < train.stationTimeList.length - 1) { - opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode]); + const aa = `${train.directionCode}${train.tripNumber}`; + opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode, aa]); } }); diff --git a/src/jmap/theme/fuzhou_01/planConvert.js b/src/jmap/theme/fuzhou_01/planConvert.js index 027eb69a1..e9671a035 100644 --- a/src/jmap/theme/fuzhou_01/planConvert.js +++ b/src/jmap/theme/fuzhou_01/planConvert.js @@ -146,7 +146,8 @@ export default { /** 计算非折返点车次点坐标集合*/ train.stationTimeList.forEach((elem, index) => { idx = index; - opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode]); + const aa = `${train.directionCode}${train.tripNumber}`; + opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeCoordMap, elem, elem.directionCode, false), elem.stationCode, aa]); }); /** 计算折返点车次坐标点集合*/ @@ -161,7 +162,8 @@ export default { if (train.backup) { /** 创建一条完成的服务数据*/ opt.name += j; - var model = createSeriesModel(opt, Object.assign({ color: hexColor.toCreate() }, lineStyle)); + // var model = createSeriesModel(opt, Object.assign({ color: hexColor.toCreate() }, lineStyle)); + var model = createSeriesModel(opt, Object.assign({ color: '#000' }, lineStyle)); if (model) { models.push(model); opt = { name: '', markPointData: [], data: [] }; @@ -174,7 +176,8 @@ export default { // 不是备用车,按服务添加线 if (!isBackup) { /** 创建一条完成的服务数据*/ - var model = createSeriesModel(opt, Object.assign({ color: hexColor.toCreate() }, lineStyle)); + // var model = createSeriesModel(opt, Object.assign({ color: hexColor.toCreate() }, lineStyle)); + var model = createSeriesModel(opt, Object.assign({ color: '#000' }, lineStyle)); if (model) { models.push(model); } diff --git a/src/main.js b/src/main.js index db2e58341..a1de5feef 100644 --- a/src/main.js +++ b/src/main.js @@ -38,3 +38,4 @@ new Vue({ i18n, render: h => h(App) }); + diff --git a/src/router/index.js b/src/router/index.js index f7c84340d..46224357f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -12,8 +12,8 @@ import LoginScreen from '@/views/login/loginScreen'; import LoginNewPlan from '@/views/login/loginNewPlan'; import LoginPlan from '@/views/login/loginPlan'; -import Jlmap3dedit from '@/views/jlmap3d/jlmap3dedit'; -import Jlmap3d from '@/views/jlmap3d/index'; +import Jlmap3dedit from '@/views/jlmap3d/edit/jlmap3dedit'; +import Jlmap3d from '@/views/jlmap3d/drive/jl3ddrive'; import Display from '@/views/display/index'; import TrainRoom from '@/views/trainRoom/index'; import JointTraining from '@/views/jointTraining/index'; @@ -455,124 +455,145 @@ export const asyncRouter = [ }, { path: '/teach', - redirect: '/teach/home', - component: Teach, + component: Layout, meta: { roles: [admin, userLesson, user] }, children: [ { - path: 'home', - component: TeachHome, + path: '', + redirect: '/teach/home', + component: Teach, meta: { i18n: 'router.teachSystem' - } - }, - { - // 课程详情 - path: 'detail/:lessonId', - component: TeachDetail, - meta: { }, - hidden: true - }, - { - // 实训详情 - path: 'practical/:trainingId/:lessonId', - component: TeachPractical, - meta: { - }, - hidden: true - }, - { - path: 'pay/:lessonId', - component: Pay, - meta: { - }, - hidden: true + children: [ + { + path: 'home', + component: TeachHome + }, + { + // 课程详情 + path: 'detail/:lessonId', + component: TeachDetail, + meta: { + }, + hidden: true + }, + { + // 实训详情 + path: 'practical/:trainingId/:lessonId', + component: TeachPractical, + meta: { + }, + hidden: true + }, + { + path: 'pay/:lessonId', + component: Pay, + meta: { + }, + hidden: true + } + ] } ] }, { path: '/exam', - redirect: '/exam/home', - component: Exam, + component: Layout, meta: { roles: [admin, userExam, user] }, children: [ { - path: 'home', - component: ExamHome, + path: '', + redirect: '/exam/home', + component: Exam, meta: { i18n: 'router.examSystem' - } - }, - { - // 试卷详情 - path: 'detail/:examId', - component: ExamDetail, - hidden: true - }, - { - path: 'course/:lessonId', - component: ExamCourseDetail, - hidden: true - }, - { - // 规则管理 - path: 'examRule/manage', - component: PublishExamRule, - hidden: true - }, - { - path: 'examRule/draft/:mode/:ruleId/:lessonId', - hidden: true, - component: PublishExamRuleDraft - }, - { - path: 'pay/:lessonId', - component: Pay, - hidden: true - }, - { - // 开始考试 - path: 'questionDetail/:examQuestionId', - component: ExamQuestionDetail, - hidden: true - }, - { - // 考试结果 - path: 'result/:userExamId', - component: ExamResult, - hidden: true + }, + children: [ + { + path: 'home', + component: ExamHome + }, + { + // 试卷详情 + path: 'detail/:examId', + component: ExamDetail, + hidden: true + }, + { + path: 'course/:lessonId', + component: ExamCourseDetail, + hidden: true + }, + { + // 规则管理 + path: 'examRule/manage', + component: PublishExamRule, + hidden: true + }, + { + path: 'examRule/draft/:mode/:ruleId/:lessonId', + hidden: true, + component: PublishExamRuleDraft + }, + { + path: 'pay/:lessonId', + component: Pay, + hidden: true + }, + { + // 开始考试 + path: 'questionDetail/:examQuestionId', + component: ExamQuestionDetail, + hidden: true + }, + { + // 考试结果 + path: 'result/:userExamId', + component: ExamResult, + hidden: true + } + ] } ] }, { path: '/demonstration', - redirect: '/demonstration/home', - component: Demonstration, + component: Layout, meta: { roles: [admin, userSimulation, user] }, children: [ { - path: 'home', - component: DemonstrationHome, + path: '', + redirect: '/demonstration/home', + component: Demonstration, meta: { i18n: 'router.demonstrationSystem' - } - }, - { - path: 'detail/:mapId', - component: DemonstrationDetail, - hidden: true - }, - { - path: 'pay/:lessonId', - component: Pay, - hidden: true + }, + children: [ + { + path: 'home', + component: DemonstrationHome, + meta: { + i18n: 'router.demonstrationSystem' + } + }, + { + path: 'detail/:mapId', + component: DemonstrationDetail, + hidden: true + }, + { + path: 'pay/:lessonId', + component: Pay, + hidden: true + } + ] } ] }, diff --git a/src/views/components/pay/index.vue b/src/views/components/pay/index.vue index 8bc5ed109..767388219 100644 --- a/src/views/components/pay/index.vue +++ b/src/views/components/pay/index.vue @@ -90,7 +90,7 @@ export default { }, methods: { resizeHandler: function () { - this.height = this._clientHeight; + this.height = this._clientHeight - 61; }, // 加载课程信息 initLoadPage() { diff --git a/src/views/demonstration/detail/index.vue b/src/views/demonstration/detail/index.vue index 491ab78d0..4695449d0 100644 --- a/src/views/demonstration/detail/index.vue +++ b/src/views/demonstration/detail/index.vue @@ -88,7 +88,11 @@ export default { id: '', name: '', mapId: '', +<<<<<<< HEAD skinCode: '', +======= + skinStyle: '', +>>>>>>> remotes/origin/master remarks: '', prdType: '', prdCode: '', @@ -147,7 +151,11 @@ export default { this.getJointTrainingList(); const rest = await getPublishMapInfo(this.mapId); if (rest && rest.code == 200) { +<<<<<<< HEAD const resp = await getCommodityMapProduct(rest.data.skinCode); +======= + const resp = await getCommodityMapProduct(rest.data.skinStyle); +>>>>>>> remotes/origin/master if (resp.data && resp.data.length) { this.productList = resp.data.sort((a, b) => { return Number(b.prdType) - Number(a.prdType); @@ -163,7 +171,11 @@ export default { } }, resizeHandler: function () { +<<<<<<< HEAD this.height = this._clientHeight; +======= + this.height = this._clientHeight - 50; +>>>>>>> remotes/origin/master }, async getJointTrainingList() { try { @@ -194,7 +206,11 @@ export default { id: resp.data.id, name: resp.data.name, mapId: data.id, +<<<<<<< HEAD skinCode: resp.data.skinCode, +======= + skinStyle: resp.data.skinStyle, +>>>>>>> remotes/origin/master remarks: resp.data.remarks, prdType: resp.data.prdType, prdCode: resp.data.code, diff --git a/src/views/demonstration/home.vue b/src/views/demonstration/home.vue index 9cbe4adac..4499e6653 100644 --- a/src/views/demonstration/home.vue +++ b/src/views/demonstration/home.vue @@ -52,7 +52,7 @@ export default { }, methods: { resizeHandler() { - this.height = this._clientHeight; + this.height = this._clientHeight - 50; } } }; diff --git a/src/views/demonstration/index.vue b/src/views/demonstration/index.vue index 7ab775df4..06223b9d2 100644 --- a/src/views/demonstration/index.vue +++ b/src/views/demonstration/index.vue @@ -50,7 +50,7 @@ export default { }, methods: { resizeHandler() { - this.height = this._clientHeight; + this.height = this._clientHeight - 50; }, refresh() { this.$refs && this.$refs.demonList && this.$refs.demonList.refresh(); diff --git a/src/views/demonstration/list/demonList.vue b/src/views/demonstration/list/demonList.vue index f52978fbb..38f07b7e9 100644 --- a/src/views/demonstration/list/demonList.vue +++ b/src/views/demonstration/list/demonList.vue @@ -18,11 +18,11 @@ @node-click="clickEvent" @node-contextmenu="showContextMenu" > - +  {{ node.label }} + > {{ tnode.label }} diff --git a/src/views/display/index.vue b/src/views/display/index.vue index 11a585297..bd76640eb 100644 --- a/src/views/display/index.vue +++ b/src/views/display/index.vue @@ -43,8 +43,10 @@ - - + + + + @@ -83,8 +85,8 @@ import { EventBus } from '@/scripts/event-bus'; import Vue from 'vue'; // 三维 -import ThreeTest from '@/views/jlmap3d/index'; import Jl3dSimulation from '@/views/jlmap3d/simulation/jl3dsimulation'; +import Jl3dDrive from '@/views/jlmap3d/drive/jl3ddrive'; export default { name: 'DisplayDraft', @@ -103,8 +105,8 @@ export default { MenuScript, MenuSchema, MenuSystemTime, - ThreeTest, - Jl3dSimulation + Jl3dSimulation, + Jl3dDrive }, mixins: [WindowResizeHandler], data() { @@ -527,11 +529,11 @@ export default { if (this.isDrive) { this.panelShow = false; this.drivingShow = true; - this.$refs.Jl3dSimulation.show(this.$route.query.skinCode); + this.$refs.Jl3dDrive.show(this.$route.query.skinStyle); } else { this.panelShow = false; this.simulationShow = true; - this.$refs.ThreeTest.show(this.$route.query.skinCode); + this.$refs.Jl3dSimulation.show(this.$route.query.skinStyle); } }, showpanel() { diff --git a/src/views/exam/detail/courseDetail.vue b/src/views/exam/detail/courseDetail.vue index caa108e56..fcdfd5068 100644 --- a/src/views/exam/detail/courseDetail.vue +++ b/src/views/exam/detail/courseDetail.vue @@ -11,23 +11,23 @@

-
- +
+
-
+
暂无数据
- - + +
@@ -35,114 +35,113 @@
购买 - 权限分发(考试) - 权限转赠 - 查看课程试卷 + 权限分发(考试) + 权限转赠 + 查看课程试卷
\ No newline at end of file + diff --git a/src/views/exam/detail/examDetail.vue b/src/views/exam/detail/examDetail.vue index d5d026fe6..5962d4cc9 100644 --- a/src/views/exam/detail/examDetail.vue +++ b/src/views/exam/detail/examDetail.vue @@ -84,16 +84,16 @@ export default { trainingOperateTypeMap: {} }; }, - watch: { - '$route.params.examId': function (val) { - this.loadInitPage(val); - } - }, computed: { ...mapGetters('trainingList', [ 'trainingList' ]) }, + watch: { + '$route.params.examId': function (val) { + this.loadInitPage(val); + } + }, async mounted() { this.trainingOperateTypeMap = {}; this.$Dictionary.stationControl().then(list => { @@ -122,14 +122,12 @@ export default { }, methods: { resizeHandler: function () { - this.height = this._clientHeight; + this.height = this._clientHeight - 50; }, async getList() { this.typeList = []; await getDetailList('training_type').then(res => { this.typeList = res.data; - }).catch(error => { - reject(error); }); }, async loadInitPage(examId) { diff --git a/src/views/exam/detail/questionDetail.vue b/src/views/exam/detail/questionDetail.vue index 2a8107434..d50a27914 100644 --- a/src/views/exam/detail/questionDetail.vue +++ b/src/views/exam/detail/questionDetail.vue @@ -1,126 +1,121 @@ \ No newline at end of file + diff --git a/src/views/exam/home.vue b/src/views/exam/home.vue index 3109d88f5..974c91cdb 100644 --- a/src/views/exam/home.vue +++ b/src/views/exam/home.vue @@ -1,62 +1,61 @@ \ No newline at end of file + diff --git a/src/views/exam/index.vue b/src/views/exam/index.vue index c6d54dc64..699930bb2 100644 --- a/src/views/exam/index.vue +++ b/src/views/exam/index.vue @@ -58,17 +58,7 @@ export default { }, methods: { resizeHandler() { - this.height = this._clientHeight; - // let width = 0; - // let height = 0; - // if (this.listShow) { - // width = this._clientWidth - 310; - // height = this._clientHeight - 120; - // } else { - // width = this._clientWidth - 10; - // height = this._clientHeight - 120; - // } - // this.$store.dispatch('config/resize', { width: width, height: height }); + this.height = this._clientHeight - 50; }, loadInitData(path) { if (path.indexOf('questionDetail') >= 0) { diff --git a/src/views/exam/list/examList.vue b/src/views/exam/list/examList.vue index c4dd9fd2c..688dcb9ca 100644 --- a/src/views/exam/list/examList.vue +++ b/src/views/exam/list/examList.vue @@ -26,23 +26,23 @@ @node-contextmenu="showContextMenu" @node-click="clickEvent" > - +  {{ node.label }} + > {{ tnode.label }} - +  {{ node.label }} + > {{ tnode.label }} diff --git a/src/views/exam/result.vue b/src/views/exam/result.vue index c0ffece2b..b2fda87f2 100644 --- a/src/views/exam/result.vue +++ b/src/views/exam/result.vue @@ -71,7 +71,7 @@ export default { }, methods: { resizeHandler: function () { - this.height = this._clientHeight; + this.height = this._clientHeight - 50; }, getSummaries(param) { const { columns, data } = param; diff --git a/src/views/jlmap3d/drive/jl3ddrive.vue b/src/views/jlmap3d/drive/jl3ddrive.vue new file mode 100644 index 000000000..8b3cc2641 --- /dev/null +++ b/src/views/jlmap3d/drive/jl3ddrive.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/src/views/jlmap3d/simulation/sceneview/mmi.css b/src/views/jlmap3d/drive/sceneview/mmi.css similarity index 100% rename from src/views/jlmap3d/simulation/sceneview/mmi.css rename to src/views/jlmap3d/drive/sceneview/mmi.css diff --git a/src/views/jlmap3d/simulation/sceneview/mmi.js b/src/views/jlmap3d/drive/sceneview/mmi.js similarity index 98% rename from src/views/jlmap3d/simulation/sceneview/mmi.js rename to src/views/jlmap3d/drive/sceneview/mmi.js index 5da0d2fd0..e381236d3 100644 --- a/src/views/jlmap3d/simulation/sceneview/mmi.js +++ b/src/views/jlmap3d/drive/sceneview/mmi.js @@ -1,8 +1,5 @@ import Vue from 'vue'; -import {Three} from '@/jlmap3d/main/three.min.js'; - - export function mmirender(dom) { let scope = this; diff --git a/src/views/jlmap3d/simulation/sceneview/mmiimage.js b/src/views/jlmap3d/drive/sceneview/mmiimage.js similarity index 100% rename from src/views/jlmap3d/simulation/sceneview/mmiimage.js rename to src/views/jlmap3d/drive/sceneview/mmiimage.js diff --git a/src/views/jlmap3d/simulation/sceneview/mmiview.vue b/src/views/jlmap3d/drive/sceneview/mmiview.vue similarity index 98% rename from src/views/jlmap3d/simulation/sceneview/mmiview.vue rename to src/views/jlmap3d/drive/sceneview/mmiview.vue index 13aca37f1..6b134e3ed 100644 --- a/src/views/jlmap3d/simulation/sceneview/mmiview.vue +++ b/src/views/jlmap3d/drive/sceneview/mmiview.vue @@ -95,9 +95,9 @@ import axios from 'axios'; import { prefixIntrger } from '@/utils/date'; -import { mmirender } from '@/views/jlmap3d/simulation/sceneview/mmi'; +import { mmirender } from '@/views/jlmap3d/drive/sceneview/mmi'; -import { mmiimage } from '@/views/jlmap3d/simulation/sceneview/mmiimage'; +import { mmiimage } from '@/views/jlmap3d/drive/sceneview/mmiimage'; export default { name: 'SimulationMmi', diff --git a/src/views/jlmap3d/simulation/sceneview/tmsview.vue b/src/views/jlmap3d/drive/sceneview/tmsview.vue similarity index 100% rename from src/views/jlmap3d/simulation/sceneview/tmsview.vue rename to src/views/jlmap3d/drive/sceneview/tmsview.vue diff --git a/src/views/jlmap3d/edit/action.vue b/src/views/jlmap3d/edit/component/action.vue similarity index 100% rename from src/views/jlmap3d/edit/action.vue rename to src/views/jlmap3d/edit/component/action.vue diff --git a/src/views/jlmap3d/edit/assets.vue b/src/views/jlmap3d/edit/component/assets.vue similarity index 100% rename from src/views/jlmap3d/edit/assets.vue rename to src/views/jlmap3d/edit/component/assets.vue diff --git a/src/views/jlmap3d/edit/index.vue b/src/views/jlmap3d/edit/component/index.vue similarity index 100% rename from src/views/jlmap3d/edit/index.vue rename to src/views/jlmap3d/edit/component/index.vue diff --git a/src/views/jlmap3d/edit/map3dlist.vue b/src/views/jlmap3d/edit/component/map3dlist.vue similarity index 100% rename from src/views/jlmap3d/edit/map3dlist.vue rename to src/views/jlmap3d/edit/component/map3dlist.vue diff --git a/src/views/jlmap3d/edit/menu.vue b/src/views/jlmap3d/edit/component/menu.vue similarity index 100% rename from src/views/jlmap3d/edit/menu.vue rename to src/views/jlmap3d/edit/component/menu.vue diff --git a/src/views/jlmap3d/edit/property.vue b/src/views/jlmap3d/edit/component/property.vue similarity index 100% rename from src/views/jlmap3d/edit/property.vue rename to src/views/jlmap3d/edit/component/property.vue diff --git a/src/views/jlmap3d/jlmap3dedit.vue b/src/views/jlmap3d/edit/jlmap3dedit.vue similarity index 94% rename from src/views/jlmap3d/jlmap3dedit.vue rename to src/views/jlmap3d/edit/jlmap3dedit.vue index 2d643fac9..e8cac8e33 100644 --- a/src/views/jlmap3d/jlmap3dedit.vue +++ b/src/views/jlmap3d/edit/jlmap3dedit.vue @@ -34,17 +34,17 @@ import { UrlConfig } from '@/router/index'; - import { JLmap3dEdit } from '@/jlmap3d/jlmap3dedit'; + import { JLmap3dEdit } from '@/jlmap3d/edit/jlmap3dedit'; import axios from 'axios'; import { update3dMapData } from '@/api/jlmap3d/load3ddata' import { getmodels } from '@/jlmap3d/edit/connect/getmodels'; //components - import EditProperty from '@/views/jlmap3d/edit/property'; - import EditAction from '@/views/jlmap3d/edit/action'; - import EditAssets from '@/views/jlmap3d/edit/assets'; - import EditMenu from '@/views/jlmap3d/edit/menu'; + import EditProperty from '@/views/jlmap3d/edit/component/property'; + import EditAction from '@/views/jlmap3d/edit/component/action'; + import EditAssets from '@/views/jlmap3d/edit/component/assets'; + import EditMenu from '@/views/jlmap3d/edit/component/menu'; var train; export default { diff --git a/src/views/jlmap3d/index.vue b/src/views/jlmap3d/index.vue deleted file mode 100644 index e16d3d96e..000000000 --- a/src/views/jlmap3d/index.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - diff --git a/src/views/jlmap3d/simulation/jl3dsimulation.vue b/src/views/jlmap3d/simulation/jl3dsimulation.vue index 1fddaec5c..048996a89 100644 --- a/src/views/jlmap3d/simulation/jl3dsimulation.vue +++ b/src/views/jlmap3d/simulation/jl3dsimulation.vue @@ -2,222 +2,182 @@
-
- 车组号:{{trainnum}} {{stoptimes}} -
- - {{showbuttonmsg}} + + 轨道检查 + 道岔检查 + 信号机检查 返回
+ + + + -
- +
+
- - - - - - - - -
- - - - diff --git a/src/views/map/mapdraft/mapedit/mapoperate/switch.vue b/src/views/map/mapdraft/mapedit/mapoperate/switch.vue index e5d469290..eafa8c71a 100644 --- a/src/views/map/mapdraft/mapedit/mapoperate/switch.vue +++ b/src/views/map/mapdraft/mapedit/mapoperate/switch.vue @@ -1,16 +1,16 @@