From a57f928c035d261c46cb41eafca222895fe1f39e Mon Sep 17 00:00:00 2001 From: Natacha Beck Date: Mon, 13 Nov 2017 09:24:30 -0500 Subject: [PATCH] Release 2.5.5 --- .../brainbrowser.surface-viewer.min.js | 47 ++++++++++++++++++ .../brainbrowser.volume-viewer.min.js | 35 +++++++++++++ .../workers/deindex.worker.js | 32 ++++++++++++ .../workers/freesurferasc.intensity.worker.js | 32 ++++++++++++ .../workers/freesurferasc.worker.js | 32 ++++++++++++ .../workers/freesurferbin.intensity.worker.js | 32 ++++++++++++ .../workers/freesurferbin.worker.js | 32 ++++++++++++ .../workers/gifti-reader.js | 35 +++++++++++++ .../workers/gifti.worker.js | 32 ++++++++++++ .../brainbrowser-2.5.5/workers/json.worker.js | 32 ++++++++++++ .../workers/mniobj.worker.js | 32 ++++++++++++ .../workers/text.intensity.worker.js | 32 ++++++++++++ .../workers/wavefrontobj.worker.js | 32 ++++++++++++ .../workers/wireframe.worker.js | 32 ++++++++++++ package.json | 2 +- release/brainbrowser-2.5.5.tar.gz | Bin 0 -> 245023 bytes 16 files changed, 470 insertions(+), 1 deletion(-) create mode 100644 build/brainbrowser-2.5.5/brainbrowser.surface-viewer.min.js create mode 100644 build/brainbrowser-2.5.5/brainbrowser.volume-viewer.min.js create mode 100644 build/brainbrowser-2.5.5/workers/deindex.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/freesurferasc.intensity.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/freesurferasc.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/freesurferbin.intensity.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/freesurferbin.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/gifti-reader.js create mode 100644 build/brainbrowser-2.5.5/workers/gifti.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/json.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/mniobj.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/text.intensity.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/wavefrontobj.worker.js create mode 100644 build/brainbrowser-2.5.5/workers/wireframe.worker.js create mode 100644 release/brainbrowser-2.5.5.tar.gz diff --git a/build/brainbrowser-2.5.5/brainbrowser.surface-viewer.min.js b/build/brainbrowser-2.5.5/brainbrowser.surface-viewer.min.js new file mode 100644 index 00000000..1fcfff0d --- /dev/null +++ b/build/brainbrowser-2.5.5/brainbrowser.surface-viewer.min.js @@ -0,0 +1,47 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b=!1,c=!1,d=!1,e=!1,f=document.createElement("canvas"),g=null;b=!!f,c=!!window.Worker;try{f&&window.WebGLRenderingContext&&(g=f.getContext("webgl")||f.getContext("experimental-webgl")),d=!!g}catch(h){d=!1}d&&(e=!!g.getExtension("OES_element_index_uint")),a.CANVAS_ENABLED=b,a.WEB_WORKERS_ENABLED=c,a.WEBGL_ENABLED=d,a.WEBGL_UINT_INDEX_ENABLED=e}var b="2.5.5";b=b.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":b;var c=window.BrainBrowser={version:b};a(c),window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=[],k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,5),h=l.length,!(3>h)){for(h>4&&(k=parseInt(l[0],10),k*=4,h=4,l=l.slice(1,5)),j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){var d=a.target.result;try{var f=pako.inflate(d);d=f.buffer}catch(g){}finally{if("arraybuffer"!==e)if("function"!=typeof TextDecoder){var i=new Blob([d]),j=new FileReader;j.onload=function(a){b(a.target.result,h,c)},j.readAsText(i)}else{var k=new DataView(d),l=new TextDecoder;d=l.decode(k),b(d,h,c)}else b(d,h,c)}},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},f.readAsArrayBuffer(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.pako=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=h.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==p)throw new Error(k[c]);if(b.header&&h.deflateSetHeader(this.strm,b.header),b.dictionary){var e;if(e="string"==typeof b.dictionary?j.string2buf(b.dictionary):"[object ArrayBuffer]"===m.call(b.dictionary)?new Uint8Array(b.dictionary):b.dictionary,c=h.deflateSetDictionary(this.strm,e),c!==p)throw new Error(k[c]);this._dict_set=!0}}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}function g(a,b){return b=b||{},b.gzip=!0,e(a,b)}var h=a("./zlib/deflate"),i=a("./utils/common"),j=a("./utils/strings"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=Object.prototype.toString,n=0,o=4,p=0,q=1,r=2,s=-1,t=0,u=8;d.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?o:n,"string"==typeof a?e.input=j.string2buf(a):"[object ArrayBuffer]"===m.call(a)?e.input=new Uint8Array(a):e.input=a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new i.Buf8(f),e.next_out=0,e.avail_out=f),c=h.deflate(e,d),c!==q&&c!==p)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&(d===o||d===r))&&("string"===this.options.to?this.onData(j.buf2binstring(i.shrinkBuf(e.output,e.next_out))):this.onData(i.shrinkBuf(e.output,e.next_out)))}while((e.avail_in>0||0===e.avail_out)&&c!==q);return d===o?(c=h.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===p):d===r?(this.onEnd(p),e.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===p&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=d,c.deflate=e,c.deflateRaw=f,c.gzip=g},{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=h.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=g.inflateInit2(this.strm,b.windowBits);if(c!==j.Z_OK)throw new Error(k[c]);this.header=new m,g.inflateGetHeader(this.strm,this.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}var g=a("./zlib/inflate"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/constants"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=a("./zlib/gzheader"),n=Object.prototype.toString;d.prototype.push=function(a,b){var c,d,e,f,k,l,m=this.strm,o=this.options.chunkSize,p=this.options.dictionary,q=!1;if(this.ended)return!1;d=b===~~b?b:b===!0?j.Z_FINISH:j.Z_NO_FLUSH,"string"==typeof a?m.input=i.binstring2buf(a):"[object ArrayBuffer]"===n.call(a)?m.input=new Uint8Array(a):m.input=a,m.next_in=0,m.avail_in=m.input.length;do{if(0===m.avail_out&&(m.output=new h.Buf8(o),m.next_out=0,m.avail_out=o),c=g.inflate(m,j.Z_NO_FLUSH),c===j.Z_NEED_DICT&&p&&(l="string"==typeof p?i.string2buf(p):"[object ArrayBuffer]"===n.call(p)?new Uint8Array(p):p,c=g.inflateSetDictionary(this.strm,l)),c===j.Z_BUF_ERROR&&q===!0&&(c=j.Z_OK,q=!1),c!==j.Z_STREAM_END&&c!==j.Z_OK)return this.onEnd(c),this.ended=!0,!1;m.next_out&&(0===m.avail_out||c===j.Z_STREAM_END||0===m.avail_in&&(d===j.Z_FINISH||d===j.Z_SYNC_FLUSH))&&("string"===this.options.to?(e=i.utf8border(m.output,m.next_out),f=m.next_out-e,k=i.buf2string(m.output,e),m.next_out=f,m.avail_out=o-f,f&&h.arraySet(m.output,m.output,e,f,0),this.onData(k)):this.onData(h.shrinkBuf(m.output,m.next_out))),0===m.avail_in&&0===m.avail_out&&(q=!0)}while((m.avail_in>0||0===m.avail_out)&&c!==j.Z_STREAM_END);return c===j.Z_STREAM_END&&(d=j.Z_FINISH),d===j.Z_FINISH?(c=g.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===j.Z_OK):d===j.Z_SYNC_FLUSH?(this.onEnd(j.Z_OK),m.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===j.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=d,c.inflate=e,c.inflateRaw=f,c.ungzip=e},{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],4:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":3}],5:[function(a,b,c){"use strict";function d(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=d},{}],6:[function(a,b,c){"use strict";b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(a,b,c){"use strict";function d(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function e(a,b,c,d){var e=f,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^e[255&(a^b[h])];return-1^a}var f=d();b.exports=e},{}],8:[function(a,b,c){"use strict";function d(a,b){return a.msg=I[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(E.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){F._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,E.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=G(a.adler,b,e,c):2===a.state.wrap&&(a.adler=H(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-la?a.strstart-(a.w_size-la):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ka,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ka-(m-f),f=m-ka,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-la)){E.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ja)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===J)return ua;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return ua;if(a.strstart-a.block_start>=a.w_size-la&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?ua:ua}function o(a,b){for(var c,d;;){if(a.lookahead=ja&&(a.ins_h=(a.ins_h<=ja)if(d=F._tr_tally(a,a.strstart-a.match_start,a.match_length-ja),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ja){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=ja&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=ja-1)),a.prev_length>=ja&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ja,d=F._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ja),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=ja&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ka;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ka-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ja?(c=F._tr_tally(a,1,a.match_length-ja),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===J)return ua;break}if(a.match_length=0,c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function s(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e}function t(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=D[a.level].max_lazy,a.good_match=D[a.level].good_length,a.nice_match=D[a.level].nice_length,a.max_chain_length=D[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ja-1,a.match_available=0,a.ins_h=0}function u(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new E.Buf16(2*ha),this.dyn_dtree=new E.Buf16(2*(2*fa+1)),this.bl_tree=new E.Buf16(2*(2*ga+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new E.Buf16(ia+1),this.heap=new E.Buf16(2*ea+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new E.Buf16(2*ea+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=Z,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?na:sa,a.adler=2===b.wrap?0:1,b.last_flush=J,F._tr_init(b),O):d(a,Q)}function w(a){var b=v(a);return b===O&&t(a.state),b}function x(a,b){return a&&a.state?2!==a.state.wrap?Q:(a.state.gzhead=b,O):Q}function y(a,b,c,e,f,g){if(!a)return Q;var h=1;if(b===T&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>_||c!==$||8>e||e>15||0>b||b>9||0>g||g>X)return d(a,Q);8===e&&(e=9);var i=new u;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,w(a)}function z(a,b){return y(a,b,$,aa,ba,Y)}function A(a,b){var c,h,k,l;if(!a||!a.state||b>N||0>b)return a?d(a,Q):Q;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ta&&b!==M)return d(a,0===a.avail_out?S:Q);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===na)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=H(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=oa):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,ya),h.status=sa);else{var m=$+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=V||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ma),m+=31-m%31,h.status=sa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===oa)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=pa)}else h.status=pa;if(h.status===pa)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=qa)}else h.status=qa;if(h.status===qa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=ra)}else h.status=ra;if(h.status===ra&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=sa)):h.status=sa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,O}else if(0===a.avail_in&&e(b)<=e(c)&&b!==M)return d(a,S);if(h.status===ta&&0!==a.avail_in)return d(a,S);if(0!==a.avail_in||0!==h.lookahead||b!==J&&h.status!==ta){var o=h.strategy===V?r(h,b):h.strategy===W?q(h,b):D[h.level].func(h,b);if((o===wa||o===xa)&&(h.status=ta),o===ua||o===wa)return 0===a.avail_out&&(h.last_flush=-1),O;if(o===va&&(b===K?F._tr_align(h):b!==N&&(F._tr_stored_block(h,0,0,!1),b===L&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,O}return b!==M?O:h.wrap<=0?P:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?O:P)}function B(a){var b;return a&&a.state?(b=a.state.status,b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra&&b!==sa&&b!==ta?d(a,Q):(a.state=null,b===sa?d(a,R):O)):Q}function C(a,b){var c,d,e,g,h,i,j,k,l=b.length;if(!a||!a.state)return Q;if(c=a.state,g=c.wrap,2===g||1===g&&c.status!==na||c.lookahead)return Q;for(1===g&&(a.adler=G(a.adler,b,l,0)),c.wrap=0,l>=c.w_size&&(0===g&&(f(c.head),c.strstart=0,c.block_start=0,c.insert=0),k=new E.Buf8(c.w_size),E.arraySet(k,b,l-c.w_size,c.w_size,0),b=k,l=c.w_size),h=a.avail_in,i=a.next_in,j=a.input,a.avail_in=l,a.next_in=0,a.input=b,m(c);c.lookahead>=ja;){d=c.strstart,e=c.lookahead-(ja-1);do c.ins_h=(c.ins_h<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",c.mode=d;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&c.sane){a.msg="invalid distance too far back",c.mode=d;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),c.hold=p,c.bits=q}},{}],11:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new s.Buf16(320),this.work=new s.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=L,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new s.Buf32(pa),b.distcode=b.distdyn=new s.Buf32(qa),b.sane=1,b.back=-1,D):G}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):G}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?G:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):G}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==D&&(a.state=null),c):G}function j(a){return i(a,sa)}function k(a){if(ta){var b;for(q=new s.Buf32(512),r=new s.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(w(y,a.lens,0,288,q,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;w(z,a.lens,0,32,r,0,a.work,{bits:5}),ta=!1}a.lencode=q,a.lenbits=9,a.distcode=r,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(s.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),s.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(s.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=u(c.check,Ba,2,0),m=0,n=0,c.mode=M;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=ma;break}if((15&m)!==K){a.msg="unknown compression method",c.mode=ma;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=ma;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=N;case N:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=u(c.check,Ba,4,0)),m=0,n=0,c.mode=O;case O:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=P;case P:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=Q;case Q:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),s.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=R;case R:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=S;case S:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=T;case T:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=W;break;case U:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ja;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=Y;break;case 1:if(k(c),c.mode=ca,b===C){m>>>=2,n-=2;break a}break;case 2:c.mode=_;break;case 3:a.msg="invalid block type",c.mode=ma}m>>>=2,n-=2;break;case Y:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=ma;break}if(c.length=65535&m,m=0,n=0,c.mode=Z,b===C)break a;case Z:c.mode=$;case $:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;s.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=W;break;case _:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=ma;break}c.have=0,c.mode=aa;case aa:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=w(x,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=ma;break}c.have=0,c.mode=ba;case ba:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=ma;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=ma;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===ma)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=ma;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=w(y,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=ma;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=w(z,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=ma;break}if(c.mode=ca,b===C)break a;case ca:c.mode=da;case da:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,v(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===W&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ia;break}if(32&ra){c.back=-1,c.mode=W;break}if(64&ra){a.msg="invalid literal/length code",c.mode=ma;break}c.extra=15&ra,c.mode=ea;case ea:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=fa;case fa:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=ma;break}c.offset=sa,c.extra=15&ra,c.mode=ga;case ga:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=ma;break}c.mode=ha;case ha:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=ma;break}q>c.wnext?(q-=c.wnext,r=c.wsize-q):r=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,r=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[r++];while(--q);0===c.length&&(c.mode=da);break;case ia:if(0===j)break a;f[h++]=c.length,j--,c.mode=da;break;case ja:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[c+E]]++;for(H=C,G=e;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;e>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===h||1!==G))return-1;for(Q[1]=0,D=1;e>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[c+E]&&(r[Q[b[c+E]]++]=E);if(a===h?(N=R=r,y=19):a===i?(N=k,O-=257,R=l,S-=257,y=256):(N=m,R=n,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<f||a===j&&L>g)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[c+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<f||a===j&&L>g)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":3}],13:[function(a,b,c){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length}function f(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b}function g(a){return 256>a?ia[a]:ia[256+(a>>>7)]}function h(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function i(a,b,c){a.bi_valid>X-c?(a.bi_buf|=b<>X-a.bi_valid,a.bi_valid+=c-X):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function l(a){16===a.bi_valid?(h(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function m(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;W>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;V>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function n(a,b,c){var d,e,f=new Array(W+1),g=0;for(d=1;W>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=k(f[h]++,h))}}function o(){var a,b,c,d,f,g=new Array(W+1);for(c=0,d=0;Q-1>d;d++)for(ka[d]=c,a=0;a<1<d;d++)for(la[d]=f,a=0;a<1<>=7;T>d;d++)for(la[d]=f<<7,a=0;a<1<=b;b++)g[b]=0;for(a=0;143>=a;)ga[2*a+1]=8,a++,g[8]++;for(;255>=a;)ga[2*a+1]=9,a++,g[9]++;for(;279>=a;)ga[2*a+1]=7,a++,g[7]++;for(;287>=a;)ga[2*a+1]=8,a++,g[8]++;for(n(ga,S+1,g),a=0;T>a;a++)ha[2*a+1]=5,ha[2*a]=k(a,5);ma=new e(ga,ba,R+1,S,W),na=new e(ha,ca,0,T,W),oa=new e(new Array(0),da,0,U,Y)}function p(a){var b;for(b=0;S>b;b++)a.dyn_ltree[2*b]=0;for(b=0;T>b;b++)a.dyn_dtree[2*b]=0;for(b=0;U>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*Z]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function q(a){a.bi_valid>8?h(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function r(a,b,c,d){q(a),d&&(h(a,c),h(a,~c)),G.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function s(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)t(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],t(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,t(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],m(a,b),n(f,j,a.bl_count)}function w(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*$]++):10>=h?a.bl_tree[2*_]++:a.bl_tree[2*aa]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function x(a,b,c){var d,e,f=-1,g=b[1],h=0,k=7,l=4;for(0===g&&(k=138,l=3),d=0;c>=d;d++)if(e=g,g=b[2*(d+1)+1],!(++hh){do j(a,e,a.bl_tree);while(0!==--h)}else 0!==e?(e!==f&&(j(a,e,a.bl_tree),h--),j(a,$,a.bl_tree),i(a,h-3,2)):10>=h?(j(a,_,a.bl_tree),i(a,h-3,3)):(j(a,aa,a.bl_tree),i(a,h-11,7));h=0,f=e,0===g?(k=138,l=3):e===g?(k=6,l=3):(k=7,l=4)}}function y(a){var b;for(w(a,a.dyn_ltree,a.l_desc.max_code),w(a,a.dyn_dtree,a.d_desc.max_code),v(a,a.bl_desc),b=U-1;b>=3&&0===a.bl_tree[2*ea[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function z(a,b,c,d){var e;for(i(a,b-257,5),i(a,c-1,5),i(a,d-4,4),e=0;d>e;e++)i(a,a.bl_tree[2*ea[e]+1],3);x(a,a.dyn_ltree,b-1),x(a,a.dyn_dtree,c-1)}function A(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return I;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return J;for(b=32;R>b;b++)if(0!==a.dyn_ltree[2*b])return J;return I}function B(a){pa||(o(),pa=!0),a.l_desc=new f(a.dyn_ltree,ma),a.d_desc=new f(a.dyn_dtree,na),a.bl_desc=new f(a.bl_tree,oa),a.bi_buf=0,a.bi_valid=0,p(a)}function C(a,b,c,d){i(a,(L<<1)+(d?1:0),3),r(a,b,c,!0)}function D(a){i(a,M<<1,3),j(a,Z,ga),l(a)}function E(a,b,c,d){var e,f,g=0;a.level>0?(a.strm.data_type===K&&(a.strm.data_type=A(a)),v(a,a.l_desc),v(a,a.d_desc),g=y(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?C(a,b,c,d):a.strategy===H||f===e?(i(a,(M<<1)+(d?1:0),3),u(a,ga,ha)):(i(a,(N<<1)+(d?1:0),3),z(a,a.l_desc.max_code+1,a.d_desc.max_code+1,g+1),u(a,a.dyn_ltree,a.dyn_dtree)),p(a),d&&q(a)}function F(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ja[c]+R+1)]++,a.dyn_dtree[2*g(b)]++),a.last_lit===a.lit_bufsize-1}var G=a("../utils/common"),H=4,I=0,J=1,K=2,L=0,M=1,N=2,O=3,P=258,Q=29,R=256,S=R+1+Q,T=30,U=19,V=2*S+1,W=15,X=16,Y=7,Z=256,$=16,_=17,aa=18,ba=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ca=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],da=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ea=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa=512,ga=new Array(2*(S+2));d(ga);var ha=new Array(2*T);d(ha);var ia=new Array(fa);d(ia);var ja=new Array(P-O+1);d(ja);var ka=new Array(Q);d(ka);var la=new Array(T);d(la);var ma,na,oa,pa=!1;c._tr_init=B,c._tr_stored_block=C,c._tr_flush_block=E,c._tr_tally=F,c._tr_align=D},{"../utils/common":3}],15:[function(a,b,c){"use strict";function d(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=d},{}],"/":[function(a,b,c){"use strict";var d=a("./lib/utils/common").assign,e=a("./lib/deflate"),f=a("./lib/inflate"),g=a("./lib/zlib/constants"),h={};d(h,e,f,g),b.exports=h},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")}),function(){"use strict";BrainBrowser.utils={webglExtensionAvailable:function(a){if(!BrainBrowser.WEBGL_ENABLED)return!1;var b=document.createElement("canvas"),c=b.getContext("webgl")||b.getContext("experimental-webgl");return!!c.getExtension(a)},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},getWorkerImportURL:function(){var a=BrainBrowser.config.get("worker_dir"),b=document.location.origin+"/"+a,c=document.location.href,d=c.lastIndexOf("/");return d>=0&&(b=c.substring(0,d+1)+a),b},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";function a(a){var c,d=BrainBrowser.config.get("worker_dir");if(null===d)throw c="error in SurfaceViewer configuration.\nBrainBrowser configuration parameter 'worker_dir' not defined.\nUse 'BrainBrowser.config.set(\"worker_dir\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);var e,f={deindex:"deindex.worker.js",wireframe:"wireframe.worker.js"},g=0,h=BrainBrowser.config.get("model_types"),i=BrainBrowser.config.get("intensity_data_types");return null!==h&&Object.keys(h).forEach(function(a){f[a+"_model"]=h[a].worker}),null!==i&&Object.keys(i).forEach(function(a){f[a+"_intensity"]=i[a].worker}),e=Object.keys(f),0===e.length?void a():void(window.URL&&window.URL.createObjectURL?e.forEach(function(c){var h,i=d+"/"+f[c],j=new XMLHttpRequest;j.open("GET",i),j.onreadystatechange=function(){4===j.readyState&&(h=j.status,h>=200&&300>h||304===h?b.worker_urls[c]=BrainBrowser.utils.createDataURL(j.response,"application/javascript"):b.worker_urls[c]=i,++g===e.length&&a())},j.send()}):(e.forEach(function(a){b.worker_urls[a]=d+"/"+f[a]}),a()))}var b=BrainBrowser.SurfaceViewer={start:function(c,d){console.log("BrainBrowser Surface Viewer v"+BrainBrowser.version);var e,f={};e="string"==typeof c?document.getElementById(c):c;var g={dom_element:e,model:null,model_data:null,mouse:BrainBrowser.utils.captureMouse(e),touches:BrainBrowser.utils.captureTouch(e),updated:!0,zoom:1,autorotate:{x:!1,y:!1,z:!1},getAttribute:function(a){return f[a]},setAttribute:function(a,b){f[a]=b},getVertex:function(a,c){c=c||{};var d=g.model_data.get(c.model_name).vertices,e=3*a;return new b.THREE.Vector3(d[e],d[e+1],d[e+2])}};return Object.keys(b.modules).forEach(function(a){b.modules[a](g)}),BrainBrowser.events.addEventModel(g),BrainBrowser.events.addEventListener("*",function(a){"draw"!==a&&(g.updated=!0)}),a(function(){d(g)}),g}};b.modules={},b.worker_urls={},BrainBrowser.config.set("model_types.json.worker","json.worker.js"),BrainBrowser.config.set("model_types.mniobj.worker","mniobj.worker.js"),BrainBrowser.config.set("model_types.wavefrontobj.worker","wavefrontobj.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.worker","freesurferbin.worker.js"),BrainBrowser.config.set("model_types.freesurferbin.binary",!0),BrainBrowser.config.set("model_types.freesurferasc.worker","freesurferasc.worker.js"),BrainBrowser.config.set("model_types.gifti.worker","gifti.worker.js"),BrainBrowser.config.set("intensity_data_types.text.worker","text.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.worker","freesurferbin.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.freesurferbin.binary",!0),BrainBrowser.config.set("intensity_data_types.freesurferasc.worker","freesurferasc.intensity.worker.js"),BrainBrowser.config.set("intensity_data_types.gifti.worker","gifti.worker.js")}(),BrainBrowser.SurfaceViewer.parseIntensityData=function(a,b,c){"use strict";var d,e=b+"_intensity";if(!BrainBrowser.SurfaceViewer.worker_urls[e])throw d="error in SurfaceViewer configuration.\nIntensity data worker URL for "+b+" not defined.\nUse 'BrainBrowser.config.set(\"intensity_data_types."+b+".worker\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d);var f=new Worker(BrainBrowser.SurfaceViewer.worker_urls[e]);f.addEventListener("message",function(a){c(a.data),f.terminate()});var g=BrainBrowser.utils.getWorkerImportURL();f.postMessage({cmd:"parse",data:a,url:g})},function(){"use strict";var a=BrainBrowser.SurfaceViewer.THREE={REVISION:"69"};"object"==typeof module&&(module.exports=a),void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:a>0?1:0}),a.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},a.CullFaceNone=0,a.CullFaceBack=1,a.CullFaceFront=2,a.CullFaceFrontBack=3,a.FrontFaceDirectionCW=0,a.FrontFaceDirectionCCW=1,a.BasicShadowMap=0,a.PCFShadowMap=1,a.PCFSoftShadowMap=2,a.FrontSide=0,a.BackSide=1,a.DoubleSide=2,a.NoShading=0,a.FlatShading=1,a.SmoothShading=2,a.NoColors=0,a.FaceColors=1,a.VertexColors=2,a.NoBlending=0,a.NormalBlending=1,a.AdditiveBlending=2,a.SubtractiveBlending=3,a.MultiplyBlending=4,a.CustomBlending=5,a.AddEquation=100,a.SubtractEquation=101,a.ReverseSubtractEquation=102,a.MinEquation=103,a.MaxEquation=104,a.ZeroFactor=200,a.OneFactor=201,a.SrcColorFactor=202,a.OneMinusSrcColorFactor=203,a.SrcAlphaFactor=204,a.OneMinusSrcAlphaFactor=205,a.DstAlphaFactor=206,a.OneMinusDstAlphaFactor=207,a.DstColorFactor=208,a.OneMinusDstColorFactor=209,a.SrcAlphaSaturateFactor=210,a.MultiplyOperation=0,a.MixOperation=1,a.AddOperation=2,a.UVMapping=function(){},a.CubeReflectionMapping=function(){},a.CubeRefractionMapping=function(){},a.SphericalReflectionMapping=function(){},a.SphericalRefractionMapping=function(){},a.RepeatWrapping=1e3,a.ClampToEdgeWrapping=1001,a.MirroredRepeatWrapping=1002,a.NearestFilter=1003,a.NearestMipMapNearestFilter=1004,a.NearestMipMapLinearFilter=1005,a.LinearFilter=1006,a.LinearMipMapNearestFilter=1007,a.LinearMipMapLinearFilter=1008,a.UnsignedByteType=1009,a.ByteType=1010,a.ShortType=1011,a.UnsignedShortType=1012,a.IntType=1013,a.UnsignedIntType=1014,a.FloatType=1015,a.UnsignedShort4444Type=1016,a.UnsignedShort5551Type=1017,a.UnsignedShort565Type=1018,a.AlphaFormat=1019,a.RGBFormat=1020,a.RGBAFormat=1021,a.LuminanceFormat=1022,a.LuminanceAlphaFormat=1023,a.RGB_S3TC_DXT1_Format=2001,a.RGBA_S3TC_DXT1_Format=2002,a.RGBA_S3TC_DXT3_Format=2003,a.RGBA_S3TC_DXT5_Format=2004,a.RGB_PVRTC_4BPPV1_Format=2100,a.RGB_PVRTC_2BPPV1_Format=2101,a.RGBA_PVRTC_4BPPV1_Format=2102,a.RGBA_PVRTC_2BPPV1_Format=2103,a.Color=function(a){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(a); +},a.Color.prototype={constructor:a.Color,r:1,g:1,b:1,set:function(b){return b instanceof a.Color?this.copy(b):"number"==typeof b?this.setHex(b):"string"==typeof b&&this.setStyle(b),this},setHex:function(a){return a=Math.floor(a),this.r=(a>>16&255)/255,this.g=(a>>8&255)/255,this.b=(255&a)/255,this},setRGB:function(a,b,c){return this.r=a,this.g=b,this.b=c,this},setHSL:function(a,b,c){if(0===b)this.r=this.g=this.b=c;else{var d=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+6*(b-a)*(2/3-c):a},e=.5>=c?c*(1+b):c+b-c*b,f=2*c-e;this.r=d(f,e,a+1/3),this.g=d(f,e,a),this.b=d(f,e,a-1/3)}return this},setStyle:function(b){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(b)){var c=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(b);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,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(b)){var c=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(b);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,this}if(/^\#([0-9a-f]{6})$/i.test(b)){var c=/^\#([0-9a-f]{6})$/i.exec(b);return this.setHex(parseInt(c[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(b)){var c=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(b);return this.setHex(parseInt(c[1]+c[1]+c[2]+c[2]+c[3]+c[3],16)),this}return/^(\w+)$/i.test(b)?(this.setHex(a.ColorKeywords[b]),this):void 0},copy:function(a){return this.r=a.r,this.g=a.g,this.b=a.b,this},copyGammaToLinear:function(a){return this.r=a.r*a.r,this.g=a.g*a.g,this.b=a.b*a.b,this},copyLinearToGamma:function(a){return this.r=Math.sqrt(a.r),this.g=Math.sqrt(a.g),this.b=Math.sqrt(a.b),this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;return this.r=a*a,this.g=b*b,this.b=c*c,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),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){var b,c,d=a||{h:0,s:0,l:0},e=this.r,f=this.g,g=this.b,h=Math.max(e,f,g),i=Math.min(e,f,g),j=(i+h)/2;if(i===h)b=0,c=0;else{var k=h-i;switch(c=.5>=j?k/(h+i):k/(2-h-i),h){case e:b=(f-g)/k+(g>f?6:0);break;case f:b=(g-e)/k+2;break;case g:b=(e-f)/k+4}b/=6}return d.h=b,d.s=c,d.l=j,d},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a,b,c){var d=this.getHSL();return d.h+=a,d.s+=b,d.l+=c,this.setHSL(d.h,d.s,d.l),this},add:function(a){return this.r+=a.r,this.g+=a.g,this.b+=a.b,this},addColors:function(a,b){return this.r=a.r+b.r,this.g=a.g+b.g,this.b=a.b+b.b,this},addScalar:function(a){return this.r+=a,this.g+=a,this.b+=a,this},multiply:function(a){return this.r*=a.r,this.g*=a.g,this.b*=a.b,this},multiplyScalar:function(a){return this.r*=a,this.g*=a,this.b*=a,this},lerp:function(a,b){return this.r+=(a.r-this.r)*b,this.g+=(a.g-this.g)*b,this.b+=(a.b-this.b)*b,this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a){return this.r=a[0],this.g=a[1],this.b=a[2],this},toArray:function(){return[this.r,this.g,this.b]},clone:function(){return(new a.Color).setRGB(this.r,this.g,this.b)}},a.ColorKeywords={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,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},a.Quaternion=function(a,b,c,d){this._x=a||0,this._y=b||0,this._z=c||0,this._w=void 0!==d?d:1},a.Quaternion.prototype={constructor:a.Quaternion,_x:0,_y:0,_z:0,_w:0,get x(){return this._x},set x(a){this._x=a,this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a,this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a,this.onChangeCallback()},get w(){return this._w},set w(a){this._w=a,this.onChangeCallback()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._w=d,this.onChangeCallback(),this},copy:function(a){return this._x=a.x,this._y=a.y,this._z=a.z,this._w=a.w,this.onChangeCallback(),this},setFromEuler:function(b,c){if(b instanceof a.Euler==!1)throw new Error("THREE.Quaternion: .setFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var d=Math.cos(b._x/2),e=Math.cos(b._y/2),f=Math.cos(b._z/2),g=Math.sin(b._x/2),h=Math.sin(b._y/2),i=Math.sin(b._z/2);return"XYZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"YXZ"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"ZXY"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f-g*h*i):"ZYX"===b.order?(this._x=g*e*f-d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f+g*h*i):"YZX"===b.order?(this._x=g*e*f+d*h*i,this._y=d*h*f+g*e*i,this._z=d*e*i-g*h*f,this._w=d*e*f-g*h*i):"XZY"===b.order&&(this._x=g*e*f-d*h*i,this._y=d*h*f-g*e*i,this._z=d*e*i+g*h*f,this._w=d*e*f+g*h*i),c!==!1&&this.onChangeCallback(),this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);return this._x=a.x*d,this._y=a.y*d,this._z=a.z*d,this._w=Math.cos(c),this.onChangeCallback(),this},setFromRotationMatrix:function(a){var b,c=a.elements,d=c[0],e=c[4],f=c[8],g=c[1],h=c[5],i=c[9],j=c[2],k=c[6],l=c[10],m=d+h+l;return m>0?(b=.5/Math.sqrt(m+1),this._w=.25/b,this._x=(k-i)*b,this._y=(f-j)*b,this._z=(g-e)*b):d>h&&d>l?(b=2*Math.sqrt(1+d-h-l),this._w=(k-i)/b,this._x=.25*b,this._y=(e+g)/b,this._z=(f+j)/b):h>l?(b=2*Math.sqrt(1+h-d-l),this._w=(f-j)/b,this._x=(e+g)/b,this._y=.25*b,this._z=(i+k)/b):(b=2*Math.sqrt(1+l-d-h),this._w=(g-e)/b,this._x=(f+j)/b,this._y=(i+k)/b,this._z=.25*b),this.onChangeCallback(),this},setFromUnitVectors:function(){var b,c,d=1e-6;return function(e,f){return void 0===b&&(b=new a.Vector3),c=e.dot(f)+1,d>c?(c=0,Math.abs(e.x)>Math.abs(e.z)?b.set(-e.y,e.x,0):b.set(0,-e.z,e.y)):b.crossVectors(e,f),this._x=b.x,this._y=b.y,this._z=b.z,this._w=c,this.normalize(),this}}(),inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),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();return 0===a?(this._x=0,this._y=0,this._z=0,this._w=1):(a=1/a,this._x=this._x*a,this._y=this._y*a,this._z=this._z*a,this._w=this._w*a),this.onChangeCallback(),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)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,i=b._z,j=b._w;return this._x=c*j+f*g+d*i-e*h,this._y=d*j+f*h+e*g-c*i,this._z=e*j+f*i+c*h-d*g,this._w=f*j-c*g-d*h-e*i,this.onChangeCallback(),this},multiplyVector3:function(a){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),a.applyQuaternion(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;if(0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a),g>=1)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.acos(g),i=Math.sqrt(1-g*g);if(Math.abs(i)<.001)return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var j=Math.sin((1-b)*h)/i,k=Math.sin(b*h)/i;return this._w=f*j+this._w*k,this._x=c*j+this._x*k,this._y=d*j+this._y*k,this._z=e*j+this._z*k,this.onChangeCallback(),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){return 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(),this},toArray:function(a,b){return 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,a},onChange:function(a){return this.onChangeCallback=a,this},onChangeCallback:function(){},clone:function(){return new a.Quaternion(this._x,this._y,this._z,this._w)}},a.Quaternion.slerp=function(a,b,c,d){return c.copy(a).slerp(b,d)},a.Vector2=function(a,b){this.x=a||0,this.y=b||0},a.Vector2.prototype={constructor:a.Vector2,set:function(a,b){return this.x=a,this.y=b,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this},add:function(a,b){return void 0!==b?(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,this)},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this},addScalar:function(a){return this.x+=a,this.y+=a,this},sub:function(a,b){return void 0!==b?(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,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this},multiply:function(a){return this.x*=a.x,this.y*=a.y,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this},divide:function(a){return this.x/=a.x,this.y/=a.y,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b}else this.x=0,this.y=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector2,c=new a.Vector2),b.set(d,d),c.set(e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;return b*b+c*c},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a},clone:function(){return new a.Vector2(this.x,this.y)}},a.Vector3=function(a,b,c){this.x=a||0,this.y=b||0,this.z=c||0},a.Vector3.prototype={constructor:a.Vector3,set:function(a,b,c){return this.x=a,this.y=b,this.z=c,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,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 new Error("index is out of range: "+a)}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this},add:function(a,b){return void 0!==b?(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,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this},sub:function(a,b){return void 0!==b?(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,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this},multiply:function(a,b){return void 0!==b?(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,this)},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this},multiplyVectors:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this},applyEuler:function(){var b;return function(c){return c instanceof a.Euler==!1&&console.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromEuler(c)),this}}(),applyAxisAngle:function(){var b;return function(c,d){return void 0===b&&(b=new a.Quaternion),this.applyQuaternion(b.setFromAxisAngle(c,d)),this}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14],this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements,f=1/(e[3]*b+e[7]*c+e[11]*d+e[15]);return this.x=(e[0]*b+e[4]*c+e[8]*d+e[12])*f,this.y=(e[1]*b+e[5]*c+e[9]*d+e[13])*f,this.z=(e[2]*b+e[6]*c+e[10]*d+e[14])*f,this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z,h=a.w,i=h*b+f*d-g*c,j=h*c+g*b-e*d,k=h*d+e*c-f*b,l=-e*b-f*c-g*d;return this.x=i*h+l*-e+j*-g-k*-f,this.y=j*h+l*-f+k*-e-i*-g,this.z=k*h+l*-g+i*-f-j*-e,this},project:function(){var b;return function(c){return void 0===b&&(b=new a.Matrix4),b.multiplyMatrices(c.projectionMatrix,b.getInverse(c.matrixWorld)),this.applyProjection(b)}}(),unproject:function(){var b;return function(c){return void 0===b&&(b=new a.Matrix4),b.multiplyMatrices(c.matrixWorld,b.getInverse(c.projectionMatrix)),this.applyProjection(b)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d,this.y=e[1]*b+e[5]*c+e[9]*d,this.z=e[2]*b+e[6]*c+e[10]*d,this.normalize(),this},divide:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b}else this.x=0,this.y=0,this.z=0;return this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector3,c=new a.Vector3),b.set(d,d,d),c.set(e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,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)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this},cross:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;return this.x=d*a.z-e*a.y,this.y=e*a.x-c*a.z,this.z=c*a.y-d*a.x,this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;return this.x=d*h-e*g,this.y=e*f-c*h,this.z=c*g-d*f,this},projectOnVector:function(){var b,c;return function(d){return void 0===b&&(b=new a.Vector3),b.copy(d).normalize(),c=this.dot(b),this.copy(b).multiplyScalar(c)}}(),projectOnPlane:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),b.copy(this).projectOnVector(c),this.sub(b)}}(),reflect:function(){var b;return function(c){return void 0===b&&(b=new a.Vector3),this.sub(b.copy(c).multiplyScalar(2*this.dot(c)))}}(),angleTo:function(b){var c=this.dot(b)/(this.length()*b.length());return Math.acos(a.Math.clamp(c,-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,d=this.z-a.z;return b*b+c*c+d*d},setEulerFromRotationMatrix:function(a,b){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(a,b){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(a){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(a,b)},setFromMatrixPosition:function(a){return this.x=a.elements[12],this.y=a.elements[13],this.z=a.elements[14],this},setFromMatrixScale:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),d=this.set(a.elements[8],a.elements[9],a.elements[10]).length();return this.x=b,this.y=c,this.z=d,this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;return this.x=d[c],this.y=d[c+1],this.z=d[c+2],this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this.z=a[b+2],this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a[b+2]=this.z,a},clone:function(){return new a.Vector3(this.x,this.y,this.z)}},a.Vector4=function(a,b,c,d){this.x=a||0,this.y=b||0,this.z=c||0,this.w=void 0!==d?d:1},a.Vector4.prototype={constructor:a.Vector4,set:function(a,b,c,d){return this.x=a,this.y=b,this.z=c,this.w=d,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setW:function(a){return this.w=a,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 new Error("index is out of range: "+a)}},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 new Error("index is out of range: "+a)}},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this.w=void 0!==a.w?a.w:1,this},add:function(a,b){return void 0!==b?(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,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this.w+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this.w=a.w+b.w,this},sub:function(a,b){return void 0!==b?(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,this)},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this.w=a.w-b.w,this},multiplyScalar:function(a){return this.x*=a,this.y*=a,this.z*=a,this.w*=a,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w,f=a.elements;return this.x=f[0]*b+f[4]*c+f[8]*d+f[12]*e,this.y=f[1]*b+f[5]*c+f[9]*d+f[13]*e,this.z=f[2]*b+f[6]*c+f[10]*d+f[14]*e,this.w=f[3]*b+f[7]*c+f[11]*d+f[15]*e,this},divideScalar:function(a){if(0!==a){var b=1/a;this.x*=b,this.y*=b,this.z*=b,this.w*=b}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);return 1e-4>b?(this.x=1,this.y=0,this.z=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b),this},setAxisAngleFromRotationMatrix:function(a){var b,c,d,e,f=.01,g=.1,h=a.elements,i=h[0],j=h[4],k=h[8],l=h[1],m=h[5],n=h[9],o=h[2],p=h[6],q=h[10];if(Math.abs(j-l)s&&r>t?f>r?(c=0,d=.707106781,e=.707106781):(c=Math.sqrt(r),d=u/c,e=v/c):s>t?f>s?(c=.707106781,d=0,e=.707106781):(d=Math.sqrt(s),c=u/d,e=w/d):f>t?(c=.707106781,d=.707106781,e=0):(e=Math.sqrt(t),c=v/e,d=w/e),this.set(c,d,e,b),this}var x=Math.sqrt((p-n)*(p-n)+(k-o)*(k-o)+(l-j)*(l-j));return Math.abs(x)<.001&&(x=1),this.x=(p-n)/x,this.y=(k-o)/x,this.z=(l-j)/x,this.w=Math.acos((i+m+q-1)/2),this},min:function(a){return this.x>a.x&&(this.x=a.x),this.y>a.y&&(this.y=a.y),this.z>a.z&&(this.z=a.z),this.w>a.w&&(this.w=a.w),this},max:function(a){return this.xb.x&&(this.x=b.x),this.yb.y&&(this.y=b.y),this.zb.z&&(this.z=b.z),this.wb.w&&(this.w=b.w),this},clampScalar:function(){var b,c;return function(d,e){return void 0===b&&(b=new a.Vector4,c=new a.Vector4),b.set(d,d,d,d),c.set(e,e,e,e),this.clamp(b,c)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,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)},lengthManhattan: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())},setLength:function(a){var b=this.length();return 0!==b&&a!==b&&this.multiplyScalar(a/b),this},lerp:function(a,b){return 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,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){return 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},toArray:function(a,b){return 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,a},clone:function(){return new a.Vector4(this.x,this.y,this.z,this.w)}},a.Euler=function(b,c,d,e){this._x=b||0,this._y=c||0,this._z=d||0,this._order=e||a.Euler.DefaultOrder},a.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],a.Euler.DefaultOrder="XYZ",a.Euler.prototype={constructor:a.Euler,_x:0,_y:0,_z:0,_order:a.Euler.DefaultOrder,get x(){return this._x},set x(a){this._x=a,this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a,this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a,this.onChangeCallback()},get order(){return this._order},set order(a){this._order=a,this.onChangeCallback()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._order=d||this._order,this.onChangeCallback(),this},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._order=a._order,this.onChangeCallback(),this},setFromRotationMatrix:function(b,c){var d=a.Math.clamp,e=b.elements,f=e[0],g=e[4],h=e[8],i=e[1],j=e[5],k=e[9],l=e[2],m=e[6],n=e[10];return c=c||this._order,"XYZ"===c?(this._y=Math.asin(d(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(-k,n),this._z=Math.atan2(-g,f)):(this._x=Math.atan2(m,j),this._z=0)):"YXZ"===c?(this._x=Math.asin(-d(k,-1,1)),Math.abs(k)<.99999?(this._y=Math.atan2(h,n),this._z=Math.atan2(i,j)):(this._y=Math.atan2(-l,f),this._z=0)):"ZXY"===c?(this._x=Math.asin(d(m,-1,1)),Math.abs(m)<.99999?(this._y=Math.atan2(-l,n),this._z=Math.atan2(-g,j)):(this._y=0,this._z=Math.atan2(i,f))):"ZYX"===c?(this._y=Math.asin(-d(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(m,n),this._z=Math.atan2(i,f)):(this._x=0,this._z=Math.atan2(-g,j))):"YZX"===c?(this._z=Math.asin(d(i,-1,1)),Math.abs(i)<.99999?(this._x=Math.atan2(-k,j),this._y=Math.atan2(-l,f)):(this._x=0,this._y=Math.atan2(h,n))):"XZY"===c?(this._z=Math.asin(-d(g,-1,1)),Math.abs(g)<.99999?(this._x=Math.atan2(m,j),this._y=Math.atan2(h,f)):(this._x=Math.atan2(-k,n),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+c),this._order=c,this.onChangeCallback(),this},setFromQuaternion:function(b,c,d){var e=a.Math.clamp,f=b.x*b.x,g=b.y*b.y,h=b.z*b.z,i=b.w*b.w;return c=c||this._order,"XYZ"===c?(this._x=Math.atan2(2*(b.x*b.w-b.y*b.z),i-f-g+h),this._y=Math.asin(e(2*(b.x*b.z+b.y*b.w),-1,1)),this._z=Math.atan2(2*(b.z*b.w-b.x*b.y),i+f-g-h)):"YXZ"===c?(this._x=Math.asin(e(2*(b.x*b.w-b.y*b.z),-1,1)),this._y=Math.atan2(2*(b.x*b.z+b.y*b.w),i-f-g+h),this._z=Math.atan2(2*(b.x*b.y+b.z*b.w),i-f+g-h)):"ZXY"===c?(this._x=Math.asin(e(2*(b.x*b.w+b.y*b.z),-1,1)),this._y=Math.atan2(2*(b.y*b.w-b.z*b.x),i-f-g+h),this._z=Math.atan2(2*(b.z*b.w-b.x*b.y),i-f+g-h)):"ZYX"===c?(this._x=Math.atan2(2*(b.x*b.w+b.z*b.y),i-f-g+h),this._y=Math.asin(e(2*(b.y*b.w-b.x*b.z),-1,1)),this._z=Math.atan2(2*(b.x*b.y+b.z*b.w),i+f-g-h)):"YZX"===c?(this._x=Math.atan2(2*(b.x*b.w-b.z*b.y),i-f+g-h),this._y=Math.atan2(2*(b.y*b.w-b.x*b.z),i+f-g-h),this._z=Math.asin(e(2*(b.x*b.y+b.z*b.w),-1,1))):"XZY"===c?(this._x=Math.atan2(2*(b.x*b.w+b.y*b.z),i-f+g-h),this._y=Math.atan2(2*(b.x*b.z+b.y*b.w),i+f-g-h),this._z=Math.asin(e(2*(b.z*b.w-b.x*b.y),-1,1))):console.warn("THREE.Euler: .setFromQuaternion() given unsupported order: "+c),this._order=c,d!==!1&&this.onChangeCallback(),this},reorder:function(){var b=new a.Quaternion;return function(a){b.setFromEuler(this),this.setFromQuaternion(b,a)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],void 0!==a[3]&&(this._order=a[3]),this.onChangeCallback(),this},toArray:function(){return[this._x,this._y,this._z,this._order]},onChange:function(a){return this.onChangeCallback=a,this},onChangeCallback:function(){},clone:function(){return new a.Euler(this._x,this._y,this._z,this._order)}},a.Line3=function(b,c){this.start=void 0!==b?b:new a.Vector3,this.end=void 0!==c?c:new a.Vector3},a.Line3.prototype={constructor:a.Line3,set:function(a,b){return this.start.copy(a),this.end.copy(b),this},copy:function(a){return this.start.copy(a.start),this.end.copy(a.end),this},center:function(b){var c=b||new a.Vector3;return c.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(b){var c=b||new a.Vector3;return c.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(b,c){var d=c||new a.Vector3;return this.delta(d).multiplyScalar(b).add(this.start)},closestPointToPointParameter:function(){var b=new a.Vector3,c=new a.Vector3;return function(d,e){b.subVectors(d,this.start),c.subVectors(this.end,this.start); +var f=c.dot(c),g=c.dot(b),h=g/f;return e&&(h=a.Math.clamp(h,0,1)),h}}(),closestPointToPoint:function(b,c,d){var e=this.closestPointToPointParameter(b,c),f=d||new a.Vector3;return this.delta(f).multiplyScalar(e).add(this.start)},applyMatrix4:function(a){return this.start.applyMatrix4(a),this.end.applyMatrix4(a),this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)},clone:function(){return(new a.Line3).copy(this)}},a.Box2=function(b,c){this.min=void 0!==b?b:new a.Vector2(1/0,1/0),this.max=void 0!==c?c:new a.Vector2(-(1/0),-(1/0))},a.Box2.prototype={constructor:a.Box2,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;c>b;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(){var b=new a.Vector2;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-(1/0),this},empty:function(){return this.max.xthis.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?!0:!1},getParameter:function(b,c){var d=c||new a.Vector2;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector2;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector2;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box2).copy(this)}},a.Box3=function(b,c){this.min=void 0!==b?b:new a.Vector3(1/0,1/0,1/0),this.max=void 0!==c?c:new a.Vector3(-(1/0),-(1/0),-(1/0))},a.Box3.prototype={constructor:a.Box3,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;c>b;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(){var b=new a.Vector3;return function(a,c){var d=b.copy(c).multiplyScalar(.5);return this.min.copy(a).sub(d),this.max.copy(a).add(d),this}}(),setFromObject:function(){var b=new a.Vector3;return function(c){var d=this;return c.updateMatrixWorld(!0),this.makeEmpty(),c.traverse(function(c){var e=c.geometry;if(void 0!==e)if(e instanceof a.Geometry)for(var f=e.vertices,g=0,h=f.length;h>g;g++)b.copy(f[g]),b.applyMatrix4(c.matrixWorld),d.expandByPoint(b);else if(e instanceof a.BufferGeometry&&void 0!==e.attributes.position)for(var i=e.attributes.position.array,g=0,h=i.length;h>g;g+=3)b.set(i[g],i[g+1],i[g+2]),b.applyMatrix4(c.matrixWorld),d.expandByPoint(b)}),this}}(),copy:function(a){return this.min.copy(a.min),this.max.copy(a.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-(1/0),this},empty:function(){return this.max.xthis.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?!0:!1},getParameter:function(b,c){var d=c||new a.Vector3;return d.set((b.x-this.min.x)/(this.max.x-this.min.x),(b.y-this.min.y)/(this.max.y-this.min.y),(b.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},clampPoint:function(b,c){var d=c||new a.Vector3;return d.copy(b).clamp(this.min,this.max)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.copy(a).clamp(this.min,this.max);return c.sub(a).length()}}(),getBoundingSphere:function(){var b=new a.Vector3;return function(c){var d=c||new a.Sphere;return d.center=this.center(),d.radius=.5*this.size(b).length(),d}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},applyMatrix4:function(){var b=[new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3];return function(a){return b[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(a),b[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(a),b[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(a),b[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(a),b[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(a),b[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(a),b[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(a),b[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(a),this.makeEmpty(),this.setFromPoints(b),this}}(),translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)},clone:function(){return(new a.Box3).copy(this)}},a.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},a.Matrix3.prototype={constructor:a.Matrix3,set:function(a,b,c,d,e,f,g,h,i){var j=this.elements;return j[0]=a,j[3]=b,j[6]=c,j[1]=d,j[4]=e,j[7]=f,j[2]=g,j[5]=h,j[8]=i,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(a){var b=a.elements;return this.set(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8]),this},multiplyVector3:function(a){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),a.applyMatrix3(this)},multiplyVector3Array:function(a){return console.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(a)},applyToVector3Array:function(){var b=new a.Vector3;return function(a,c,d){void 0===c&&(c=0),void 0===d&&(d=a.length);for(var e=0,f=c;d>e;e+=3,f+=3)b.x=a[f],b.y=a[f+1],b.z=a[f+2],b.applyMatrix3(this),a[f]=b.x,a[f+1]=b.y,a[f+2]=b.z;return a}}(),multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[3]*=a,b[6]*=a,b[1]*=a,b[4]*=a,b[7]*=a,b[2]*=a,b[5]*=a,b[8]*=a,this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8];return b*f*j-b*g*i-c*e*j+c*g*h+d*e*i-d*f*h},getInverse:function(a,b){var c=a.elements,d=this.elements;d[0]=c[10]*c[5]-c[6]*c[9],d[1]=-c[10]*c[1]+c[2]*c[9],d[2]=c[6]*c[1]-c[2]*c[5],d[3]=-c[10]*c[4]+c[6]*c[8],d[4]=c[10]*c[0]-c[2]*c[8],d[5]=-c[6]*c[0]+c[2]*c[4],d[6]=c[9]*c[4]-c[5]*c[8],d[7]=-c[9]*c[0]+c[1]*c[8],d[8]=c[5]*c[0]-c[1]*c[4];var e=c[0]*d[0]+c[1]*d[3]+c[2]*d[6];if(0===e){var f="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(f);return console.warn(f),this.identity(),this}return this.multiplyScalar(1/e),this},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[3],b[3]=a,a=b[2],b[2]=b[6],b[6]=a,a=b[5],b[5]=b[7],b[7]=a,this},flattenToArrayOffset:function(a,b){var c=this.elements;return 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},getNormalMatrix:function(a){return this.getInverse(a).transpose(),this},transposeIntoArray:function(a){var b=this.elements;return a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8],this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]]},clone:function(){return(new a.Matrix3).fromArray(this.elements)}},a.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},a.Matrix4.prototype={constructor:a.Matrix4,set:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q=this.elements;return q[0]=a,q[4]=b,q[8]=c,q[12]=d,q[1]=e,q[5]=f,q[9]=g,q[13]=h,q[2]=i,q[6]=j,q[10]=k,q[14]=l,q[3]=m,q[7]=n,q[11]=o,q[15]=p,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(a){return this.elements.set(a.elements),this},extractPosition:function(a){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(a)},copyPosition:function(a){var b=this.elements,c=a.elements;return b[12]=c[12],b[13]=c[13],b[14]=c[14],this},extractRotation:function(){var b=new a.Vector3;return function(a){var c=this.elements,d=a.elements,e=1/b.set(d[0],d[1],d[2]).length(),f=1/b.set(d[4],d[5],d[6]).length(),g=1/b.set(d[8],d[9],d[10]).length();return c[0]=d[0]*e,c[1]=d[1]*e,c[2]=d[2]*e,c[4]=d[4]*f,c[5]=d[5]*f,c[6]=d[6]*f,c[8]=d[8]*g,c[9]=d[9]*g,c[10]=d[10]*g,this}}(),makeRotationFromEuler:function(b){b instanceof a.Euler==!1&&console.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var c=this.elements,d=b.x,e=b.y,f=b.z,g=Math.cos(d),h=Math.sin(d),i=Math.cos(e),j=Math.sin(e),k=Math.cos(f),l=Math.sin(f);if("XYZ"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=-i*l,c[8]=j,c[1]=n+o*j,c[5]=m-p*j,c[9]=-h*i,c[2]=p-m*j,c[6]=o+n*j,c[10]=g*i}else if("YXZ"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q+t*h,c[4]=s*h-r,c[8]=g*j,c[1]=g*l,c[5]=g*k,c[9]=-h,c[2]=r*h-s,c[6]=t+q*h,c[10]=g*i}else if("ZXY"===b.order){var q=i*k,r=i*l,s=j*k,t=j*l;c[0]=q-t*h,c[4]=-g*l,c[8]=s+r*h,c[1]=r+s*h,c[5]=g*k,c[9]=t-q*h,c[2]=-g*j,c[6]=h,c[10]=g*i}else if("ZYX"===b.order){var m=g*k,n=g*l,o=h*k,p=h*l;c[0]=i*k,c[4]=o*j-n,c[8]=m*j+p,c[1]=i*l,c[5]=p*j+m,c[9]=n*j-o,c[2]=-j,c[6]=h*i,c[10]=g*i}else if("YZX"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=x-u*l,c[8]=w*l+v,c[1]=l,c[5]=g*k,c[9]=-h*k,c[2]=-j*k,c[6]=v*l+w,c[10]=u-x*l}else if("XZY"===b.order){var u=g*i,v=g*j,w=h*i,x=h*j;c[0]=i*k,c[4]=-l,c[8]=j*k,c[1]=u*l+x,c[5]=g*k,c[9]=v*l-w,c[2]=w*l-v,c[6]=h*k,c[10]=x*l+u}return c[3]=0,c[7]=0,c[11]=0,c[12]=0,c[13]=0,c[14]=0,c[15]=1,this},setRotationFromQuaternion:function(a){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(a)},makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,i=e+e,j=c*g,k=c*h,l=c*i,m=d*h,n=d*i,o=e*i,p=f*g,q=f*h,r=f*i;return b[0]=1-(m+o),b[4]=k-r,b[8]=l+q,b[1]=k+r,b[5]=1-(j+o),b[9]=n-p,b[2]=l-q,b[6]=n+p,b[10]=1-(j+m),b[3]=0,b[7]=0,b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,this},lookAt:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(a,e,f){var g=this.elements;return d.subVectors(a,e).normalize(),0===d.length()&&(d.z=1),b.crossVectors(f,d).normalize(),0===b.length()&&(d.x+=1e-4,b.crossVectors(f,d).normalize()),c.crossVectors(d,b),g[0]=b.x,g[4]=c.x,g[8]=d.x,g[1]=b.y,g[5]=c.y,g[9]=d.y,g[2]=b.z,g[6]=c.z,g[10]=d.z,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)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],i=c[12],j=c[1],k=c[5],l=c[9],m=c[13],n=c[2],o=c[6],p=c[10],q=c[14],r=c[3],s=c[7],t=c[11],u=c[15],v=d[0],w=d[4],x=d[8],y=d[12],z=d[1],A=d[5],B=d[9],C=d[13],D=d[2],E=d[6],F=d[10],G=d[14],H=d[3],I=d[7],J=d[11],K=d[15];return e[0]=f*v+g*z+h*D+i*H,e[4]=f*w+g*A+h*E+i*I,e[8]=f*x+g*B+h*F+i*J,e[12]=f*y+g*C+h*G+i*K,e[1]=j*v+k*z+l*D+m*H,e[5]=j*w+k*A+l*E+m*I,e[9]=j*x+k*B+l*F+m*J,e[13]=j*y+k*C+l*G+m*K,e[2]=n*v+o*z+p*D+q*H,e[6]=n*w+o*A+p*E+q*I,e[10]=n*x+o*B+p*F+q*J,e[14]=n*y+o*C+p*G+q*K,e[3]=r*v+s*z+t*D+u*H,e[7]=r*w+s*A+t*E+u*I,e[11]=r*x+s*B+t*F+u*J,e[15]=r*y+s*C+t*G+u*K,this},multiplyToArray:function(a,b,c){var d=this.elements;return this.multiplyMatrices(a,b),c[0]=d[0],c[1]=d[1],c[2]=d[2],c[3]=d[3],c[4]=d[4],c[5]=d[5],c[6]=d[6],c[7]=d[7],c[8]=d[8],c[9]=d[9],c[10]=d[10],c[11]=d[11],c[12]=d[12],c[13]=d[13],c[14]=d[14],c[15]=d[15],this},multiplyScalar:function(a){var b=this.elements;return 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,this},multiplyVector3:function(a){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),a.applyProjection(this)},multiplyVector4:function(a){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},multiplyVector3Array:function(a){return console.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(a)},applyToVector3Array:function(){var b=new a.Vector3;return function(a,c,d){void 0===c&&(c=0),void 0===d&&(d=a.length);for(var e=0,f=c;d>e;e+=3,f+=3)b.x=a[f],b.y=a[f+1],b.z=a[f+2],b.applyMatrix4(this),a[f]=b.x,a[f+1]=b.y,a[f+2]=b.z;return a}}(),rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),a.transformDirection(this)},crossVector:function(a){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),a.applyMatrix4(this)},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],i=a[13],j=a[2],k=a[6],l=a[10],m=a[14],n=a[3],o=a[7],p=a[11],q=a[15];return n*(+e*h*k-d*i*k-e*g*l+c*i*l+d*g*m-c*h*m)+o*(+b*h*m-b*i*l+e*f*l-d*f*m+d*i*j-e*h*j)+p*(+b*i*k-b*g*m-e*f*k+c*f*m+e*g*j-c*i*j)+q*(-d*g*j-b*h*k+b*g*l+d*f*k-c*f*l+c*h*j)},transpose:function(){var a,b=this.elements;return a=b[1],b[1]=b[4],b[4]=a,a=b[2],b[2]=b[8],b[8]=a,a=b[6],b[6]=b[9],b[9]=a,a=b[3],b[3]=b[12],b[12]=a,a=b[7],b[7]=b[13],b[13]=a,a=b[11],b[11]=b[14],b[14]=a,this},flattenToArrayOffset:function(a,b){var c=this.elements;return 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],a},getPosition:function(){var b=new a.Vector3;return function(){console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");var a=this.elements;return b.set(a[12],a[13],a[14])}}(),setPosition:function(a){var b=this.elements;return b[12]=a.x,b[13]=a.y,b[14]=a.z,this},getInverse:function(a,b){var c=this.elements,d=a.elements,e=d[0],f=d[4],g=d[8],h=d[12],i=d[1],j=d[5],k=d[9],l=d[13],m=d[2],n=d[6],o=d[10],p=d[14],q=d[3],r=d[7],s=d[11],t=d[15];c[0]=k*p*r-l*o*r+l*n*s-j*p*s-k*n*t+j*o*t,c[4]=h*o*r-g*p*r-h*n*s+f*p*s+g*n*t-f*o*t,c[8]=g*l*r-h*k*r+h*j*s-f*l*s-g*j*t+f*k*t,c[12]=h*k*n-g*l*n-h*j*o+f*l*o+g*j*p-f*k*p,c[1]=l*o*q-k*p*q-l*m*s+i*p*s+k*m*t-i*o*t,c[5]=g*p*q-h*o*q+h*m*s-e*p*s-g*m*t+e*o*t,c[9]=h*k*q-g*l*q-h*i*s+e*l*s+g*i*t-e*k*t,c[13]=g*l*m-h*k*m+h*i*o-e*l*o-g*i*p+e*k*p,c[2]=j*p*q-l*n*q+l*m*r-i*p*r-j*m*t+i*n*t,c[6]=h*n*q-f*p*q-h*m*r+e*p*r+f*m*t-e*n*t,c[10]=f*l*q-h*j*q+h*i*r-e*l*r-f*i*t+e*j*t,c[14]=h*j*m-f*l*m-h*i*n+e*l*n+f*i*p-e*j*p,c[3]=k*n*q-j*o*q-k*m*r+i*o*r+j*m*s-i*n*s,c[7]=f*o*q-g*n*q+g*m*r-e*o*r-f*m*s+e*n*s,c[11]=g*j*q-f*k*q-g*i*r+e*k*r+f*i*s-e*j*s,c[15]=f*k*m-g*j*m+g*i*n-e*k*n-f*i*o+e*j*o;var u=e*c[0]+i*c[4]+m*c[8]+q*c[12];if(0==u){var v="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(b)throw new Error(v);return console.warn(v),this.identity(),this}return this.multiplyScalar(1/u),this},translate:function(a){console.warn("THREE.Matrix4: .translate() has been removed.")},rotateX:function(a){console.warn("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(a){console.warn("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(a){console.warn("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(a,b){console.warn("THREE.Matrix4: .rotateByAxis() has been removed.")},scale:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z;return b[0]*=c,b[4]*=d,b[8]*=e,b[1]*=c,b[5]*=d,b[9]*=e,b[2]*=c,b[6]*=d,b[10]*=e,b[3]*=c,b[7]*=d,b[11]*=e,this},getMaxScaleOnAxis:function(){var a=this.elements,b=a[0]*a[0]+a[1]*a[1]+a[2]*a[2],c=a[4]*a[4]+a[5]*a[5]+a[6]*a[6],d=a[8]*a[8]+a[9]*a[9]+a[10]*a[10];return Math.sqrt(Math.max(b,Math.max(c,d)))},makeTranslation:function(a,b,c){return this.set(1,0,0,a,0,1,0,b,0,0,1,c,0,0,0,1),this},makeRotationX:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(1,0,0,0,0,b,-c,0,0,c,b,0,0,0,0,1),this},makeRotationY:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,0,c,0,0,1,0,0,-c,0,b,0,0,0,0,1),this},makeRotationZ:function(a){var b=Math.cos(a),c=Math.sin(a);return this.set(b,-c,0,0,c,b,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=1-c,f=a.x,g=a.y,h=a.z,i=e*f,j=e*g;return this.set(i*f+c,i*g-d*h,i*h+d*g,0,i*g+d*h,j*g+c,j*h-d*f,0,i*h-d*g,j*h+d*f,e*h*h+c,0,0,0,0,1),this},makeScale:function(a,b,c){return this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1),this},compose:function(a,b,c){return this.makeRotationFromQuaternion(b),this.scale(c),this.setPosition(a),this},decompose:function(){var b=new a.Vector3,c=new a.Matrix4;return function(a,d,e){var f=this.elements,g=b.set(f[0],f[1],f[2]).length(),h=b.set(f[4],f[5],f[6]).length(),i=b.set(f[8],f[9],f[10]).length(),j=this.determinant();0>j&&(g=-g),a.x=f[12],a.y=f[13],a.z=f[14],c.elements.set(this.elements);var k=1/g,l=1/h,m=1/i;return c.elements[0]*=k,c.elements[1]*=k,c.elements[2]*=k,c.elements[4]*=l,c.elements[5]*=l,c.elements[6]*=l,c.elements[8]*=m,c.elements[9]*=m,c.elements[10]*=m,d.setFromRotationMatrix(c),e.x=g,e.y=h,e.z=i,this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements,h=2*e/(b-a),i=2*e/(d-c),j=(b+a)/(b-a),k=(d+c)/(d-c),l=-(f+e)/(f-e),m=-2*f*e/(f-e);return g[0]=h,g[4]=0,g[8]=j,g[12]=0,g[1]=0,g[5]=i,g[9]=k,g[13]=0,g[2]=0,g[6]=0,g[10]=l,g[14]=m,g[3]=0,g[7]=0,g[11]=-1,g[15]=0,this},makePerspective:function(b,c,d,e){var f=d*Math.tan(a.Math.degToRad(.5*b)),g=-f,h=g*c,i=f*c;return this.makeFrustum(h,i,g,f,d,e)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=b-a,i=c-d,j=f-e,k=(b+a)/h,l=(c+d)/i,m=(f+e)/j;return g[0]=2/h,g[4]=0,g[8]=0,g[12]=-k,g[1]=0,g[5]=2/i,g[9]=0,g[13]=-l,g[2]=0,g[6]=0,g[10]=-2/j,g[14]=-m,g[3]=0,g[7]=0,g[11]=0,g[15]=1,this},fromArray:function(a){return this.elements.set(a),this},toArray:function(){var a=this.elements;return[a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]]},clone:function(){return(new a.Matrix4).fromArray(this.elements)}},a.Ray=function(b,c){this.origin=void 0!==b?b:new a.Vector3,this.direction=void 0!==c?c:new a.Vector3},a.Ray.prototype={constructor:a.Ray,set:function(a,b){return this.origin.copy(a),this.direction.copy(b),this},copy:function(a){return this.origin.copy(a.origin),this.direction.copy(a.direction),this},at:function(b,c){var d=c||new a.Vector3;return d.copy(this.direction).multiplyScalar(b).add(this.origin)},recast:function(){var b=new a.Vector3;return function(a){return this.origin.copy(this.at(a,b)),this}}(),closestPointToPoint:function(b,c){var d=c||new a.Vector3;d.subVectors(b,this.origin);var e=d.dot(this.direction);return 0>e?d.copy(this.origin):d.copy(this.direction).multiplyScalar(e).add(this.origin)},distanceToPoint:function(){var b=new a.Vector3;return function(a){var c=b.subVectors(a,this.origin).dot(this.direction);return 0>c?this.origin.distanceTo(a):(b.copy(this.direction).multiplyScalar(c).add(this.origin),b.distanceTo(a))}}(),distanceSqToSegment:function(a,b,c,d){var e,f,g,h,i=a.clone().add(b).multiplyScalar(.5),j=b.clone().sub(a).normalize(),k=.5*a.distanceTo(b),l=this.origin.clone().sub(i),m=-this.direction.dot(j),n=l.dot(this.direction),o=-l.dot(j),p=l.lengthSq(),q=Math.abs(1-m*m);if(q>=0)if(e=m*o-n,f=m*n-o,h=k*q,e>=0)if(f>=-h)if(h>=f){var r=1/q;e*=r,f*=r,g=e*(e+m*f+2*n)+f*(m*e+f+2*o)+p}else f=k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else f=-k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;else-h>=f?(e=Math.max(0,-(-m*k+n)),f=e>0?-k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p):h>=f?(e=0,f=Math.min(Math.max(-k,-o),k),g=f*(f+2*o)+p):(e=Math.max(0,-(m*k+n)),f=e>0?k:Math.min(Math.max(-k,-o),k),g=-e*e+f*(f+2*o)+p);else f=m>0?-k:k,e=Math.max(0,-(m*f+n)),g=-e*e+f*(f+2*o)+p;return c&&c.copy(this.direction.clone().multiplyScalar(e).add(this.origin)),d&&d.copy(j.clone().multiplyScalar(f).add(i)),g},isIntersectionSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},intersectSphere:function(){var b=new a.Vector3;return function(a,c){b.subVectors(a.center,this.origin);var d=b.dot(this.direction),e=b.dot(b)-d*d,f=a.radius*a.radius;if(e>f)return null;var g=Math.sqrt(f-e),h=d-g,i=d+g;return 0>h&&0>i?null:0>h?this.at(i,c):this.at(h,c)}}(),isIntersectionPlane:function(a){var b=a.distanceToPoint(this.origin);if(0===b)return!0;var c=a.normal.dot(this.direction);return 0>c*b?!0:!1},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0==b)return 0==a.distanceToPoint(this.origin)?0:null;var c=-(this.origin.dot(a.normal)+a.constant)/b;return c>=0?c:null},intersectPlane:function(a,b){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)},isIntersectionBox:function(){var b=new a.Vector3;return function(a){return null!==this.intersectBox(a,b)}}(),intersectBox:function(a,b){var c,d,e,f,g,h,i=1/this.direction.x,j=1/this.direction.y,k=1/this.direction.z,l=this.origin;return i>=0?(c=(a.min.x-l.x)*i,d=(a.max.x-l.x)*i):(c=(a.max.x-l.x)*i,d=(a.min.x-l.x)*i),j>=0?(e=(a.min.y-l.y)*j,f=(a.max.y-l.y)*j):(e=(a.max.y-l.y)*j,f=(a.min.y-l.y)*j),c>f||e>d?null:((e>c||c!==c)&&(c=e),(d>f||d!==d)&&(d=f),k>=0?(g=(a.min.z-l.z)*k,h=(a.max.z-l.z)*k):(g=(a.max.z-l.z)*k,h=(a.min.z-l.z)*k),c>h||g>d?null:((g>c||c!==c)&&(c=g),(d>h||d!==d)&&(d=h),0>d?null:this.at(c>=0?c:d,b)))},intersectTriangle:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3,e=new a.Vector3;return function(a,f,g,h,i){c.subVectors(f,a),d.subVectors(g,a),e.crossVectors(c,d);var j,k=this.direction.dot(e);if(k>0){if(h)return null;j=1}else{if(!(0>k))return null;j=-1,k=-k}b.subVectors(this.origin,a);var l=j*this.direction.dot(d.crossVectors(b,d));if(0>l)return null;var m=j*this.direction.dot(c.cross(b));if(0>m)return null;if(l+m>k)return null;var n=-j*b.dot(e);return 0>n?null:this.at(n/k,i)}}(),applyMatrix4:function(a){return this.direction.add(this.origin).applyMatrix4(a),this.origin.applyMatrix4(a),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)},clone:function(){return(new a.Ray).copy(this)}},a.Sphere=function(b,c){this.center=void 0!==b?b:new a.Vector3,this.radius=void 0!==c?c:0},a.Sphere.prototype={constructor:a.Sphere,set:function(a,b){return this.center.copy(a),this.radius=b,this},setFromPoints:function(){var b=new a.Box3;return function(a,c){var d=this.center;void 0!==c?d.copy(c):b.setFromPoints(a).center(d);for(var e=0,f=0,g=a.length;g>f;f++)e=Math.max(e,d.distanceToSquared(a[f]));return this.radius=Math.sqrt(e),this}}(),copy:function(a){return this.center.copy(a.center),this.radius=a.radius,this},empty:function(){return this.radius<=0},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},clampPoint:function(b,c){var d=this.center.distanceToSquared(b),e=c||new a.Vector3;return e.copy(b),d>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(b){var c=b||new a.Box3;return c.set(this.center,this.center),c.expandByScalar(this.radius),c},applyMatrix4:function(a){return this.center.applyMatrix4(a),this.radius=this.radius*a.getMaxScaleOnAxis(),this},translate:function(a){return this.center.add(a),this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius},clone:function(){return(new a.Sphere).copy(this)}},a.Frustum=function(b,c,d,e,f,g){this.planes=[void 0!==b?b:new a.Plane,void 0!==c?c:new a.Plane,void 0!==d?d:new a.Plane,void 0!==e?e:new a.Plane,void 0!==f?f:new a.Plane,void 0!==g?g:new a.Plane]},a.Frustum.prototype={constructor:a.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;return g[0].copy(a),g[1].copy(b),g[2].copy(c),g[3].copy(d),g[4].copy(e),g[5].copy(f),this},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],i=c[5],j=c[6],k=c[7],l=c[8],m=c[9],n=c[10],o=c[11],p=c[12],q=c[13],r=c[14],s=c[15];return b[0].setComponents(g-d,k-h,o-l,s-p).normalize(),b[1].setComponents(g+d,k+h,o+l,s+p).normalize(),b[2].setComponents(g+e,k+i,o+m,s+q).normalize(),b[3].setComponents(g-e,k-i,o-m,s-q).normalize(),b[4].setComponents(g-f,k-j,o-n,s-r).normalize(),b[5].setComponents(g+f,k+j,o+n,s+r).normalize(),this},intersectsObject:function(){var b=new a.Sphere;return function(a){var c=a.geometry;return null===c.boundingSphere&&c.computeBoundingSphere(),b.copy(c.boundingSphere),b.applyMatrix4(a.matrixWorld),this.intersectsSphere(b)}}(),intersectsSphere:function(a){for(var b=this.planes,c=a.center,d=-a.radius,e=0;6>e;e++){var f=b[e].distanceToPoint(c);if(d>f)return!1}return!0},intersectsBox:function(){var b=new a.Vector3,c=new a.Vector3;return function(a){for(var d=this.planes,e=0;6>e;e++){var f=d[e];b.x=f.normal.x>0?a.min.x:a.max.x,c.x=f.normal.x>0?a.max.x:a.min.x,b.y=f.normal.y>0?a.min.y:a.max.y,c.y=f.normal.y>0?a.max.y:a.min.y,b.z=f.normal.z>0?a.min.z:a.max.z,c.z=f.normal.z>0?a.max.z:a.min.z;var g=f.distanceToPoint(b),h=f.distanceToPoint(c);if(0>g&&0>h)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(b[c].distanceToPoint(a)<0)return!1;return!0},clone:function(){return(new a.Frustum).copy(this)}},a.Plane=function(b,c){this.normal=void 0!==b?b:new a.Vector3(1,0,0),this.constant=void 0!==c?c:0},a.Plane.prototype={constructor:a.Plane,set:function(a,b){return this.normal.copy(a),this.constant=b,this},setComponents:function(a,b,c,d){return this.normal.set(a,b,c),this.constant=d,this},setFromNormalAndCoplanarPoint:function(a,b){return this.normal.copy(a),this.constant=-b.dot(this.normal),this},setFromCoplanarPoints:function(){var b=new a.Vector3,c=new a.Vector3;return function(a,d,e){var f=b.subVectors(e,d).cross(c.subVectors(a,d)).normalize();return this.setFromNormalAndCoplanarPoint(f,a),this}}(),copy:function(a){return this.normal.copy(a.normal),this.constant=a.constant,this},normalize:function(){var a=1/this.normal.length();return this.normal.multiplyScalar(a),this.constant*=a,this},negate:function(){return this.constant*=-1,this.normal.negate(),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){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(b,c){var d=this.distanceToPoint(b),e=c||new a.Vector3;return e.copy(this.normal).multiplyScalar(d)},isIntersectionLine:function(a){var b=this.distanceToPoint(a.start),c=this.distanceToPoint(a.end);return 0>b&&c>0||0>c&&b>0},intersectLine:function(){var b=new a.Vector3;return function(c,d){var e=d||new a.Vector3,f=c.delta(b),g=this.normal.dot(f);if(0==g)return 0==this.distanceToPoint(c.start)?e.copy(c.start):void 0;var h=-(c.start.dot(this.normal)+this.constant)/g;return 0>h||h>1?void 0:e.copy(f).multiplyScalar(h).add(c.start)}}(),coplanarPoint:function(b){var c=b||new a.Vector3;return c.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Matrix3;return function(a,e){var f=e||d.getNormalMatrix(a),g=b.copy(this.normal).applyMatrix3(f),h=this.coplanarPoint(c);return h.applyMatrix4(a),this.setFromNormalAndCoplanarPoint(g,h),this}}(),translate:function(a){return this.constant=this.constant-a.dot(this.normal),this},equals:function(a){return a.normal.equals(this.normal)&&a.constant==this.constant},clone:function(){return(new a.Plane).copy(this)}},a.Math={generateUUID:function(){var a,b="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),c=new Array(36),d=0;return function(){for(var e=0;36>e;e++)8==e||13==e||18==e||23==e?c[e]="-":14==e?c[e]="4":(2>=d&&(d=33554432+16777216*Math.random()|0),a=15&d,d>>=4,c[e]=b[19==e?3&a|8:a]);return c.join("")}}(),clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return b>=a?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},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(){var a=Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a}},a.Spline=function(b){function c(a,b,c,d,e,f,g){var h=.5*(c-a),i=.5*(d-b);return(2*(b-c)+h+i)*g+(-3*(b-c)-2*h-i)*f+h*e+b}this.points=b;var d,e,f,g,h,i,j,k,l,m=[],n={x:0,y:0,z:0};this.initFromArray=function(a){this.points=[];for(var b=0;bthis.points.length-2?this.points.length-1:e+1,m[3]=e>this.points.length-3?this.points.length-1:e+2,i=this.points[m[0]],j=this.points[m[1]],k=this.points[m[2]],l=this.points[m[3]],g=f*f,h=f*g,n.x=c(i.x,j.x,k.x,l.x,f,g,h),n.y=c(i.y,j.y,k.y,l.y,f,g,h),n.z=c(i.z,j.z,k.z,l.z,f,g,h),n},this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;c>a;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d},this.getLength=function(b){var c,d,e,f,g=0,h=0,i=0,j=new a.Vector3,k=new a.Vector3,l=[],m=0;for(l[0]=0,b||(b=100),e=this.points.length*b,j.copy(this.points[0]),c=1;e>c;c++)d=c/e,f=this.getPoint(d),k.copy(f),m+=k.distanceTo(j),j.copy(f),g=(this.points.length-1)*d,h=Math.floor(g),h!=i&&(l[h]=m,i=h);return l[l.length]=m,{chunks:l,total:m}},this.reparametrizeByArcLength=function(b){var c,d,e,f,g,h,i,j,k=[],l=new a.Vector3,m=this.getLength(); +for(k.push(l.copy(this.points[0]).clone()),c=1;cd;d++)e=f+d*(1/i)*(g-f),j=this.getPoint(e),k.push(l.copy(j).clone());k.push(l.copy(this.points[c]).clone())}this.points=k}},a.Triangle=function(b,c,d){this.a=void 0!==b?b:new a.Vector3,this.b=void 0!==c?c:new a.Vector3,this.c=void 0!==d?d:new a.Vector3},a.Triangle.normal=function(){var b=new a.Vector3;return function(c,d,e,f){var g=f||new a.Vector3;g.subVectors(e,d),b.subVectors(c,d),g.cross(b);var h=g.lengthSq();return h>0?g.multiplyScalar(1/Math.sqrt(h)):g.set(0,0,0)}}(),a.Triangle.barycoordFromPoint=function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(e,f,g,h,i){b.subVectors(h,f),c.subVectors(g,f),d.subVectors(e,f);var j=b.dot(b),k=b.dot(c),l=b.dot(d),m=c.dot(c),n=c.dot(d),o=j*m-k*k,p=i||new a.Vector3;if(0==o)return p.set(-2,-1,-1);var q=1/o,r=(m*l-k*n)*q,s=(j*n-k*l)*q;return p.set(1-r-s,s,r)}}(),a.Triangle.containsPoint=function(){var b=new a.Vector3;return function(c,d,e,f){var g=a.Triangle.barycoordFromPoint(c,d,e,f,b);return g.x>=0&&g.y>=0&&g.x+g.y<=1}}(),a.Triangle.prototype={constructor:a.Triangle,set:function(a,b,c){return this.a.copy(a),this.b.copy(b),this.c.copy(c),this},setFromPointsAndIndices:function(a,b,c,d){return this.a.copy(a[b]),this.b.copy(a[c]),this.c.copy(a[d]),this},copy:function(a){return this.a.copy(a.a),this.b.copy(a.b),this.c.copy(a.c),this},area:function(){var b=new a.Vector3,c=new a.Vector3;return function(){return b.subVectors(this.c,this.b),c.subVectors(this.a,this.b),.5*b.cross(c).length()}}(),midpoint:function(b){var c=b||new a.Vector3;return c.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(b){return a.Triangle.normal(this.a,this.b,this.c,b)},plane:function(b){var c=b||new a.Plane;return c.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(b,c){return a.Triangle.barycoordFromPoint(b,this.a,this.b,this.c,c)},containsPoint:function(b){return a.Triangle.containsPoint(b,this.a,this.b,this.c)},equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)},clone:function(){return(new a.Triangle).copy(this)}},a.Clock=function(a){this.autoStart=void 0!==a?a:!0,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},a.Clock.prototype={constructor:a.Clock,start:function(){this.startTime=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running&&this.start(),this.running){var b=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now();a=.001*(b-this.oldTime),this.oldTime=b,this.elapsedTime+=a}return a}},a.EventDispatcher=function(){},a.EventDispatcher.prototype={constructor:a.EventDispatcher,apply:function(b){b.addEventListener=a.EventDispatcher.prototype.addEventListener,b.hasEventListener=a.EventDispatcher.prototype.hasEventListener,b.removeEventListener=a.EventDispatcher.prototype.removeEventListener,b.dispatchEvent=a.EventDispatcher.prototype.dispatchEvent},addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]),-1===c[a].indexOf(b)&&c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)?!0:!1},removeEventListener:function(a,b){if(void 0!==this._listeners){var c=this._listeners,d=c[a];if(void 0!==d){var e=d.indexOf(b);-1!==e&&d.splice(e,1)}}},dispatchEvent:function(a){if(void 0!==this._listeners){var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=[],e=c.length,f=0;e>f;f++)d[f]=c[f];for(var f=0;e>f;f++)d[f].call(this,a)}}}},function(a){a.Raycaster=function(b,c,d,e){this.ray=new a.Ray(b,c),this.near=d||0,this.far=e||1/0,this.params={Sprite:{},Mesh:{},PointCloud:{threshold:1},LOD:{},Line:{}}};var b=function(a,b){return a.distance-b.distance},c=function(a,b,d,e){if(a.raycast(b,d),e===!0)for(var f=a.children,g=0,h=f.length;h>g;g++)c(f[g],b,d,!0)};a.Raycaster.prototype={constructor:a.Raycaster,precision:1e-4,linePrecision:1,set:function(a,b){this.ray.set(a,b)},intersectObject:function(a,d){var e=[];return c(a,this,e,d),e.sort(b),e},intersectObjects:function(a,d){var e=[];if(a instanceof Array==!1)return console.log("THREE.Raycaster.intersectObjects: objects is not an Array."),e;for(var f=0,g=a.length;g>f;f++)c(a[f],this,e,d);return e.sort(b),e}}}(a),a.Object3D=function(){Object.defineProperty(this,"id",{value:a.Object3DIdCount++}),this.uuid=a.Math.generateUUID(),this.name="",this.type="Object3D",this.parent=void 0,this.children=[],this.up=a.Object3D.DefaultUp.clone();var b=new a.Vector3,c=new a.Euler,d=new a.Quaternion,e=new a.Vector3(1,1,1),f=function(){d.setFromEuler(c,!1)},g=function(){c.setFromQuaternion(d,void 0,!1)};c.onChange(f),d.onChange(g),Object.defineProperties(this,{position:{enumerable:!0,value:b},rotation:{enumerable:!0,value:c},quaternion:{enumerable:!0,value:d},scale:{enumerable:!0,value:e}}),this.renderDepth=null,this.rotationAutoUpdate=!0,this.matrix=new a.Matrix4,this.matrixWorld=new a.Matrix4,this.matrixAutoUpdate=!0,this.matrixWorldNeedsUpdate=!1,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.userData={}},a.Object3D.DefaultUp=new a.Vector3(0,1,0),a.Object3D.prototype={constructor:a.Object3D,get eulerOrder(){return console.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order."),this.rotation.order},set eulerOrder(a){console.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order."),this.rotation.order=a},get useQuaternion(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set useQuaternion(a){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix),this.matrix.decompose(this.position,this.quaternion,this.scale)},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(){var b=new a.Quaternion;return function(a,c){return b.setFromAxisAngle(a,c),this.quaternion.multiply(b),this}}(),rotateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.rotateOnAxis(b,a)}}(),rotateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.rotateOnAxis(b,a)}}(),translateOnAxis:function(){var b=new a.Vector3;return function(a,c){return b.copy(a).applyQuaternion(this.quaternion),this.position.add(b.multiplyScalar(c)),this}}(),translate:function(a,b){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(b,a)},translateX:function(){var b=new a.Vector3(1,0,0);return function(a){return this.translateOnAxis(b,a)}}(),translateY:function(){var b=new a.Vector3(0,1,0);return function(a){return this.translateOnAxis(b,a)}}(),translateZ:function(){var b=new a.Vector3(0,0,1);return function(a){return this.translateOnAxis(b,a)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var b=new a.Matrix4;return function(a){return a.applyMatrix4(b.getInverse(this.matrixWorld))}}(),lookAt:function(){var b=new a.Matrix4;return function(a){b.lookAt(a,this.position,this.up),this.quaternion.setFromRotationMatrix(b)}}(),add:function(b){if(arguments.length>1){for(var c=0;c1)for(var b=0;bc;c++){var e=this.children[c],f=e.getObjectById(a,b);if(void 0!==f)return f}return void 0},getObjectByName:function(a,b){if(this.name===a)return this;for(var c=0,d=this.children.length;d>c;c++){var e=this.children[c],f=e.getObjectByName(a,b);if(void 0!==f)return f}return void 0},getWorldPosition:function(b){var c=b||new a.Vector3;return this.updateMatrixWorld(!0),c.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var b=new a.Vector3,c=new a.Vector3;return function(d){var e=d||new a.Quaternion;return this.updateMatrixWorld(!0),this.matrixWorld.decompose(b,e,c),e}}(),getWorldRotation:function(){var b=new a.Quaternion;return function(c){var d=c||new a.Euler;return this.getWorldQuaternion(b),d.setFromQuaternion(b,this.rotation.order,!1)}}(),getWorldScale:function(){var b=new a.Vector3,c=new a.Quaternion;return function(d){var e=d||new a.Vector3;return this.updateMatrixWorld(!0),this.matrixWorld.decompose(b,c,e),e}}(),getWorldDirection:function(){var b=new a.Quaternion;return function(c){var d=c||new a.Vector3;return this.getWorldQuaternion(b),d.set(0,0,1).applyQuaternion(b)}}(),raycast:function(){},traverse:function(a){a(this);for(var b=0,c=this.children.length;c>b;b++)this.children[b].traverse(a)},traverseVisible:function(a){if(this.visible!==!1){a(this);for(var b=0,c=this.children.length;c>b;b++)this.children[b].traverseVisible(a)}},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate===!0&&this.updateMatrix(),(this.matrixWorldNeedsUpdate===!0||a===!0)&&(void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0);for(var b=0,c=this.children.length;c>b;b++)this.children[b].updateMatrixWorld(a)},toJSON:function(){var b={metadata:{version:4.3,type:"Object",generator:"ObjectExporter"}},c={},d=function(a){if(void 0===b.geometries&&(b.geometries=[]),void 0===c[a.uuid]){var d=a.toJSON();delete d.metadata,c[a.uuid]=d,b.geometries.push(d)}return a.uuid},e={},f=function(a){if(void 0===b.materials&&(b.materials=[]),void 0===e[a.uuid]){var c=a.toJSON();delete c.metadata,e[a.uuid]=c,b.materials.push(c)}return a.uuid},g=function(b){var c={};if(c.uuid=b.uuid,c.type=b.type,""!==b.name&&(c.name=b.name),"{}"!==JSON.stringify(b.userData)&&(c.userData=b.userData),b.visible!==!0&&(c.visible=b.visible),b instanceof a.PerspectiveCamera?(c.fov=b.fov,c.aspect=b.aspect,c.near=b.near,c.far=b.far):b instanceof a.OrthographicCamera?(c.left=b.left,c.right=b.right,c.top=b.top,c.bottom=b.bottom,c.near=b.near,c.far=b.far):b instanceof a.AmbientLight?c.color=b.color.getHex():b instanceof a.DirectionalLight?(c.color=b.color.getHex(),c.intensity=b.intensity):b instanceof a.PointLight?(c.color=b.color.getHex(),c.intensity=b.intensity,c.distance=b.distance):b instanceof a.SpotLight?(c.color=b.color.getHex(),c.intensity=b.intensity,c.distance=b.distance,c.angle=b.angle,c.exponent=b.exponent):b instanceof a.HemisphereLight?(c.color=b.color.getHex(),c.groundColor=b.groundColor.getHex()):b instanceof a.Mesh?(c.geometry=d(b.geometry),c.material=f(b.material)):b instanceof a.Line?(c.geometry=d(b.geometry),c.material=f(b.material)):b instanceof a.Sprite&&(c.material=f(b.material)),c.matrix=b.matrix.toArray(),b.children.length>0){c.children=[];for(var e=0;ec;c++)b.vertexNormals[c]=this.vertexNormals[c].clone();for(var c=0,d=this.vertexColors.length;d>c;c++)b.vertexColors[c]=this.vertexColors[c].clone();for(var c=0,d=this.vertexTangents.length;d>c;c++)b.vertexTangents[c]=this.vertexTangents[c].clone();return b}},a.Face4=function(b,c,d,e,f,g,h){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new a.Face3(b,c,d,f,g,h)},a.BufferAttribute=function(a,b){this.array=a,this.itemSize=b,this.needsUpdate=!1},a.BufferAttribute.prototype={constructor:a.BufferAttribute,get length(){return this.array.length},copyAt:function(a,b,c){a*=this.itemSize,c*=b.itemSize;for(var d=0,e=this.itemSize;e>d;d++)this.array[a+d]=b.array[c+d]},set:function(a){return this.array.set(a),this},setX:function(a,b){return this.array[a*this.itemSize]=b,this},setY:function(a,b){return this.array[a*this.itemSize+1]=b,this},setZ:function(a,b){return this.array[a*this.itemSize+2]=b,this},setXY:function(a,b,c){return a*=this.itemSize,this.array[a]=b,this.array[a+1]=c,this},setXYZ:function(a,b,c,d){return a*=this.itemSize,this.array[a]=b,this.array[a+1]=c,this.array[a+2]=d,this},setXYZW:function(a,b,c,d,e){return a*=this.itemSize,this.array[a]=b,this.array[a+1]=c,this.array[a+2]=d,this.array[a+3]=e,this},clone:function(){return new a.BufferAttribute(new this.array.constructor(this.array),this.itemSize)}},a.Int8Attribute=function(b,c){return console.warn("THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Uint8Attribute=function(b,c){return console.warn("THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Uint8ClampedAttribute=function(b,c){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Int16Attribute=function(b,c){return console.warn("THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Uint16Attribute=function(b,c){return console.warn("THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Int32Attribute=function(b,c){return console.warn("THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Uint32Attribute=function(b,c){return console.warn("THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Float32Attribute=function(b,c){return console.warn("THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.Float64Attribute=function(b,c){return console.warn("THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead."),new a.BufferAttribute(b,c)},a.BufferGeometry=function(){Object.defineProperty(this,"id",{value:a.GeometryIdCount++}),this.uuid=a.Math.generateUUID(),this.name="",this.type="BufferGeometry",this.attributes={},this.attributesKeys=[],this.drawcalls=[],this.offsets=this.drawcalls,this.boundingBox=null,this.boundingSphere=null},a.BufferGeometry.prototype={constructor:a.BufferGeometry,addAttribute:function(b,c){return c instanceof a.BufferAttribute==!1?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),void(this.attributes[b]={array:arguments[1],itemSize:arguments[2]})):(this.attributes[b]=c,void(this.attributesKeys=Object.keys(this.attributes)))},getAttribute:function(a){return this.attributes[a]},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},applyMatrix:function(b){var c=this.attributes.position;void 0!==c&&(b.applyToVector3Array(c.array),c.needsUpdate=!0);var d=this.attributes.normal;if(void 0!==d){var e=(new a.Matrix3).getNormalMatrix(b);e.applyToVector3Array(d.array),d.needsUpdate=!0}},center:function(){},fromGeometry:function(b,c){c=c||{vertexColors:a.NoColors};var d=b.vertices,e=b.faces,f=b.faceVertexUvs,g=c.vertexColors,h=f[0].length>0,i=3==e[0].vertexNormals.length,j=new Float32Array(3*e.length*3);this.addAttribute("position",new a.BufferAttribute(j,3));var k=new Float32Array(3*e.length*3);if(this.addAttribute("normal",new a.BufferAttribute(k,3)),g!==a.NoColors){var l=new Float32Array(3*e.length*3);this.addAttribute("color",new a.BufferAttribute(l,3))}if(h===!0){var m=new Float32Array(3*e.length*2);this.addAttribute("uv",new a.BufferAttribute(m,2))}for(var n=0,o=0,p=0;ne;e+=3)b.set(c[e],c[e+1],c[e+2]),d.expandByPoint(b)}(void 0===c||0===c.length)&&(this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.')}}(),computeBoundingSphere:function(){var b=new a.Box3,c=new a.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new a.Sphere);var d=this.attributes.position.array;if(d){b.makeEmpty();for(var e=this.boundingSphere.center,f=0,g=d.length;g>f;f+=3)c.set(d[f],d[f+1],d[f+2]),b.expandByPoint(c);b.center(e);for(var h=0,f=0,g=d.length;g>f;f+=3)c.set(d[f],d[f+1],d[f+2]),h=Math.max(h,e.distanceToSquared(c));this.boundingSphere.radius=Math.sqrt(h),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.')}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var b=this.attributes;if(b.position){var c=b.position.array;if(void 0===b.normal)this.addAttribute("normal",new a.BufferAttribute(new Float32Array(c.length),3));else for(var d=b.normal.array,e=0,f=d.length;f>e;e++)d[e]=0;var g,h,i,d=b.normal.array,j=new a.Vector3,k=new a.Vector3,l=new a.Vector3,m=new a.Vector3,n=new a.Vector3;if(b.index)for(var o=b.index.array,p=this.offsets.length>0?this.offsets:[{start:0,count:o.length,index:0}],q=0,r=p.length;r>q;++q)for(var s=p[q].start,t=p[q].count,u=p[q].index,e=s,f=s+t;f>e;e+=3)g=3*(u+o[e]),h=3*(u+o[e+1]),i=3*(u+o[e+2]),j.fromArray(c,g),k.fromArray(c,h),l.fromArray(c,i),m.subVectors(l,k),n.subVectors(j,k),m.cross(n),d[g]+=m.x,d[g+1]+=m.y,d[g+2]+=m.z,d[h]+=m.x,d[h+1]+=m.y,d[h+2]+=m.z,d[i]+=m.x,d[i+1]+=m.y,d[i+2]+=m.z;else for(var e=0,f=c.length;f>e;e+=9)j.fromArray(c,e),k.fromArray(c,e+3),l.fromArray(c,e+6),m.subVectors(l,k),n.subVectors(j,k),m.cross(n),d[e]=m.x,d[e+1]=m.y,d[e+2]=m.z,d[e+3]=m.x,d[e+4]=m.y,d[e+5]=m.z,d[e+6]=m.x,d[e+7]=m.y,d[e+8]=m.z;this.normalizeNormals(),b.normal.needsUpdate=!0}},computeTangents:function(){function b(a,b,c){E.fromArray(e,3*a),F.fromArray(e,3*b),G.fromArray(e,3*c),H.fromArray(g,2*a),I.fromArray(g,2*b),J.fromArray(g,2*c),m=F.x-E.x,n=G.x-E.x,o=F.y-E.y,p=G.y-E.y,q=F.z-E.z,r=G.z-E.z,s=I.x-H.x,t=J.x-H.x,u=I.y-H.y,v=J.y-H.y,w=1/(s*v-t*u),K.set((v*m-u*n)*w,(v*o-u*p)*w,(v*q-u*r)*w),L.set((s*n-t*m)*w,(s*p-t*o)*w,(s*r-t*q)*w),j[a].add(K),j[b].add(K),j[c].add(K),k[a].add(L),k[b].add(L),k[c].add(L)}function c(a){V.fromArray(f,3*a),W.copy(V),R=j[a],T.copy(R),T.sub(V.multiplyScalar(V.dot(R))).normalize(),U.crossVectors(W,R),S=U.dot(k[a]),Q=0>S?-1:1,i[4*a]=T.x,i[4*a+1]=T.y,i[4*a+2]=T.z,i[4*a+3]=Q}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)return void console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");var d=this.attributes.index.array,e=this.attributes.position.array,f=this.attributes.normal.array,g=this.attributes.uv.array,h=e.length/3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new a.BufferAttribute(new Float32Array(4*h),4));for(var i=this.attributes.tangent.array,j=[],k=[],l=0;h>l;l++)j[l]=new a.Vector3,k[l]=new a.Vector3;var m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=new a.Vector3,F=new a.Vector3,G=new a.Vector3,H=new a.Vector2,I=new a.Vector2,J=new a.Vector2,K=new a.Vector3,L=new a.Vector3;0===this.drawcalls.length&&this.addDrawCall(0,d.length,0);var M=this.drawcalls;for(z=0,A=M.length;A>z;++z){var N=M[z].start,O=M[z].count,P=M[z].index;for(x=N,y=N+O;y>x;x+=3)B=P+d[x],C=P+d[x+1],D=P+d[x+2],b(B,C,D)}var Q,R,S,T=new a.Vector3,U=new a.Vector3,V=new a.Vector3,W=new a.Vector3;for(z=0,A=M.length;A>z;++z){var N=M[z].start,O=M[z].count,P=M[z].index;for(x=N,y=N+O;y>x;x+=3)B=P+d[x],C=P+d[x+1],D=P+d[x+2],c(B),c(C),c(D)}},computeOffsets:function(a){var b=a;void 0===a&&(b=65535);for(var c=(Date.now(),this.attributes.index.array),d=this.attributes.position.array,e=(d.length/3,c.length/3),f=new Uint16Array(c.length),g=0,h=0,i=[{start:0,count:0,index:0}],j=i[0],k=0,l=0,m=new Int32Array(6),n=new Int32Array(d.length),o=new Int32Array(d.length),p=0;pq;q++){l=0;for(var r=0;3>r;r++){var s=c[3*q+r];-1==n[s]?(m[2*r]=s,m[2*r+1]=-1,l++):n[s]j.index+b){var u={start:g,count:0,index:h};i.push(u),j=u;for(var v=0;6>v;v+=2){var w=m[v+1];w>-1&&wv;v+=2){var s=m[v],w=m[v+1];-1===w&&(w=h++),n[s]=w,o[w]=s,f[g++]=w-j.index,j.count++}}return this.reorderBuffers(f,o,h),this.offsets=i,i},merge:function(){console.log("BufferGeometry.merge(): TODO")},normalizeNormals:function(){for(var a,b,c,d,e=this.attributes.normal.array,f=0,g=e.length;g>f;f+=3)a=e[f],b=e[f+1],c=e[f+2],d=1/Math.sqrt(a*a+b*b+c*c),e[f]*=d,e[f+1]*=d,e[f+2]*=d},reorderBuffers:function(a,b,c){var d={};for(var e in this.attributes)if("index"!=e){var f=this.attributes[e].array;d[e]=new f.constructor(this.attributes[e].itemSize*c)}for(var g=0;c>g;g++){var h=b[g];for(var e in this.attributes)if("index"!=e)for(var i=this.attributes[e].array,j=this.attributes[e].itemSize,k=d[e],l=0;j>l;l++)k[g*j+l]=i[h*j+l]}this.attributes.index.array=a;for(var e in this.attributes)"index"!=e&&(this.attributes[e].array=d[e],this.attributes[e].numItems=this.attributes[e].itemSize*c)},toJSON:function(){var a={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},uuid:this.uuid,type:this.type,data:{attributes:{}}},b=this.attributes,c=this.offsets,d=this.boundingSphere;for(var e in b){for(var f=b[e],g=[],h=f.array,i=0,j=h.length;j>i;i++)g[i]=h[i];a.data.attributes[e]={itemSize:f.itemSize,type:f.array.constructor.name,array:g}}return c.length>0&&(a.data.offsets=JSON.parse(JSON.stringify(c))),null!==d&&(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius}),a},clone:function(){var b=new a.BufferGeometry;for(var c in this.attributes){var d=this.attributes[c];b.addAttribute(c,d.clone())}for(var e=0,f=this.offsets.length;f>e;e++){var g=this.offsets[e];b.offsets.push({start:g.start,index:g.index,count:g.count})}return b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.BufferGeometry.prototype),a.Geometry=function(){Object.defineProperty(this,"id",{value:a.GeometryIdCount++}),this.uuid=a.Math.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphColors=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.hasTangents=!1,this.dynamic=!0,this.verticesNeedUpdate=!1,this.elementsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.tangentsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1},a.Geometry.prototype={constructor:a.Geometry,applyMatrix:function(b){for(var c=(new a.Matrix3).getNormalMatrix(b),d=0,e=this.vertices.length;e>d;d++){var f=this.vertices[d];f.applyMatrix4(b)}for(var d=0,e=this.faces.length;e>d;d++){var g=this.faces[d];g.normal.applyMatrix3(c).normalize();for(var h=0,i=g.vertexNormals.length;i>h;h++)g.vertexNormals[h].applyMatrix3(c).normalize()}this.boundingBox instanceof a.Box3&&this.computeBoundingBox(),this.boundingSphere instanceof a.Sphere&&this.computeBoundingSphere()},fromBufferGeometry:function(b){for(var c=this,d=b.attributes,e=d.position.array,f=void 0!==d.index?d.index.array:void 0,g=void 0!==d.normal?d.normal.array:void 0,h=void 0!==d.color?d.color.array:void 0,i=void 0!==d.uv?d.uv.array:void 0,j=[],k=[],l=0,m=0;ld;d++){var f=this.faces[d],g=this.vertices[f.a],h=this.vertices[f.b],i=this.vertices[f.c];b.subVectors(i,h),c.subVectors(g,h),b.cross(c),b.normalize(),f.normal.copy(b)}},computeVertexNormals:function(b){var c,d,e,f,g,h;for(h=new Array(this.vertices.length),c=0,d=this.vertices.length;d>c;c++)h[c]=new a.Vector3;if(b){var i,j,k,l=new a.Vector3,m=new a.Vector3;new a.Vector3,new a.Vector3,new a.Vector3;for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],i=this.vertices[g.a],j=this.vertices[g.b],k=this.vertices[g.c],l.subVectors(k,j),m.subVectors(i,j),l.cross(m),h[g.a].add(l),h[g.b].add(l),h[g.c].add(l)}else for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],h[g.a].add(g.normal),h[g.b].add(g.normal),h[g.c].add(g.normal);for(c=0,d=this.vertices.length;d>c;c++)h[c].normalize();for(e=0,f=this.faces.length;f>e;e++)g=this.faces[e],g.vertexNormals[0]=h[g.a].clone(),g.vertexNormals[1]=h[g.b].clone(),g.vertexNormals[2]=h[g.c].clone()},computeMorphNormals:function(){var b,c,d,e,f;for(d=0,e=this.faces.length;e>d;d++)for(f=this.faces[d],f.__originalFaceNormal?f.__originalFaceNormal.copy(f.normal):f.__originalFaceNormal=f.normal.clone(),f.__originalVertexNormals||(f.__originalVertexNormals=[]),b=0,c=f.vertexNormals.length;c>b;b++)f.__originalVertexNormals[b]?f.__originalVertexNormals[b].copy(f.vertexNormals[b]):f.__originalVertexNormals[b]=f.vertexNormals[b].clone();var g=new a.Geometry;for(g.faces=this.faces,b=0,c=this.morphTargets.length;c>b;b++){if(!this.morphNormals[b]){this.morphNormals[b]={},this.morphNormals[b].faceNormals=[],this.morphNormals[b].vertexNormals=[];var h,i,j=this.morphNormals[b].faceNormals,k=this.morphNormals[b].vertexNormals;for(d=0,e=this.faces.length;e>d;d++)h=new a.Vector3,i={a:new a.Vector3,b:new a.Vector3,c:new a.Vector3},j.push(h),k.push(i)}var l=this.morphNormals[b];g.vertices=this.morphTargets[b].vertices,g.computeFaceNormals(),g.computeVertexNormals();var h,i;for(d=0,e=this.faces.length;e>d;d++)f=this.faces[d],h=l.faceNormals[d],i=l.vertexNormals[d],h.copy(f.normal),i.a.copy(f.vertexNormals[0]),i.b.copy(f.vertexNormals[1]),i.c.copy(f.vertexNormals[2])}for(d=0,e=this.faces.length;e>d;d++)f=this.faces[d],f.normal=f.__originalFaceNormal,f.vertexNormals=f.__originalVertexNormals},computeTangents:function(){function b(a,b,c,d,e,f,g){k=a.vertices[b],l=a.vertices[c],m=a.vertices[d],n=j[e],o=j[f],p=j[g],q=l.x-k.x,r=m.x-k.x,s=l.y-k.y,t=m.y-k.y,u=l.z-k.z,v=m.z-k.z,w=o.x-n.x,x=p.x-n.x,y=o.y-n.y,z=p.y-n.y,A=1/(w*z-x*y),G.set((z*q-y*r)*A,(z*s-y*t)*A,(z*u-y*v)*A),H.set((w*r-x*q)*A,(w*t-x*s)*A,(w*v-x*u)*A),E[b].add(G),E[c].add(G),E[d].add(G),F[b].add(H),F[c].add(H),F[d].add(H)}var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=[],F=[],G=new a.Vector3,H=new a.Vector3,I=new a.Vector3,J=new a.Vector3,K=new a.Vector3;for(e=0,f=this.vertices.length;f>e;e++)E[e]=new a.Vector3,F[e]=new a.Vector3;for(c=0,d=this.faces.length;d>c;c++)i=this.faces[c],j=this.faceVertexUvs[0][c],b(this,i.a,i.b,i.c,0,1,2);var L=["a","b","c","d"];for(c=0,d=this.faces.length;d>c;c++)for(i=this.faces[c],g=0;gC?-1:1,i.vertexTangents[g]=new a.Vector4(I.x,I.y,I.z,D);this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;d>c;c++)c>0&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new a.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new a.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(b,c,d){if(b instanceof a.Geometry==!1)return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",b);var e,f=this.vertices.length,g=this.vertices,h=b.vertices,i=this.faces,j=b.faces,k=this.faceVertexUvs[0],l=b.faceVertexUvs[0];void 0===d&&(d=0),void 0!==c&&(e=(new a.Matrix3).getNormalMatrix(c));for(var m=0,n=h.length;n>m;m++){var o=h[m],p=o.clone();void 0!==c&&p.applyMatrix4(c),g.push(p)}for(m=0,n=j.length;n>m;m++){var q,r,s,t=j[m],u=t.vertexNormals,v=t.vertexColors;q=new a.Face3(t.a+f,t.b+f,t.c+f),q.normal.copy(t.normal),void 0!==e&&q.normal.applyMatrix3(e).normalize();for(var w=0,x=u.length;x>w;w++)r=u[w].clone(),void 0!==e&&r.applyMatrix3(e).normalize(),q.vertexNormals.push(r);q.color.copy(t.color);for(var w=0,x=v.length;x>w;w++)s=v[w],q.vertexColors.push(s.clone());q.materialIndex=t.materialIndex+d,i.push(q)}for(m=0,n=l.length;n>m;m++){var y=l[m],z=[];if(void 0!==y){for(var w=0,x=y.length;x>w;w++)z.push(new a.Vector2(y[w].x,y[w].y));k.push(z)}}},mergeVertices:function(){var a,b,c,d,e,f,g,h,i={},j=[],k=[],l=4,m=Math.pow(10,l);for(c=0,d=this.vertices.length;d>c;c++)a=this.vertices[c],b=Math.round(a.x*m)+"_"+Math.round(a.y*m)+"_"+Math.round(a.z*m),void 0===i[b]?(i[b]=c,j.push(this.vertices[c]),k[c]=j.length-1):k[c]=k[i[b]];var n=[];for(c=0,d=this.faces.length;d>c;c++){e=this.faces[c],e.a=k[e.a],e.b=k[e.b],e.c=k[e.c],f=[e.a,e.b,e.c];for(var o=-1,p=0;3>p;p++)if(f[p]==f[(p+1)%3]){o=p,n.push(c);break}}for(c=n.length-1;c>=0;c--){var q=n[c];for(this.faces.splice(q,1),g=0,h=this.faceVertexUvs.length;h>g;g++)this.faceVertexUvs[g].splice(q,1)}var r=this.vertices.length-j.length;return this.vertices=j,r},toJSON:function(){function a(a,b,c){return c?a|1<0,w=r.vertexNormals.length>0,x=1!==r.color.r||1!==r.color.g||1!==r.color.b,y=r.vertexColors.length>0,z=0;if(z=a(z,0,0),z=a(z,1,s),z=a(z,2,t),z=a(z,3,u),z=a(z,4,v),z=a(z,5,w),z=a(z,6,x),z=a(z,7,y),k.push(z),k.push(r.a,r.b,r.c),u){var A=this.faceVertexUvs[0][i];k.push(d(A[0]),d(A[1]),d(A[2]))}if(v&&k.push(b(r.normal)),w){var B=r.vertexNormals;k.push(b(B[0]),b(B[1]),b(B[2]))}if(x&&k.push(c(r.color)),y){var C=r.vertexColors;k.push(c(C[0]),c(C[1]),c(C[2]))}}return e.data={},e.data.vertices=h,e.data.normals=l,n.length>0&&(e.data.colors=n),p.length>0&&(e.data.uvs=[p]),e.data.faces=k,e},clone:function(){for(var b=new a.Geometry,c=this.vertices,d=0,e=c.length;e>d;d++)b.vertices.push(c[d].clone());for(var f=this.faces,d=0,e=f.length;e>d;d++)b.faces.push(f[d].clone());for(var g=this.faceVertexUvs[0],d=0,e=g.length;e>d;d++){for(var h=g[d],i=[],j=0,k=h.length;k>j;j++)i.push(new a.Vector2(h[j].x,h[j].y));b.faceVertexUvs[0].push(i)}return b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.Geometry.prototype),a.GeometryIdCount=0,a.Camera=function(){a.Object3D.call(this),this.type="Camera",this.matrixWorldInverse=new a.Matrix4,this.projectionMatrix=new a.Matrix4},a.Camera.prototype=Object.create(a.Object3D.prototype),a.Camera.prototype.getWorldDirection=function(){var b=new a.Quaternion;return function(c){var d=c||new a.Vector3;return this.getWorldQuaternion(b),d.set(0,0,-1).applyQuaternion(b)}}(),a.Camera.prototype.lookAt=function(){var b=new a.Matrix4;return function(a){b.lookAt(this.position,a,this.up),this.quaternion.setFromRotationMatrix(b)}}(),a.Camera.prototype.clone=function(b){return void 0===b&&(b=new a.Camera),a.Object3D.prototype.clone.call(this,b),b.matrixWorldInverse.copy(this.matrixWorldInverse),b.projectionMatrix.copy(this.projectionMatrix),b},a.CubeCamera=function(b,c,d){a.Object3D.call(this),this.type="CubeCamera";var e=90,f=1,g=new a.PerspectiveCamera(e,f,b,c);g.up.set(0,-1,0),g.lookAt(new a.Vector3(1,0,0)),this.add(g);var h=new a.PerspectiveCamera(e,f,b,c);h.up.set(0,-1,0),h.lookAt(new a.Vector3(-1,0,0)),this.add(h);var i=new a.PerspectiveCamera(e,f,b,c);i.up.set(0,0,1),i.lookAt(new a.Vector3(0,1,0)),this.add(i);var j=new a.PerspectiveCamera(e,f,b,c);j.up.set(0,0,-1),j.lookAt(new a.Vector3(0,-1,0)),this.add(j);var k=new a.PerspectiveCamera(e,f,b,c);k.up.set(0,-1,0),k.lookAt(new a.Vector3(0,0,1)),this.add(k);var l=new a.PerspectiveCamera(e,f,b,c);l.up.set(0,-1,0),l.lookAt(new a.Vector3(0,0,-1)),this.add(l),this.renderTarget=new a.WebGLRenderTargetCube(d,d,{format:a.RGBFormat,magFilter:a.LinearFilter,minFilter:a.LinearFilter}),this.updateCubeMap=function(a,b){var c=this.renderTarget,d=c.generateMipmaps;c.generateMipmaps=!1,c.activeCubeFace=0,a.render(b,g,c),c.activeCubeFace=1,a.render(b,h,c),c.activeCubeFace=2,a.render(b,i,c),c.activeCubeFace=3,a.render(b,j,c),c.activeCubeFace=4,a.render(b,k,c),c.generateMipmaps=d,c.activeCubeFace=5,a.render(b,l,c)}},a.CubeCamera.prototype=Object.create(a.Object3D.prototype),a.OrthographicCamera=function(b,c,d,e,f,g){a.Camera.call(this),this.type="OrthographicCamera",this.zoom=1,this.left=b,this.right=c,this.top=d,this.bottom=e,this.near=void 0!==f?f:.1,this.far=void 0!==g?g:2e3,this.updateProjectionMatrix()},a.OrthographicCamera.prototype=Object.create(a.Camera.prototype),a.OrthographicCamera.prototype.updateProjectionMatrix=function(){var a=(this.right-this.left)/(2*this.zoom),b=(this.top-this.bottom)/(2*this.zoom),c=(this.right+this.left)/2,d=(this.top+this.bottom)/2;this.projectionMatrix.makeOrthographic(c-a,c+a,d+b,d-b,this.near,this.far)},a.OrthographicCamera.prototype.clone=function(){var b=new a.OrthographicCamera;return a.Camera.prototype.clone.call(this,b),b.zoom=this.zoom,b.left=this.left,b.right=this.right,b.top=this.top,b.bottom=this.bottom,b.near=this.near,b.far=this.far,b.projectionMatrix.copy(this.projectionMatrix),b},a.PerspectiveCamera=function(b,c,d,e){a.Camera.call(this),this.type="PerspectiveCamera",this.zoom=1,this.fov=void 0!==b?b:50,this.aspect=void 0!==c?c:1,this.near=void 0!==d?d:.1,this.far=void 0!==e?e:2e3,this.updateProjectionMatrix()},a.PerspectiveCamera.prototype=Object.create(a.Camera.prototype),a.PerspectiveCamera.prototype.setLens=function(b,c){void 0===c&&(c=24),this.fov=2*a.Math.radToDeg(Math.atan(c/(2*b))),this.updateProjectionMatrix()},a.PerspectiveCamera.prototype.setViewOffset=function(a,b,c,d,e,f){this.fullWidth=a,this.fullHeight=b,this.x=c,this.y=d,this.width=e,this.height=f,this.updateProjectionMatrix()},a.PerspectiveCamera.prototype.updateProjectionMatrix=function(){var b=a.Math.radToDeg(2*Math.atan(Math.tan(.5*a.Math.degToRad(this.fov))/this.zoom));if(this.fullWidth){var c=this.fullWidth/this.fullHeight,d=Math.tan(a.Math.degToRad(.5*b))*this.near,e=-d,f=c*e,g=c*d,h=Math.abs(g-f),i=Math.abs(d-e);this.projectionMatrix.makeFrustum(f+this.x*h/this.fullWidth,f+(this.x+this.width)*h/this.fullWidth,d-(this.y+this.height)*i/this.fullHeight,d-this.y*i/this.fullHeight,this.near,this.far)}else this.projectionMatrix.makePerspective(b,this.aspect,this.near,this.far)},a.PerspectiveCamera.prototype.clone=function(){var b=new a.PerspectiveCamera;return a.Camera.prototype.clone.call(this,b),b.zoom=this.zoom,b.fov=this.fov,b.aspect=this.aspect,b.near=this.near,b.far=this.far,b.projectionMatrix.copy(this.projectionMatrix),b},a.Light=function(b){a.Object3D.call(this),this.type="Light",this.color=new a.Color(b)},a.Light.prototype=Object.create(a.Object3D.prototype),a.Light.prototype.clone=function(b){return void 0===b&&(b=new a.Light),a.Object3D.prototype.clone.call(this,b),b.color.copy(this.color),b},a.AmbientLight=function(b){a.Light.call(this,b),this.type="AmbientLight"},a.AmbientLight.prototype=Object.create(a.Light.prototype),a.AmbientLight.prototype.clone=function(){var b=new a.AmbientLight;return a.Light.prototype.clone.call(this,b),b},a.AreaLight=function(b,c){a.Light.call(this,b),this.type="AreaLight",this.normal=new a.Vector3(0,-1,0),this.right=new a.Vector3(1,0,0),this.intensity=void 0!==c?c:1,this.width=1,this.height=1,this.constantAttenuation=1.5,this.linearAttenuation=.5,this.quadraticAttenuation=.1},a.AreaLight.prototype=Object.create(a.Light.prototype),a.DirectionalLight=function(b,c){a.Light.call(this,b),this.type="DirectionalLight",this.position.set(0,1,0),this.target=new a.Object3D,this.intensity=void 0!==c?c:1,this.castShadow=!1,this.onlyShadow=!1,this.shadowCameraNear=50,this.shadowCameraFar=5e3,this.shadowCameraLeft=-500,this.shadowCameraRight=500,this.shadowCameraTop=500,this.shadowCameraBottom=-500,this.shadowCameraVisible=!1,this.shadowBias=0,this.shadowDarkness=.5,this.shadowMapWidth=512,this.shadowMapHeight=512,this.shadowCascade=!1,this.shadowCascadeOffset=new a.Vector3(0,0,-1e3),this.shadowCascadeCount=2,this.shadowCascadeBias=[0,0,0],this.shadowCascadeWidth=[512,512,512],this.shadowCascadeHeight=[512,512,512],this.shadowCascadeNearZ=[-1,.99,.998],this.shadowCascadeFarZ=[.99,.998,1],this.shadowCascadeArray=[],this.shadowMap=null,this.shadowMapSize=null,this.shadowCamera=null,this.shadowMatrix=null},a.DirectionalLight.prototype=Object.create(a.Light.prototype),a.DirectionalLight.prototype.clone=function(){var b=new a.DirectionalLight;return a.Light.prototype.clone.call(this,b),b.target=this.target.clone(),b.intensity=this.intensity,b.castShadow=this.castShadow,b.onlyShadow=this.onlyShadow,b.shadowCameraNear=this.shadowCameraNear,b.shadowCameraFar=this.shadowCameraFar,b.shadowCameraLeft=this.shadowCameraLeft,b.shadowCameraRight=this.shadowCameraRight,b.shadowCameraTop=this.shadowCameraTop,b.shadowCameraBottom=this.shadowCameraBottom,b.shadowCameraVisible=this.shadowCameraVisible,b.shadowBias=this.shadowBias,b.shadowDarkness=this.shadowDarkness,b.shadowMapWidth=this.shadowMapWidth,b.shadowMapHeight=this.shadowMapHeight,b.shadowCascade=this.shadowCascade,b.shadowCascadeOffset.copy(this.shadowCascadeOffset),b.shadowCascadeCount=this.shadowCascadeCount,b.shadowCascadeBias=this.shadowCascadeBias.slice(0),b.shadowCascadeWidth=this.shadowCascadeWidth.slice(0),b.shadowCascadeHeight=this.shadowCascadeHeight.slice(0),b.shadowCascadeNearZ=this.shadowCascadeNearZ.slice(0),b.shadowCascadeFarZ=this.shadowCascadeFarZ.slice(0),b},a.HemisphereLight=function(b,c,d){a.Light.call(this,b),this.type="HemisphereLight",this.position.set(0,100,0),this.groundColor=new a.Color(c),this.intensity=void 0!==d?d:1},a.HemisphereLight.prototype=Object.create(a.Light.prototype),a.HemisphereLight.prototype.clone=function(){var b=new a.HemisphereLight;return a.Light.prototype.clone.call(this,b),b.groundColor.copy(this.groundColor),b.intensity=this.intensity,b},a.PointLight=function(b,c,d){a.Light.call(this,b),this.type="PointLight",this.intensity=void 0!==c?c:1,this.distance=void 0!==d?d:0},a.PointLight.prototype=Object.create(a.Light.prototype),a.PointLight.prototype.clone=function(){var b=new a.PointLight;return a.Light.prototype.clone.call(this,b),b.intensity=this.intensity,b.distance=this.distance,b},a.SpotLight=function(b,c,d,e,f){a.Light.call(this,b),this.type="SpotLight",this.position.set(0,1,0),this.target=new a.Object3D,this.intensity=void 0!==c?c:1,this.distance=void 0!==d?d:0,this.angle=void 0!==e?e:Math.PI/3,this.exponent=void 0!==f?f:10,this.castShadow=!1,this.onlyShadow=!1,this.shadowCameraNear=50,this.shadowCameraFar=5e3,this.shadowCameraFov=50,this.shadowCameraVisible=!1,this.shadowBias=0,this.shadowDarkness=.5,this.shadowMapWidth=512,this.shadowMapHeight=512,this.shadowMap=null,this.shadowMapSize=null,this.shadowCamera=null,this.shadowMatrix=null},a.SpotLight.prototype=Object.create(a.Light.prototype),a.SpotLight.prototype.clone=function(){var b=new a.SpotLight;return a.Light.prototype.clone.call(this,b),b.target=this.target.clone(),b.intensity=this.intensity,b.distance=this.distance,b.angle=this.angle,b.exponent=this.exponent,b.castShadow=this.castShadow,b.onlyShadow=this.onlyShadow,b.shadowCameraNear=this.shadowCameraNear,b.shadowCameraFar=this.shadowCameraFar,b.shadowCameraFov=this.shadowCameraFov,b.shadowCameraVisible=this.shadowCameraVisible,b.shadowBias=this.shadowBias,b.shadowDarkness=this.shadowDarkness,b.shadowMapWidth=this.shadowMapWidth,b.shadowMapHeight=this.shadowMapHeight,b},a.Cache=function(){this.files={}},a.Cache.prototype={constructor:a.Cache,add:function(a,b){this.files[a]=b},get:function(a){return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}},a.Loader=function(b){this.showStatus=b,this.statusDomElement=b?a.Loader.prototype.addStatusElement():null,this.imageLoader=new a.ImageLoader,this.onLoadStart=function(){},this.onLoadProgress=function(){},this.onLoadComplete=function(){}},a.Loader.prototype={constructor:a.Loader,crossOrigin:void 0,addStatusElement:function(){var a=document.createElement("div");return a.style.position="absolute",a.style.right="0px",a.style.top="0px",a.style.fontSize="0.8em",a.style.textAlign="left",a.style.background="rgba(0,0,0,0.25)",a.style.color="#fff",a.style.width="120px",a.style.padding="0.5em 0.5em 0.5em 0.5em",a.style.zIndex=1e3,a.innerHTML="Loading ...",a},updateProgress:function(a){var b="Loaded ";b+=a.total?(100*a.loaded/a.total).toFixed(0)+"%":(a.loaded/1024).toFixed(2)+" KB",this.statusDomElement.innerHTML=b},extractUrlBase:function(a){var b=a.split("/");return 1===b.length?"./":(b.pop(),b.join("/")+"/")},initMaterials:function(a,b){for(var c=[],d=0;dc;c++){var e=b[c];if(e instanceof a.ShaderMaterial)return!0}return!1},createMaterial:function(b,c){function d(a){var b=Math.log(a)/Math.LN2;return Math.pow(2,Math.round(b))}function e(b,e,f,h,i,j,k){var l,m=c+f,n=a.Loader.Handlers.get(m);if(null!==n?l=n.load(m):(l=new a.Texture,n=g.imageLoader,n.crossOrigin=g.crossOrigin,n.load(m,function(b){if(a.Math.isPowerOfTwo(b.width)===!1||a.Math.isPowerOfTwo(b.height)===!1){var c=d(b.width),e=d(b.height),f=document.createElement("canvas");f.width=c,f.height=e;var g=f.getContext("2d");g.drawImage(b,0,0,c,e),l.image=f}else l.image=b;l.needsUpdate=!0})),l.sourceFile=f,h&&(l.repeat.set(h[0],h[1]),1!==h[0]&&(l.wrapS=a.RepeatWrapping),1!==h[1]&&(l.wrapT=a.RepeatWrapping)),i&&l.offset.set(i[0],i[1]),j){var o={repeat:a.RepeatWrapping,mirror:a.MirroredRepeatWrapping};void 0!==o[j[0]]&&(l.wrapS=o[j[0]]),void 0!==o[j[1]]&&(l.wrapT=o[j[1]])}k&&(l.anisotropy=k),b[e]=l}function f(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var g=this,h="MeshLambertMaterial",i={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,bumpMap:null,wireframe:!1};if(b.shading){var j=b.shading.toLowerCase();"phong"===j?h="MeshPhongMaterial":"basic"===j&&(h="MeshBasicMaterial")}if(void 0!==b.blending&&void 0!==a[b.blending]&&(i.blending=a[b.blending]),(void 0!==b.transparent||b.opacity<1)&&(i.transparent=b.transparent),void 0!==b.depthTest&&(i.depthTest=b.depthTest),void 0!==b.depthWrite&&(i.depthWrite=b.depthWrite),void 0!==b.visible&&(i.visible=b.visible),void 0!==b.flipSided&&(i.side=a.BackSide),void 0!==b.doubleSided&&(i.side=a.DoubleSide),void 0!==b.wireframe&&(i.wireframe=b.wireframe),void 0!==b.vertexColors&&("face"===b.vertexColors?i.vertexColors=a.FaceColors:b.vertexColors&&(i.vertexColors=a.VertexColors)),b.colorDiffuse?i.color=f(b.colorDiffuse):b.DbgColor&&(i.color=b.DbgColor),b.colorSpecular&&(i.specular=f(b.colorSpecular)),b.colorAmbient&&(i.ambient=f(b.colorAmbient)),b.colorEmissive&&(i.emissive=f(b.colorEmissive)),b.transparency&&(i.opacity=b.transparency),b.specularCoef&&(i.shininess=b.specularCoef),b.mapDiffuse&&c&&e(i,"map",b.mapDiffuse,b.mapDiffuseRepeat,b.mapDiffuseOffset,b.mapDiffuseWrap,b.mapDiffuseAnisotropy),b.mapLight&&c&&e(i,"lightMap",b.mapLight,b.mapLightRepeat,b.mapLightOffset,b.mapLightWrap,b.mapLightAnisotropy),b.mapBump&&c&&e(i,"bumpMap",b.mapBump,b.mapBumpRepeat,b.mapBumpOffset,b.mapBumpWrap,b.mapBumpAnisotropy),b.mapNormal&&c&&e(i,"normalMap",b.mapNormal,b.mapNormalRepeat,b.mapNormalOffset,b.mapNormalWrap,b.mapNormalAnisotropy),b.mapSpecular&&c&&e(i,"specularMap",b.mapSpecular,b.mapSpecularRepeat,b.mapSpecularOffset,b.mapSpecularWrap,b.mapSpecularAnisotropy),b.mapAlpha&&c&&e(i,"alphaMap",b.mapAlpha,b.mapAlphaRepeat,b.mapAlphaOffset,b.mapAlphaWrap,b.mapAlphaAnisotropy),b.mapBumpScale&&(i.bumpScale=b.mapBumpScale),b.mapNormal){var k=a.ShaderLib.normalmap,l=a.UniformsUtils.clone(k.uniforms);l.tNormal.value=i.normalMap,b.mapNormalFactor&&l.uNormalScale.value.set(b.mapNormalFactor,b.mapNormalFactor),i.map&&(l.tDiffuse.value=i.map,l.enableDiffuse.value=!0),i.specularMap&&(l.tSpecular.value=i.specularMap,l.enableSpecular.value=!0),i.lightMap&&(l.tAO.value=i.lightMap,l.enableAO.value=!0),l.diffuse.value.setHex(i.color),l.specular.value.setHex(i.specular),l.ambient.value.setHex(i.ambient),l.shininess.value=i.shininess,void 0!==i.opacity&&(l.opacity.value=i.opacity);var m={fragmentShader:k.fragmentShader,vertexShader:k.vertexShader,uniforms:l,lights:!0,fog:!0},n=new a.ShaderMaterial(m);i.transparent&&(n.transparent=!0)}else var n=new a[h](i);return void 0!==b.DbgName&&(n.name=b.DbgName),n}},a.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=0,c=this.handlers.length;c>b;b+=2){var d=this.handlers[b],e=this.handlers[b+1];if(d.test(a))return e}return null}},a.XHRLoader=function(b){this.cache=new a.Cache,this.manager=void 0!==b?b:a.DefaultLoadingManager},a.XHRLoader.prototype={constructor:a.XHRLoader,load:function(a,b,c,d){var e=this,f=e.cache.get(a);if(void 0!==f)return void(b&&b(f));var g=new XMLHttpRequest;g.open("GET",a,!0),g.addEventListener("load",function(c){e.cache.add(a,this.response),b&&b(this.response),e.manager.itemEnd(a)},!1),void 0!==c&&g.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&g.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(g.crossOrigin=this.crossOrigin),void 0!==this.responseType&&(g.responseType=this.responseType),g.send(null),e.manager.itemStart(a)},setResponseType:function(a){this.responseType=a},setCrossOrigin:function(a){this.crossOrigin=a}},a.ImageLoader=function(b){this.cache=new a.Cache,this.manager=void 0!==b?b:a.DefaultLoadingManager},a.ImageLoader.prototype={constructor:a.ImageLoader,load:function(a,b,c,d){var e=this,f=e.cache.get(a);if(void 0!==f)return void b(f);var g=document.createElement("img");return void 0!==b&&g.addEventListener("load",function(c){e.cache.add(a,this),b(this),e.manager.itemEnd(a)},!1),void 0!==c&&g.addEventListener("progress",function(a){c(a)},!1),void 0!==d&&g.addEventListener("error",function(a){d(a)},!1),void 0!==this.crossOrigin&&(g.crossOrigin=this.crossOrigin),g.src=a,e.manager.itemStart(a),g},setCrossOrigin:function(a){this.crossOrigin=a}},a.JSONLoader=function(b){a.Loader.call(this,b),this.withCredentials=!1},a.JSONLoader.prototype=Object.create(a.Loader.prototype),a.JSONLoader.prototype.load=function(a,b,c){c=c&&"string"==typeof c?c:this.extractUrlBase(a),this.onLoadStart(),this.loadAjaxJSON(this,a,b,c)},a.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,e){var f=new XMLHttpRequest,g=0;f.onreadystatechange=function(){if(f.readyState===f.DONE)if(200===f.status||0===f.status){if(f.responseText){var h=JSON.parse(f.responseText);if(void 0!==h.metadata&&"scene"===h.metadata.type)return void console.error('THREE.JSONLoader: "'+b+'" seems to be a Scene. Use THREE.SceneLoader instead.');var i=a.parse(h,d);c(i.geometry,i.materials)}else console.error('THREE.JSONLoader: "'+b+'" seems to be unreachable or the file is empty.');a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load \""+b+'" ('+f.status+")");else f.readyState===f.LOADING?e&&(0===g&&(g=f.getResponseHeader("Content-Length")),e({total:g,loaded:f.responseText.length})):f.readyState===f.HEADERS_RECEIVED&&void 0!==e&&(g=f.getResponseHeader("Content-Length"))},f.open("GET",b,!0),f.withCredentials=this.withCredentials,f.send(null)},a.JSONLoader.prototype.parse=function(b,c){function d(c){function d(a,b){return a&1<e;e++)g.faceVertexUvs[e]=[]}for(i=0,j=H.length;j>i;)w=new a.Vector3,w.x=H[i++]*c,w.y=H[i++]*c,w.z=H[i++]*c,g.vertices.push(w);for(i=0,j=G.length;j>i;)if(o=G[i++],p=d(o,0),q=d(o,1),r=d(o,3),s=d(o,4),t=d(o,5),u=d(o,6),v=d(o,7),p){if(y=new a.Face3,y.a=G[i],y.b=G[i+1],y.c=G[i+3],z=new a.Face3,z.a=G[i+1],z.b=G[i+2],z.c=G[i+3],i+=4,q&&(n=G[i++],y.materialIndex=n,z.materialIndex=n),h=g.faces.length,r)for(e=0;K>e;e++)for(C=b.uvs[e],g.faceVertexUvs[e][h]=[],g.faceVertexUvs[e][h+1]=[],f=0;4>f;f++)m=G[i++],E=C[2*m],F=C[2*m+1],D=new a.Vector2(E,F),2!==f&&g.faceVertexUvs[e][h].push(D),0!==f&&g.faceVertexUvs[e][h+1].push(D);if(s&&(l=3*G[i++],y.normal.set(I[l++],I[l++],I[l]),z.normal.copy(y.normal)),t)for(e=0;4>e;e++)l=3*G[i++],B=new a.Vector3(I[l++],I[l++],I[l]),2!==e&&y.vertexNormals.push(B),0!==e&&z.vertexNormals.push(B);if(u&&(k=G[i++],A=J[k],y.color.setHex(A),z.color.setHex(A)),v)for(e=0;4>e;e++)k=G[i++],A=J[k],2!==e&&y.vertexColors.push(new a.Color(A)),0!==e&&z.vertexColors.push(new a.Color(A));g.faces.push(y),g.faces.push(z)}else{if(x=new a.Face3,x.a=G[i++],x.b=G[i++],x.c=G[i++],q&&(n=G[i++],x.materialIndex=n),h=g.faces.length,r)for(e=0;K>e;e++)for(C=b.uvs[e],g.faceVertexUvs[e][h]=[],f=0;3>f;f++)m=G[i++],E=C[2*m],F=C[2*m+1],D=new a.Vector2(E,F),g.faceVertexUvs[e][h].push(D);if(s&&(l=3*G[i++],x.normal.set(I[l++],I[l++],I[l])),t)for(e=0;3>e;e++)l=3*G[i++],B=new a.Vector3(I[l++],I[l++],I[l]),x.vertexNormals.push(B);if(u&&(k=G[i++],x.color.setHex(J[k])),v)for(e=0;3>e;e++)k=G[i++],x.vertexColors.push(new a.Color(J[k]));g.faces.push(x)}}function e(){var c=void 0!==b.influencesPerVertex?b.influencesPerVertex:2;if(b.skinWeights)for(var d=0,e=b.skinWeights.length;e>d;d+=c){var f=b.skinWeights[d],h=c>1?b.skinWeights[d+1]:0,i=c>2?b.skinWeights[d+2]:0,j=c>3?b.skinWeights[d+3]:0;g.skinWeights.push(new a.Vector4(f,h,i,j))}if(b.skinIndices)for(var d=0,e=b.skinIndices.length;e>d;d+=c){var k=b.skinIndices[d],l=c>1?b.skinIndices[d+1]:0,m=c>2?b.skinIndices[d+2]:0,n=c>3?b.skinIndices[d+3]:0;g.skinIndices.push(new a.Vector4(k,l,m,n))}g.bones=b.bones,g.bones&&g.bones.length>0&&(g.skinWeights.length!==g.skinIndices.length||g.skinIndices.length!==g.vertices.length)&&console.warn("When skinning, number of vertices ("+g.vertices.length+"), skinIndices ("+g.skinIndices.length+"), and skinWeights ("+g.skinWeights.length+") should match."),g.animation=b.animation,g.animations=b.animations}function f(c){if(void 0!==b.morphTargets){var d,e,f,h,i,j;for(d=0,e=b.morphTargets.length;e>d;d++)for(g.morphTargets[d]={},g.morphTargets[d].name=b.morphTargets[d].name,g.morphTargets[d].vertices=[],i=g.morphTargets[d].vertices,j=b.morphTargets[d].vertices,f=0,h=j.length;h>f;f+=3){var k=new a.Vector3;k.x=j[f]*c,k.y=j[f+1]*c,k.z=j[f+2]*c,i.push(k)}}if(void 0!==b.morphColors){var d,e,l,m,n,o,p;for(d=0,e=b.morphColors.length;e>d;d++)for(g.morphColors[d]={},g.morphColors[d].name=b.morphColors[d].name,g.morphColors[d].colors=[],n=g.morphColors[d].colors,o=b.morphColors[d].colors,l=0,m=o.length;m>l;l+=3)p=new a.Color(16755200),p.setRGB(o[l],o[l+1],o[l+2]),n.push(p)}}var g=new a.Geometry,h=void 0!==b.scale?1/b.scale:1;if(d(h),e(),f(h),g.computeFaceNormals(),g.computeBoundingSphere(),void 0===b.materials||0===b.materials.length)return{geometry:g};var i=this.initMaterials(b.materials,c);return this.needsTangents(i)&&g.computeTangents(),{geometry:g,materials:i}},a.LoadingManager=function(a,b,c){var d=this,e=0,f=0;this.onLoad=a,this.onProgress=b,this.onError=c,this.itemStart=function(a){f++},this.itemEnd=function(a){e++,void 0!==d.onProgress&&d.onProgress(a,e,f),e===f&&void 0!==d.onLoad&&d.onLoad()}},a.DefaultLoadingManager=new a.LoadingManager,a.BufferGeometryLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.BufferGeometryLoader.prototype={constructor:a.BufferGeometryLoader,load:function(b,c,d,e){var f=this,g=new a.XHRLoader;g.setCrossOrigin(this.crossOrigin),g.load(b,function(a){c(f.parse(JSON.parse(a)))},d,e)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(b){var c=new a.BufferGeometry,d=b.attributes;for(var e in d){var f=d[e],g=new self[f.type](f.array);c.addAttribute(e,new a.BufferAttribute(g,f.itemSize))}var h=b.offsets;void 0!==h&&(c.offsets=JSON.parse(JSON.stringify(h)));var i=b.boundingSphere;if(void 0!==i){var j=new a.Vector3;void 0!==i.center&&j.fromArray(i.center),c.boundingSphere=new a.Sphere(j,i.radius)}return c}},a.MaterialLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.MaterialLoader.prototype={constructor:a.MaterialLoader,load:function(b,c,d,e){var f=this,g=new a.XHRLoader;g.setCrossOrigin(this.crossOrigin),g.load(b,function(a){c(f.parse(JSON.parse(a)))},d,e)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(b){var c=new a[b.type];if(void 0!==b.color&&c.color.setHex(b.color),void 0!==b.ambient&&c.ambient.setHex(b.ambient),void 0!==b.emissive&&c.emissive.setHex(b.emissive),void 0!==b.specular&&c.specular.setHex(b.specular),void 0!==b.shininess&&(c.shininess=b.shininess),void 0!==b.uniforms&&(c.uniforms=b.uniforms),void 0!==b.vertexShader&&(c.vertexShader=b.vertexShader),void 0!==b.fragmentShader&&(c.fragmentShader=b.fragmentShader),void 0!==b.vertexColors&&(c.vertexColors=b.vertexColors),void 0!==b.shading&&(c.shading=b.shading),void 0!==b.blending&&(c.blending=b.blending),void 0!==b.side&&(c.side=b.side),void 0!==b.opacity&&(c.opacity=b.opacity),void 0!==b.transparent&&(c.transparent=b.transparent),void 0!==b.wireframe&&(c.wireframe=b.wireframe),void 0!==b.materials)for(var d=0,e=b.materials.length;e>d;d++)c.materials.push(this.parse(b.materials[d]));return c}},a.ObjectLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.ObjectLoader.prototype={constructor:a.ObjectLoader,load:function(b,c,d,e){var f=this,g=new a.XHRLoader(f.manager);g.setCrossOrigin(this.crossOrigin),g.load(b,function(a){c(f.parse(JSON.parse(a)))},d,e)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=this.parseGeometries(a.geometries),c=this.parseMaterials(a.materials),d=this.parseObject(a.object,b,c);return d},parseGeometries:function(b){var c={};if(void 0!==b)for(var d=new a.JSONLoader,e=new a.BufferGeometryLoader,f=0,g=b.length;g>f;f++){var h,i=b[f];switch(i.type){case"PlaneGeometry":h=new a.PlaneGeometry(i.width,i.height,i.widthSegments,i.heightSegments);break;case"BoxGeometry":case"CubeGeometry":h=new a.BoxGeometry(i.width,i.height,i.depth,i.widthSegments,i.heightSegments,i.depthSegments);break;case"CircleGeometry":h=new a.CircleGeometry(i.radius,i.segments);break;case"CylinderGeometry":h=new a.CylinderGeometry(i.radiusTop,i.radiusBottom,i.height,i.radialSegments,i.heightSegments,i.openEnded);break;case"SphereGeometry":h=new a.SphereGeometry(i.radius,i.widthSegments,i.heightSegments,i.phiStart,i.phiLength,i.thetaStart,i.thetaLength);break;case"IcosahedronGeometry":h=new a.IcosahedronGeometry(i.radius,i.detail);break;case"TorusGeometry":h=new a.TorusGeometry(i.radius,i.tube,i.radialSegments,i.tubularSegments,i.arc);break;case"TorusKnotGeometry":h=new a.TorusKnotGeometry(i.radius,i.tube,i.radialSegments,i.tubularSegments,i.p,i.q,i.heightScale);break;case"BufferGeometry":h=e.parse(i.data);break;case"Geometry":h=d.parse(i.data).geometry}h.uuid=i.uuid,void 0!==i.name&&(h.name=i.name),c[i.uuid]=h}return c},parseMaterials:function(b){var c={};if(void 0!==b)for(var d=new a.MaterialLoader,e=0,f=b.length;f>e;e++){var g=b[e],h=d.parse(g);h.uuid=g.uuid,void 0!==g.name&&(h.name=g.name),c[g.uuid]=h}return c},parseObject:function(){var b=new a.Matrix4;return function(c,d,e){var f;switch(c.type){case"Scene":f=new a.Scene;break;case"PerspectiveCamera":f=new a.PerspectiveCamera(c.fov,c.aspect,c.near,c.far);break;case"OrthographicCamera":f=new a.OrthographicCamera(c.left,c.right,c.top,c.bottom,c.near,c.far);break;case"AmbientLight":f=new a.AmbientLight(c.color);break;case"DirectionalLight":f=new a.DirectionalLight(c.color,c.intensity);break;case"PointLight":f=new a.PointLight(c.color,c.intensity,c.distance);break;case"SpotLight":f=new a.SpotLight(c.color,c.intensity,c.distance,c.angle,c.exponent);break;case"HemisphereLight":f=new a.HemisphereLight(c.color,c.groundColor,c.intensity);break;case"Mesh":var g=d[c.geometry],h=e[c.material];void 0===g&&console.warn("THREE.ObjectLoader: Undefined geometry",c.geometry),void 0===h&&console.warn("THREE.ObjectLoader: Undefined material",c.material),f=new a.Mesh(g,h);break;case"Line":var g=d[c.geometry],h=e[c.material];void 0===g&&console.warn("THREE.ObjectLoader: Undefined geometry",c.geometry),void 0===h&&console.warn("THREE.ObjectLoader: Undefined material",c.material),f=new a.Line(g,h);break;case"Sprite":var h=e[c.material];void 0===h&&console.warn("THREE.ObjectLoader: Undefined material",c.material),f=new a.Sprite(h);break;case"Group":f=new a.Group;break;default:f=new a.Object3D}if(f.uuid=c.uuid,void 0!==c.name&&(f.name=c.name),void 0!==c.matrix?(b.fromArray(c.matrix),b.decompose(f.position,f.quaternion,f.scale)):(void 0!==c.position&&f.position.fromArray(c.position),void 0!==c.rotation&&f.rotation.fromArray(c.rotation),void 0!==c.scale&&f.scale.fromArray(c.scale)),void 0!==c.visible&&(f.visible=c.visible),void 0!==c.userData&&(f.userData=c.userData),void 0!==c.children)for(var i in c.children)f.add(this.parseObject(c.children[i],d,e));return f}}()},a.TextureLoader=function(b){this.manager=void 0!==b?b:a.DefaultLoadingManager},a.TextureLoader.prototype={constructor:a.TextureLoader,load:function(b,c,d,e){var f=this,g=new a.ImageLoader(f.manager);g.setCrossOrigin(this.crossOrigin),g.load(b,function(b){var d=new a.Texture(b);d.needsUpdate=!0,void 0!==c&&c(d)},d,e)},setCrossOrigin:function(a){this.crossOrigin=a}},a.CompressedTextureLoader=function(){this._parser=null},a.CompressedTextureLoader.prototype={constructor:a.CompressedTextureLoader,load:function(b,c,d){var e=this,f=[],g=new a.CompressedTexture;g.image=f;var h=new a.XHRLoader;if(h.setResponseType("arraybuffer"),b instanceof Array)for(var i=0,j=function(d){h.load(b[d],function(b){var h=e._parser(b,!0);f[d]={width:h.width,height:h.height,format:h.format,mipmaps:h.mipmaps},i+=1,6===i&&(1==h.mipmapCount&&(g.minFilter=a.LinearFilter),g.format=h.format,g.needsUpdate=!0,c&&c(g))})},k=0,l=b.length;l>k;++k)j(k);else h.load(b,function(b){var d=e._parser(b,!0);if(d.isCubemap)for(var h=d.mipmaps.length/d.mipmapCount,i=0;h>i;i++){f[i]={mipmaps:[]};for(var j=0;jb;b++)a.materials.push(this.materials[b].toJSON());return a},clone:function(){for(var b=new a.MeshFaceMaterial,c=0;cg){var h=c.closestPointToPoint(a);h.applyMatrix4(f.matrixWorld);var j=d.ray.origin.distanceTo(h);e.push({distance:j,distanceToRay:g,point:h.clone(),index:b,face:null,object:f})}};if(g instanceof a.BufferGeometry){var l=g.attributes,m=l.position.array;if(void 0!==l.index){var n=l.index.array,o=g.offsets;if(0===o.length){var p={start:0,count:n.length,index:0};o=[p]}for(var q=0,r=o.length;r>q;++q)for(var s=o[q].start,t=o[q].count,u=o[q].index,v=s,w=s+t;w>v;v++){var x=u+n[v];j.fromArray(m,3*x),k(j,x)}}else for(var y=m.length/3,v=0;y>v;v++)j.set(m[3*v],m[3*v+1],m[3*v+2]),k(j,v)}else for(var z=this.geometry.vertices,v=0;vo;o+=n){var p=c.distanceSqToSegment(j[o],j[o+1],m,l);if(!(p>h)){var q=c.origin.distanceTo(m);qe.far||f.push({distance:q,point:l.clone().applyMatrix4(this.matrixWorld),face:null,faceIndex:null,object:this})}}}}(),a.Line.prototype.clone=function(b){return void 0===b&&(b=new a.Line(this.geometry,this.material,this.mode)),a.Object3D.prototype.clone.call(this,b),b},a.Mesh=function(b,c){a.Object3D.call(this),this.type="Mesh",this.geometry=void 0!==b?b:new a.Geometry,this.material=void 0!==c?c:new a.MeshBasicMaterial({color:16777215*Math.random()}),this.updateMorphTargets()},a.Mesh.prototype=Object.create(a.Object3D.prototype),a.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&this.geometry.morphTargets.length>0){this.morphTargetBase=-1,this.morphTargetForcedOrder=[],this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var a=0,b=this.geometry.morphTargets.length;b>a;a++)this.morphTargetInfluences.push(0),this.morphTargetDictionary[this.geometry.morphTargets[a].name]=a}},a.Mesh.prototype.getMorphTargetIndexByName=function(a){return void 0!==this.morphTargetDictionary[a]?this.morphTargetDictionary[a]:(console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0."),0)},a.Mesh.prototype.raycast=function(){var b=new a.Matrix4,c=new a.Ray,d=new a.Sphere,e=new a.Vector3,f=new a.Vector3,g=new a.Vector3;return function(h,i){var j=this.geometry;if(null===j.boundingSphere&&j.computeBoundingSphere(),d.copy(j.boundingSphere),d.applyMatrix4(this.matrixWorld),h.ray.isIntersectionSphere(d)!==!1&&(b.getInverse(this.matrixWorld),c.copy(h.ray).applyMatrix4(b),null===j.boundingBox||c.isIntersectionBox(j.boundingBox)!==!1))if(j instanceof a.BufferGeometry){var k=this.material;if(void 0===k)return;var l,m,n,o=j.attributes,p=h.precision;if(void 0!==o.index){var q=o.index.array,r=o.position.array,s=j.offsets;0===s.length&&(s=[{start:0,count:q.length,index:0}]);for(var t=0,u=s.length;u>t;++t)for(var v=s[t].start,w=s[t].count,x=s[t].index,y=v,z=v+w;z>y;y+=3){if(l=x+q[y],m=x+q[y+1],n=x+q[y+2],e.fromArray(r,3*l),f.fromArray(r,3*m),g.fromArray(r,3*n),k.side===a.BackSide)var A=c.intersectTriangle(g,f,e,!0);else var A=c.intersectTriangle(e,f,g,k.side!==a.DoubleSide);if(null!==A){A.applyMatrix4(this.matrixWorld);var B=h.ray.origin.distanceTo(A);p>B||Bh.far||i.push({distance:B,point:A,face:new a.Face3(l,m,n,a.Triangle.normal(e,f,g)),faceIndex:null,object:this})}}}else for(var r=o.position.array,y=0,C=0,z=r.length;z>y;y+=3,C+=9){if(l=y,m=y+1,n=y+2,e.fromArray(r,C),f.fromArray(r,C+3),g.fromArray(r,C+6),k.side===a.BackSide)var A=c.intersectTriangle(g,f,e,!0);else var A=c.intersectTriangle(e,f,g,k.side!==a.DoubleSide);if(null!==A){A.applyMatrix4(this.matrixWorld);var B=h.ray.origin.distanceTo(A);p>B||Bh.far||i.push({distance:B,point:A,face:new a.Face3(l,m,n,a.Triangle.normal(e,f,g)),faceIndex:null,object:this})}}}else if(j instanceof a.Geometry)for(var l,m,n,D=this.material instanceof a.MeshFaceMaterial,E=D===!0?this.material.materials:null,p=h.precision,F=j.vertices,G=0,H=j.faces.length;H>G;G++){var I=j.faces[G],k=D===!0?E[I.materialIndex]:this.material;if(void 0!==k){if(l=F[I.a],m=F[I.b],n=F[I.c],k.morphTargets===!0){var J=j.morphTargets,K=this.morphTargetInfluences;e.set(0,0,0),f.set(0,0,0),g.set(0,0,0);for(var L=0,M=J.length;M>L;L++){var N=K[L];if(0!==N){var O=J[L].vertices;e.x+=(O[I.a].x-l.x)*N,e.y+=(O[I.a].y-l.y)*N,e.z+=(O[I.a].z-l.z)*N,f.x+=(O[I.b].x-m.x)*N,f.y+=(O[I.b].y-m.y)*N,f.z+=(O[I.b].z-m.z)*N,g.x+=(O[I.c].x-n.x)*N,g.y+=(O[I.c].y-n.y)*N,g.z+=(O[I.c].z-n.z)*N}}e.add(l),f.add(m),g.add(n),l=e,m=f,n=g}if(k.side===a.BackSide)var A=c.intersectTriangle(n,m,l,!0);else var A=c.intersectTriangle(l,m,n,k.side!==a.DoubleSide);if(null!==A){A.applyMatrix4(this.matrixWorld);var B=h.ray.origin.distanceTo(A);p>B||Bh.far||i.push({distance:B,point:A,face:I,faceIndex:G,object:this})}}}}}(),a.Mesh.prototype.clone=function(b,c){return void 0===b&&(b=new a.Mesh(this.geometry,this.material)),a.Object3D.prototype.clone.call(this,b,c),b},a.Bone=function(b){a.Object3D.call(this),this.skin=b},a.Bone.prototype=Object.create(a.Object3D.prototype),a.Skeleton=function(b,c,d){if(this.useVertexTexture=void 0!==d?d:!0,this.identityMatrix=new a.Matrix4,b=b||[],this.bones=b.slice(0),this.useVertexTexture){var e;e=this.bones.length>256?64:this.bones.length>64?32:this.bones.length>16?16:8,this.boneTextureWidth=e,this.boneTextureHeight=e,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new a.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,a.RGBAFormat,a.FloatType),this.boneTexture.minFilter=a.NearestFilter,this.boneTexture.magFilter=a.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1}else this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===c)this.calculateInverses();else if(this.bones.length===c.length)this.boneInverses=c.slice(0);else{console.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[];for(var f=0,g=this.bones.length;g>f;f++)this.boneInverses.push(new a.Matrix4)}},a.Skeleton.prototype.calculateInverses=function(){this.boneInverses=[];for(var b=0,c=this.bones.length;c>b;b++){var d=new a.Matrix4;this.bones[b]&&d.getInverse(this.bones[b].matrixWorld),this.boneInverses.push(d)}},a.Skeleton.prototype.pose=function(){for(var a,b=0,c=this.bones.length;c>b;b++)a=this.bones[b],a&&a.matrixWorld.getInverse(this.boneInverses[b]);for(var b=0,c=this.bones.length;c>b;b++)a=this.bones[b],a&&(a.parent?(a.matrix.getInverse(a.parent.matrixWorld),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale))},a.Skeleton.prototype.update=function(){var b=new a.Matrix4;return function(){for(var a=0,c=this.bones.length;c>a;a++){var d=this.bones[a]?this.bones[a].matrixWorld:this.identityMatrix;b.multiplyMatrices(d,this.boneInverses[a]),b.flattenToArrayOffset(this.boneMatrices,16*a)}this.useVertexTexture&&(this.boneTexture.needsUpdate=!0)}}(),a.SkinnedMesh=function(b,c,d){a.Mesh.call(this,b,c),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new a.Matrix4,this.bindMatrixInverse=new a.Matrix4;var e=[];if(this.geometry&&void 0!==this.geometry.bones){for(var f,g,h,i,j,k=0,l=this.geometry.bones.length;l>k;++k)g=this.geometry.bones[k],h=g.pos,i=g.rotq,j=g.scl,f=new a.Bone(this),e.push(f),f.name=g.name,f.position.set(h[0],h[1],h[2]),f.quaternion.set(i[0],i[1],i[2],i[3]),void 0!==j?f.scale.set(j[0],j[1],j[2]):f.scale.set(1,1,1);for(var k=0,l=this.geometry.bones.length;l>k;++k)g=this.geometry.bones[k],-1!==g.parent?e[g.parent].add(e[k]):this.add(e[k])}this.normalizeSkinWeights(),this.updateMatrixWorld(!0),this.bind(new a.Skeleton(e,void 0,d))},a.SkinnedMesh.prototype=Object.create(a.Mesh.prototype),a.SkinnedMesh.prototype.bind=function(a,b){this.skeleton=a,void 0===b&&(this.updateMatrixWorld(!0),b=this.matrixWorld),this.bindMatrix.copy(b),this.bindMatrixInverse.getInverse(b)},a.SkinnedMesh.prototype.pose=function(){this.skeleton.pose()},a.SkinnedMesh.prototype.normalizeSkinWeights=function(){if(this.geometry instanceof a.Geometry)for(var b=0;be;e++){var g=a.morphTargets[e],h=g.name.match(d);if(h&&h.length>1){var i=h[1];h[2];c[i]||(c[i]={start:1/0,end:-(1/0)});var j=c[i];ej.end&&(j.end=e),b||(b=i)}}a.firstAnimation=b},a.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){this.geometry.animations||(this.geometry.animations={}),this.geometry.animations[a]={start:b,end:c}},a.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=1e3*((c.end-c.start)/b),this.time=0):console.warn("animation["+a+"] undefined")},a.MorphAnimMesh.prototype.updateAnimation=function(b){var c=this.duration/this.length;this.time+=this.direction*b,this.mirroredLoop?(this.time>this.duration||this.time<0)&&(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),this.time<0&&(this.time=0,this.directionBackwards=!1)):(this.time=this.time%this.duration,this.time<0&&(this.time+=this.duration));var d=this.startKeyframe+a.Math.clamp(Math.floor(this.time/c),0,this.length-1);d!==this.currentKeyframe&&(this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[d]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=d);var e=this.time%c/c;this.directionBackwards&&(e=1-e),this.morphTargetInfluences[this.currentKeyframe]=e,this.morphTargetInfluences[this.lastKeyframe]=1-e},a.MorphAnimMesh.prototype.interpolateTargets=function(a,b,c){for(var d=this.morphTargetInfluences,e=0,f=d.length;f>e;e++)d[e]=0;a>-1&&(d[a]=1-c),b>-1&&(d[b]=c)},a.MorphAnimMesh.prototype.clone=function(b){return void 0===b&&(b=new a.MorphAnimMesh(this.geometry,this.material)),b.duration=this.duration,b.mirroredLoop=this.mirroredLoop,b.time=this.time,b.lastKeyframe=this.lastKeyframe,b.currentKeyframe=this.currentKeyframe,b.direction=this.direction,b.directionBackwards=this.directionBackwards,a.Mesh.prototype.clone.call(this,b),b},a.LOD=function(){a.Object3D.call(this),this.objects=[]},a.LOD.prototype=Object.create(a.Object3D.prototype),a.LOD.prototype.addLevel=function(a,b){void 0===b&&(b=0),b=Math.abs(b);for(var c=0;cb&&!(a1){b.setFromMatrixPosition(a.matrixWorld),c.setFromMatrixPosition(this.matrixWorld);var d=b.distanceTo(c);this.objects[0].object.visible=!0;for(var e=1,f=this.objects.length;f>e&&d>=this.objects[e].distance;e++)this.objects[e-1].object.visible=!1,this.objects[e].object.visible=!0;for(;f>e;e++)this.objects[e].object.visible=!1}}}(),a.LOD.prototype.clone=function(b){void 0===b&&(b=new a.LOD),a.Object3D.prototype.clone.call(this,b);for(var c=0,d=this.objects.length;d>c;c++){var e=this.objects[c].object.clone();e.visible=0===c,b.addLevel(e,this.objects[c].distance)}return b},a.Sprite=function(){var b=new Uint16Array([0,1,2,0,2,3]),c=new Float32Array([-.5,-.5,0,.5,-.5,0,.5,.5,0,-.5,.5,0]),d=new Float32Array([0,0,1,0,1,1,0,1]),e=new a.BufferGeometry;return e.addAttribute("index",new a.BufferAttribute(b,1)),e.addAttribute("position",new a.BufferAttribute(c,3)),e.addAttribute("uv",new a.BufferAttribute(d,2)),function(b){a.Object3D.call(this),this.type="Sprite",this.geometry=e,this.material=void 0!==b?b:new a.SpriteMaterial}}(),a.Sprite.prototype=Object.create(a.Object3D.prototype),a.Sprite.prototype.raycast=function(){var b=new a.Vector3;return function(a,c){b.setFromMatrixPosition(this.matrixWorld);var d=a.ray.distanceToPoint(b);d>this.scale.x||c.push({distance:d,point:this.position,face:null,object:this})}}(),a.Sprite.prototype.clone=function(b){return void 0===b&&(b=new a.Sprite(this.material)),a.Object3D.prototype.clone.call(this,b),b},a.Particle=a.Sprite,a.LensFlare=function(b,c,d,e,f){a.Object3D.call(this),this.lensFlares=[],this.positionScreen=new a.Vector3,this.customUpdateCallback=void 0,void 0!==b&&this.add(b,c,d,e,f)},a.LensFlare.prototype=Object.create(a.Object3D.prototype), +a.LensFlare.prototype.add=function(b,c,d,e,f,g){void 0===c&&(c=-1),void 0===d&&(d=0),void 0===g&&(g=1),void 0===f&&(f=new a.Color(16777215)),void 0===e&&(e=a.NormalBlending),d=Math.min(d,Math.max(0,d)),this.lensFlares.push({texture:b,size:c,distance:d,x:0,y:0,z:0,scale:1,rotation:1,opacity:g,color:f,blending:e})},a.LensFlare.prototype.updateLensFlares=function(){var a,b,c=this.lensFlares.length,d=2*-this.positionScreen.x,e=2*-this.positionScreen.y;for(a=0;c>a;a++)b=this.lensFlares[a],b.x=this.positionScreen.x+d*b.distance,b.y=this.positionScreen.y+e*b.distance,b.wantedRotation=b.x*Math.PI*.25,b.rotation+=.25*(b.wantedRotation-b.rotation)},a.Scene=function(){a.Object3D.call(this),this.type="Scene",this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0},a.Scene.prototype=Object.create(a.Object3D.prototype),a.Scene.prototype.clone=function(b){return void 0===b&&(b=new a.Scene),a.Object3D.prototype.clone.call(this,b),null!==this.fog&&(b.fog=this.fog.clone()),null!==this.overrideMaterial&&(b.overrideMaterial=this.overrideMaterial.clone()),b.autoUpdate=this.autoUpdate,b.matrixAutoUpdate=this.matrixAutoUpdate,b},a.Fog=function(b,c,d){this.name="",this.color=new a.Color(b),this.near=void 0!==c?c:1,this.far=void 0!==d?d:1e3},a.Fog.prototype.clone=function(){return new a.Fog(this.color.getHex(),this.near,this.far)},a.FogExp2=function(b,c){this.name="",this.color=new a.Color(b),this.density=void 0!==c?c:25e-5},a.FogExp2.prototype.clone=function(){return new a.FogExp2(this.color.getHex(),this.density)},a.ShaderChunk={},a.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n if ( gl_FragColor.a < ALPHATEST ) discard;\n\n#endif\n",a.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n vLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n directionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n directionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n #endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n float dotProduct = dot( transformedNormal, lVector );\n\n vec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n pointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n pointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;\n\n #endif\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n float dotProduct = dot( transformedNormal, lVector );\n vec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n #ifdef DOUBLE_SIDED\n\n vec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n #endif\n\n #endif\n\n #ifdef WRAP_AROUND\n\n vec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n spotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n #ifdef DOUBLE_SIDED\n\n spotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n #endif\n\n #endif\n\n vLightFront += spotLightColor[ i ] * spotLightWeighting * lDistance * spotEffect;\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += spotLightColor[ i ] * spotLightWeightingBack * lDistance * spotEffect;\n\n #endif\n\n }\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n vec3 lVector = normalize( lDirection.xyz );\n\n float dotProduct = dot( transformedNormal, lVector );\n\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n float hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n vLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n #ifdef DOUBLE_SIDED\n\n vLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n #endif\n\n }\n\n#endif\n\nvLightFront = vLightFront * diffuse + ambient * ambientLightColor + emissive;\n\n#ifdef DOUBLE_SIDED\n\n vLightBack = vLightBack * diffuse + ambient * ambientLightColor + emissive;\n\n#endif",a.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n uniform sampler2D map;\n\n#endif",a.ShaderChunk.default_vertex="vec4 mvPosition;\n\n#ifdef USE_SKINNING\n\n mvPosition = modelViewMatrix * skinned;\n\n#endif\n\n#if !defined( USE_SKINNING ) && defined( USE_MORPHTARGETS )\n\n mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#endif\n\n#if !defined( USE_SKINNING ) && ! defined( USE_MORPHTARGETS )\n\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;",a.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n varying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n uniform sampler2D map;\n\n#endif",a.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n #ifdef USE_MORPHNORMALS\n\n vec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n #else\n\n vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n #endif\n\n#endif\n",a.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n varying float vFragDepth;\n\n #endif\n\n uniform float logDepthBufFC;\n\n#endif",a.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n varying vec2 vUv2;\n\n#endif",a.ShaderChunk.lights_phong_fragment="vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef DOUBLE_SIDED\n\n normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n#endif\n\n#ifdef USE_NORMALMAP\n\n normal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n vec3 pointDiffuse = vec3( 0.0 );\n vec3 pointSpecular = vec3( 0.0 );\n\n for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float pointDiffuseWeightFull = max( dotProduct, 0.0 );\n float pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float pointDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n pointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;\n\n // specular\n\n vec3 pointHalfVector = normalize( lVector + viewPosition );\n float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;\n\n }\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n vec3 spotDiffuse = vec3( 0.0 );\n vec3 spotSpecular = vec3( 0.0 );\n\n for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n\n lVector = normalize( lVector );\n\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n\n spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n\n #ifdef WRAP_AROUND\n\n float spotDiffuseWeightFull = max( dotProduct, 0.0 );\n float spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float spotDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n spotDiffuse += diffuse * spotLightColor[ i ] * spotDiffuseWeight * lDistance * spotEffect;\n\n // specular\n\n vec3 spotHalfVector = normalize( lVector + viewPosition );\n float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;\n\n }\n\n }\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n vec3 dirDiffuse = vec3( 0.0 );\n vec3 dirSpecular = vec3( 0.0 );\n\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n\n // diffuse\n\n float dotProduct = dot( normal, dirVector );\n\n #ifdef WRAP_AROUND\n\n float dirDiffuseWeightFull = max( dotProduct, 0.0 );\n float dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n vec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n #else\n\n float dirDiffuseWeight = max( dotProduct, 0.0 );\n\n #endif\n\n dirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\n\n // specular\n\n vec3 dirHalfVector = normalize( dirVector + viewPosition );\n float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n /*\n // fresnel term from skin shader\n const float F0 = 0.128;\n\n float base = 1.0 - dot( viewPosition, dirHalfVector );\n float exponential = pow( base, 5.0 );\n\n float fresnel = exponential + F0 * ( 1.0 - exponential );\n */\n\n /*\n // fresnel term from fresnel shader\n const float mFresnelBias = 0.08;\n const float mFresnelScale = 0.3;\n const float mFresnelPower = 5.0;\n\n float fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n */\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n // dirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n }\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n vec3 hemiDiffuse = vec3( 0.0 );\n vec3 hemiSpecular = vec3( 0.0 );\n\n for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\n vec3 lVector = normalize( lDirection.xyz );\n\n // diffuse\n\n float dotProduct = dot( normal, lVector );\n float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n hemiDiffuse += diffuse * hemiColor;\n\n // specular (sky light)\n\n vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n float hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n // specular (ground light)\n\n vec3 lVectorGround = -lVector;\n\n vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n float hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n float dotProductGround = dot( normal, lVectorGround );\n\n float specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n }\n\n#endif\n\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n\n#if MAX_DIR_LIGHTS > 0\n\n totalDiffuse += dirDiffuse;\n totalSpecular += dirSpecular;\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n totalDiffuse += hemiDiffuse;\n totalSpecular += hemiSpecular;\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n totalDiffuse += pointDiffuse;\n totalSpecular += pointSpecular;\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n totalDiffuse += spotDiffuse;\n totalSpecular += spotSpecular;\n\n#endif\n\n#ifdef METAL\n\n gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient + totalSpecular );\n\n#else\n\n gl_FragColor.xyz = gl_FragColor.xyz * ( emissive + totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n\n#endif",a.ShaderChunk.fog_pars_fragment="#ifdef USE_FOG\n\n uniform vec3 fogColor;\n\n #ifdef FOG_EXP2\n\n uniform float fogDensity;\n\n #else\n\n uniform float fogNear;\n uniform float fogFar;\n #endif\n\n#endif",a.ShaderChunk.morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\n vec3 morphedNormal = vec3( 0.0 );\n\n morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n\n morphedNormal += normal;\n\n#endif",a.ShaderChunk.envmap_pars_fragment="#ifdef USE_ENVMAP\n\n uniform float reflectivity;\n uniform samplerCube envMap;\n uniform float flipEnvMap;\n uniform int combine;\n\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n uniform bool useRefract;\n uniform float refractionRatio;\n\n #else\n\n varying vec3 vReflect;\n\n #endif\n\n#endif",a.ShaderChunk.logdepthbuf_fragment="#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\n gl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n#endif",a.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n\n // Per-Pixel Tangent Space Normal Mapping\n // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( vUv.st );\n vec2 st1 = dFdy( vUv.st );\n\n vec3 S = normalize( q0 * st1.t - q1 * st0.t );\n vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n vec3 N = normalize( surf_norm );\n\n vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n mapN.xy = normalScale * mapN.xy;\n mat3 tsn = mat3( S, T, N );\n return normalize( tsn * mapN );\n\n }\n\n#endif\n",a.ShaderChunk.lights_phong_pars_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n varying vec3 vWorldPosition;\n\n#endif\n",a.ShaderChunk.lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\n varying vec2 vUv2;\n uniform sampler2D lightMap;\n\n#endif",a.ShaderChunk.shadowmap_vertex="#ifdef USE_SHADOWMAP\n\n for( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n vShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n\n }\n\n#endif",a.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n vWorldPosition = worldPosition.xyz;\n\n#endif",a.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n vec4 texelColor = texture2D( map, vUv );\n\n #ifdef GAMMA_INPUT\n\n texelColor.xyz *= texelColor.xyz;\n\n #endif\n\n gl_FragColor = gl_FragColor * texelColor;\n\n#endif",a.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n vUv2 = uv2;\n\n#endif",a.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n gl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n\n#endif",a.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n varying vec3 vColor;\n\n#endif\n",a.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n #ifdef GAMMA_INPUT\n\n vColor = color * color;\n\n #else\n\n vColor = color;\n\n #endif\n\n#endif",a.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n #ifdef USE_MORPHTARGETS\n\n vec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n #else\n\n vec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n #endif\n\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n skinned = bindMatrixInverse * skinned;\n\n#endif\n",a.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n varying vec3 vReflect;\n\n uniform float refractionRatio;\n uniform bool useRefract;\n\n#endif\n",a.ShaderChunk.linear_to_gamma_fragment="#ifdef GAMMA_OUTPUT\n\n gl_FragColor.xyz = sqrt( gl_FragColor.xyz );\n\n#endif",a.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n varying vec3 vColor;\n\n#endif",a.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 emissive;\n\nuniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n",a.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n varying vec2 vUv;\n uniform vec4 offsetRepeat;\n\n#endif\n",a.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n vec3 reflectVec;\n\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n // http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations\n // Transforming Normal Vectors with the Inverse Transformation\n\n vec3 worldNormal = normalize( vec3( vec4( normal, 0.0 ) * viewMatrix ) );\n\n if ( useRefract ) {\n\n reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n } else { \n\n reflectVec = reflect( cameraToVertex, worldNormal );\n\n }\n\n #else\n\n reflectVec = vReflect;\n\n #endif\n\n #ifdef DOUBLE_SIDED\n\n float flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n vec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n #else\n\n vec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n #endif\n\n #ifdef GAMMA_INPUT\n\n cubeColor.xyz *= cubeColor.xyz;\n\n #endif\n\n if ( combine == 1 ) {\n\n gl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n\n } else if ( combine == 2 ) {\n\n gl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n\n } else {\n\n gl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n\n }\n\n#endif",a.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n uniform sampler2D specularMap;\n\n#endif",a.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC;\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n vFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n #endif\n\n#endif",a.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n #ifndef USE_MORPHNORMALS\n\n uniform float morphTargetInfluences[ 8 ];\n\n #else\n\n uniform float morphTargetInfluences[ 4 ];\n\n #endif\n\n#endif",a.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n vec4 texelSpecular = texture2D( specularMap, vUv );\n specularStrength = texelSpecular.r;\n\n#else\n\n specularStrength = 1.0;\n\n#endif",a.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n float depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n #else\n\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n\n #endif\n\n #ifdef FOG_EXP2\n\n const float LOG2 = 1.442695;\n float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\n fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n\n #else\n\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n\n #endif\n \n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n\n#endif",a.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n\n // Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n // http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n // Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n vec2 dHdxy_fwd() {\n\n vec2 dSTdx = dFdx( vUv );\n vec2 dSTdy = dFdy( vUv );\n\n float Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n return vec2( dBx, dBy );\n\n }\n\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n vec3 vSigmaX = dFdx( surf_pos );\n vec3 vSigmaY = dFdy( surf_pos );\n vec3 vN = surf_norm; // normalized\n\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n\n float fDet = dot( vSigmaX, R1 );\n\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n\n }\n\n#endif",a.ShaderChunk.defaultnormal_vertex="vec3 objectNormal;\n\n#ifdef USE_SKINNING\n\n objectNormal = skinnedNormal.xyz;\n\n#endif\n\n#if !defined( USE_SKINNING ) && defined( USE_MORPHNORMALS )\n\n objectNormal = morphedNormal;\n\n#endif\n\n#if !defined( USE_SKINNING ) && ! defined( USE_MORPHNORMALS )\n\n objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n objectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;",a.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n uniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\n uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n varying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n uniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",a.ShaderChunk.skinbase_vertex="#ifdef USE_SKINNING\n\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n\n#endif",a.ShaderChunk.map_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n vUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n\n#endif",a.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n gl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n\n#endif",a.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n varying vec4 vShadowCoord[ MAX_SHADOWS ];\n uniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif",a.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n gl_FragColor = gl_FragColor * vec4( vColor, 1.0 );\n\n#endif",a.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n vec3 morphed = vec3( 0.0 );\n morphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n morphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n morphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n morphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n #ifndef USE_MORPHNORMALS\n\n morphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n morphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n morphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n morphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n #endif\n\n morphed += position;\n\n#endif",a.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n vec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;\n worldNormal = normalize( worldNormal );\n\n vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n if ( useRefract ) {\n\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n } else {\n\n vReflect = reflect( cameraToVertex, worldNormal );\n\n }\n\n#endif",a.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n #ifdef SHADOWMAP_DEBUG\n\n vec3 frustumColors[3];\n frustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n frustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n frustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n #endif\n\n #ifdef SHADOWMAP_CASCADE\n\n int inFrustumCount = 0;\n\n #endif\n\n float fDepth;\n vec3 shadowColor = vec3( 1.0 );\n\n for( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n // if ( something && something ) breaks ATI OpenGL shader compiler\n // if ( all( something, something ) ) using this instead\n\n bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n bool inFrustum = all( inFrustumVec );\n\n // don't shadow pixels outside of light frustum\n // use just first frustum (for cascades)\n // don't shadow pixels behind far plane of light frustum\n\n #ifdef SHADOWMAP_CASCADE\n\n inFrustumCount += int( inFrustum );\n bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n #else\n\n bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n #endif\n\n bool frustumTest = all( frustumTestVec );\n\n if ( frustumTest ) {\n\n shadowCoord.z += shadowBias[ i ];\n\n #if defined( SHADOWMAP_TYPE_PCF )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n /*\n // nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n // must enroll loop manually\n\n for ( float y = -1.25; y <= 1.25; y += 1.25 )\n for ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n // doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n //vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n shadow += 1.0;\n\n }\n\n shadow /= 9.0;\n\n */\n\n const float shadowDelta = 1.0 / 9.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.25 * xPixelOffset;\n float dy0 = -1.25 * yPixelOffset;\n float dx1 = 1.25 * xPixelOffset;\n float dy1 = 1.25 * yPixelOffset;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n if ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n // Percentage-close filtering\n // (9 pixel kernel)\n // http://fabiensanglard.net/shadowmappingPCF/\n\n float shadow = 0.0;\n\n float xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n float yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n float dx0 = -1.0 * xPixelOffset;\n float dy0 = -1.0 * yPixelOffset;\n float dx1 = 1.0 * xPixelOffset;\n float dy1 = 1.0 * yPixelOffset;\n\n mat3 shadowKernel;\n mat3 depthKernel;\n\n depthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n depthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n depthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n depthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n depthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n depthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n depthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n depthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n depthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n vec3 shadowZ = vec3( shadowCoord.z );\n shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n shadowKernel[0] *= vec3(0.25);\n\n shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n shadowKernel[1] *= vec3(0.25);\n\n shadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n shadowKernel[2] *= vec3(0.25);\n\n vec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n shadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n shadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n vec4 shadowValues;\n shadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n shadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n shadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n shadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n shadow = dot( shadowValues, vec4( 1.0 ) );\n\n shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n #else\n\n vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n float fDepth = unpackDepth( rgbaDepth );\n\n if ( fDepth < shadowCoord.z )\n\n // spot with multiple shadows is darker\n\n shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n // spot with multiple shadows has the same color as single shadow spot\n\n // shadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n #endif\n\n }\n\n\n #ifdef SHADOWMAP_DEBUG\n\n #ifdef SHADOWMAP_CASCADE\n\n if ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];\n\n #else\n\n if ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];\n\n #endif\n\n #endif\n\n }\n\n #ifdef GAMMA_OUTPUT\n\n shadowColor *= shadowColor;\n\n #endif\n\n gl_FragColor.xyz = gl_FragColor.xyz * shadowColor;\n\n#endif\n", +a.ShaderChunk.worldpos_vertex="#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\n #ifdef USE_SKINNING\n\n vec4 worldPosition = modelMatrix * skinned;\n\n #endif\n\n #if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\n\n vec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n\n #endif\n\n #if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\n\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\n #endif\n\n#endif",a.ShaderChunk.shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\n uniform sampler2D shadowMap[ MAX_SHADOWS ];\n uniform vec2 shadowMapSize[ MAX_SHADOWS ];\n\n uniform float shadowDarkness[ MAX_SHADOWS ];\n uniform float shadowBias[ MAX_SHADOWS ];\n\n varying vec4 vShadowCoord[ MAX_SHADOWS ];\n\n float unpackDepth( const in vec4 rgba_depth ) {\n\n const vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n float depth = dot( rgba_depth, bit_shift );\n return depth;\n\n }\n\n#endif",a.ShaderChunk.skinning_pars_vertex="#ifdef USE_SKINNING\n\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n\n #ifdef BONE_TEXTURE\n\n uniform sampler2D boneTexture;\n uniform int boneTextureWidth;\n uniform int boneTextureHeight;\n\n mat4 getBoneMatrix( const in float i ) {\n\n float j = i * 4.0;\n float x = mod( j, float( boneTextureWidth ) );\n float y = floor( j / float( boneTextureWidth ) );\n\n float dx = 1.0 / float( boneTextureWidth );\n float dy = 1.0 / float( boneTextureHeight );\n\n y = dy * ( y + 0.5 );\n\n vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\n mat4 bone = mat4( v1, v2, v3, v4 );\n\n return bone;\n\n }\n\n #else\n\n uniform mat4 boneGlobalMatrices[ MAX_BONES ];\n\n mat4 getBoneMatrix( const in float i ) {\n\n mat4 bone = boneGlobalMatrices[ int(i) ];\n return bone;\n\n }\n\n #endif\n\n#endif\n",a.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n uniform float logDepthBufFC;\n\n #ifdef USE_LOGDEPTHBUF_EXT\n\n #extension GL_EXT_frag_depth : enable\n varying float vFragDepth;\n\n #endif\n\n#endif",a.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n gl_FragColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n",a.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n uniform sampler2D alphaMap;\n\n#endif\n",a.UniformsUtils={merge:function(a){for(var b={},c=0;c dashSize ) {"," discard;"," }"," gl_FragColor = vec4( diffuse, opacity );",a.ShaderChunk.logdepthbuf_fragment,a.ShaderChunk.color_fragment,a.ShaderChunk.fog_fragment,"}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2e3},opacity:{type:"f",value:1}},vertexShader:[a.ShaderChunk.morphtarget_pars_vertex,a.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",a.ShaderChunk.morphtarget_vertex,a.ShaderChunk.default_vertex,a.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","uniform float opacity;",a.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",a.ShaderChunk.logdepthbuf_fragment," #ifdef USE_LOGDEPTHBUF_EXT"," float depth = gl_FragDepthEXT / gl_FragCoord.w;"," #else"," float depth = gl_FragCoord.z / gl_FragCoord.w;"," #endif"," float color = 1.0 - smoothstep( mNear, mFar, depth );"," gl_FragColor = vec4( vec3( color ), opacity );","}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",a.ShaderChunk.morphtarget_pars_vertex,a.ShaderChunk.logdepthbuf_pars_vertex,"void main() {"," vNormal = normalize( normalMatrix * normal );",a.ShaderChunk.morphtarget_vertex,a.ShaderChunk.default_vertex,a.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;","varying vec3 vNormal;",a.ShaderChunk.logdepthbuf_pars_fragment,"void main() {"," gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",a.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},normalmap:{uniforms:a.UniformsUtils.merge([a.UniformsLib.fog,a.UniformsLib.lights,a.UniformsLib.shadowmap,{enableAO:{type:"i",value:0},enableDiffuse:{type:"i",value:0},enableSpecular:{type:"i",value:0},enableReflection:{type:"i",value:0},enableDisplacement:{type:"i",value:0},tDisplacement:{type:"t",value:null},tDiffuse:{type:"t",value:null},tCube:{type:"t",value:null},tNormal:{type:"t",value:null},tSpecular:{type:"t",value:null},tAO:{type:"t",value:null},uNormalScale:{type:"v2",value:new a.Vector2(1,1)},uDisplacementBias:{type:"f",value:0},uDisplacementScale:{type:"f",value:1},diffuse:{type:"c",value:new a.Color(16777215)},specular:{type:"c",value:new a.Color(1118481)},ambient:{type:"c",value:new a.Color(16777215)},shininess:{type:"f",value:30},opacity:{type:"f",value:1},useRefract:{type:"i",value:0},refractionRatio:{type:"f",value:.98},reflectivity:{type:"f",value:.5},uOffset:{type:"v2",value:new a.Vector2(0,0)},uRepeat:{type:"v2",value:new a.Vector2(1,1)},wrapRGB:{type:"v3",value:new a.Vector3(1,1,1)}}]),fragmentShader:["uniform vec3 ambient;","uniform vec3 diffuse;","uniform vec3 specular;","uniform float shininess;","uniform float opacity;","uniform bool enableDiffuse;","uniform bool enableSpecular;","uniform bool enableAO;","uniform bool enableReflection;","uniform sampler2D tDiffuse;","uniform sampler2D tNormal;","uniform sampler2D tSpecular;","uniform sampler2D tAO;","uniform samplerCube tCube;","uniform vec2 uNormalScale;","uniform bool useRefract;","uniform float refractionRatio;","uniform float reflectivity;","varying vec3 vTangent;","varying vec3 vBinormal;","varying vec3 vNormal;","varying vec2 vUv;","uniform vec3 ambientLightColor;","#if MAX_DIR_LIGHTS > 0"," uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];"," uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];","#endif","#if MAX_HEMI_LIGHTS > 0"," uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];"," uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];"," uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];","#endif","#if MAX_POINT_LIGHTS > 0"," uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];"," uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];"," uniform float pointLightDistance[ MAX_POINT_LIGHTS ];","#endif","#if MAX_SPOT_LIGHTS > 0"," uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];"," uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];"," uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];"," uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];"," uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];"," uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];","#endif","#ifdef WRAP_AROUND"," uniform vec3 wrapRGB;","#endif","varying vec3 vWorldPosition;","varying vec3 vViewPosition;",a.ShaderChunk.shadowmap_pars_fragment,a.ShaderChunk.fog_pars_fragment,a.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",a.ShaderChunk.logdepthbuf_fragment," gl_FragColor = vec4( vec3( 1.0 ), opacity );"," vec3 specularTex = vec3( 1.0 );"," vec3 normalTex = texture2D( tNormal, vUv ).xyz * 2.0 - 1.0;"," normalTex.xy *= uNormalScale;"," normalTex = normalize( normalTex );"," if( enableDiffuse ) {"," #ifdef GAMMA_INPUT"," vec4 texelColor = texture2D( tDiffuse, vUv );"," texelColor.xyz *= texelColor.xyz;"," gl_FragColor = gl_FragColor * texelColor;"," #else"," gl_FragColor = gl_FragColor * texture2D( tDiffuse, vUv );"," #endif"," }"," if( enableAO ) {"," #ifdef GAMMA_INPUT"," vec4 aoColor = texture2D( tAO, vUv );"," aoColor.xyz *= aoColor.xyz;"," gl_FragColor.xyz = gl_FragColor.xyz * aoColor.xyz;"," #else"," gl_FragColor.xyz = gl_FragColor.xyz * texture2D( tAO, vUv ).xyz;"," #endif"," }",a.ShaderChunk.alphatest_fragment," if( enableSpecular )"," specularTex = texture2D( tSpecular, vUv ).xyz;"," mat3 tsb = mat3( normalize( vTangent ), normalize( vBinormal ), normalize( vNormal ) );"," vec3 finalNormal = tsb * normalTex;"," #ifdef FLIP_SIDED"," finalNormal = -finalNormal;"," #endif"," vec3 normal = normalize( finalNormal );"," vec3 viewPosition = normalize( vViewPosition );"," #if MAX_POINT_LIGHTS > 0"," vec3 pointDiffuse = vec3( 0.0 );"," vec3 pointSpecular = vec3( 0.0 );"," for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {"," vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );"," vec3 pointVector = lPosition.xyz + vViewPosition.xyz;"," float pointDistance = 1.0;"," if ( pointLightDistance[ i ] > 0.0 )"," pointDistance = 1.0 - min( ( length( pointVector ) / pointLightDistance[ i ] ), 1.0 );"," pointVector = normalize( pointVector );"," #ifdef WRAP_AROUND"," float pointDiffuseWeightFull = max( dot( normal, pointVector ), 0.0 );"," float pointDiffuseWeightHalf = max( 0.5 * dot( normal, pointVector ) + 0.5, 0.0 );"," vec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );"," #else"," float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );"," #endif"," pointDiffuse += pointDistance * pointLightColor[ i ] * diffuse * pointDiffuseWeight;"," vec3 pointHalfVector = normalize( pointVector + viewPosition );"," float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );"," float pointSpecularWeight = specularTex.r * max( pow( pointDotNormalHalf, shininess ), 0.0 );"," float specularNormalization = ( shininess + 2.0 ) / 8.0;"," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( pointVector, pointHalfVector ), 0.0 ), 5.0 );"," pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance * specularNormalization;"," }"," #endif"," #if MAX_SPOT_LIGHTS > 0"," vec3 spotDiffuse = vec3( 0.0 );"," vec3 spotSpecular = vec3( 0.0 );"," for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {"," vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );"," vec3 spotVector = lPosition.xyz + vViewPosition.xyz;"," float spotDistance = 1.0;"," if ( spotLightDistance[ i ] > 0.0 )"," spotDistance = 1.0 - min( ( length( spotVector ) / spotLightDistance[ i ] ), 1.0 );"," spotVector = normalize( spotVector );"," float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );"," if ( spotEffect > spotLightAngleCos[ i ] ) {"," spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );"," #ifdef WRAP_AROUND"," float spotDiffuseWeightFull = max( dot( normal, spotVector ), 0.0 );"," float spotDiffuseWeightHalf = max( 0.5 * dot( normal, spotVector ) + 0.5, 0.0 );"," vec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );"," #else"," float spotDiffuseWeight = max( dot( normal, spotVector ), 0.0 );"," #endif"," spotDiffuse += spotDistance * spotLightColor[ i ] * diffuse * spotDiffuseWeight * spotEffect;"," vec3 spotHalfVector = normalize( spotVector + viewPosition );"," float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );"," float spotSpecularWeight = specularTex.r * max( pow( spotDotNormalHalf, shininess ), 0.0 );"," float specularNormalization = ( shininess + 2.0 ) / 8.0;"," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( spotVector, spotHalfVector ), 0.0 ), 5.0 );"," spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * spotDistance * specularNormalization * spotEffect;"," }"," }"," #endif"," #if MAX_DIR_LIGHTS > 0"," vec3 dirDiffuse = vec3( 0.0 );"," vec3 dirSpecular = vec3( 0.0 );"," for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {"," vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );"," vec3 dirVector = normalize( lDirection.xyz );"," #ifdef WRAP_AROUND"," float directionalLightWeightingFull = max( dot( normal, dirVector ), 0.0 );"," float directionalLightWeightingHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );"," vec3 dirDiffuseWeight = mix( vec3( directionalLightWeightingFull ), vec3( directionalLightWeightingHalf ), wrapRGB );"," #else"," float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );"," #endif"," dirDiffuse += directionalLightColor[ i ] * diffuse * dirDiffuseWeight;"," vec3 dirHalfVector = normalize( dirVector + viewPosition );"," float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );"," float dirSpecularWeight = specularTex.r * max( pow( dirDotNormalHalf, shininess ), 0.0 );"," float specularNormalization = ( shininess + 2.0 ) / 8.0;"," vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );"," dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;"," }"," #endif"," #if MAX_HEMI_LIGHTS > 0"," vec3 hemiDiffuse = vec3( 0.0 );"," vec3 hemiSpecular = vec3( 0.0 );"," for( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {"," vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );"," vec3 lVector = normalize( lDirection.xyz );"," float dotProduct = dot( normal, lVector );"," float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;"," vec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );"," hemiDiffuse += diffuse * hemiColor;"," vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );"," float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;"," float hemiSpecularWeightSky = specularTex.r * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );"," vec3 lVectorGround = -lVector;"," vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );"," float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;"," float hemiSpecularWeightGround = specularTex.r * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );"," float dotProductGround = dot( normal, lVectorGround );"," float specularNormalization = ( shininess + 2.0 ) / 8.0;"," vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );"," vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );"," hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );"," }"," #endif"," vec3 totalDiffuse = vec3( 0.0 );"," vec3 totalSpecular = vec3( 0.0 );"," #if MAX_DIR_LIGHTS > 0"," totalDiffuse += dirDiffuse;"," totalSpecular += dirSpecular;"," #endif"," #if MAX_HEMI_LIGHTS > 0"," totalDiffuse += hemiDiffuse;"," totalSpecular += hemiSpecular;"," #endif"," #if MAX_POINT_LIGHTS > 0"," totalDiffuse += pointDiffuse;"," totalSpecular += pointSpecular;"," #endif"," #if MAX_SPOT_LIGHTS > 0"," totalDiffuse += spotDiffuse;"," totalSpecular += spotSpecular;"," #endif"," #ifdef METAL"," gl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient + totalSpecular );"," #else"," gl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient ) + totalSpecular;"," #endif"," if ( enableReflection ) {"," vec3 vReflect;"," vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );"," if ( useRefract ) {"," vReflect = refract( cameraToVertex, normal, refractionRatio );"," } else {"," vReflect = reflect( cameraToVertex, normal );"," }"," vec4 cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );"," #ifdef GAMMA_INPUT"," cubeColor.xyz *= cubeColor.xyz;"," #endif"," gl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularTex.r * reflectivity );"," }",a.ShaderChunk.shadowmap_fragment,a.ShaderChunk.linear_to_gamma_fragment,a.ShaderChunk.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;","uniform vec2 uOffset;","uniform vec2 uRepeat;","uniform bool enableDisplacement;","#ifdef VERTEX_TEXTURES"," uniform sampler2D tDisplacement;"," uniform float uDisplacementScale;"," uniform float uDisplacementBias;","#endif","varying vec3 vTangent;","varying vec3 vBinormal;","varying vec3 vNormal;","varying vec2 vUv;","varying vec3 vWorldPosition;","varying vec3 vViewPosition;",a.ShaderChunk.skinning_pars_vertex,a.ShaderChunk.shadowmap_pars_vertex,a.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",a.ShaderChunk.skinbase_vertex,a.ShaderChunk.skinnormal_vertex," #ifdef USE_SKINNING"," vNormal = normalize( normalMatrix * skinnedNormal.xyz );"," vec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );"," vTangent = normalize( normalMatrix * skinnedTangent.xyz );"," #else"," vNormal = normalize( normalMatrix * normal );"," vTangent = normalize( normalMatrix * tangent.xyz );"," #endif"," vBinormal = normalize( cross( vNormal, vTangent ) * tangent.w );"," vUv = uv * uRepeat + uOffset;"," vec3 displacedPosition;"," #ifdef VERTEX_TEXTURES"," if ( enableDisplacement ) {"," vec3 dv = texture2D( tDisplacement, uv ).xyz;"," float df = uDisplacementScale * dv.x + uDisplacementBias;"," displacedPosition = position + normalize( normal ) * df;"," } else {"," #ifdef USE_SKINNING"," vec4 skinVertex = bindMatrix * vec4( position, 1.0 );"," vec4 skinned = vec4( 0.0 );"," skinned += boneMatX * skinVertex * skinWeight.x;"," skinned += boneMatY * skinVertex * skinWeight.y;"," skinned += boneMatZ * skinVertex * skinWeight.z;"," skinned += boneMatW * skinVertex * skinWeight.w;"," skinned = bindMatrixInverse * skinned;"," displacedPosition = skinned.xyz;"," #else"," displacedPosition = position;"," #endif"," }"," #else"," #ifdef USE_SKINNING"," vec4 skinVertex = bindMatrix * vec4( position, 1.0 );"," vec4 skinned = vec4( 0.0 );"," skinned += boneMatX * skinVertex * skinWeight.x;"," skinned += boneMatY * skinVertex * skinWeight.y;"," skinned += boneMatZ * skinVertex * skinWeight.z;"," skinned += boneMatW * skinVertex * skinWeight.w;"," skinned = bindMatrixInverse * skinned;"," displacedPosition = skinned.xyz;"," #else"," displacedPosition = position;"," #endif"," #endif"," vec4 mvPosition = modelViewMatrix * vec4( displacedPosition, 1.0 );"," vec4 worldPosition = modelMatrix * vec4( displacedPosition, 1.0 );"," gl_Position = projectionMatrix * mvPosition;",a.ShaderChunk.logdepthbuf_vertex," vWorldPosition = worldPosition.xyz;"," vViewPosition = -mvPosition.xyz;"," #ifdef USE_SHADOWMAP"," for( int i = 0; i < MAX_SHADOWS; i ++ ) {"," vShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;"," }"," #endif","}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",a.ShaderChunk.logdepthbuf_pars_vertex,"void main() {"," vec4 worldPosition = modelMatrix * vec4( position, 1.0 );"," vWorldPosition = worldPosition.xyz;"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",a.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",a.ShaderChunk.logdepthbuf_pars_fragment,"void main() {"," gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",a.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[a.ShaderChunk.morphtarget_pars_vertex,a.ShaderChunk.skinning_pars_vertex,a.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",a.ShaderChunk.skinbase_vertex,a.ShaderChunk.morphtarget_vertex,a.ShaderChunk.skinning_vertex,a.ShaderChunk.default_vertex,a.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[a.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {"," const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );"," const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );"," vec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );"," res -= res.xxyz * bit_mask;"," return res;","}","void main() {",a.ShaderChunk.logdepthbuf_fragment," #ifdef USE_LOGDEPTHBUF_EXT"," gl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );"," #else"," gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );"," #endif","}"].join("\n")}},a.WebGLRenderer=function(b){function c(){La.clearColor(0,0,0,1),La.clearDepth(1),La.clearStencil(0),La.enable(La.DEPTH_TEST),La.depthFunc(La.LEQUAL),La.frontFace(La.CCW),La.cullFace(La.BACK),La.enable(La.CULL_FACE),La.enable(La.BLEND),La.blendEquation(La.FUNC_ADD),La.blendFunc(La.SRC_ALPHA,La.ONE_MINUS_SRC_ALPHA),La.viewport(eb,fb,gb,hb),La.clearColor(Ca.r,Ca.g,Ca.b,Da)}function d(a){ +a.__webglVertexBuffer=La.createBuffer(),a.__webglColorBuffer=La.createBuffer(),Ma.info.memory.geometries++}function e(a){a.__webglVertexBuffer=La.createBuffer(),a.__webglColorBuffer=La.createBuffer(),a.__webglLineDistanceBuffer=La.createBuffer(),Ma.info.memory.geometries++}function f(a){a.__webglVertexBuffer=La.createBuffer(),a.__webglNormalBuffer=La.createBuffer(),a.__webglTangentBuffer=La.createBuffer(),a.__webglColorBuffer=La.createBuffer(),a.__webglUVBuffer=La.createBuffer(),a.__webglUV2Buffer=La.createBuffer(),a.__webglSkinIndicesBuffer=La.createBuffer(),a.__webglSkinWeightsBuffer=La.createBuffer(),a.__webglFaceBuffer=La.createBuffer(),a.__webglLineBuffer=La.createBuffer();var b,c;if(a.numMorphTargets)for(a.__webglMorphTargetsBuffers=[],b=0,c=a.numMorphTargets;c>b;b++)a.__webglMorphTargetsBuffers.push(La.createBuffer());if(a.numMorphNormals)for(a.__webglMorphNormalsBuffers=[],b=0,c=a.numMorphNormals;c>b;b++)a.__webglMorphNormalsBuffers.push(La.createBuffer());Ma.info.memory.geometries++}function g(a){var b=a.geometry,c=a.material,d=b.vertices.length;if(c.attributes){void 0===b.__webglCustomAttributesList&&(b.__webglCustomAttributesList=[]);for(var e in c.attributes){var f=c.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var g=1;"v2"===f.type?g=2:"v3"===f.type?g=3:"v4"===f.type?g=4:"c"===f.type&&(g=3),f.size=g,f.array=new Float32Array(d*g),f.buffer=La.createBuffer(),f.buffer.belongsToAttribute=e,f.needsUpdate=!0}b.__webglCustomAttributesList.push(f)}}}function h(a,b){var c=a.vertices.length;a.__vertexArray=new Float32Array(3*c),a.__colorArray=new Float32Array(3*c),a.__sortArray=[],a.__webglParticleCount=c,g(b)}function i(a,b){var c=a.vertices.length;a.__vertexArray=new Float32Array(3*c),a.__colorArray=new Float32Array(3*c),a.__lineDistanceArray=new Float32Array(1*c),a.__webglLineCount=c,g(b)}function j(a,b){var c=b.geometry,d=a.faces3,e=3*d.length,f=1*d.length,g=3*d.length,h=k(b,a);a.__vertexArray=new Float32Array(3*e),a.__normalArray=new Float32Array(3*e),a.__colorArray=new Float32Array(3*e),a.__uvArray=new Float32Array(2*e),c.faceVertexUvs.length>1&&(a.__uv2Array=new Float32Array(2*e)),c.hasTangents&&(a.__tangentArray=new Float32Array(4*e)),b.geometry.skinWeights.length&&b.geometry.skinIndices.length&&(a.__skinIndexArray=new Float32Array(4*e),a.__skinWeightArray=new Float32Array(4*e));var i=null!==vb.get("OES_element_index_uint")&&f>21845?Uint32Array:Uint16Array;a.__typeArray=i,a.__faceArray=new i(3*f),a.__lineArray=new i(2*g);var j,l;if(a.numMorphTargets)for(a.__morphTargetsArrays=[],j=0,l=a.numMorphTargets;l>j;j++)a.__morphTargetsArrays.push(new Float32Array(3*e));if(a.numMorphNormals)for(a.__morphNormalsArrays=[],j=0,l=a.numMorphNormals;l>j;j++)a.__morphNormalsArrays.push(new Float32Array(3*e));if(a.__webglFaceCount=3*f,a.__webglLineCount=2*g,h.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var m in h.attributes){var n=h.attributes[m],o={};for(var p in n)o[p]=n[p];if(!o.__webglInitialized||o.createUniqueBuffers){o.__webglInitialized=!0;var q=1;"v2"===o.type?q=2:"v3"===o.type?q=3:"v4"===o.type?q=4:"c"===o.type&&(q=3),o.size=q,o.array=new Float32Array(e*q),o.buffer=La.createBuffer(),o.buffer.belongsToAttribute=m,n.needsUpdate=!0,o.__original=n}a.__webglCustomAttributesList.push(o)}}a.__inittedArrays=!0}function k(b,c){return b.material instanceof a.MeshFaceMaterial?b.material.materials[c.materialIndex]:b.material}function l(b){return b&&void 0!==b.shading&&b.shading===a.SmoothShading}function m(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p=a.vertices,q=p.length,r=a.colors,s=r.length,t=a.__vertexArray,u=a.__colorArray,v=a.__sortArray,w=a.verticesNeedUpdate,y=(a.elementsNeedUpdate,a.colorsNeedUpdate),z=a.__webglCustomAttributesList;if(c.sortParticles){for(ob.copy(nb),ob.multiply(c.matrixWorld),d=0;q>d;d++)f=p[d],pb.copy(f),pb.applyProjection(ob),v[d]=[pb.z,d];for(v.sort(x),d=0;q>d;d++)f=p[v[d][1]],g=3*d,t[g]=f.x,t[g+1]=f.y,t[g+2]=f.z;for(e=0;s>e;e++)g=3*e,i=r[v[e][1]],u[g]=i.r,u[g+1]=i.g,u[g+2]=i.b;if(z)for(j=0,k=z.length;k>j;j++)if(o=z[j],void 0===o.boundTo||"vertices"===o.boundTo)if(g=0,m=o.value.length,1===o.size)for(l=0;m>l;l++)h=v[l][1],o.array[l]=o.value[h];else if(2===o.size)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,g+=2;else if(3===o.size)if("c"===o.type)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.r,o.array[g+1]=n.g,o.array[g+2]=n.b,g+=3;else for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,g+=3;else if(4===o.size)for(l=0;m>l;l++)h=v[l][1],n=o.value[h],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,o.array[g+3]=n.w,g+=4}else{if(w)for(d=0;q>d;d++)f=p[d],g=3*d,t[g]=f.x,t[g+1]=f.y,t[g+2]=f.z;if(y)for(e=0;s>e;e++)i=r[e],g=3*e,u[g]=i.r,u[g+1]=i.g,u[g+2]=i.b;if(z)for(j=0,k=z.length;k>j;j++)if(o=z[j],o.needsUpdate&&(void 0===o.boundTo||"vertices"===o.boundTo))if(m=o.value.length,g=0,1===o.size)for(l=0;m>l;l++)o.array[l]=o.value[l];else if(2===o.size)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,g+=2;else if(3===o.size)if("c"===o.type)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.r,o.array[g+1]=n.g,o.array[g+2]=n.b,g+=3;else for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,g+=3;else if(4===o.size)for(l=0;m>l;l++)n=o.value[l],o.array[g]=n.x,o.array[g+1]=n.y,o.array[g+2]=n.z,o.array[g+3]=n.w,g+=4}if((w||c.sortParticles)&&(La.bindBuffer(La.ARRAY_BUFFER,a.__webglVertexBuffer),La.bufferData(La.ARRAY_BUFFER,t,b)),(y||c.sortParticles)&&(La.bindBuffer(La.ARRAY_BUFFER,a.__webglColorBuffer),La.bufferData(La.ARRAY_BUFFER,u,b)),z)for(j=0,k=z.length;k>j;j++)o=z[j],(o.needsUpdate||c.sortParticles)&&(La.bindBuffer(La.ARRAY_BUFFER,o.buffer),La.bufferData(La.ARRAY_BUFFER,o.array,b))}function n(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=a.vertices,p=a.colors,q=a.lineDistances,r=o.length,s=p.length,t=q.length,u=a.__vertexArray,v=a.__colorArray,w=a.__lineDistanceArray,x=a.verticesNeedUpdate,y=a.colorsNeedUpdate,z=a.lineDistancesNeedUpdate,A=a.__webglCustomAttributesList;if(x){for(c=0;r>c;c++)f=o[c],g=3*c,u[g]=f.x,u[g+1]=f.y,u[g+2]=f.z;La.bindBuffer(La.ARRAY_BUFFER,a.__webglVertexBuffer),La.bufferData(La.ARRAY_BUFFER,u,b)}if(y){for(d=0;s>d;d++)h=p[d],g=3*d,v[g]=h.r,v[g+1]=h.g,v[g+2]=h.b;La.bindBuffer(La.ARRAY_BUFFER,a.__webglColorBuffer),La.bufferData(La.ARRAY_BUFFER,v,b)}if(z){for(e=0;t>e;e++)w[e]=q[e];La.bindBuffer(La.ARRAY_BUFFER,a.__webglLineDistanceBuffer),La.bufferData(La.ARRAY_BUFFER,w,b)}if(A)for(i=0,j=A.length;j>i;i++)if(n=A[i],n.needsUpdate&&(void 0===n.boundTo||"vertices"===n.boundTo)){if(g=0,l=n.value.length,1===n.size)for(k=0;l>k;k++)n.array[k]=n.value[k];else if(2===n.size)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,g+=2;else if(3===n.size)if("c"===n.type)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.r,n.array[g+1]=m.g,n.array[g+2]=m.b,g+=3;else for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,n.array[g+2]=m.z,g+=3;else if(4===n.size)for(k=0;l>k;k++)m=n.value[k],n.array[g]=m.x,n.array[g+1]=m.y,n.array[g+2]=m.z,n.array[g+3]=m.w,g+=4;La.bindBuffer(La.ARRAY_BUFFER,n.buffer),La.bufferData(La.ARRAY_BUFFER,n.array,b)}}function o(b,c,d,e,f){if(b.__inittedArrays){var g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=l(f),Y=0,Z=0,$=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=b.__vertexArray,ka=b.__uvArray,la=b.__uv2Array,ma=b.__normalArray,na=b.__tangentArray,oa=b.__colorArray,pa=b.__skinIndexArray,qa=b.__skinWeightArray,ra=b.__morphTargetsArrays,sa=b.__morphNormalsArrays,ta=b.__webglCustomAttributesList,ua=b.__faceArray,va=b.__lineArray,wa=c.geometry,xa=wa.verticesNeedUpdate,ya=wa.elementsNeedUpdate,za=wa.uvsNeedUpdate,Aa=wa.normalsNeedUpdate,Ba=wa.tangentsNeedUpdate,Ca=wa.colorsNeedUpdate,Da=wa.morphTargetsNeedUpdate,Ea=wa.vertices,Fa=b.faces3,Ga=wa.faces,Ha=wa.faceVertexUvs[0],Ia=wa.faceVertexUvs[1],Ja=(wa.colors,wa.skinIndices),Ka=wa.skinWeights,Ma=wa.morphTargets,Na=wa.morphNormals;if(xa){for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],s=Ea[j.a],t=Ea[j.b],u=Ea[j.c],ja[Z]=s.x,ja[Z+1]=s.y,ja[Z+2]=s.z,ja[Z+3]=t.x,ja[Z+4]=t.y,ja[Z+5]=t.z,ja[Z+6]=u.x,ja[Z+7]=u.y,ja[Z+8]=u.z,Z+=9;La.bindBuffer(La.ARRAY_BUFFER,b.__webglVertexBuffer),La.bufferData(La.ARRAY_BUFFER,ja,d)}if(Da)for(P=0,Q=Ma.length;Q>P;P++){for(ga=0,g=0,h=Fa.length;h>g;g++)T=Fa[g],j=Ga[T],s=Ma[P].vertices[j.a],t=Ma[P].vertices[j.b],u=Ma[P].vertices[j.c],R=ra[P],R[ga]=s.x,R[ga+1]=s.y,R[ga+2]=s.z,R[ga+3]=t.x,R[ga+4]=t.y,R[ga+5]=t.z,R[ga+6]=u.x,R[ga+7]=u.y,R[ga+8]=u.z,f.morphNormals&&(X?(U=Na[P].vertexNormals[T],y=U.a,z=U.b,A=U.c):(y=Na[P].faceNormals[T],z=y,A=y),S=sa[P],S[ga]=y.x,S[ga+1]=y.y,S[ga+2]=y.z,S[ga+3]=z.x,S[ga+4]=z.y,S[ga+5]=z.z,S[ga+6]=A.x,S[ga+7]=A.y,S[ga+8]=A.z),ga+=9;La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[P]),La.bufferData(La.ARRAY_BUFFER,ra[P],d),f.morphNormals&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[P]),La.bufferData(La.ARRAY_BUFFER,sa[P],d))}if(Ka.length){for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],E=Ka[j.a],F=Ka[j.b],G=Ka[j.c],qa[fa]=E.x,qa[fa+1]=E.y,qa[fa+2]=E.z,qa[fa+3]=E.w,qa[fa+4]=F.x,qa[fa+5]=F.y,qa[fa+6]=F.z,qa[fa+7]=F.w,qa[fa+8]=G.x,qa[fa+9]=G.y,qa[fa+10]=G.z,qa[fa+11]=G.w,H=Ja[j.a],I=Ja[j.b],J=Ja[j.c],pa[fa]=H.x,pa[fa+1]=H.y,pa[fa+2]=H.z,pa[fa+3]=H.w,pa[fa+4]=I.x,pa[fa+5]=I.y,pa[fa+6]=I.z,pa[fa+7]=I.w,pa[fa+8]=J.x,pa[fa+9]=J.y,pa[fa+10]=J.z,pa[fa+11]=J.w,fa+=12;fa>0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglSkinIndicesBuffer),La.bufferData(La.ARRAY_BUFFER,pa,d),La.bindBuffer(La.ARRAY_BUFFER,b.__webglSkinWeightsBuffer),La.bufferData(La.ARRAY_BUFFER,qa,d))}if(Ca){for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],n=j.vertexColors,o=j.color,3===n.length&&f.vertexColors===a.VertexColors?(B=n[0],C=n[1],D=n[2]):(B=o,C=o,D=o),oa[ea]=B.r,oa[ea+1]=B.g,oa[ea+2]=B.b,oa[ea+3]=C.r,oa[ea+4]=C.g,oa[ea+5]=C.b,oa[ea+6]=D.r,oa[ea+7]=D.g,oa[ea+8]=D.b,ea+=9;ea>0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglColorBuffer),La.bufferData(La.ARRAY_BUFFER,oa,d))}if(Ba&&wa.hasTangents){for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],p=j.vertexTangents,v=p[0],w=p[1],x=p[2],na[ca]=v.x,na[ca+1]=v.y,na[ca+2]=v.z,na[ca+3]=v.w,na[ca+4]=w.x,na[ca+5]=w.y,na[ca+6]=w.z,na[ca+7]=w.w,na[ca+8]=x.x,na[ca+9]=x.y,na[ca+10]=x.z,na[ca+11]=x.w,ca+=12;La.bindBuffer(La.ARRAY_BUFFER,b.__webglTangentBuffer),La.bufferData(La.ARRAY_BUFFER,na,d)}if(Aa){for(g=0,h=Fa.length;h>g;g++)if(j=Ga[Fa[g]],k=j.vertexNormals,m=j.normal,3===k.length&&X)for(K=0;3>K;K++)M=k[K],ma[ba]=M.x,ma[ba+1]=M.y,ma[ba+2]=M.z,ba+=3;else for(K=0;3>K;K++)ma[ba]=m.x,ma[ba+1]=m.y,ma[ba+2]=m.z,ba+=3;La.bindBuffer(La.ARRAY_BUFFER,b.__webglNormalBuffer),La.bufferData(La.ARRAY_BUFFER,ma,d)}if(za&&Ha){for(g=0,h=Fa.length;h>g;g++)if(i=Fa[g],q=Ha[i],void 0!==q)for(K=0;3>K;K++)N=q[K],ka[$]=N.x,ka[$+1]=N.y,$+=2;$>0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglUVBuffer),La.bufferData(La.ARRAY_BUFFER,ka,d))}if(za&&Ia){for(g=0,h=Fa.length;h>g;g++)if(i=Fa[g],r=Ia[i],void 0!==r)for(K=0;3>K;K++)O=r[K],la[_]=O.x,la[_+1]=O.y,_+=2;_>0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglUV2Buffer),La.bufferData(La.ARRAY_BUFFER,la,d))}if(ya){for(g=0,h=Fa.length;h>g;g++)ua[aa]=Y,ua[aa+1]=Y+1,ua[aa+2]=Y+2,aa+=3,va[da]=Y,va[da+1]=Y+1,va[da+2]=Y,va[da+3]=Y+2,va[da+4]=Y+1,va[da+5]=Y+2,da+=6,Y+=3;La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,b.__webglFaceBuffer),La.bufferData(La.ELEMENT_ARRAY_BUFFER,ua,d),La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,b.__webglLineBuffer),La.bufferData(La.ELEMENT_ARRAY_BUFFER,va,d)}if(ta)for(K=0,L=ta.length;L>K;K++)if(W=ta[K],W.__original.needsUpdate){if(ha=0,ia=0,1===W.size){if(void 0===W.boundTo||"vertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],W.array[ha]=W.value[j.a],W.array[ha+1]=W.value[j.b],W.array[ha+2]=W.value[j.c],ha+=3;else if("faces"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],W.array[ha]=V,W.array[ha+1]=V,W.array[ha+2]=V,ha+=3}else if(2===W.size){if(void 0===W.boundTo||"vertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],s=W.value[j.a],t=W.value[j.b],u=W.value[j.c],W.array[ha]=s.x,W.array[ha+1]=s.y,W.array[ha+2]=t.x,W.array[ha+3]=t.y,W.array[ha+4]=u.x,W.array[ha+5]=u.y,ha+=6;else if("faces"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],s=V,t=V,u=V,W.array[ha]=s.x,W.array[ha+1]=s.y,W.array[ha+2]=t.x,W.array[ha+3]=t.y,W.array[ha+4]=u.x,W.array[ha+5]=u.y,ha+=6}else if(3===W.size){var Oa;if(Oa="c"===W.type?["r","g","b"]:["x","y","z"],void 0===W.boundTo||"vertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],s=W.value[j.a],t=W.value[j.b],u=W.value[j.c],W.array[ha]=s[Oa[0]],W.array[ha+1]=s[Oa[1]],W.array[ha+2]=s[Oa[2]],W.array[ha+3]=t[Oa[0]],W.array[ha+4]=t[Oa[1]],W.array[ha+5]=t[Oa[2]],W.array[ha+6]=u[Oa[0]],W.array[ha+7]=u[Oa[1]],W.array[ha+8]=u[Oa[2]],ha+=9;else if("faces"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],s=V,t=V,u=V,W.array[ha]=s[Oa[0]],W.array[ha+1]=s[Oa[1]],W.array[ha+2]=s[Oa[2]],W.array[ha+3]=t[Oa[0]],W.array[ha+4]=t[Oa[1]],W.array[ha+5]=t[Oa[2]],W.array[ha+6]=u[Oa[0]],W.array[ha+7]=u[Oa[1]],W.array[ha+8]=u[Oa[2]],ha+=9;else if("faceVertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],s=V[0],t=V[1],u=V[2],W.array[ha]=s[Oa[0]],W.array[ha+1]=s[Oa[1]],W.array[ha+2]=s[Oa[2]],W.array[ha+3]=t[Oa[0]],W.array[ha+4]=t[Oa[1]],W.array[ha+5]=t[Oa[2]],W.array[ha+6]=u[Oa[0]],W.array[ha+7]=u[Oa[1]],W.array[ha+8]=u[Oa[2]],ha+=9}else if(4===W.size)if(void 0===W.boundTo||"vertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)j=Ga[Fa[g]],s=W.value[j.a],t=W.value[j.b],u=W.value[j.c],W.array[ha]=s.x,W.array[ha+1]=s.y,W.array[ha+2]=s.z,W.array[ha+3]=s.w,W.array[ha+4]=t.x,W.array[ha+5]=t.y,W.array[ha+6]=t.z,W.array[ha+7]=t.w,W.array[ha+8]=u.x,W.array[ha+9]=u.y,W.array[ha+10]=u.z,W.array[ha+11]=u.w,ha+=12;else if("faces"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],s=V,t=V,u=V,W.array[ha]=s.x,W.array[ha+1]=s.y,W.array[ha+2]=s.z,W.array[ha+3]=s.w,W.array[ha+4]=t.x,W.array[ha+5]=t.y,W.array[ha+6]=t.z,W.array[ha+7]=t.w,W.array[ha+8]=u.x,W.array[ha+9]=u.y,W.array[ha+10]=u.z,W.array[ha+11]=u.w,ha+=12;else if("faceVertices"===W.boundTo)for(g=0,h=Fa.length;h>g;g++)V=W.value[Fa[g]],s=V[0],t=V[1],u=V[2],W.array[ha]=s.x,W.array[ha+1]=s.y,W.array[ha+2]=s.z,W.array[ha+3]=s.w,W.array[ha+4]=t.x,W.array[ha+5]=t.y,W.array[ha+6]=t.z,W.array[ha+7]=t.w,W.array[ha+8]=u.x,W.array[ha+9]=u.y,W.array[ha+10]=u.z,W.array[ha+11]=u.w,ha+=12;La.bindBuffer(La.ARRAY_BUFFER,W.buffer),La.bufferData(La.ARRAY_BUFFER,W.array,d)}e&&(delete b.__inittedArrays,delete b.__colorArray,delete b.__normalArray,delete b.__tangentArray,delete b.__uvArray,delete b.__uv2Array,delete b.__faceArray,delete b.__vertexArray,delete b.__lineArray,delete b.__skinIndexArray,delete b.__skinWeightArray)}}function p(a){for(var b=a.attributes,c=a.attributesKeys,d=0,e=c.length;e>d;d++){var f=c[d],g=b[f];if(void 0===g.buffer&&(g.buffer=La.createBuffer(),g.needsUpdate=!0),g.needsUpdate===!0){var h="index"===f?La.ELEMENT_ARRAY_BUFFER:La.ARRAY_BUFFER;La.bindBuffer(h,g.buffer),La.bufferData(h,g.array,La.STATIC_DRAW),g.needsUpdate=!1}}}function q(a,b,c,d){for(var e=c.attributes,f=b.attributes,g=b.attributesKeys,h=0,i=g.length;i>h;h++){var j=g[h],k=f[j];if(k>=0){var l=e[j];if(void 0!==l){var m=l.itemSize;La.bindBuffer(La.ARRAY_BUFFER,l.buffer),s(k),La.vertexAttribPointer(k,m,La.FLOAT,!1,0,d*m*4)}else void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[j].length?La.vertexAttrib2fv(k,a.defaultAttributeValues[j]):3===a.defaultAttributeValues[j].length&&La.vertexAttrib3fv(k,a.defaultAttributeValues[j]))}}t()}function r(){for(var a=0,b=kb.length;b>a;a++)kb[a]=0}function s(a){kb[a]=1,0===lb[a]&&(La.enableVertexAttribArray(a),lb[a]=1)}function t(){for(var a=0,b=lb.length;b>a;a++)lb[a]!==kb[a]&&(La.disableVertexAttribArray(a),lb[a]=0)}function u(a,b,c){var d=a.program.attributes;if(-1!==c.morphTargetBase&&d.position>=0?(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[c.morphTargetBase]),s(d.position),La.vertexAttribPointer(d.position,3,La.FLOAT,!1,0,0)):d.position>=0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglVertexBuffer),s(d.position),La.vertexAttribPointer(d.position,3,La.FLOAT,!1,0,0)),c.morphTargetForcedOrder.length)for(var e=0,f=c.morphTargetForcedOrder,g=c.morphTargetInfluences;e=0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[f[e]]),s(d["morphTarget"+e]),La.vertexAttribPointer(d["morphTarget"+e],3,La.FLOAT,!1,0,0)),d["morphNormal"+e]>=0&&a.morphNormals&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[f[e]]),s(d["morphNormal"+e]),La.vertexAttribPointer(d["morphNormal"+e],3,La.FLOAT,!1,0,0)),c.__webglMorphTargetInfluences[e]=g[f[e]],e++;else{var h,i,j=[],g=c.morphTargetInfluences,k=g.length;for(i=0;k>i;i++)h=g[i],h>0&&j.push([h,i]);j.length>a.numSupportedMorphTargets?(j.sort(x),j.length=a.numSupportedMorphTargets):j.length>a.numSupportedMorphNormals?j.sort(x):0===j.length&&j.push([0,0]);for(var l,e=0;e=0&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphTargetsBuffers[l]),s(d["morphTarget"+e]),La.vertexAttribPointer(d["morphTarget"+e],3,La.FLOAT,!1,0,0)),d["morphNormal"+e]>=0&&a.morphNormals&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglMorphNormalsBuffers[l]),s(d["morphNormal"+e]),La.vertexAttribPointer(d["morphNormal"+e],3,La.FLOAT,!1,0,0)),c.__webglMorphTargetInfluences[e]=g[l]):c.__webglMorphTargetInfluences[e]=0,e++}null!==a.program.uniforms.morphTargetInfluences&&La.uniform1fv(a.program.uniforms.morphTargetInfluences,c.__webglMorphTargetInfluences)}function v(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function w(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function x(a,b){return b[0]-a[0]}function y(b,c){if(c.visible!==!1){if(c instanceof a.Scene||c instanceof a.Group);else if(D(c,b),c instanceof a.Light)Ea.push(c);else if(c instanceof a.Sprite)Ja.push(c);else if(c instanceof a.LensFlare)Ka.push(c);else{var d=Fa[c.id];if(d&&(c.frustumCulled===!1||mb.intersectsObject(c)===!0)){I(c,b);for(var e=0,f=d.length;f>e;e++){var g=d[e];C(g),g.render=!0,Ma.sortObjects===!0&&(null!==c.renderDepth?g.z=c.renderDepth:(pb.setFromMatrixPosition(c.matrixWorld),pb.applyProjection(nb),g.z=pb.z))}}}for(var e=0,f=c.children.length;f>e;e++)y(b,c.children[e])}}function z(b,c,d,e,f,g){for(var h,i=b.length-1;-1!==i;i--){var j=b[i],k=j.object,l=j.buffer;if(aa(k,c),g)h=g;else{if(h=j.material,!h)continue;f&&Ma.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst),Ma.setDepthTest(h.depthTest),Ma.setDepthWrite(h.depthWrite),fa(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}Ma.setMaterialFaces(h),l instanceof a.BufferGeometry?Ma.renderBufferDirect(c,d,e,h,l,k):Ma.renderBuffer(c,d,e,h,l,k)}}function A(a,b,c,d,e,f,g){for(var h,i=0,j=a.length;j>i;i++){var k=a[i],l=k.object;if(l.visible){if(g)h=g;else{if(h=k[b],!h)continue;f&&Ma.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst),Ma.setDepthTest(h.depthTest),Ma.setDepthWrite(h.depthWrite),fa(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}Ma.renderImmediateObject(c,d,e,h,l)}}}function B(a){var b=a.object,c=b.material;c.transparent?(a.transparent=c,a.opaque=null):(a.opaque=c,a.transparent=null)}function C(b){var c=b.object,d=b.buffer,e=c.geometry,f=c.material;if(f instanceof a.MeshFaceMaterial){var g=e instanceof a.BufferGeometry?0:d.materialIndex;f=f.materials[g],b.material=f,f.transparent?Ia.push(b):Ha.push(b)}else f&&(b.material=f,f.transparent?Ia.push(b):Ha.push(b))}function D(b,c){void 0===b.__webglInit&&(b.__webglInit=!0,b._modelViewMatrix=new a.Matrix4,b._normalMatrix=new a.Matrix3,b.addEventListener("removed",Mb));var f=b.geometry;if(void 0===f||void 0===f.__webglInit&&(f.__webglInit=!0,f.addEventListener("dispose",Nb),f instanceof a.BufferGeometry||(b instanceof a.Mesh?F(c,b,f):b instanceof a.Line?void 0===f.__webglVertexBuffer&&(e(f),i(f,b),f.verticesNeedUpdate=!0,f.colorsNeedUpdate=!0,f.lineDistancesNeedUpdate=!0):b instanceof a.PointCloud&&void 0===f.__webglVertexBuffer&&(d(f),h(f,b),f.verticesNeedUpdate=!0,f.colorsNeedUpdate=!0))),void 0===b.__webglActive)if(b.__webglActive=!0,b instanceof a.Mesh){if(f instanceof a.BufferGeometry)G(Fa,f,b);else if(f instanceof a.Geometry)for(var g=Wb[f.id],j=0,k=g.length;k>j;j++)G(Fa,g[j],b)}else b instanceof a.Line||b instanceof a.PointCloud?G(Fa,f,b):(b instanceof a.ImmediateRenderObject||b.immediateRenderCallback)&&H(Ga,b)}function E(a,b){for(var c,d,e=vb.get("OES_element_index_uint")?4294967296:65535,f={},g=a.morphTargets.length,h=a.morphNormals.length,i={},j=[],k=0,l=a.faces.length;l>k;k++){var m=a.faces[k],n=b?m.materialIndex:0;n in f||(f[n]={hash:n,counter:0}),c=f[n].hash+"_"+f[n].counter,c in i||(d={id:Xb++,faces3:[],materialIndex:n,vertices:0,numMorphTargets:g,numMorphNormals:h},i[c]=d,j.push(d)),i[c].vertices+3>e&&(f[n].counter+=1,c=f[n].hash+"_"+f[n].counter,c in i||(d={id:Xb++,faces3:[],materialIndex:n,vertices:0,numMorphTargets:g,numMorphNormals:h},i[c]=d,j.push(d))),i[c].faces3.push(k),i[c].vertices+=3}return j}function F(b,c,d){var e=c.material,g=!1;(void 0===Wb[d.id]||d.groupsNeedUpdate===!0)&&(delete Fa[c.id],Wb[d.id]=E(d,e instanceof a.MeshFaceMaterial),d.groupsNeedUpdate=!1);for(var h=Wb[d.id],i=0,k=h.length;k>i;i++){var l=h[i];void 0===l.__webglVertexBuffer?(f(l),j(l,c),d.verticesNeedUpdate=!0,d.morphTargetsNeedUpdate=!0,d.elementsNeedUpdate=!0,d.uvsNeedUpdate=!0,d.normalsNeedUpdate=!0,d.tangentsNeedUpdate=!0,d.colorsNeedUpdate=!0,g=!0):g=!1,(g||void 0===c.__webglActive)&&G(Fa,l,c)}c.__webglActive=!0}function G(a,b,c){var d=c.id;a[d]=a[d]||[],a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function H(a,b){a.push({id:null,object:b,opaque:null,transparent:null,z:0})}function I(b,c){var d,e,f=b.geometry;if(f instanceof a.BufferGeometry)p(f);else if(b instanceof a.Mesh){f.groupsNeedUpdate===!0&&F(c,b,f);for(var g=Wb[f.id],h=0,i=g.length;i>h;h++){var l=g[h];e=k(b,l),f.groupsNeedUpdate===!0&&j(l,b),d=e.attributes&&J(e),(f.verticesNeedUpdate||f.morphTargetsNeedUpdate||f.elementsNeedUpdate||f.uvsNeedUpdate||f.normalsNeedUpdate||f.colorsNeedUpdate||f.tangentsNeedUpdate||d)&&o(l,b,La.DYNAMIC_DRAW,!f.dynamic,e)}f.verticesNeedUpdate=!1,f.morphTargetsNeedUpdate=!1,f.elementsNeedUpdate=!1,f.uvsNeedUpdate=!1,f.normalsNeedUpdate=!1,f.colorsNeedUpdate=!1,f.tangentsNeedUpdate=!1,e.attributes&&K(e)}else b instanceof a.Line?(e=k(b,f),d=e.attributes&&J(e),(f.verticesNeedUpdate||f.colorsNeedUpdate||f.lineDistancesNeedUpdate||d)&&n(f,La.DYNAMIC_DRAW),f.verticesNeedUpdate=!1,f.colorsNeedUpdate=!1,f.lineDistancesNeedUpdate=!1,e.attributes&&K(e)):b instanceof a.PointCloud&&(e=k(b,f),d=e.attributes&&J(e),(f.verticesNeedUpdate||f.colorsNeedUpdate||b.sortParticles||d)&&m(f,La.DYNAMIC_DRAW,b),f.verticesNeedUpdate=!1,f.colorsNeedUpdate=!1,e.attributes&&K(e))}function J(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function K(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function L(b){b instanceof a.Mesh||b instanceof a.PointCloud||b instanceof a.Line?delete Fa[b.id]:(b instanceof a.ImmediateRenderObject||b.immediateRenderCallback)&&M(Ga,b),delete b.__webglInit,delete b._modelViewMatrix,delete b._normalMatrix,delete b.__webglActive}function M(a,b){for(var c=a.length-1;c>=0;c--)a[c].object===b&&a.splice(c,1)}function N(b,c,d,e){b.addEventListener("dispose",Qb);var f;if(b instanceof a.MeshDepthMaterial?f="depth":b instanceof a.MeshNormalMaterial?f="normal":b instanceof a.MeshBasicMaterial?f="basic":b instanceof a.MeshLambertMaterial?f="lambert":b instanceof a.MeshPhongMaterial?f="phong":b instanceof a.LineBasicMaterial?f="basic":b instanceof a.LineDashedMaterial?f="dashed":b instanceof a.PointCloudMaterial&&(f="particle_basic"),f){var g=a.ShaderLib[f];b.__webglShader={uniforms:a.UniformsUtils.clone(g.uniforms),vertexShader:g.vertexShader,fragmentShader:g.fragmentShader}}else b.__webglShader={uniforms:b.uniforms,vertexShader:b.vertexShader,fragmentShader:b.fragmentShader};var h=qa(c),i=ra(c),j=pa(e),k={precision:ua,supportsVertexTextures:Ab,map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,vertexColors:b.vertexColors,fog:d,useFog:b.fog,fogExp:d instanceof a.FogExp2,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:Ba,skinning:b.skinning,maxBones:j,useVertexTexture:Bb&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:b.morphTargets,morphNormals:b.morphNormals,maxMorphTargets:Ma.maxMorphTargets,maxMorphNormals:Ma.maxMorphNormals,maxDirLights:h.directional,maxPointLights:h.point,maxSpotLights:h.spot,maxHemiLights:h.hemi,maxShadows:i,shadowMapEnabled:Ma.shadowMapEnabled&&e.receiveShadow&&i>0,shadowMapType:Ma.shadowMapType,shadowMapDebug:Ma.shadowMapDebug,shadowMapCascade:Ma.shadowMapCascade,alphaTest:b.alphaTest,metal:b.metal,wrapAround:b.wrapAround,doubleSided:b.side===a.DoubleSide,flipSided:b.side===a.BackSide},l=[];if(f?l.push(f):(l.push(b.fragmentShader),l.push(b.vertexShader)),void 0!==b.defines)for(var m in b.defines)l.push(m),l.push(b.defines[m]);for(var m in k)l.push(m),l.push(k[m]);for(var n,o=l.join(),p=0,q=Na.length;q>p;p++){var r=Na[p];if(r.code===o){n=r,n.usedTimes++;break}}void 0===n&&(n=new a.WebGLProgram(Ma,o,b,k),Na.push(n),Ma.info.memory.programs=Na.length),b.program=n;var s=n.attributes;if(b.morphTargets){b.numSupportedMorphTargets=0;for(var t,u="morphTarget",v=0;v=0&&b.numSupportedMorphTargets++}if(b.morphNormals){b.numSupportedMorphNormals=0;var t,u="morphNormal";for(v=0;v=0&&b.numSupportedMorphNormals++}b.uniformsList=[];for(var w in b.__webglShader.uniforms){var x=b.program.uniforms[w];x&&b.uniformsList.push([b.__webglShader.uniforms[w],x])}}function O(b,c,d,e,f){Ta=0,e.needsUpdate&&(e.program&&Vb(e),N(e,c,d,f),e.needsUpdate=!1),e.morphTargets&&(f.__webglMorphTargetInfluences||(f.__webglMorphTargetInfluences=new Float32Array(Ma.maxMorphTargets)));var g=!1,h=!1,i=!1,j=e.program,k=j.uniforms,l=e.__webglShader.uniforms;if(j.id!==Oa&&(La.useProgram(j.program),Oa=j.id,g=!0,h=!0,i=!0),e.id!==Qa&&(-1===Qa&&(i=!0),Qa=e.id,h=!0),(g||b!==Sa)&&(La.uniformMatrix4fv(k.projectionMatrix,!1,b.projectionMatrix.elements),Ba&&La.uniform1f(k.logDepthBufFC,2/(Math.log(b.far+1)/Math.LN2)),b!==Sa&&(Sa=b),(e instanceof a.ShaderMaterial||e instanceof a.MeshPhongMaterial||e.envMap)&&null!==k.cameraPosition&&(pb.setFromMatrixPosition(b.matrixWorld),La.uniform3f(k.cameraPosition,pb.x,pb.y,pb.z)),(e instanceof a.MeshPhongMaterial||e instanceof a.MeshLambertMaterial||e instanceof a.ShaderMaterial||e.skinning)&&null!==k.viewMatrix&&La.uniformMatrix4fv(k.viewMatrix,!1,b.matrixWorldInverse.elements)),e.skinning)if(f.bindMatrix&&null!==k.bindMatrix&&La.uniformMatrix4fv(k.bindMatrix,!1,f.bindMatrix.elements),f.bindMatrixInverse&&null!==k.bindMatrixInverse&&La.uniformMatrix4fv(k.bindMatrixInverse,!1,f.bindMatrixInverse.elements),Bb&&f.skeleton&&f.skeleton.useVertexTexture){if(null!==k.boneTexture){var m=$();La.uniform1i(k.boneTexture,m),Ma.setTexture(f.skeleton.boneTexture,m)}null!==k.boneTextureWidth&&La.uniform1i(k.boneTextureWidth,f.skeleton.boneTextureWidth),null!==k.boneTextureHeight&&La.uniform1i(k.boneTextureHeight,f.skeleton.boneTextureHeight)}else f.skeleton&&f.skeleton.boneMatrices&&null!==k.boneGlobalMatrices&&La.uniformMatrix4fv(k.boneGlobalMatrices,!1,f.skeleton.boneMatrices);return h&&(d&&e.fog&&T(l,d),(e instanceof a.MeshPhongMaterial||e instanceof a.MeshLambertMaterial||e.lights)&&(rb&&(i=!0,da(c),rb=!1),i?(W(l,sb),X(l,!0)):X(l,!1)),(e instanceof a.MeshBasicMaterial||e instanceof a.MeshLambertMaterial||e instanceof a.MeshPhongMaterial)&&P(l,e),e instanceof a.LineBasicMaterial?Q(l,e):e instanceof a.LineDashedMaterial?(Q(l,e),R(l,e)):e instanceof a.PointCloudMaterial?S(l,e):e instanceof a.MeshPhongMaterial?U(l,e):e instanceof a.MeshLambertMaterial?V(l,e):e instanceof a.MeshDepthMaterial?(l.mNear.value=b.near,l.mFar.value=b.far,l.opacity.value=e.opacity):e instanceof a.MeshNormalMaterial&&(l.opacity.value=e.opacity),f.receiveShadow&&!e._shadowPass&&Y(l,c),_(e.uniformsList)),Z(k,f),null!==k.modelMatrix&&La.uniformMatrix4fv(k.modelMatrix,!1,f.matrixWorld.elements),j}function P(b,c){b.opacity.value=c.opacity,Ma.gammaInput?b.diffuse.value.copyGammaToLinear(c.color):b.diffuse.value=c.color,b.map.value=c.map,b.lightMap.value=c.lightMap,b.specularMap.value=c.specularMap,b.alphaMap.value=c.alphaMap,c.bumpMap&&(b.bumpMap.value=c.bumpMap,b.bumpScale.value=c.bumpScale),c.normalMap&&(b.normalMap.value=c.normalMap,b.normalScale.value.copy(c.normalScale));var d;if(c.map?d=c.map:c.specularMap?d=c.specularMap:c.normalMap?d=c.normalMap:c.bumpMap?d=c.bumpMap:c.alphaMap&&(d=c.alphaMap),void 0!==d){var e=d.offset,f=d.repeat;b.offsetRepeat.value.set(e.x,e.y,f.x,f.y)}b.envMap.value=c.envMap,b.flipEnvMap.value=c.envMap instanceof a.WebGLRenderTargetCube?1:-1,Ma.gammaInput?b.reflectivity.value=c.reflectivity:b.reflectivity.value=c.reflectivity,b.refractionRatio.value=c.refractionRatio,b.combine.value=c.combine,b.useRefract.value=c.envMap&&c.envMap.mapping instanceof a.CubeRefractionMapping}function Q(a,b){a.diffuse.value=b.color,a.opacity.value=b.opacity}function R(a,b){a.dashSize.value=b.dashSize,a.totalSize.value=b.dashSize+b.gapSize,a.scale.value=b.scale}function S(a,b){a.psColor.value=b.color,a.opacity.value=b.opacity,a.size.value=b.size,a.scale.value=sa.height/2,a.map.value=b.map}function T(b,c){b.fogColor.value=c.color,c instanceof a.Fog?(b.fogNear.value=c.near,b.fogFar.value=c.far):c instanceof a.FogExp2&&(b.fogDensity.value=c.density)}function U(a,b){a.shininess.value=b.shininess,Ma.gammaInput?(a.ambient.value.copyGammaToLinear(b.ambient),a.emissive.value.copyGammaToLinear(b.emissive),a.specular.value.copyGammaToLinear(b.specular)):(a.ambient.value=b.ambient,a.emissive.value=b.emissive,a.specular.value=b.specular),b.wrapAround&&a.wrapRGB.value.copy(b.wrapRGB)}function V(a,b){Ma.gammaInput?(a.ambient.value.copyGammaToLinear(b.ambient),a.emissive.value.copyGammaToLinear(b.emissive)):(a.ambient.value=b.ambient,a.emissive.value=b.emissive),b.wrapAround&&a.wrapRGB.value.copy(b.wrapRGB)}function W(a,b){a.ambientLightColor.value=b.ambient,a.directionalLightColor.value=b.directional.colors,a.directionalLightDirection.value=b.directional.positions,a.pointLightColor.value=b.point.colors,a.pointLightPosition.value=b.point.positions,a.pointLightDistance.value=b.point.distances,a.spotLightColor.value=b.spot.colors,a.spotLightPosition.value=b.spot.positions,a.spotLightDistance.value=b.spot.distances,a.spotLightDirection.value=b.spot.directions,a.spotLightAngleCos.value=b.spot.anglesCos,a.spotLightExponent.value=b.spot.exponents,a.hemisphereLightSkyColor.value=b.hemi.skyColors,a.hemisphereLightGroundColor.value=b.hemi.groundColors,a.hemisphereLightDirection.value=b.hemi.positions}function X(a,b){a.ambientLightColor.needsUpdate=b,a.directionalLightColor.needsUpdate=b,a.directionalLightDirection.needsUpdate=b,a.pointLightColor.needsUpdate=b,a.pointLightPosition.needsUpdate=b,a.pointLightDistance.needsUpdate=b,a.spotLightColor.needsUpdate=b,a.spotLightPosition.needsUpdate=b,a.spotLightDistance.needsUpdate=b,a.spotLightDirection.needsUpdate=b,a.spotLightAngleCos.needsUpdate=b,a.spotLightExponent.needsUpdate=b,a.hemisphereLightSkyColor.needsUpdate=b,a.hemisphereLightGroundColor.needsUpdate=b,a.hemisphereLightDirection.needsUpdate=b}function Y(b,c){if(b.shadowMatrix)for(var d=0,e=0,f=c.length;f>e;e++){var g=c[e];g.castShadow&&(g instanceof a.SpotLight||g instanceof a.DirectionalLight&&!g.shadowCascade)&&(b.shadowMap.value[d]=g.shadowMap,b.shadowMapSize.value[d]=g.shadowMapSize,b.shadowMatrix.value[d]=g.shadowMatrix,b.shadowDarkness.value[d]=g.shadowDarkness,b.shadowBias.value[d]=g.shadowBias,d++)}}function Z(a,b){La.uniformMatrix4fv(a.modelViewMatrix,!1,b._modelViewMatrix.elements),a.normalMatrix&&La.uniformMatrix3fv(a.normalMatrix,!1,b._normalMatrix.elements)}function $(){var a=Ta;return a>=wb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+wb), +Ta+=1,a}function _(b){for(var c,d,e,f=0,g=b.length;g>f;f++){var h=b[f][0];if(h.needsUpdate!==!1){var i=h.type,j=h.value,k=b[f][1];switch(i){case"1i":La.uniform1i(k,j);break;case"1f":La.uniform1f(k,j);break;case"2f":La.uniform2f(k,j[0],j[1]);break;case"3f":La.uniform3f(k,j[0],j[1],j[2]);break;case"4f":La.uniform4f(k,j[0],j[1],j[2],j[3]);break;case"1iv":La.uniform1iv(k,j);break;case"3iv":La.uniform3iv(k,j);break;case"1fv":La.uniform1fv(k,j);break;case"2fv":La.uniform2fv(k,j);break;case"3fv":La.uniform3fv(k,j);break;case"4fv":La.uniform4fv(k,j);break;case"Matrix3fv":La.uniformMatrix3fv(k,!1,j);break;case"Matrix4fv":La.uniformMatrix4fv(k,!1,j);break;case"i":La.uniform1i(k,j);break;case"f":La.uniform1f(k,j);break;case"v2":La.uniform2f(k,j.x,j.y);break;case"v3":La.uniform3f(k,j.x,j.y,j.z);break;case"v4":La.uniform4f(k,j.x,j.y,j.z,j.w);break;case"c":La.uniform3f(k,j.r,j.g,j.b);break;case"iv1":La.uniform1iv(k,j);break;case"iv":La.uniform3iv(k,j);break;case"fv1":La.uniform1fv(k,j);break;case"fv":La.uniform3fv(k,j);break;case"v2v":void 0===h._array&&(h._array=new Float32Array(2*j.length));for(var l=0,m=j.length;m>l;l++)e=2*l,h._array[e]=j[l].x,h._array[e+1]=j[l].y;La.uniform2fv(k,h._array);break;case"v3v":void 0===h._array&&(h._array=new Float32Array(3*j.length));for(var l=0,m=j.length;m>l;l++)e=3*l,h._array[e]=j[l].x,h._array[e+1]=j[l].y,h._array[e+2]=j[l].z;La.uniform3fv(k,h._array);break;case"v4v":void 0===h._array&&(h._array=new Float32Array(4*j.length));for(var l=0,m=j.length;m>l;l++)e=4*l,h._array[e]=j[l].x,h._array[e+1]=j[l].y,h._array[e+2]=j[l].z,h._array[e+3]=j[l].w;La.uniform4fv(k,h._array);break;case"m3":La.uniformMatrix3fv(k,!1,j.elements);break;case"m3v":void 0===h._array&&(h._array=new Float32Array(9*j.length));for(var l=0,m=j.length;m>l;l++)j[l].flattenToArrayOffset(h._array,9*l);La.uniformMatrix3fv(k,!1,h._array);break;case"m4":La.uniformMatrix4fv(k,!1,j.elements);break;case"m4v":void 0===h._array&&(h._array=new Float32Array(16*j.length));for(var l=0,m=j.length;m>l;l++)j[l].flattenToArrayOffset(h._array,16*l);La.uniformMatrix4fv(k,!1,h._array);break;case"t":if(c=j,d=$(),La.uniform1i(k,d),!c)continue;c instanceof a.CubeTexture||c.image instanceof Array&&6===c.image.length?ia(c,d):c instanceof a.WebGLRenderTargetCube?ja(c,d):Ma.setTexture(c,d);break;case"tv":void 0===h._array&&(h._array=[]);for(var l=0,m=h.value.length;m>l;l++)h._array[l]=$();La.uniform1iv(k,h._array);for(var l=0,m=h.value.length;m>l;l++)c=h.value[l],d=h._array[l],c&&Ma.setTexture(c,d);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+i)}}}}function aa(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld),a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function ba(a,b,c,d){a[b]=c.r*c.r*d,a[b+1]=c.g*c.g*d,a[b+2]=c.b*c.b*d}function ca(a,b,c,d){a[b]=c.r*d,a[b+1]=c.g*d,a[b+2]=c.b*d}function da(b){var c,d,e,f,g,h,i,j,k,l=0,m=0,n=0,o=sb,p=o.directional.colors,q=o.directional.positions,r=o.point.colors,s=o.point.positions,t=o.point.distances,u=o.spot.colors,v=o.spot.positions,w=o.spot.distances,x=o.spot.directions,y=o.spot.anglesCos,z=o.spot.exponents,A=o.hemi.skyColors,B=o.hemi.groundColors,C=o.hemi.positions,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;for(c=0,d=b.length;d>c;c++)if(e=b[c],!e.onlyShadow)if(f=e.color,i=e.intensity,k=e.distance,e instanceof a.AmbientLight){if(!e.visible)continue;Ma.gammaInput?(l+=f.r*f.r,m+=f.g*f.g,n+=f.b*f.b):(l+=f.r,m+=f.g,n+=f.b)}else if(e instanceof a.DirectionalLight){if(H+=1,!e.visible)continue;qb.setFromMatrixPosition(e.matrixWorld),pb.setFromMatrixPosition(e.target.matrixWorld),qb.sub(pb),qb.normalize(),L=3*D,q[L]=qb.x,q[L+1]=qb.y,q[L+2]=qb.z,Ma.gammaInput?ba(p,L,f,i*i):ca(p,L,f,i),D+=1}else if(e instanceof a.PointLight){if(I+=1,!e.visible)continue;M=3*E,Ma.gammaInput?ba(r,M,f,i*i):ca(r,M,f,i),pb.setFromMatrixPosition(e.matrixWorld),s[M]=pb.x,s[M+1]=pb.y,s[M+2]=pb.z,t[E]=k,E+=1}else if(e instanceof a.SpotLight){if(J+=1,!e.visible)continue;N=3*F,Ma.gammaInput?ba(u,N,f,i*i):ca(u,N,f,i),qb.setFromMatrixPosition(e.matrixWorld),v[N]=qb.x,v[N+1]=qb.y,v[N+2]=qb.z,w[F]=k,pb.setFromMatrixPosition(e.target.matrixWorld),qb.sub(pb),qb.normalize(),x[N]=qb.x,x[N+1]=qb.y,x[N+2]=qb.z,y[F]=Math.cos(e.angle),z[F]=e.exponent,F+=1}else if(e instanceof a.HemisphereLight){if(K+=1,!e.visible)continue;qb.setFromMatrixPosition(e.matrixWorld),qb.normalize(),O=3*G,C[O]=qb.x,C[O+1]=qb.y,C[O+2]=qb.z,g=e.color,h=e.groundColor,Ma.gammaInput?(j=i*i,ba(A,O,g,j),ba(B,O,h,j)):(ca(A,O,g,i),ca(B,O,h,i)),G+=1}for(c=3*D,d=Math.max(p.length,3*H);d>c;c++)p[c]=0;for(c=3*E,d=Math.max(r.length,3*I);d>c;c++)r[c]=0;for(c=3*F,d=Math.max(u.length,3*J);d>c;c++)u[c]=0;for(c=3*G,d=Math.max(A.length,3*K);d>c;c++)A[c]=0;for(c=3*G,d=Math.max(B.length,3*K);d>c;c++)B[c]=0;o.directional.length=D,o.point.length=E,o.spot.length=F,o.hemi.length=G,o.ambient[0]=l,o.ambient[1]=m,o.ambient[2]=n}function ea(a){a!==db&&(La.lineWidth(a),db=a)}function fa(a,b,c){ab!==a&&(a?La.enable(La.POLYGON_OFFSET_FILL):La.disable(La.POLYGON_OFFSET_FILL),ab=a),!a||bb===b&&cb===c||(La.polygonOffset(b,c),bb=b,cb=c)}function ga(b,c,d){var e;d?(La.texParameteri(b,La.TEXTURE_WRAP_S,oa(c.wrapS)),La.texParameteri(b,La.TEXTURE_WRAP_T,oa(c.wrapT)),La.texParameteri(b,La.TEXTURE_MAG_FILTER,oa(c.magFilter)),La.texParameteri(b,La.TEXTURE_MIN_FILTER,oa(c.minFilter))):(La.texParameteri(b,La.TEXTURE_WRAP_S,La.CLAMP_TO_EDGE),La.texParameteri(b,La.TEXTURE_WRAP_T,La.CLAMP_TO_EDGE),La.texParameteri(b,La.TEXTURE_MAG_FILTER,na(c.magFilter)),La.texParameteri(b,La.TEXTURE_MIN_FILTER,na(c.minFilter))),e=vb.get("EXT_texture_filter_anisotropic"),e&&c.type!==a.FloatType&&(c.anisotropy>1||c.__oldAnisotropy)&&(La.texParameterf(b,e.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(c.anisotropy,Ma.getMaxAnisotropy())),c.__oldAnisotropy=c.anisotropy)}function ha(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c),d.height=Math.floor(a.height*c);var e=d.getContext("2d");return e.drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height),console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+"."),d}return a}function ia(b,c){if(6===b.image.length)if(b.needsUpdate){b.image.__webglTextureCube||(b.addEventListener("dispose",Ob),b.image.__webglTextureCube=La.createTexture(),Ma.info.memory.textures++),La.activeTexture(La.TEXTURE0+c),La.bindTexture(La.TEXTURE_CUBE_MAP,b.image.__webglTextureCube),La.pixelStorei(La.UNPACK_FLIP_Y_WEBGL,b.flipY);for(var d=b instanceof a.CompressedTexture,e=b.image[0]instanceof a.DataTexture,f=[],g=0;6>g;g++)!Ma.autoScaleCubemaps||d||e?f[g]=e?b.image[g].image:b.image[g]:f[g]=ha(b.image[g],zb);var h=f[0],i=a.Math.isPowerOfTwo(h.width)&&a.Math.isPowerOfTwo(h.height),j=oa(b.format),k=oa(b.type);ga(La.TEXTURE_CUBE_MAP,b,i);for(var g=0;6>g;g++)if(d)for(var l,m=f[g].mipmaps,n=0,o=m.length;o>n;n++)l=m[n],b.format!==a.RGBAFormat&&b.format!==a.RGBFormat?Gb().indexOf(j)>-1?La.compressedTexImage2D(La.TEXTURE_CUBE_MAP_POSITIVE_X+g,n,j,l.width,l.height,0,l.data):console.warn("Attempt to load unsupported compressed texture format"):La.texImage2D(La.TEXTURE_CUBE_MAP_POSITIVE_X+g,n,j,l.width,l.height,0,j,k,l.data);else e?La.texImage2D(La.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,j,f[g].width,f[g].height,0,j,k,f[g].data):La.texImage2D(La.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,j,j,k,f[g]);b.generateMipmaps&&i&&La.generateMipmap(La.TEXTURE_CUBE_MAP),b.needsUpdate=!1,b.onUpdate&&b.onUpdate()}else La.activeTexture(La.TEXTURE0+c),La.bindTexture(La.TEXTURE_CUBE_MAP,b.image.__webglTextureCube)}function ja(a,b){La.activeTexture(La.TEXTURE0+b),La.bindTexture(La.TEXTURE_CUBE_MAP,a.__webglTexture)}function ka(a,b,c){La.bindFramebuffer(La.FRAMEBUFFER,a),La.framebufferTexture2D(La.FRAMEBUFFER,La.COLOR_ATTACHMENT0,c,b.__webglTexture,0)}function la(a,b){La.bindRenderbuffer(La.RENDERBUFFER,a),b.depthBuffer&&!b.stencilBuffer?(La.renderbufferStorage(La.RENDERBUFFER,La.DEPTH_COMPONENT16,b.width,b.height),La.framebufferRenderbuffer(La.FRAMEBUFFER,La.DEPTH_ATTACHMENT,La.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(La.renderbufferStorage(La.RENDERBUFFER,La.DEPTH_STENCIL,b.width,b.height),La.framebufferRenderbuffer(La.FRAMEBUFFER,La.DEPTH_STENCIL_ATTACHMENT,La.RENDERBUFFER,a)):La.renderbufferStorage(La.RENDERBUFFER,La.RGBA4,b.width,b.height)}function ma(b){b instanceof a.WebGLRenderTargetCube?(La.bindTexture(La.TEXTURE_CUBE_MAP,b.__webglTexture),La.generateMipmap(La.TEXTURE_CUBE_MAP),La.bindTexture(La.TEXTURE_CUBE_MAP,null)):(La.bindTexture(La.TEXTURE_2D,b.__webglTexture),La.generateMipmap(La.TEXTURE_2D),La.bindTexture(La.TEXTURE_2D,null))}function na(b){return b===a.NearestFilter||b===a.NearestMipMapNearestFilter||b===a.NearestMipMapLinearFilter?La.NEAREST:La.LINEAR}function oa(b){var c;if(b===a.RepeatWrapping)return La.REPEAT;if(b===a.ClampToEdgeWrapping)return La.CLAMP_TO_EDGE;if(b===a.MirroredRepeatWrapping)return La.MIRRORED_REPEAT;if(b===a.NearestFilter)return La.NEAREST;if(b===a.NearestMipMapNearestFilter)return La.NEAREST_MIPMAP_NEAREST;if(b===a.NearestMipMapLinearFilter)return La.NEAREST_MIPMAP_LINEAR;if(b===a.LinearFilter)return La.LINEAR;if(b===a.LinearMipMapNearestFilter)return La.LINEAR_MIPMAP_NEAREST;if(b===a.LinearMipMapLinearFilter)return La.LINEAR_MIPMAP_LINEAR;if(b===a.UnsignedByteType)return La.UNSIGNED_BYTE;if(b===a.UnsignedShort4444Type)return La.UNSIGNED_SHORT_4_4_4_4;if(b===a.UnsignedShort5551Type)return La.UNSIGNED_SHORT_5_5_5_1;if(b===a.UnsignedShort565Type)return La.UNSIGNED_SHORT_5_6_5;if(b===a.ByteType)return La.BYTE;if(b===a.ShortType)return La.SHORT;if(b===a.UnsignedShortType)return La.UNSIGNED_SHORT;if(b===a.IntType)return La.INT;if(b===a.UnsignedIntType)return La.UNSIGNED_INT;if(b===a.FloatType)return La.FLOAT;if(b===a.AlphaFormat)return La.ALPHA;if(b===a.RGBFormat)return La.RGB;if(b===a.RGBAFormat)return La.RGBA;if(b===a.LuminanceFormat)return La.LUMINANCE;if(b===a.LuminanceAlphaFormat)return La.LUMINANCE_ALPHA;if(b===a.AddEquation)return La.FUNC_ADD;if(b===a.SubtractEquation)return La.FUNC_SUBTRACT;if(b===a.ReverseSubtractEquation)return La.FUNC_REVERSE_SUBTRACT;if(b===a.ZeroFactor)return La.ZERO;if(b===a.OneFactor)return La.ONE;if(b===a.SrcColorFactor)return La.SRC_COLOR;if(b===a.OneMinusSrcColorFactor)return La.ONE_MINUS_SRC_COLOR;if(b===a.SrcAlphaFactor)return La.SRC_ALPHA;if(b===a.OneMinusSrcAlphaFactor)return La.ONE_MINUS_SRC_ALPHA;if(b===a.DstAlphaFactor)return La.DST_ALPHA;if(b===a.OneMinusDstAlphaFactor)return La.ONE_MINUS_DST_ALPHA;if(b===a.DstColorFactor)return La.DST_COLOR;if(b===a.OneMinusDstColorFactor)return La.ONE_MINUS_DST_COLOR;if(b===a.SrcAlphaSaturateFactor)return La.SRC_ALPHA_SATURATE;if(c=vb.get("WEBGL_compressed_texture_s3tc"),null!==c){if(b===a.RGB_S3TC_DXT1_Format)return c.COMPRESSED_RGB_S3TC_DXT1_EXT;if(b===a.RGBA_S3TC_DXT1_Format)return c.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(b===a.RGBA_S3TC_DXT3_Format)return c.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(b===a.RGBA_S3TC_DXT5_Format)return c.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(c=vb.get("WEBGL_compressed_texture_pvrtc"),null!==c){if(b===a.RGB_PVRTC_4BPPV1_Format)return c.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(b===a.RGB_PVRTC_2BPPV1_Format)return c.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(b===a.RGBA_PVRTC_4BPPV1_Format)return c.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(b===a.RGBA_PVRTC_2BPPV1_Format)return c.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(c=vb.get("EXT_blend_minmax"),null!==c){if(b===a.MinEquation)return c.MIN_EXT;if(b===a.MaxEquation)return c.MAX_EXT}return 0}function pa(b){if(Bb&&b&&b.skeleton&&b.skeleton.useVertexTexture)return 1024;var c=La.getParameter(La.MAX_VERTEX_UNIFORM_VECTORS),d=Math.floor((c-20)/4),e=d;return void 0!==b&&b instanceof a.SkinnedMesh&&(e=Math.min(b.skeleton.bones.length,e),eg;g++){var i=b[g];i.onlyShadow||i.visible===!1||(i instanceof a.DirectionalLight&&c++,i instanceof a.PointLight&&d++,i instanceof a.SpotLight&&e++,i instanceof a.HemisphereLight&&f++)}return{directional:c,point:d,spot:e,hemi:f}}function ra(b){for(var c=0,d=0,e=b.length;e>d;d++){var f=b[d];f.castShadow&&(f instanceof a.SpotLight&&c++,f instanceof a.DirectionalLight&&!f.shadowCascade&&c++)}return c}console.log("THREE.WebGLRenderer",a.REVISION),b=b||{};var sa=void 0!==b.canvas?b.canvas:document.createElement("canvas"),ta=void 0!==b.context?b.context:null,ua=void 0!==b.precision?b.precision:"highp",va=void 0!==b.alpha?b.alpha:!1,wa=void 0!==b.depth?b.depth:!0,xa=void 0!==b.stencil?b.stencil:!0,ya=void 0!==b.antialias?b.antialias:!1,za=void 0!==b.premultipliedAlpha?b.premultipliedAlpha:!0,Aa=void 0!==b.preserveDrawingBuffer?b.preserveDrawingBuffer:!1,Ba=void 0!==b.logarithmicDepthBuffer?b.logarithmicDepthBuffer:!1,Ca=new a.Color(0),Da=0,Ea=[],Fa={},Ga=[],Ha=[],Ia=[],Ja=[],Ka=[];this.domElement=sa,this.context=null,this.devicePixelRatio=void 0!==b.devicePixelRatio?b.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.gammaInput=!1,this.gammaOutput=!1,this.shadowMapEnabled=!1,this.shadowMapType=a.PCFShadowMap,this.shadowMapCullFace=a.CullFaceFront,this.shadowMapDebug=!1,this.shadowMapCascade=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var La,Ma=this,Na=[],Oa=null,Pa=null,Qa=-1,Ra=-1,Sa=null,Ta=0,Ua=-1,Va=-1,Wa=-1,Xa=-1,Ya=-1,Za=-1,$a=-1,_a=-1,ab=null,bb=null,cb=null,db=null,eb=0,fb=0,gb=sa.width,hb=sa.height,ib=0,jb=0,kb=new Uint8Array(16),lb=new Uint8Array(16),mb=new a.Frustum,nb=new a.Matrix4,ob=new a.Matrix4,pb=new a.Vector3,qb=new a.Vector3,rb=!0,sb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}};try{var tb={alpha:va,depth:wa,stencil:xa,antialias:ya,premultipliedAlpha:za,preserveDrawingBuffer:Aa};if(La=ta||sa.getContext("webgl",tb)||sa.getContext("experimental-webgl",tb),null===La)throw null!==sa.getContext("webgl")?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context."}catch(ub){console.error(ub)}void 0===La.getShaderPrecisionFormat&&(La.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var vb=new a.WebGLExtensions(La);vb.get("OES_texture_float"),vb.get("OES_texture_float_linear"),vb.get("OES_standard_derivatives"),Ba&&vb.get("EXT_frag_depth"),c(),this.context=La;var wb=La.getParameter(La.MAX_TEXTURE_IMAGE_UNITS),xb=La.getParameter(La.MAX_VERTEX_TEXTURE_IMAGE_UNITS),yb=La.getParameter(La.MAX_TEXTURE_SIZE),zb=La.getParameter(La.MAX_CUBE_MAP_TEXTURE_SIZE),Ab=xb>0,Bb=Ab&&vb.get("OES_texture_float"),Cb=La.getShaderPrecisionFormat(La.VERTEX_SHADER,La.HIGH_FLOAT),Db=La.getShaderPrecisionFormat(La.VERTEX_SHADER,La.MEDIUM_FLOAT),Eb=(La.getShaderPrecisionFormat(La.VERTEX_SHADER,La.LOW_FLOAT),La.getShaderPrecisionFormat(La.FRAGMENT_SHADER,La.HIGH_FLOAT)),Fb=La.getShaderPrecisionFormat(La.FRAGMENT_SHADER,La.MEDIUM_FLOAT),Gb=(La.getShaderPrecisionFormat(La.FRAGMENT_SHADER,La.LOW_FLOAT),function(){var a;return function(){if(void 0!==a)return a;if(a=[],vb.get("WEBGL_compressed_texture_pvrtc")||vb.get("WEBGL_compressed_texture_s3tc"))for(var b=La.getParameter(La.COMPRESSED_TEXTURE_FORMATS),c=0;c0&&Eb.precision>0,Ib=Db.precision>0&&Fb.precision>0;"highp"!==ua||Hb||(Ib?(ua="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(ua="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp."))),"mediump"!==ua||Ib||(ua="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Jb=new a.ShadowMapPlugin(this,Ea,Fa,Ga),Kb=new a.SpritePlugin(this,Ja),Lb=new a.LensFlarePlugin(this,Ka);this.getContext=function(){return La},this.supportsVertexTextures=function(){return Ab},this.supportsFloatTextures=function(){return vb.get("OES_texture_float")},this.supportsStandardDerivatives=function(){return vb.get("OES_standard_derivatives")},this.supportsCompressedTextureS3TC=function(){return vb.get("WEBGL_compressed_texture_s3tc")},this.supportsCompressedTexturePVRTC=function(){return vb.get("WEBGL_compressed_texture_pvrtc")},this.supportsBlendMinMax=function(){return vb.get("EXT_blend_minmax")},this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=vb.get("EXT_texture_filter_anisotropic");return a=null!==b?La.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}(),this.getPrecision=function(){return ua},this.setSize=function(a,b,c){sa.width=a*this.devicePixelRatio,sa.height=b*this.devicePixelRatio,c!==!1&&(sa.style.width=a+"px",sa.style.height=b+"px"),this.setViewport(0,0,a,b)},this.setViewport=function(a,b,c,d){eb=a*this.devicePixelRatio,fb=b*this.devicePixelRatio,gb=c*this.devicePixelRatio,hb=d*this.devicePixelRatio,La.viewport(eb,fb,gb,hb)},this.setScissor=function(a,b,c,d){La.scissor(a*this.devicePixelRatio,b*this.devicePixelRatio,c*this.devicePixelRatio,d*this.devicePixelRatio)},this.enableScissorTest=function(a){a?La.enable(La.SCISSOR_TEST):La.disable(La.SCISSOR_TEST)},this.setClearColor=function(a,b){Ca.set(a),Da=void 0!==b?b:1,La.clearColor(Ca.r,Ca.g,Ca.b,Da)},this.setClearColorHex=function(a,b){console.warn("THREE.WebGLRenderer: .setClearColorHex() is being removed. Use .setClearColor() instead."),this.setClearColor(a,b)},this.getClearColor=function(){return Ca},this.getClearAlpha=function(){return Da},this.clear=function(a,b,c){var d=0;(void 0===a||a)&&(d|=La.COLOR_BUFFER_BIT),(void 0===b||b)&&(d|=La.DEPTH_BUFFER_BIT),(void 0===c||c)&&(d|=La.STENCIL_BUFFER_BIT),La.clear(d)},this.clearColor=function(){La.clear(La.COLOR_BUFFER_BIT)},this.clearDepth=function(){La.clear(La.DEPTH_BUFFER_BIT)},this.clearStencil=function(){La.clear(La.STENCIL_BUFFER_BIT)},this.clearTarget=function(a,b,c,d){this.setRenderTarget(a),this.clear(b,c,d)},this.resetGLState=function(){Oa=null,Sa=null,Wa=-1,$a=-1,_a=-1,Ua=-1,Va=-1,Ra=-1,Qa=-1,rb=!0};var Mb=function(a){var b=a.target;b.traverse(function(a){a.removeEventListener("remove",Mb),L(a)})},Nb=function(a){var b=a.target;b.removeEventListener("dispose",Nb),Sb(b)},Ob=function(a){var b=a.target;b.removeEventListener("dispose",Ob),Tb(b),Ma.info.memory.textures--},Pb=function(a){var b=a.target;b.removeEventListener("dispose",Pb),Ub(b),Ma.info.memory.textures--},Qb=function(a){var b=a.target;b.removeEventListener("dispose",Qb),Vb(b)},Rb=function(a){for(var b=["__webglVertexBuffer","__webglNormalBuffer","__webglTangentBuffer","__webglColorBuffer","__webglUVBuffer","__webglUV2Buffer","__webglSkinIndicesBuffer","__webglSkinWeightsBuffer","__webglFaceBuffer","__webglLineBuffer","__webglLineDistanceBuffer"],c=0,d=b.length;d>c;c++){var e=b[c];void 0!==a[e]&&(La.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(var e in a.__webglCustomAttributesList)La.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}Ma.info.memory.geometries--},Sb=function(b){if(delete b.__webglInit,b instanceof a.BufferGeometry){for(var c in b.attributes){var d=b.attributes[c];void 0!==d.buffer&&(La.deleteBuffer(d.buffer),delete d.buffer)}Ma.info.memory.geometries--}else{var e=Wb[b.id];if(void 0!==e){for(var f=0,g=e.length;g>f;f++){var h=e[f];if(void 0!==h.numMorphTargets){for(var i=0,j=h.numMorphTargets;j>i;i++)La.deleteBuffer(h.__webglMorphTargetsBuffers[i]);delete h.__webglMorphTargetsBuffers}if(void 0!==h.numMorphNormals){for(var i=0,j=h.numMorphNormals;j>i;i++)La.deleteBuffer(h.__webglMorphNormalsBuffers[i]);delete h.__webglMorphNormalsBuffers}Rb(h)}delete Wb[b.id]}else Rb(b)}Ra=-1},Tb=function(a){if(a.image&&a.image.__webglTextureCube)La.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube;else{if(void 0===a.__webglInit)return;La.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit}},Ub=function(b){if(b&&void 0!==b.__webglTexture){if(La.deleteTexture(b.__webglTexture),delete b.__webglTexture,b instanceof a.WebGLRenderTargetCube)for(var c=0;6>c;c++)La.deleteFramebuffer(b.__webglFramebuffer[c]),La.deleteRenderbuffer(b.__webglRenderbuffer[c]);else La.deleteFramebuffer(b.__webglFramebuffer),La.deleteRenderbuffer(b.__webglRenderbuffer);delete b.__webglFramebuffer,delete b.__webglRenderbuffer}},Vb=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e,f=!1;for(c=0,d=Na.length;d>c;c++)if(e=Na[c],e.program===b){e.usedTimes--,0===e.usedTimes&&(f=!0);break}if(f===!0){var g=[];for(c=0,d=Na.length;d>c;c++)e=Na[c],e.program!==b&&g.push(e);Na=g,La.deleteProgram(b),Ma.info.memory.programs--}}};this.renderBufferImmediate=function(b,c,d){if(r(),b.hasPositions&&!b.__webglVertexBuffer&&(b.__webglVertexBuffer=La.createBuffer()),b.hasNormals&&!b.__webglNormalBuffer&&(b.__webglNormalBuffer=La.createBuffer()),b.hasUvs&&!b.__webglUvBuffer&&(b.__webglUvBuffer=La.createBuffer()),b.hasColors&&!b.__webglColorBuffer&&(b.__webglColorBuffer=La.createBuffer()),b.hasPositions&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglVertexBuffer),La.bufferData(La.ARRAY_BUFFER,b.positionArray,La.DYNAMIC_DRAW),s(c.attributes.position),La.vertexAttribPointer(c.attributes.position,3,La.FLOAT,!1,0,0)),b.hasNormals){if(La.bindBuffer(La.ARRAY_BUFFER,b.__webglNormalBuffer),d.shading===a.FlatShading){var e,f,g,h,i,j,k,l,m,n,o,p,q,u,v=3*b.count;for(u=0;v>u;u+=9)q=b.normalArray,h=q[u],k=q[u+1],n=q[u+2],i=q[u+3],l=q[u+4],o=q[u+5],j=q[u+6],m=q[u+7],p=q[u+8],e=(h+i+j)/3,f=(k+l+m)/3,g=(n+o+p)/3,q[u]=e,q[u+1]=f,q[u+2]=g,q[u+3]=e,q[u+4]=f,q[u+5]=g,q[u+6]=e,q[u+7]=f,q[u+8]=g}La.bufferData(La.ARRAY_BUFFER,b.normalArray,La.DYNAMIC_DRAW),s(c.attributes.normal),La.vertexAttribPointer(c.attributes.normal,3,La.FLOAT,!1,0,0)}b.hasUvs&&d.map&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglUvBuffer),La.bufferData(La.ARRAY_BUFFER,b.uvArray,La.DYNAMIC_DRAW),s(c.attributes.uv),La.vertexAttribPointer(c.attributes.uv,2,La.FLOAT,!1,0,0)),b.hasColors&&d.vertexColors!==a.NoColors&&(La.bindBuffer(La.ARRAY_BUFFER,b.__webglColorBuffer),La.bufferData(La.ARRAY_BUFFER,b.colorArray,La.DYNAMIC_DRAW),s(c.attributes.color),La.vertexAttribPointer(c.attributes.color,3,La.FLOAT,!1,0,0)),t(),La.drawArrays(La.TRIANGLES,0,b.count),b.count=0},this.renderBufferDirect=function(b,c,d,e,f,g){if(e.visible!==!1){var h=O(b,c,d,e,g),i=!1,j=e.wireframe?1:0,k=16777215*f.id+2*h.id+j;if(k!==Ra&&(Ra=k,i=!0),i&&r(),g instanceof a.Mesh){var l=e.wireframe===!0?La.LINES:La.TRIANGLES,m=f.attributes.index;if(m){var n,o;m.array instanceof Uint32Array&&vb.get("OES_element_index_uint")?(n=La.UNSIGNED_INT,o=4):(n=La.UNSIGNED_SHORT,o=2);var p=f.offsets;if(0===p.length)i&&(q(e,h,f,0),La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,m.buffer)),La.drawElements(l,m.array.length,n,0),Ma.info.render.calls++,Ma.info.render.vertices+=m.array.length,Ma.info.render.faces+=m.array.length/3;else{i=!0;for(var s=0,t=p.length;t>s;s++){var u=p[s].index;i&&(q(e,h,f,u),La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,m.buffer)),La.drawElements(l,p[s].count,n,p[s].start*o),Ma.info.render.calls++,Ma.info.render.vertices+=p[s].count,Ma.info.render.faces+=p[s].count/3}}}else{i&&q(e,h,f,0);var v=f.attributes.position;La.drawArrays(l,0,v.array.length/3),Ma.info.render.calls++,Ma.info.render.vertices+=v.array.length/3,Ma.info.render.faces+=v.array.length/9}}else if(g instanceof a.PointCloud){i&&q(e,h,f,0);var v=f.attributes.position;La.drawArrays(La.POINTS,0,v.array.length/3),Ma.info.render.calls++,Ma.info.render.points+=v.array.length/3}else if(g instanceof a.Line){var l=g.mode===a.LineStrip?La.LINE_STRIP:La.LINES;ea(e.linewidth);var m=f.attributes.index;if(m){var n,o;m.array instanceof Uint32Array?(n=La.UNSIGNED_INT,o=4):(n=La.UNSIGNED_SHORT,o=2);var p=f.offsets;if(0===p.length)i&&(q(e,h,f,0),La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,m.buffer)),La.drawElements(l,m.array.length,n,0),Ma.info.render.calls++,Ma.info.render.vertices+=m.array.length;else{p.length>1&&(i=!0);for(var s=0,t=p.length;t>s;s++){var u=p[s].index;i&&(q(e,h,f,u),La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,m.buffer)),La.drawElements(l,p[s].count,n,p[s].start*o),Ma.info.render.calls++,Ma.info.render.vertices+=p[s].count}}}else{i&&q(e,h,f,0);var v=f.attributes.position;La.drawArrays(l,0,v.array.length/3),Ma.info.render.calls++,Ma.info.render.points+=v.array.length/3}}}},this.renderBuffer=function(b,c,d,e,f,g){if(e.visible!==!1){var h=O(b,c,d,e,g),i=h.attributes,j=!1,k=e.wireframe?1:0,l=16777215*f.id+2*h.id+k;if(l!==Ra&&(Ra=l,j=!0),j&&r(),!e.morphTargets&&i.position>=0?j&&(La.bindBuffer(La.ARRAY_BUFFER,f.__webglVertexBuffer),s(i.position),La.vertexAttribPointer(i.position,3,La.FLOAT,!1,0,0)):g.morphTargetBase&&u(e,f,g),j){if(f.__webglCustomAttributesList)for(var m=0,n=f.__webglCustomAttributesList.length;n>m;m++){var o=f.__webglCustomAttributesList[m];i[o.buffer.belongsToAttribute]>=0&&(La.bindBuffer(La.ARRAY_BUFFER,o.buffer),s(i[o.buffer.belongsToAttribute]),La.vertexAttribPointer(i[o.buffer.belongsToAttribute],o.size,La.FLOAT,!1,0,0))}i.color>=0&&(g.geometry.colors.length>0||g.geometry.faces.length>0?(La.bindBuffer(La.ARRAY_BUFFER,f.__webglColorBuffer),s(i.color),La.vertexAttribPointer(i.color,3,La.FLOAT,!1,0,0)):void 0!==e.defaultAttributeValues&&La.vertexAttrib3fv(i.color,e.defaultAttributeValues.color)),i.normal>=0&&(La.bindBuffer(La.ARRAY_BUFFER,f.__webglNormalBuffer),s(i.normal),La.vertexAttribPointer(i.normal,3,La.FLOAT,!1,0,0)),i.tangent>=0&&(La.bindBuffer(La.ARRAY_BUFFER,f.__webglTangentBuffer),s(i.tangent),La.vertexAttribPointer(i.tangent,4,La.FLOAT,!1,0,0)),i.uv>=0&&(g.geometry.faceVertexUvs[0]?(La.bindBuffer(La.ARRAY_BUFFER,f.__webglUVBuffer),s(i.uv),La.vertexAttribPointer(i.uv,2,La.FLOAT,!1,0,0)):void 0!==e.defaultAttributeValues&&La.vertexAttrib2fv(i.uv,e.defaultAttributeValues.uv)),i.uv2>=0&&(g.geometry.faceVertexUvs[1]?(La.bindBuffer(La.ARRAY_BUFFER,f.__webglUV2Buffer),s(i.uv2),La.vertexAttribPointer(i.uv2,2,La.FLOAT,!1,0,0)):void 0!==e.defaultAttributeValues&&La.vertexAttrib2fv(i.uv2,e.defaultAttributeValues.uv2)),e.skinning&&i.skinIndex>=0&&i.skinWeight>=0&&(La.bindBuffer(La.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),s(i.skinIndex),La.vertexAttribPointer(i.skinIndex,4,La.FLOAT,!1,0,0),La.bindBuffer(La.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),s(i.skinWeight),La.vertexAttribPointer(i.skinWeight,4,La.FLOAT,!1,0,0)),i.lineDistance>=0&&(La.bindBuffer(La.ARRAY_BUFFER,f.__webglLineDistanceBuffer),s(i.lineDistance),La.vertexAttribPointer(i.lineDistance,1,La.FLOAT,!1,0,0))}if(t(),g instanceof a.Mesh){var p=f.__typeArray===Uint32Array?La.UNSIGNED_INT:La.UNSIGNED_SHORT;e.wireframe?(ea(e.wireframeLinewidth),j&&La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),La.drawElements(La.LINES,f.__webglLineCount,p,0)):(j&&La.bindBuffer(La.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),La.drawElements(La.TRIANGLES,f.__webglFaceCount,p,0)),Ma.info.render.calls++,Ma.info.render.vertices+=f.__webglFaceCount,Ma.info.render.faces+=f.__webglFaceCount/3}else if(g instanceof a.Line){var q=g.mode===a.LineStrip?La.LINE_STRIP:La.LINES;ea(e.linewidth),La.drawArrays(q,0,f.__webglLineCount),Ma.info.render.calls++}else g instanceof a.PointCloud&&(La.drawArrays(La.POINTS,0,f.__webglParticleCount),Ma.info.render.calls++,Ma.info.render.points+=f.__webglParticleCount)}},this.render=function(b,c,d,e){if(c instanceof a.Camera==!1)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");var f=b.fog;Ra=-1,Qa=-1,Sa=null,rb=!0,b.autoUpdate===!0&&b.updateMatrixWorld(),void 0===c.parent&&c.updateMatrixWorld(),b.traverse(function(b){b instanceof a.SkinnedMesh&&b.skeleton.update()}),c.matrixWorldInverse.getInverse(c.matrixWorld),nb.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse),mb.setFromMatrix(nb),Ea.length=0,Ha.length=0,Ia.length=0,Ja.length=0,Ka.length=0,y(b,b),Ma.sortObjects===!0&&(Ha.sort(v),Ia.sort(w)),Jb.render(b,c),Ma.info.render.calls=0,Ma.info.render.vertices=0,Ma.info.render.faces=0,Ma.info.render.points=0,this.setRenderTarget(d),(this.autoClear||e)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);for(var g=0,h=Ga.length;h>g;g++){var i=Ga[g],j=i.object;j.visible&&(aa(j,c),B(i))}if(b.overrideMaterial){var k=b.overrideMaterial;this.setBlending(k.blending,k.blendEquation,k.blendSrc,k.blendDst),this.setDepthTest(k.depthTest),this.setDepthWrite(k.depthWrite),fa(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits),z(Ha,c,Ea,f,!0,k),z(Ia,c,Ea,f,!0,k),A(Ga,"",c,Ea,f,!1,k)}else{var k=null;this.setBlending(a.NoBlending),z(Ha,c,Ea,f,!1,k),A(Ga,"opaque",c,Ea,f,!1,k),z(Ia,c,Ea,f,!0,k),A(Ga,"transparent",c,Ea,f,!0,k)}Kb.render(b,c),Lb.render(b,c,ib,jb),d&&d.generateMipmaps&&d.minFilter!==a.NearestFilter&&d.minFilter!==a.LinearFilter&&ma(d),this.setDepthTest(!0),this.setDepthWrite(!0)},this.renderImmediateObject=function(a,b,c,d,e){var f=O(a,b,c,d,e);Ra=-1,Ma.setMaterialFaces(d),e.immediateRenderCallback?e.immediateRenderCallback(f,La,mb):e.render(function(a){Ma.renderBufferImmediate(a,f,d)})};var Wb={},Xb=0;this.setFaceCulling=function(b,c){b===a.CullFaceNone?La.disable(La.CULL_FACE):(c===a.FrontFaceDirectionCW?La.frontFace(La.CW):La.frontFace(La.CCW),b===a.CullFaceBack?La.cullFace(La.BACK):b===a.CullFaceFront?La.cullFace(La.FRONT):La.cullFace(La.FRONT_AND_BACK),La.enable(La.CULL_FACE))},this.setMaterialFaces=function(b){var c=b.side===a.DoubleSide,d=b.side===a.BackSide;Ua!==c&&(c?La.disable(La.CULL_FACE):La.enable(La.CULL_FACE),Ua=c),Va!==d&&(d?La.frontFace(La.CW):La.frontFace(La.CCW),Va=d)},this.setDepthTest=function(a){$a!==a&&(a?La.enable(La.DEPTH_TEST):La.disable(La.DEPTH_TEST),$a=a)},this.setDepthWrite=function(a){_a!==a&&(La.depthMask(a),_a=a)},this.setBlending=function(b,c,d,e){b!==Wa&&(b===a.NoBlending?La.disable(La.BLEND):b===a.AdditiveBlending?(La.enable(La.BLEND),La.blendEquation(La.FUNC_ADD),La.blendFunc(La.SRC_ALPHA,La.ONE)):b===a.SubtractiveBlending?(La.enable(La.BLEND),La.blendEquation(La.FUNC_ADD),La.blendFunc(La.ZERO,La.ONE_MINUS_SRC_COLOR)):b===a.MultiplyBlending?(La.enable(La.BLEND),La.blendEquation(La.FUNC_ADD),La.blendFunc(La.ZERO,La.SRC_COLOR)):b===a.CustomBlending?La.enable(La.BLEND):(La.enable(La.BLEND),La.blendEquationSeparate(La.FUNC_ADD,La.FUNC_ADD),La.blendFuncSeparate(La.SRC_ALPHA,La.ONE_MINUS_SRC_ALPHA,La.ONE,La.ONE_MINUS_SRC_ALPHA)),Wa=b),b===a.CustomBlending?(c!==Xa&&(La.blendEquation(oa(c)),Xa=c),(d!==Ya||e!==Za)&&(La.blendFunc(oa(d),oa(e)),Ya=d,Za=e)):(Xa=null,Ya=null,Za=null)},this.uploadTexture=function(b){void 0===b.__webglInit&&(b.__webglInit=!0,b.addEventListener("dispose",Ob),b.__webglTexture=La.createTexture(),Ma.info.memory.textures++),La.bindTexture(La.TEXTURE_2D,b.__webglTexture),La.pixelStorei(La.UNPACK_FLIP_Y_WEBGL,b.flipY),La.pixelStorei(La.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha),La.pixelStorei(La.UNPACK_ALIGNMENT,b.unpackAlignment),b.image=ha(b.image,yb);var c=b.image,d=a.Math.isPowerOfTwo(c.width)&&a.Math.isPowerOfTwo(c.height),e=oa(b.format),f=oa(b.type);ga(La.TEXTURE_2D,b,d);var g,h=b.mipmaps;if(b instanceof a.DataTexture)if(h.length>0&&d){for(var i=0,j=h.length;j>i;i++)g=h[i],La.texImage2D(La.TEXTURE_2D,i,e,g.width,g.height,0,e,f,g.data);b.generateMipmaps=!1}else La.texImage2D(La.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(b instanceof a.CompressedTexture)for(var i=0,j=h.length;j>i;i++)g=h[i],b.format!==a.RGBAFormat&&b.format!==a.RGBFormat?Gb().indexOf(e)>-1?La.compressedTexImage2D(La.TEXTURE_2D,i,e,g.width,g.height,0,g.data):console.warn("Attempt to load unsupported compressed texture format"):La.texImage2D(La.TEXTURE_2D,i,e,g.width,g.height,0,e,f,g.data);else if(h.length>0&&d){for(var i=0,j=h.length;j>i;i++)g=h[i],La.texImage2D(La.TEXTURE_2D,i,e,e,f,g);b.generateMipmaps=!1; +}else La.texImage2D(La.TEXTURE_2D,0,e,e,f,b.image);b.generateMipmaps&&d&&La.generateMipmap(La.TEXTURE_2D),b.needsUpdate=!1,b.onUpdate&&b.onUpdate()},this.setTexture=function(a,b){La.activeTexture(La.TEXTURE0+b),a.needsUpdate?Ma.uploadTexture(a):La.bindTexture(La.TEXTURE_2D,a.__webglTexture)},this.setRenderTarget=function(b){var c=b instanceof a.WebGLRenderTargetCube;if(b&&void 0===b.__webglFramebuffer){void 0===b.depthBuffer&&(b.depthBuffer=!0),void 0===b.stencilBuffer&&(b.stencilBuffer=!0),b.addEventListener("dispose",Pb),b.__webglTexture=La.createTexture(),Ma.info.memory.textures++;var d=a.Math.isPowerOfTwo(b.width)&&a.Math.isPowerOfTwo(b.height),e=oa(b.format),f=oa(b.type);if(c){b.__webglFramebuffer=[],b.__webglRenderbuffer=[],La.bindTexture(La.TEXTURE_CUBE_MAP,b.__webglTexture),ga(La.TEXTURE_CUBE_MAP,b,d);for(var g=0;6>g;g++)b.__webglFramebuffer[g]=La.createFramebuffer(),b.__webglRenderbuffer[g]=La.createRenderbuffer(),La.texImage2D(La.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,e,b.width,b.height,0,e,f,null),ka(b.__webglFramebuffer[g],b,La.TEXTURE_CUBE_MAP_POSITIVE_X+g),la(b.__webglRenderbuffer[g],b);d&&La.generateMipmap(La.TEXTURE_CUBE_MAP)}else b.__webglFramebuffer=La.createFramebuffer(),b.shareDepthFrom?b.__webglRenderbuffer=b.shareDepthFrom.__webglRenderbuffer:b.__webglRenderbuffer=La.createRenderbuffer(),La.bindTexture(La.TEXTURE_2D,b.__webglTexture),ga(La.TEXTURE_2D,b,d),La.texImage2D(La.TEXTURE_2D,0,e,b.width,b.height,0,e,f,null),ka(b.__webglFramebuffer,b,La.TEXTURE_2D),b.shareDepthFrom?b.depthBuffer&&!b.stencilBuffer?La.framebufferRenderbuffer(La.FRAMEBUFFER,La.DEPTH_ATTACHMENT,La.RENDERBUFFER,b.__webglRenderbuffer):b.depthBuffer&&b.stencilBuffer&&La.framebufferRenderbuffer(La.FRAMEBUFFER,La.DEPTH_STENCIL_ATTACHMENT,La.RENDERBUFFER,b.__webglRenderbuffer):la(b.__webglRenderbuffer,b),d&&La.generateMipmap(La.TEXTURE_2D);c?La.bindTexture(La.TEXTURE_CUBE_MAP,null):La.bindTexture(La.TEXTURE_2D,null),La.bindRenderbuffer(La.RENDERBUFFER,null),La.bindFramebuffer(La.FRAMEBUFFER,null)}var h,i,j,k,l;b?(h=c?b.__webglFramebuffer[b.activeCubeFace]:b.__webglFramebuffer,i=b.width,j=b.height,k=0,l=0):(h=null,i=gb,j=hb,k=eb,l=fb),h!==Pa&&(La.bindFramebuffer(La.FRAMEBUFFER,h),La.viewport(k,l,i,j),Pa=h),ib=i,jb=j},this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}},a.WebGLRenderTarget=function(b,c,d){this.width=b,this.height=c,d=d||{},this.wrapS=void 0!==d.wrapS?d.wrapS:a.ClampToEdgeWrapping,this.wrapT=void 0!==d.wrapT?d.wrapT:a.ClampToEdgeWrapping,this.magFilter=void 0!==d.magFilter?d.magFilter:a.LinearFilter,this.minFilter=void 0!==d.minFilter?d.minFilter:a.LinearMipMapLinearFilter,this.anisotropy=void 0!==d.anisotropy?d.anisotropy:1,this.offset=new a.Vector2(0,0),this.repeat=new a.Vector2(1,1),this.format=void 0!==d.format?d.format:a.RGBAFormat,this.type=void 0!==d.type?d.type:a.UnsignedByteType,this.depthBuffer=void 0!==d.depthBuffer?d.depthBuffer:!0,this.stencilBuffer=void 0!==d.stencilBuffer?d.stencilBuffer:!0,this.generateMipmaps=!0,this.shareDepthFrom=null},a.WebGLRenderTarget.prototype={constructor:a.WebGLRenderTarget,setSize:function(a,b){this.width=a,this.height=b},clone:function(){var b=new a.WebGLRenderTarget(this.width,this.height);return b.wrapS=this.wrapS,b.wrapT=this.wrapT,b.magFilter=this.magFilter,b.minFilter=this.minFilter,b.anisotropy=this.anisotropy,b.offset.copy(this.offset),b.repeat.copy(this.repeat),b.format=this.format,b.type=this.type,b.depthBuffer=this.depthBuffer,b.stencilBuffer=this.stencilBuffer,b.generateMipmaps=this.generateMipmaps,b.shareDepthFrom=this.shareDepthFrom,b},dispose:function(){this.dispatchEvent({type:"dispose"})}},a.EventDispatcher.prototype.apply(a.WebGLRenderTarget.prototype),a.WebGLRenderTargetCube=function(b,c,d){a.WebGLRenderTarget.call(this,b,c,d),this.activeCubeFace=0},a.WebGLRenderTargetCube.prototype=Object.create(a.WebGLRenderTarget.prototype),a.WebGLExtensions=function(a){var b={};this.get=function(c){if(void 0!==b[c])return b[c];var d;switch(c){case"OES_texture_float":d=a.getExtension("OES_texture_float");break;case"OES_texture_float_linear":d=a.getExtension("OES_texture_float_linear");break;case"OES_standard_derivatives":d=a.getExtension("OES_standard_derivatives");break;case"EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"OES_element_index_uint":d=a.getExtension("OES_element_index_uint");break;case"EXT_blend_minmax":d=a.getExtension("EXT_blend_minmax");break;case"EXT_frag_depth":d=a.getExtension("EXT_frag_depth")}return null===d&&console.log("THREE.WebGLRenderer: "+c+" extension not supported."),b[c]=d,d}},a.WebGLProgram=function(){var b=0,c=function(a){var b,c,d=[];for(var e in a)b=a[e],b!==!1&&(c="#define "+e+" "+b,d.push(c));return d.join("\n")},d=function(a,b,c){for(var d={},e=0,f=c.length;f>e;e++){var g=c[e];d[g]=a.getUniformLocation(b,g)}return d},e=function(a,b,c){for(var d={},e=0,f=c.length;f>e;e++){var g=c[e];d[g]=a.getAttribLocation(b,g)}return d};return function(f,g,h,i){var j=f,k=j.context,l=h.defines,m=h.__webglShader.uniforms,n=h.attributes,o=h.__webglShader.vertexShader,p=h.__webglShader.fragmentShader,q=h.index0AttributeName;void 0===q&&i.morphTargets===!0&&(q="position");var r="SHADOWMAP_TYPE_BASIC";i.shadowMapType===a.PCFShadowMap?r="SHADOWMAP_TYPE_PCF":i.shadowMapType===a.PCFSoftShadowMap&&(r="SHADOWMAP_TYPE_PCF_SOFT");var s,t,u=c(l),v=k.createProgram();h instanceof a.RawShaderMaterial?(s="",t=""):(s=["precision "+i.precision+" float;","precision "+i.precision+" int;",u,i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",j.gammaInput?"#define GAMMA_INPUT":"",j.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+i.maxDirLights,"#define MAX_POINT_LIGHTS "+i.maxPointLights,"#define MAX_SPOT_LIGHTS "+i.maxSpotLights,"#define MAX_HEMI_LIGHTS "+i.maxHemiLights,"#define MAX_SHADOWS "+i.maxShadows,"#define MAX_BONES "+i.maxBones,i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.lightMap?"#define USE_LIGHTMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.vertexColors?"#define USE_COLOR":"",i.skinning?"#define USE_SKINNING":"",i.useVertexTexture?"#define BONE_TEXTURE":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals?"#define USE_MORPHNORMALS":"",i.wrapAround?"#define WRAP_AROUND":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+r:"",i.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",i.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR"," attribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",""].join("\n"),t=["precision "+i.precision+" float;","precision "+i.precision+" int;",i.bumpMap||i.normalMap?"#extension GL_OES_standard_derivatives : enable":"",u,"#define MAX_DIR_LIGHTS "+i.maxDirLights,"#define MAX_POINT_LIGHTS "+i.maxPointLights,"#define MAX_SPOT_LIGHTS "+i.maxSpotLights,"#define MAX_HEMI_LIGHTS "+i.maxHemiLights,"#define MAX_SHADOWS "+i.maxShadows,i.alphaTest?"#define ALPHATEST "+i.alphaTest:"",j.gammaInput?"#define GAMMA_INPUT":"",j.gammaOutput?"#define GAMMA_OUTPUT":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.lightMap?"#define USE_LIGHTMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.vertexColors?"#define USE_COLOR":"",i.metal?"#define METAL":"",i.wrapAround?"#define WRAP_AROUND":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+r:"",i.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",i.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",""].join("\n"));var w=new a.WebGLShader(k,k.VERTEX_SHADER,s+o),x=new a.WebGLShader(k,k.FRAGMENT_SHADER,t+p);k.attachShader(v,w),k.attachShader(v,x),void 0!==q&&k.bindAttribLocation(v,0,q),k.linkProgram(v),k.getProgramParameter(v,k.LINK_STATUS)===!1&&(console.error("THREE.WebGLProgram: Could not initialise shader."),console.error("gl.VALIDATE_STATUS",k.getProgramParameter(v,k.VALIDATE_STATUS)),console.error("gl.getError()",k.getError())),""!==k.getProgramInfoLog(v)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",k.getProgramInfoLog(v)),k.deleteShader(w),k.deleteShader(x);var y=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences","bindMatrix","bindMatrixInverse"];i.useVertexTexture?(y.push("boneTexture"),y.push("boneTextureWidth"),y.push("boneTextureHeight")):y.push("boneGlobalMatrices"),i.logarithmicDepthBuffer&&y.push("logDepthBufFC");for(var z in m)y.push(z);this.uniforms=d(k,v,y),y=["position","normal","uv","uv2","tangent","color","skinIndex","skinWeight","lineDistance"];for(var A=0;A0;var c;c=j?{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")}:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["precision mediump float;","uniform lowp int renderType;","uniform sampler2D map;","uniform sampler2D occlusionMap;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","float visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;","visibility = ( 1.0 - visibility / 4.0 );","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * visibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},g=d(c),h={vertex:m.getAttribLocation(g,"position"),uv:m.getAttribLocation(g,"uv")},i={renderType:m.getUniformLocation(g,"renderType"),map:m.getUniformLocation(g,"map"),occlusionMap:m.getUniformLocation(g,"occlusionMap"),opacity:m.getUniformLocation(g,"opacity"),color:m.getUniformLocation(g,"color"),scale:m.getUniformLocation(g,"scale"),rotation:m.getUniformLocation(g,"rotation"),screenPosition:m.getUniformLocation(g,"screenPosition")}};this.render=function(d,o,p,q){if(0!==c.length){var r=new a.Vector3,s=q/p,t=.5*p,u=.5*q,v=16/q,w=new a.Vector2(v*s,v),x=new a.Vector3(1,1,0),y=new a.Vector2(1,1);void 0===g&&n(),m.useProgram(g),m.enableVertexAttribArray(h.vertex),m.enableVertexAttribArray(h.uv),m.uniform1i(i.occlusionMap,0),m.uniform1i(i.map,1),m.bindBuffer(m.ARRAY_BUFFER,e),m.vertexAttribPointer(h.vertex,2,m.FLOAT,!1,16,0),m.vertexAttribPointer(h.uv,2,m.FLOAT,!1,16,8),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f),m.disable(m.CULL_FACE),m.depthMask(!1);for(var z=0,A=c.length;A>z;z++){v=16/q,w.set(v*s,v);var B=c[z];if(r.set(B.matrixWorld.elements[12],B.matrixWorld.elements[13],B.matrixWorld.elements[14]),r.applyMatrix4(o.matrixWorldInverse),r.applyProjection(o.projectionMatrix),x.copy(r),y.x=x.x*t+t,y.y=x.y*u+u,j||y.x>0&&y.x0&&y.yC;C++){var E=B.lensFlares[C];E.opacity>.001&&E.scale>.001&&(x.x=E.x,x.y=E.y,x.z=E.z,v=E.size*E.scale/q,w.x=v*s,w.y=v,m.uniform3f(i.screenPosition,x.x,x.y,x.z),m.uniform2f(i.scale,w.x,w.y),m.uniform1f(i.rotation,E.rotation),m.uniform1f(i.opacity,E.opacity),m.uniform3f(i.color,E.color.r,E.color.g,E.color.b),b.setBlending(E.blending,E.blendEquation,E.blendSrc,E.blendDst),b.setTexture(E.texture,1),m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT,0))}}}m.enable(m.CULL_FACE),m.enable(m.DEPTH_TEST),m.depthMask(!0),b.resetGLState()}}},a.ShadowMapPlugin=function(b,c,d,e){function f(a,b,c){if(b.visible){var e=d[b.id];if(e&&b.castShadow&&(b.frustumCulled===!1||p.intersectsObject(b)===!0))for(var g=0,h=e.length;h>g;g++){var i=e[g];b._modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,b.matrixWorld),u.push(i)}for(var g=0,h=b.children.length;h>g;g++)f(a,b.children[g],c)}}function g(b,c){var d=new a.DirectionalLight;d.isVirtual=!0,d.onlyShadow=!0,d.castShadow=!0,d.shadowCameraNear=b.shadowCameraNear,d.shadowCameraFar=b.shadowCameraFar,d.shadowCameraLeft=b.shadowCameraLeft,d.shadowCameraRight=b.shadowCameraRight,d.shadowCameraBottom=b.shadowCameraBottom,d.shadowCameraTop=b.shadowCameraTop,d.shadowCameraVisible=b.shadowCameraVisible,d.shadowDarkness=b.shadowDarkness,d.shadowBias=b.shadowCascadeBias[c],d.shadowMapWidth=b.shadowCascadeWidth[c],d.shadowMapHeight=b.shadowCascadeHeight[c],d.pointsWorld=[],d.pointsFrustum=[];for(var e=d.pointsWorld,f=d.pointsFrustum,g=0;8>g;g++)e[g]=new a.Vector3,f[g]=new a.Vector3;var h=b.shadowCascadeNearZ[c],i=b.shadowCascadeFarZ[c];return f[0].set(-1,-1,h),f[1].set(1,-1,h),f[2].set(-1,1,h),f[3].set(1,1,h),f[4].set(-1,-1,i),f[5].set(1,-1,i),f[6].set(-1,1,i),f[7].set(1,1,i),d}function h(a,b){var c=a.shadowCascadeArray[b];c.position.copy(a.position),c.target.position.copy(a.target.position),c.lookAt(c.target),c.shadowCameraVisible=a.shadowCameraVisible,c.shadowDarkness=a.shadowDarkness,c.shadowBias=a.shadowCascadeBias[b];var d=a.shadowCascadeNearZ[b],e=a.shadowCascadeFarZ[b],f=c.pointsFrustum;f[0].z=d,f[1].z=d,f[2].z=d,f[3].z=d,f[4].z=e,f[5].z=e,f[6].z=e,f[7].z=e}function i(a,b){var c=b.shadowCamera,d=b.pointsFrustum,e=b.pointsWorld;r.set(1/0,1/0,1/0),s.set(-(1/0),-(1/0),-(1/0));for(var f=0;8>f;f++){var g=e[f];g.copy(d[f]),g.unproject(a),g.applyMatrix4(c.matrixWorldInverse),g.xs.x&&(s.x=g.x),g.ys.y&&(s.y=g.y),g.zs.z&&(s.z=g.z)}c.left=r.x,c.right=s.x,c.top=s.y,c.bottom=r.y,c.updateProjectionMatrix()}function j(b){return b.material instanceof a.MeshFaceMaterial?b.material.materials[0]:b.material}var k,l,m,n,o=b.context,p=new a.Frustum,q=new a.Matrix4,r=new a.Vector3,s=new a.Vector3,t=new a.Vector3,u=[],v=a.ShaderLib.depthRGBA,w=a.UniformsUtils.clone(v.uniforms);k=new a.ShaderMaterial({uniforms:w,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader}),l=new a.ShaderMaterial({uniforms:w,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader,morphTargets:!0}),m=new a.ShaderMaterial({uniforms:w,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader,skinning:!0}),n=new a.ShaderMaterial({uniforms:w,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader,morphTargets:!0,skinning:!0}),k._shadowPass=!0,l._shadowPass=!0,m._shadowPass=!0,n._shadowPass=!0,this.render=function(d,r){if(b.shadowMapEnabled!==!1){var s,v,w,x,y,z,A,B,C,D,E,F,G,H=[],I=0,J=null;for(o.clearColor(1,1,1,1),o.disable(o.BLEND),o.enable(o.CULL_FACE),o.frontFace(o.CCW),b.shadowMapCullFace===a.CullFaceFront?o.cullFace(o.FRONT):o.cullFace(o.BACK),b.setDepthTest(!0),s=0,v=c.length;v>s;s++)if(G=c[s],G.castShadow)if(G instanceof a.DirectionalLight&&G.shadowCascade)for(y=0;ys;s++){if(G=H[s],!G.shadowMap){var M=a.LinearFilter;b.shadowMapType===a.PCFSoftShadowMap&&(M=a.NearestFilter);var N={minFilter:M,magFilter:M,format:a.RGBAFormat};G.shadowMap=new a.WebGLRenderTarget(G.shadowMapWidth,G.shadowMapHeight,N),G.shadowMapSize=new a.Vector2(G.shadowMapWidth,G.shadowMapHeight),G.shadowMatrix=new a.Matrix4}if(!G.shadowCamera){if(G instanceof a.SpotLight)G.shadowCamera=new a.PerspectiveCamera(G.shadowCameraFov,G.shadowMapWidth/G.shadowMapHeight,G.shadowCameraNear,G.shadowCameraFar);else{if(!(G instanceof a.DirectionalLight)){console.error("Unsupported light type for shadow");continue}G.shadowCamera=new a.OrthographicCamera(G.shadowCameraLeft,G.shadowCameraRight,G.shadowCameraTop,G.shadowCameraBottom,G.shadowCameraNear,G.shadowCameraFar)}d.add(G.shadowCamera),d.autoUpdate===!0&&d.updateMatrixWorld()}G.shadowCameraVisible&&!G.cameraHelper&&(G.cameraHelper=new a.CameraHelper(G.shadowCamera),d.add(G.cameraHelper)),G.isVirtual&&K.originalCamera==r&&i(r,G),z=G.shadowMap,A=G.shadowMatrix,B=G.shadowCamera,B.position.setFromMatrixPosition(G.matrixWorld),t.setFromMatrixPosition(G.target.matrixWorld),B.lookAt(t),B.updateMatrixWorld(),B.matrixWorldInverse.getInverse(B.matrixWorld),G.cameraHelper&&(G.cameraHelper.visible=G.shadowCameraVisible),G.shadowCameraVisible&&G.cameraHelper.update(),A.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),A.multiply(B.projectionMatrix),A.multiply(B.matrixWorldInverse),q.multiplyMatrices(B.projectionMatrix,B.matrixWorldInverse),p.setFromMatrix(q),b.setRenderTarget(z),b.clear(),u.length=0,f(d,d,B);var O,P,Q;for(w=0,x=u.length;x>w;w++)E=u[w],F=E.object,C=E.buffer,O=j(F),P=void 0!==F.geometry.morphTargets&&F.geometry.morphTargets.length>0&&O.morphTargets,Q=F instanceof a.SkinnedMesh&&O.skinning,D=F.customDepthMaterial?F.customDepthMaterial:Q?P?n:m:P?l:k,b.setMaterialFaces(O),C instanceof a.BufferGeometry?b.renderBufferDirect(B,c,J,D,C,F):b.renderBuffer(B,c,J,D,C,F);for(w=0,x=e.length;x>w;w++)E=e[w],F=E.object,F.visible&&F.castShadow&&(F._modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,F.matrixWorld),b.renderImmediateObject(B,c,J,k,F))}var R=b.getClearColor(),S=b.getClearAlpha();o.clearColor(R.r,R.g,R.b,S),o.enable(o.BLEND),b.shadowMapCullFace===a.CullFaceFront&&o.cullFace(o.BACK),b.resetGLState()}}},a.SpritePlugin=function(b,c){function d(){var a=l.createProgram(),c=l.createShader(l.VERTEX_SHADER),d=l.createShader(l.FRAGMENT_SHADER);return l.shaderSource(c,["precision "+b.getPrecision()+" float;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uvOffset + uv * uvScale;","vec2 alignedPosition = position * scale;","vec2 rotatedPosition;","rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","vec4 finalPosition;","finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","finalPosition.xy += rotatedPosition;","finalPosition = projectionMatrix * finalPosition;","gl_Position = finalPosition;","}"].join("\n")),l.shaderSource(d,["precision "+b.getPrecision()+" float;","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","void main() {","vec4 texture = texture2D( map, vUV );","if ( texture.a < alphaTest ) discard;","gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","if ( fogType > 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),l.compileShader(c),l.compileShader(d),l.attachShader(a,c),l.attachShader(a,d),l.linkProgram(a),a}function e(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}var f,g,h,i,j,k,l=b.context,m=function(){var b=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),c=new Uint16Array([0,1,2,0,2,3]);f=l.createBuffer(),g=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,f),l.bufferData(l.ARRAY_BUFFER,b,l.STATIC_DRAW),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,g),l.bufferData(l.ELEMENT_ARRAY_BUFFER,c,l.STATIC_DRAW),h=d(),i={position:l.getAttribLocation(h,"position"),uv:l.getAttribLocation(h,"uv")},j={uvOffset:l.getUniformLocation(h,"uvOffset"),uvScale:l.getUniformLocation(h,"uvScale"),rotation:l.getUniformLocation(h,"rotation"),scale:l.getUniformLocation(h,"scale"),color:l.getUniformLocation(h,"color"),map:l.getUniformLocation(h,"map"),opacity:l.getUniformLocation(h,"opacity"),modelViewMatrix:l.getUniformLocation(h,"modelViewMatrix"),projectionMatrix:l.getUniformLocation(h,"projectionMatrix"),fogType:l.getUniformLocation(h,"fogType"),fogDensity:l.getUniformLocation(h,"fogDensity"),fogNear:l.getUniformLocation(h,"fogNear"),fogFar:l.getUniformLocation(h,"fogFar"),fogColor:l.getUniformLocation(h,"fogColor"),alphaTest:l.getUniformLocation(h,"alphaTest")};var e=document.createElement("canvas");e.width=8,e.height=8;var m=e.getContext("2d");m.fillStyle="white",m.fillRect(0,0,8,8),k=new a.Texture(e),k.needsUpdate=!0};this.render=function(d,n){if(0!==c.length){void 0===h&&m(),l.useProgram(h),l.enableVertexAttribArray(i.position),l.enableVertexAttribArray(i.uv),l.disable(l.CULL_FACE),l.enable(l.BLEND),l.bindBuffer(l.ARRAY_BUFFER,f),l.vertexAttribPointer(i.position,2,l.FLOAT,!1,16,0),l.vertexAttribPointer(i.uv,2,l.FLOAT,!1,16,8),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,g),l.uniformMatrix4fv(j.projectionMatrix,!1,n.projectionMatrix.elements),l.activeTexture(l.TEXTURE0),l.uniform1i(j.map,0);var o=0,p=0,q=d.fog;q?(l.uniform3f(j.fogColor,q.color.r,q.color.g,q.color.b),q instanceof a.Fog?(l.uniform1f(j.fogNear,q.near),l.uniform1f(j.fogFar,q.far),l.uniform1i(j.fogType,1),o=1,p=1):q instanceof a.FogExp2&&(l.uniform1f(j.fogDensity,q.density),l.uniform1i(j.fogType,2),o=2,p=2)):(l.uniform1i(j.fogType,0),o=0,p=0);for(var r=0,s=c.length;s>r;r++){var t=c[r];t._modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,t.matrixWorld),null===t.renderDepth?t.z=-t._modelViewMatrix.elements[14]:t.z=t.renderDepth}c.sort(e);for(var u=[],r=0,s=c.length;s>r;r++){var t=c[r],v=t.material;l.uniform1f(j.alphaTest,v.alphaTest),l.uniformMatrix4fv(j.modelViewMatrix,!1,t._modelViewMatrix.elements),u[0]=t.scale.x,u[1]=t.scale.y;var w=0;d.fog&&v.fog&&(w=p),o!==w&&(l.uniform1i(j.fogType,w),o=w),null!==v.map?(l.uniform2f(j.uvOffset,v.map.offset.x,v.map.offset.y),l.uniform2f(j.uvScale,v.map.repeat.x,v.map.repeat.y)):(l.uniform2f(j.uvOffset,0,0),l.uniform2f(j.uvScale,1,1)),l.uniform1f(j.opacity,v.opacity),l.uniform3f(j.color,v.color.r,v.color.g,v.color.b),l.uniform1f(j.rotation,v.rotation),l.uniform2fv(j.scale,u),b.setBlending(v.blending,v.blendEquation,v.blendSrc,v.blendDst),b.setDepthTest(v.depthTest),b.setDepthWrite(v.depthWrite),v.map&&v.map.image&&v.map.image.width?b.setTexture(v.map,0):b.setTexture(k,0),l.drawElements(l.TRIANGLES,6,l.UNSIGNED_SHORT,0)}l.enable(l.CULL_FACE),b.resetGLState()}}},a.GeometryUtils={merge:function(b,c,d){console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");var e;c instanceof a.Mesh&&(c.matrixAutoUpdate&&c.updateMatrix(),e=c.matrix,c=c.geometry),b.merge(c,e,d)},center:function(a){return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),a.center()}},a.ImageUtils={crossOrigin:void 0,loadTexture:function(b,c,d,e){var f=new a.ImageLoader;f.crossOrigin=this.crossOrigin;var g=new a.Texture(void 0,c);return f.load(b,function(a){g.image=a,g.needsUpdate=!0,d&&d(g)},void 0,function(a){e&&e(a)}),g.sourceFile=b,g},loadTextureCube:function(b,c,d,e){var f=[],g=new a.ImageLoader;g.crossOrigin=this.crossOrigin;var h=new a.CubeTexture(f,c);h.flipY=!1;for(var i=0,j=function(a){g.load(b[a],function(b){h.images[a]=b,i+=1,6===i&&(h.needsUpdate=!0,d&&d(h))})},k=0,l=b.length;l>k;++k)j(k);return h},loadCompressedTexture:function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},loadCompressedTextureCube:function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")},getNormalMap:function(a,b){var c=function(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]},d=function(a,b){return[a[0]-b[0],a[1]-b[1],a[2]-b[2]]},e=function(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);return[a[0]/b,a[1]/b,a[2]/b]};b=1|b;var f=a.width,g=a.height,h=document.createElement("canvas");h.width=f,h.height=g;var i=h.getContext("2d");i.drawImage(a,0,0);for(var j=i.getImageData(0,0,f,g).data,k=i.createImageData(f,g),l=k.data,m=0;f>m;m++)for(var n=0;g>n;n++){var o=0>n-1?0:n-1,p=n+1>g-1?g-1:n+1,q=0>m-1?0:m-1,r=m+1>f-1?f-1:m+1,s=[],t=[0,0,j[4*(n*f+m)]/255*b];s.push([-1,0,j[4*(n*f+q)]/255*b]),s.push([-1,-1,j[4*(o*f+q)]/255*b]),s.push([0,-1,j[4*(o*f+m)]/255*b]),s.push([1,-1,j[4*(o*f+r)]/255*b]),s.push([1,0,j[4*(n*f+r)]/255*b]),s.push([1,1,j[4*(p*f+r)]/255*b]),s.push([0,1,j[4*(p*f+m)]/255*b]),s.push([-1,1,j[4*(p*f+q)]/255*b]);for(var u=[],v=s.length,w=0;v>w;w++){var x=s[w],y=s[(w+1)%v];x=d(x,t),y=d(y,t),u.push(e(c(x,y)))}for(var z=[0,0,0],w=0;wj;j++)f[3*j]=g,f[3*j+1]=h,f[3*j+2]=i;var k=new a.DataTexture(f,b,c,a.RGBFormat);return k.needsUpdate=!0,k}},a.SceneUtils={createMultiMaterialObject:function(b,c){for(var d=new a.Object3D,e=0,f=c.length;f>e;e++)d.add(new a.Mesh(b,c[e]));return d},detach:function(a,b,c){a.applyMatrix(b.matrixWorld),b.remove(a),c.add(a)},attach:function(b,c,d){var e=new a.Matrix4;e.getInverse(d.matrixWorld),b.applyMatrix(e),c.remove(b),d.add(b)}},a.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){try{return this.faces[this.face][this.weight][this.style]}catch(a){throw"The font "+this.face+" with "+this.weight+" weight and "+this.style+" style is missing."}},loadFace:function(a){var b=a.familyName.toLowerCase(),c=this;c.faces[b]=c.faces[b]||{},c.faces[b][a.cssFontWeight]=c.faces[b][a.cssFontWeight]||{},c.faces[b][a.cssFontWeight][a.cssFontStyle]=a;c.faces[b][a.cssFontWeight][a.cssFontStyle]=a;return a},drawText:function(b){var c,d=this.getFace(),e=this.size/d.resolution,f=0,g=String(b).split(""),h=g.length,i=[];for(c=0;h>c;c++){var j=new a.Path,k=this.extractGlyphPoints(g[c],d,e,f,j);f+=k.offset,i.push(k.path)}var l=f/2;return{paths:i,offset:l}},extractGlyphPoints:function(b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[],A=c.glyphs[b]||c.glyphs["?"];if(A){if(A.o)for(j=A._cachedOutline||(A._cachedOutline=A.o.split(" ")),l=j.length,m=d,n=d,g=0;l>g;)switch(k=j[g++]){case"m":o=j[g++]*m+e,p=j[g++]*n,f.moveTo(o,p);break;case"l":o=j[g++]*m+e,p=j[g++]*n,f.lineTo(o,p);break;case"q":if(q=j[g++]*m+e,r=j[g++]*n,u=j[g++]*m+e,v=j[g++]*n,f.quadraticCurveTo(u,v,q,r),y=z[z.length-1])for(s=y.x,t=y.y,h=1,i=this.divisions;i>=h;h++){var B=h/i;a.Shape.Utils.b2(B,s,u,q),a.Shape.Utils.b2(B,t,v,r)}break;case"b":if(q=j[g++]*m+e,r=j[g++]*n,u=j[g++]*m+e,v=j[g++]*n,w=j[g++]*m+e,x=j[g++]*n,f.bezierCurveTo(u,v,w,x,q,r),y=z[z.length-1])for(s=y.x,t=y.y,h=1,i=this.divisions;i>=h;h++){var B=h/i;a.Shape.Utils.b3(B,s,u,w,q),a.Shape.Utils.b3(B,t,v,x,r)}}return{offset:A.ha*d,path:f}}}},a.FontUtils.generateShapes=function(b,c){c=c||{};var d=void 0!==c.size?c.size:100,e=void 0!==c.curveSegments?c.curveSegments:4,f=void 0!==c.font?c.font:"helvetiker",g=void 0!==c.weight?c.weight:"normal",h=void 0!==c.style?c.style:"normal";a.FontUtils.size=d,a.FontUtils.divisions=e,a.FontUtils.face=f,a.FontUtils.weight=g,a.FontUtils.style=h;for(var i=a.FontUtils.drawText(b),j=i.paths,k=[],l=0,m=j.length;m>l;l++)Array.prototype.push.apply(k,j[l].toShapes());return k},function(a){var b=1e-10,c=function(a,b){var c=a.length;if(3>c)return null;var f,g,h,i=[],j=[],k=[];if(d(a)>0)for(g=0;c>g;g++)j[g]=g;else for(g=0;c>g;g++)j[g]=c-1-g;var l=c,m=2*l;for(g=l-1;l>2;){if(m--<=0)return console.log("Warning, unable to triangulate polygon!"),b?k:i;if(f=g,f>=l&&(f=0),g=f+1,g>=l&&(g=0),h=g+1,h>=l&&(h=0),e(a,f,g,h,l,j)){var n,o,p,q,r;for(n=j[f],o=j[g],p=j[h],i.push([a[n],a[o],a[p]]),k.push([j[f],j[g],j[h]]),q=g,r=g+1;l>r;q++,r++)j[q]=j[r];l--,m=2*l}}return b?k:i},d=function(a){for(var b=a.length,c=0,d=b-1,e=0;b>e;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},e=function(a,c,d,e,f,g){var h,i,j,k,l,m,n,o,p;if(i=a[g[c]].x,j=a[g[c]].y,k=a[g[d]].x,l=a[g[d]].y,m=a[g[e]].x,n=a[g[e]].y,b>(k-i)*(n-j)-(l-j)*(m-i))return!1;var q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;for(q=m-k,r=n-l,s=i-m,t=j-n,u=k-i,v=l-j,h=0;f>h;h++)if(o=a[g[h]].x,p=a[g[h]].y,!(o===i&&p===j||o===k&&p===l||o===m&&p===n)&&(w=o-i,x=p-j,y=o-k,z=p-l,A=o-m,B=p-n,E=q*z-r*y,C=u*x-v*w,D=s*B-t*A,E>=-b&&D>=-b&&C>=-b))return!1;return!0};return a.Triangulate=c,a.Triangulate.area=d,a}(a.FontUtils),self._typeface_js={faces:a.FontUtils.faces,loadFace:a.FontUtils.loadFace},a.typeface_js=self._typeface_js,a.Audio=function(b){a.Object3D.call(this),this.type="Audio",this.context=b.context,this.source=this.context.createBufferSource(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.panner=this.context.createPanner(),this.panner.connect(this.gain)},a.Audio.prototype=Object.create(a.Object3D.prototype),a.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;return c.open("GET",a,!0),c.responseType="arraybuffer",c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a,b.source.connect(b.panner),b.source.start(0)})},c.send(),this},a.Audio.prototype.setLoop=function(a){this.source.loop=a},a.Audio.prototype.setRefDistance=function(a){this.panner.refDistance=a},a.Audio.prototype.setRolloffFactor=function(a){this.panner.rolloffFactor=a},a.Audio.prototype.updateMatrixWorld=function(){var b=new a.Vector3;return function(c){a.Object3D.prototype.updateMatrixWorld.call(this,c),b.setFromMatrixPosition(this.matrixWorld),this.panner.setPosition(b.x,b.y,b.z)}}(),a.AudioListener=function(){a.Object3D.call(this),this.type="AudioListener",this.context=new(window.AudioContext||window.webkitAudioContext)},a.AudioListener.prototype=Object.create(a.Object3D.prototype),a.AudioListener.prototype.updateMatrixWorld=function(){var b=new a.Vector3,c=new a.Quaternion,d=new a.Vector3,e=new a.Vector3,f=new a.Vector3,g=new a.Vector3;return function(h){a.Object3D.prototype.updateMatrixWorld.call(this,h);var i=this.context.listener;this.matrixWorld.decompose(b,c,d),e.set(0,0,-1).applyQuaternion(c),f.subVectors(b,g),i.setPosition(b.x,b.y,b.z),i.setOrientation(e.x,e.y,e.z,this.up.x,this.up.y,this.up.z),i.setVelocity(f.x,f.y,f.z),g.copy(b)}}(),a.Curve=function(){},a.Curve.prototype.getPoint=function(a){return console.log("Warning, getPoint() not implemented!"),null},a.Curve.prototype.getPointAt=function(a){var b=this.getUtoTmapping(a);return this.getPoint(b)},a.Curve.prototype.getPoints=function(a){a||(a=5);var b,c=[];for(b=0;a>=b;b++)c.push(this.getPoint(b/a));return c},a.Curve.prototype.getSpacedPoints=function(a){a||(a=5);var b,c=[];for(b=0;a>=b;b++)c.push(this.getPointAt(b/a));return c},a.Curve.prototype.getLength=function(){var a=this.getLengths();return a[a.length-1]},a.Curve.prototype.getLengths=function(a){if(a||(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length==a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b,c,d=[],e=this.getPoint(0),f=0;for(d.push(0),c=1;a>=c;c++)b=this.getPoint(c/a),f+=b.distanceTo(e),d.push(f),e=b;return this.cacheArcLengths=d,d},a.Curve.prototype.updateArcLengths=function(){this.needsUpdate=!0,this.getLengths()},a.Curve.prototype.getUtoTmapping=function(a,b){var c,d=this.getLengths(),e=0,f=d.length;c=b?b:a*d[f-1];for(var g,h=0,i=f-1;i>=h;)if(e=Math.floor(h+(i-h)/2),g=d[e]-c,0>g)h=e+1;else{if(!(g>0)){i=e;break}i=e-1}if(e=i,d[e]==c){var j=e/(f-1);return j}var k=d[e],l=d[e+1],m=l-k,n=(c-k)/m,j=(e+n)/(f-1);return j},a.Curve.prototype.getTangent=function(a){var b=1e-4,c=a-b,d=a+b;0>c&&(c=0),d>1&&(d=1);var e=this.getPoint(c),f=this.getPoint(d),g=f.clone().sub(e);return g.normalize()},a.Curve.prototype.getTangentAt=function(a){var b=this.getUtoTmapping(a);return this.getTangent(b)},a.Curve.Utils={tangentQuadraticBezier:function(a,b,c,d){return 2*(1-a)*(c-b)+2*a*(d-c)},tangentCubicBezier:function(a,b,c,d,e){return-3*b*(1-a)*(1-a)+3*c*(1-a)*(1-a)-6*a*c*(1-a)+6*a*d*(1-a)-3*a*a*d+3*a*a*e},tangentSpline:function(a,b,c,d,e){var f=6*a*a-6*a,g=3*a*a-4*a+1,h=-6*a*a+6*a,i=3*a*a-2*a;return f+g+h+i},interpolate:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b}},a.Curve.create=function(b,c){return b.prototype=Object.create(a.Curve.prototype),b.prototype.getPoint=c,b},a.CurvePath=function(){this.curves=[],this.bends=[],this.autoClose=!1},a.CurvePath.prototype=Object.create(a.Curve.prototype),a.CurvePath.prototype.add=function(a){this.curves.push(a)},a.CurvePath.prototype.checkConnection=function(){},a.CurvePath.prototype.closePath=function(){var b=this.curves[0].getPoint(0),c=this.curves[this.curves.length-1].getPoint(1);b.equals(c)||this.curves.push(new a.LineCurve(c,b))},a.CurvePath.prototype.getPoint=function(a){for(var b,c,d=a*this.getLength(),e=this.getCurveLengths(),f=0;f=d){b=e[f]-d,c=this.curves[f];var g=1-b/c.getLength();return c.getPointAt(g)}f++}return null},a.CurvePath.prototype.getLength=function(){var a=this.getCurveLengths();return a[a.length-1]},a.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var a,b=[],c=0,d=this.curves.length;for(a=0;d>a;a++)c+=this.curves[a].getLength(),b.push(c);return this.cacheLengths=b,b},a.CurvePath.prototype.getBoundingBox=function(){var b,c,d,e,f,g,h=this.getPoints();b=c=Number.NEGATIVE_INFINITY,e=f=Number.POSITIVE_INFINITY;var i,j,k,l,m=h[0]instanceof a.Vector3;for(l=m?new a.Vector3:new a.Vector2,j=0,k=h.length;k>j;j++)i=h[j],i.x>b?b=i.x:i.xc?c=i.y:i.yd?d=i.z:i.zc;c++)e=this.getWrapPoints(e,b[c]);return e},a.CurvePath.prototype.getTransformedSpacedPoints=function(a,b){var c,d,e=this.getSpacedPoints(a);for(b||(b=this.bends),c=0,d=b.length;d>c;c++)e=this.getWrapPoints(e,b[c]);return e},a.CurvePath.prototype.getWrapPoints=function(a,b){var c,d,e,f,g,h,i=this.getBoundingBox();for(c=0,d=a.length;d>c;c++){e=a[c],f=e.x,g=e.y,h=f/i.maxX,h=b.getUtoTmapping(h,f);var j=b.getPoint(h),k=b.getTangent(h);k.set(-k.y,k.x).multiplyScalar(g),e.x=j.x+k.x,e.y=j.y+k.y}return a},a.Gyroscope=function(){a.Object3D.call(this)},a.Gyroscope.prototype=Object.create(a.Object3D.prototype),a.Gyroscope.prototype.updateMatrixWorld=function(){var b=new a.Vector3,c=new a.Quaternion,d=new a.Vector3,e=new a.Vector3,f=new a.Quaternion,g=new a.Vector3;return function(a){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||a)&&(this.parent?(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorld.decompose(e,f,g),this.matrix.decompose(b,c,d),this.matrixWorld.compose(e,c,g)):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0);for(var h=0,i=this.children.length;i>h;h++)this.children[h].updateMatrixWorld(a)}}(),a.Path=function(b){a.CurvePath.call(this),this.actions=[],b&&this.fromPoints(b)},a.Path.prototype=Object.create(a.CurvePath.prototype),a.PathActions={MOVE_TO:"moveTo",LINE_TO:"lineTo",QUADRATIC_CURVE_TO:"quadraticCurveTo",BEZIER_CURVE_TO:"bezierCurveTo",CSPLINE_THRU:"splineThru",ARC:"arc",ELLIPSE:"ellipse"},a.Path.prototype.fromPoints=function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;c>b;b++)this.lineTo(a[b].x,a[b].y)},a.Path.prototype.moveTo=function(b,c){var d=Array.prototype.slice.call(arguments);this.actions.push({action:a.PathActions.MOVE_TO,args:d})},a.Path.prototype.lineTo=function(b,c){var d=Array.prototype.slice.call(arguments),e=this.actions[this.actions.length-1].args,f=e[e.length-2],g=e[e.length-1],h=new a.LineCurve(new a.Vector2(f,g),new a.Vector2(b,c));this.curves.push(h),this.actions.push({action:a.PathActions.LINE_TO,args:d})},a.Path.prototype.quadraticCurveTo=function(b,c,d,e){var f=Array.prototype.slice.call(arguments),g=this.actions[this.actions.length-1].args,h=g[g.length-2],i=g[g.length-1],j=new a.QuadraticBezierCurve(new a.Vector2(h,i),new a.Vector2(b,c),new a.Vector2(d,e));this.curves.push(j),this.actions.push({action:a.PathActions.QUADRATIC_CURVE_TO,args:f})},a.Path.prototype.bezierCurveTo=function(b,c,d,e,f,g){var h=Array.prototype.slice.call(arguments),i=this.actions[this.actions.length-1].args,j=i[i.length-2],k=i[i.length-1],l=new a.CubicBezierCurve(new a.Vector2(j,k),new a.Vector2(b,c),new a.Vector2(d,e),new a.Vector2(f,g));this.curves.push(l),this.actions.push({action:a.PathActions.BEZIER_CURVE_TO,args:h})},a.Path.prototype.splineThru=function(b){var c=Array.prototype.slice.call(arguments),d=this.actions[this.actions.length-1].args,e=d[d.length-2],f=d[d.length-1],g=[new a.Vector2(e,f)];Array.prototype.push.apply(g,b);var h=new a.SplineCurve(g);this.curves.push(h),this.actions.push({action:a.PathActions.CSPLINE_THRU,args:c})},a.Path.prototype.arc=function(a,b,c,d,e,f){var g=this.actions[this.actions.length-1].args,h=g[g.length-2],i=g[g.length-1];this.absarc(a+h,b+i,c,d,e,f)},a.Path.prototype.absarc=function(a,b,c,d,e,f){this.absellipse(a,b,c,c,d,e,f)},a.Path.prototype.ellipse=function(a,b,c,d,e,f,g){var h=this.actions[this.actions.length-1].args,i=h[h.length-2],j=h[h.length-1];this.absellipse(a+i,b+j,c,d,e,f,g)},a.Path.prototype.absellipse=function(b,c,d,e,f,g,h){var i=Array.prototype.slice.call(arguments),j=new a.EllipseCurve(b,c,d,e,f,g,h);this.curves.push(j);var k=j.getPoint(1);i.push(k.x),i.push(k.y),this.actions.push({action:a.PathActions.ELLIPSE,args:i})},a.Path.prototype.getSpacedPoints=function(a,b){a||(a=40);for(var c=[],d=0;a>d;d++)c.push(this.getPoint(d/a));return c},a.Path.prototype.getPoints=function(b,c){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(b,c);b=b||12;var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=[];for(d=0,e=this.actions.length;e>d;d++)switch(f=this.actions[d],g=f.action,h=f.args,g){case a.PathActions.MOVE_TO:v.push(new a.Vector2(h[0],h[1]));break;case a.PathActions.LINE_TO:v.push(new a.Vector2(h[0],h[1]));break;case a.PathActions.QUADRATIC_CURVE_TO:for(i=h[2],j=h[3],m=h[0],n=h[1],v.length>0?(q=v[v.length-1],o=q.x,p=q.y):(q=this.actions[d-1].args,o=q[q.length-2],p=q[q.length-1]),r=1;b>=r;r++)s=r/b,t=a.Shape.Utils.b2(s,o,m,i),u=a.Shape.Utils.b2(s,p,n,j),v.push(new a.Vector2(t,u));break;case a.PathActions.BEZIER_CURVE_TO:for(i=h[4],j=h[5],m=h[0],n=h[1],k=h[2],l=h[3],v.length>0?(q=v[v.length-1],o=q.x,p=q.y):(q=this.actions[d-1].args,o=q[q.length-2],p=q[q.length-1]),r=1;b>=r;r++)s=r/b,t=a.Shape.Utils.b3(s,o,m,k,i),u=a.Shape.Utils.b3(s,p,n,l,j),v.push(new a.Vector2(t,u));break;case a.PathActions.CSPLINE_THRU:q=this.actions[d-1].args;var w=new a.Vector2(q[q.length-2],q[q.length-1]),x=[w],y=b*h[0].length;x=x.concat(h[0]);var z=new a.SplineCurve(x);for(r=1;y>=r;r++)v.push(z.getPointAt(r/y));break;case a.PathActions.ARC:var A,B=h[0],C=h[1],D=h[2],E=h[3],F=h[4],G=!!h[5],H=F-E,I=2*b;for(r=1;I>=r;r++)s=r/I,G||(s=1-s),A=E+s*H,t=B+D*Math.cos(A),u=C+D*Math.sin(A),v.push(new a.Vector2(t,u));break;case a.PathActions.ELLIPSE:var A,B=h[0],C=h[1],J=h[2],K=h[3],E=h[4],F=h[5],G=!!h[6],H=F-E,I=2*b;for(r=1;I>=r;r++)s=r/I,G||(s=1-s),A=E+s*H,t=B+J*Math.cos(A),u=C+K*Math.sin(A),v.push(new a.Vector2(t,u))}var L=v[v.length-1],M=1e-10;return Math.abs(L.x-v[0].x)c;c++)e=b[c],g=e.args,f=e.action,f==a.PathActions.MOVE_TO&&0!=i.actions.length&&(h.push(i),i=new a.Path),i[f].apply(i,g);return 0!=i.actions.length&&h.push(i),h}function e(b){for(var c=[],d=0,e=b.length;e>d;d++){var f=b[d],g=new a.Shape;g.actions=f.actions,g.curves=f.curves,c.push(g)}return c}function f(a,b){for(var c=1e-10,d=b.length,e=!1,f=d-1,g=0;d>g;f=g++){var h=b[f],i=b[g],j=i.x-h.x,k=i.y-h.y;if(Math.abs(k)>c){if(0>k&&(h=b[g],j=-j,i=b[f],k=-k),a.yi.y)continue;if(a.y==h.y){if(a.x==h.x)return!0}else{var l=k*(a.x-h.x)-j*(a.y-h.y);if(0==l)return!0;if(0>l)continue;e=!e}}else{if(a.y!=h.y)continue;if(i.x<=a.x&&a.x<=h.x||h.x<=a.x&&a.x<=i.x)return!0}}return e}var g=d(this.actions);if(0==g.length)return[];if(c===!0)return e(g);var h,i,j,k=[];if(1==g.length)return i=g[0],j=new a.Shape,j.actions=i.actions,j.curves=i.curves,k.push(j),k;var l=!a.Shape.Utils.isClockWise(g[0].getPoints());l=b?!l:l;var m,n=[],o=[],p=[],q=0;o[q]=void 0,p[q]=[];var r,s;for(r=0,s=g.length;s>r;r++)i=g[r],m=i.getPoints(),h=a.Shape.Utils.isClockWise(m),h=b?!h:h,h?(!l&&o[q]&&q++,o[q]={s:new a.Shape,p:m},o[q].s.actions=i.actions,o[q].s.curves=i.curves,l&&q++,p[q]=[]):p[q].push({h:i,p:m[0]});if(!o[0])return e(g);if(o.length>1){for(var t=!1,u=[],v=0,w=o.length;w>v;v++)n[v]=[];for(var v=0,w=o.length;w>v;v++)for(var x=(o[v],p[v]),y=0;y0&&(t||(p=n))}var C,D,E;for(r=0,s=o.length;s>r;r++)for(j=o[r].s,k.push(j),C=p[r],D=0,E=C.length;E>D;D++)j.holes.push(C[D].h);return k},a.Shape=function(){a.Path.apply(this,arguments),this.holes=[]},a.Shape.prototype=Object.create(a.Path.prototype),a.Shape.prototype.extrude=function(b){var c=new a.ExtrudeGeometry(this,b);return c},a.Shape.prototype.makeGeometry=function(b){var c=new a.ShapeGeometry(this,b);return c},a.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;c>b;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d},a.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;c>b;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d},a.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}},a.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)},a.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}},a.Shape.Utils={triangulateShape:function(b,c){function d(a,b,c){return a.x!=b.x?a.xg){var p;if(n>0){if(0>o||o>n)return[];if(p=k*l-j*m,0>p||p>n)return[]}else{if(o>0||n>o)return[];if(p=k*l-j*m,p>0||n>p)return[]}if(0==p)return!f||0!=o&&o!=n?[a]:[];if(p==n)return!f||0!=o&&o!=n?[b]:[];if(0==o)return[c];if(o==n)return[e];var q=p/n;return[{x:a.x+q*h,y:a.y+q*i}]}if(0!=o||k*l!=j*m)return[];var r=0==h&&0==i,s=0==j&&0==k;if(r&&s)return a.x!=c.x||a.y!=c.y?[]:[a];if(r)return d(c,e,a)?[a]:[];if(s)return d(a,b,c)?[c]:[];var t,u,v,w,x,y,z,A;return 0!=h?(a.x=v?z>w?[]:w==z?f?[]:[x]:A>=w?[x,u]:[x,y]:v>A?[]:v==A?f?[]:[t]:A>=w?[t,u]:[t,y]}function f(a,b,c,d){var e=1e-10,f=b.x-a.x,g=b.y-a.y,h=c.x-a.x,i=c.y-a.y,j=d.x-a.x,k=d.y-a.y,l=f*i-g*h,m=f*k-g*j;if(Math.abs(l)>e){var n=j*i-k*h;return l>0?m>=0&&n>=0:m>=0||n>=0}return m>0}function g(a,b){function c(a,b){var c=s.length-1,d=a-1;0>d&&(d=c);var e=a+1;e>c&&(e=0);var g=f(s[a],s[d],s[e],h[b]);if(!g)return!1;var i=h.length-1,j=b-1;0>j&&(j=i);var k=b+1;return k>i&&(k=0),g=f(h[b],h[j],h[k],s[a]),g?!0:!1}function d(a,b){var c,d,f;for(c=0;c0)return!0;return!1}function g(a,c){var d,f,g,h,i;for(d=0;d0)return!0;return!1}for(var h,i,j,k,l,m,n,o,p,q,r,s=a.concat(),t=[],u=[],v=0,w=b.length;w>v;v++)t.push(v);for(var x=0,y=2*t.length;t.length>0;){if(y--,0>y){console.log("Infinite Loop! Holes left:"+t.length+", Probably Hole outside Shape!");break}for(j=x;j=0)break;u[n]=!0}if(i>=0)break}}return s}for(var h,i,j,k,l,m,n={},o=b.concat(),p=0,q=c.length;q>p;p++)Array.prototype.push.apply(o,c[p]);for(h=0,i=o.length;i>h;h++)l=o[h].x+":"+o[h].y,void 0!==n[l]&&console.log("Duplicate point",l),n[l]=h;var r=g(b,c),s=a.FontUtils.Triangulate(r,!1);for(h=0,i=s.length;i>h;h++)for(k=s[h],j=0;3>j;j++)l=k[j].x+":"+k[j].y,m=n[l],void 0!==m&&(k[j]=m);return s.concat()},isClockWise:function(b){return a.FontUtils.Triangulate.area(b)<0},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){var c=1-a;return 3*c*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}},a.LineCurve=function(a,b){this.v1=a,this.v2=b},a.LineCurve.prototype=Object.create(a.Curve.prototype),a.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);return b.multiplyScalar(a).add(this.v1),b},a.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)},a.LineCurve.prototype.getTangent=function(a){var b=this.v2.clone().sub(this.v1);return b.normalize()},a.QuadraticBezierCurve=function(a,b,c){this.v0=a,this.v1=b,this.v2=c},a.QuadraticBezierCurve.prototype=Object.create(a.Curve.prototype),a.QuadraticBezierCurve.prototype.getPoint=function(b){var c=new a.Vector2;return c.x=a.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x),c.y=a.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y),c},a.QuadraticBezierCurve.prototype.getTangent=function(b){var c=new a.Vector2;return c.x=a.Curve.Utils.tangentQuadraticBezier(b,this.v0.x,this.v1.x,this.v2.x),c.y=a.Curve.Utils.tangentQuadraticBezier(b,this.v0.y,this.v1.y,this.v2.y),c.normalize()},a.CubicBezierCurve=function(a,b,c,d){this.v0=a,this.v1=b,this.v2=c,this.v3=d},a.CubicBezierCurve.prototype=Object.create(a.Curve.prototype),a.CubicBezierCurve.prototype.getPoint=function(b){var c,d;return c=a.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),d=a.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y),new a.Vector2(c,d)},a.CubicBezierCurve.prototype.getTangent=function(b){var c,d;c=a.Curve.Utils.tangentCubicBezier(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),d=a.Curve.Utils.tangentCubicBezier(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y);var e=new a.Vector2(c,d);return e.normalize(),e},a.SplineCurve=function(a){this.points=void 0==a?[]:a},a.SplineCurve.prototype=Object.create(a.Curve.prototype),a.SplineCurve.prototype.getPoint=function(b){var c=this.points,d=(c.length-1)*b,e=Math.floor(d),f=d-e,g=c[0==e?e:e-1],h=c[e],i=c[e>c.length-2?c.length-1:e+1],j=c[e>c.length-3?c.length-1:e+2],k=new a.Vector2;return k.x=a.Curve.Utils.interpolate(g.x,h.x,i.x,j.x,f),k.y=a.Curve.Utils.interpolate(g.y,h.y,i.y,j.y,f),k},a.EllipseCurve=function(a,b,c,d,e,f,g){this.aX=a,this.aY=b,this.xRadius=c,this.yRadius=d,this.aStartAngle=e,this.aEndAngle=f,this.aClockwise=g},a.EllipseCurve.prototype=Object.create(a.Curve.prototype),a.EllipseCurve.prototype.getPoint=function(b){var c=this.aEndAngle-this.aStartAngle;0>c&&(c+=2*Math.PI),c>2*Math.PI&&(c-=2*Math.PI);var d;d=this.aClockwise===!0?this.aEndAngle+(1-b)*(2*Math.PI-c):this.aStartAngle+b*c;var e=new a.Vector2;return e.x=this.aX+this.xRadius*Math.cos(d),e.y=this.aY+this.yRadius*Math.sin(d),e},a.ArcCurve=function(b,c,d,e,f,g){a.EllipseCurve.call(this,b,c,d,d,e,f,g)},a.ArcCurve.prototype=Object.create(a.EllipseCurve.prototype),a.LineCurve3=a.Curve.create(function(a,b){this.v1=a,this.v2=b},function(b){var c=new a.Vector3;return c.subVectors(this.v2,this.v1),c.multiplyScalar(b),c.add(this.v1),c}),a.QuadraticBezierCurve3=a.Curve.create(function(a,b,c){this.v0=a,this.v1=b,this.v2=c},function(b){var c=new a.Vector3;return c.x=a.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x),c.y=a.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y),c.z=a.Shape.Utils.b2(b,this.v0.z,this.v1.z,this.v2.z),c}),a.CubicBezierCurve3=a.Curve.create(function(a,b,c,d){this.v0=a,this.v1=b,this.v2=c,this.v3=d},function(b){var c=new a.Vector3;return c.x=a.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x),c.y=a.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y),c.z=a.Shape.Utils.b3(b,this.v0.z,this.v1.z,this.v2.z,this.v3.z),c}),a.SplineCurve3=a.Curve.create(function(a){this.points=void 0==a?[]:a},function(b){var c=this.points,d=(c.length-1)*b,e=Math.floor(d),f=d-e,g=c[0==e?e:e-1],h=c[e],i=c[e>c.length-2?c.length-1:e+1],j=c[e>c.length-3?c.length-1:e+2],k=new a.Vector3;return k.x=a.Curve.Utils.interpolate(g.x,h.x,i.x,j.x,f),k.y=a.Curve.Utils.interpolate(g.y,h.y,i.y,j.y,f),k.z=a.Curve.Utils.interpolate(g.z,h.z,i.z,j.z,f),k}),a.ClosedSplineCurve3=a.Curve.create(function(a){this.points=void 0==a?[]:a},function(b){var c=this.points,d=(c.length-0)*b,e=Math.floor(d),f=d-e;e+=e>0?0:(Math.floor(Math.abs(e)/c.length)+1)*c.length;var g=c[(e-1)%c.length],h=c[e%c.length],i=c[(e+1)%c.length],j=c[(e+2)%c.length],k=new a.Vector3;return k.x=a.Curve.Utils.interpolate(g.x,h.x,i.x,j.x,f),k.y=a.Curve.Utils.interpolate(g.y,h.y,i.y,j.y,f),k.z=a.Curve.Utils.interpolate(g.z,h.z,i.z,j.z,f),k}),a.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){console.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){console.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){console.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(b){if(b.initialized!==!0){for(var c=0;ca;a++){var c=this.hierarchy[a];c.matrixAutoUpdate=!0,void 0===c.animationCache&&(c.animationCache={animations:{},blending:{positionWeight:0,quaternionWeight:0,scaleWeight:0}}),void 0===c.animationCache.animations[this.data.name]&&(c.animationCache.animations[this.data.name]={},c.animationCache.animations[this.data.name].prevKey={pos:0,rot:0,scl:0},c.animationCache.animations[this.data.name].nextKey={pos:0,rot:0,scl:0},c.animationCache.animations[this.data.name].originalMatrix=c.matrix);for(var d=c.animationCache.animations[this.data.name],e=0;3>e;e++){for(var f=this.keyTypes[e],g=this.data.hierarchy[a].keys[0],h=this.getNextKeyWith(f,a,1);h.timeg.index;)g=h,h=this.getNextKeyWith(f,a,h.index+1);d.prevKey[f]=g,d.nextKey[f]=h}}},a.Animation.prototype.resetBlendWeights=function(){for(var a=0,b=this.hierarchy.length;b>a;a++){var c=this.hierarchy[a];void 0!==c.animationCache&&(c.animationCache.blending.positionWeight=0,c.animationCache.blending.quaternionWeight=0,c.animationCache.blending.scaleWeight=0)}},a.Animation.prototype.update=function(){var b=[],c=new a.Vector3,d=new a.Vector3,e=new a.Quaternion,f=function(a,b){var c,d,e,f,h,i,j,k,l,m=[],n=[];return c=(a.length-1)*b,d=Math.floor(c),e=c-d,m[0]=0===d?d:d-1,m[1]=d,m[2]=d>a.length-2?d:d+1,m[3]=d>a.length-3?d:d+2,i=a[m[0]],j=a[m[1]],k=a[m[2]],l=a[m[3]],f=e*e,h=e*f,n[0]=g(i[0],j[0],k[0],l[0],e,f,h),n[1]=g(i[1],j[1],k[1],l[1],e,f,h),n[2]=g(i[2],j[2],k[2],l[2],e,f,h),n},g=function(a,b,c,d,e,f,g){var h=.5*(c-a),i=.5*(d-b);return(2*(b-c)+h+i)*g+(-3*(b-c)-2*h-i)*f+h*e+b};return function(g){if(this.isPlaying!==!1&&(this.currentTime+=g*this.timeScale,0!==this.weight)){var h=this.data.length;if(this.currentTime>h||this.currentTime<0){if(!this.loop)return void this.stop();this.currentTime%=h,this.currentTime<0&&(this.currentTime+=h),this.reset()}for(var i=0,j=this.hierarchy.length;j>i;i++)for(var k=this.hierarchy[i],l=k.animationCache.animations[this.data.name],m=k.animationCache.blending,n=0;3>n;n++){var o=this.keyTypes[n],p=l.prevKey[o],q=l.nextKey[o];if(this.timeScale>0&&q.time<=this.currentTime||this.timeScale<0&&p.time>=this.currentTime){for(p=this.data.hierarchy[i].keys[0],q=this.getNextKeyWith(o,i,1);q.timep.index;)p=q,q=this.getNextKeyWith(o,i,q.index+1);l.prevKey[o]=p,l.nextKey[o]=q}k.matrixAutoUpdate=!0,k.matrixWorldNeedsUpdate=!0;var r=(this.currentTime-p.time)/(q.time-p.time),s=p[o],t=q[o];if(0>r&&(r=0),r>1&&(r=1),"pos"===o){if(this.interpolationType===a.AnimationHandler.LINEAR){d.x=s[0]+(t[0]-s[0])*r,d.y=s[1]+(t[1]-s[1])*r,d.z=s[2]+(t[2]-s[2])*r;var u=this.weight/(this.weight+m.positionWeight);k.position.lerp(d,u),m.positionWeight+=this.weight}else if(this.interpolationType===a.AnimationHandler.CATMULLROM||this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD){b[0]=this.getPrevKeyWith("pos",i,p.index-1).pos,b[1]=s,b[2]=t,b[3]=this.getNextKeyWith("pos",i,q.index+1).pos,r=.33*r+.33;var v=f(b,r),u=this.weight/(this.weight+m.positionWeight);m.positionWeight+=this.weight;var w=k.position;if(w.x=w.x+(v[0]-w.x)*u,w.y=w.y+(v[1]-w.y)*u,w.z=w.z+(v[2]-w.z)*u,this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD){var x=f(b,1.01*r);c.set(x[0],x[1],x[2]),c.sub(w),c.y=0,c.normalize();var y=Math.atan2(c.x,c.z);k.rotation.set(0,y,0)}}}else if("rot"===o)if(a.Quaternion.slerp(s,t,e,r),0===m.quaternionWeight)k.quaternion.copy(e),m.quaternionWeight=this.weight;else{var u=this.weight/(this.weight+m.quaternionWeight);a.Quaternion.slerp(k.quaternion,e,k.quaternion,u),m.quaternionWeight+=this.weight}else if("scl"===o){d.x=s[0]+(t[0]-s[0])*r,d.y=s[1]+(t[1]-s[1])*r,d.z=s[2]+(t[2]-s[2])*r; +var u=this.weight/(this.weight+m.scaleWeight);k.scale.lerp(d,u),m.scaleWeight+=this.weight}}return!0}}}(),a.Animation.prototype.getNextKeyWith=function(b,c,d){var e=this.data.hierarchy[c].keys;for(this.interpolationType===a.AnimationHandler.CATMULLROM||this.interpolationType===a.AnimationHandler.CATMULLROM_FORWARD?d=d0?d:0:d>=0?d:d+e.length;d>=0;d--)if(void 0!==e[d][b])return e[d];return this.data.hierarchy[c].keys[e.length-1]},a.KeyFrameAnimation=function(b){this.root=b.node,this.data=a.AnimationHandler.init(b),this.hierarchy=a.AnimationHandler.parse(this.root),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var c=0,d=this.hierarchy.length;d>c;c++){var e=this.data.hierarchy[c].keys,f=this.data.hierarchy[c].sids,g=this.hierarchy[c];if(e.length&&f){for(var h=0;hc;c++){d=this.hierarchy[c],e=this.data.hierarchy[c],void 0===e.animationCache&&(e.animationCache={},e.animationCache.prevKey=null,e.animationCache.nextKey=null,e.animationCache.originalMatrix=d.matrix);var g=this.data.hierarchy[c].keys;g.length&&(e.animationCache.prevKey=g[0],e.animationCache.nextKey=g[1],this.startTime=Math.min(g[0].time,this.startTime),this.endTime=Math.max(g[g.length-1].time,this.endTime))}this.update(0)}this.isPaused=!1,a.AnimationHandler.play(this)},a.KeyFrameAnimation.prototype.stop=function(){this.isPlaying=!1,this.isPaused=!1,a.AnimationHandler.stop(this);for(var b=0;bb&&(this.currentTime%=b),this.currentTime=Math.min(this.currentTime,b);for(var c=0,d=this.hierarchy.length;d>c;c++){var e=this.hierarchy[c],f=this.data.hierarchy[c],g=f.keys,h=f.animationCache;if(g.length){var i=h.prevKey,j=h.nextKey;if(j.time<=this.currentTime){for(;j.timei.index;)i=j,j=g[i.index+1];h.prevKey=i,h.nextKey=j}j.time>=this.currentTime?i.interpolate(j,this.currentTime):i.interpolate(j,j.time),this.data.hierarchy[c].node.updateMatrix(),e.matrixWorldNeedsUpdate=!0}}}},a.KeyFrameAnimation.prototype.getNextKeyWith=function(a,b,c){var d=this.data.hierarchy[b].keys;for(c%=d.length;c=0?c:c+d.length;c>=0;c--)if(d[c].hasTarget(a))return d[c];return d[d.length-1]},a.MorphAnimation=function(a){this.mesh=a,this.frames=a.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.isPlaying=!1},a.MorphAnimation.prototype={play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(){var a=0,b=0;return function(c){if(this.isPlaying!==!1){this.currentTime+=c,this.loop===!0&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var d=this.duration/this.frames,e=Math.floor(this.currentTime/d);e!=b&&(this.mesh.morphTargetInfluences[a]=0,this.mesh.morphTargetInfluences[b]=1,this.mesh.morphTargetInfluences[e]=0,a=b,b=e),this.mesh.morphTargetInfluences[e]=this.currentTime%d/d,this.mesh.morphTargetInfluences[a]=1-this.mesh.morphTargetInfluences[e]}}}()},a.BoxGeometry=function(b,c,d,e,f,g){function h(b,c,d,e,f,g,h,j){var k,l,m,n=i.widthSegments,o=i.heightSegments,p=f/2,q=g/2,r=i.vertices.length;"x"===b&&"y"===c||"y"===b&&"x"===c?k="z":"x"===b&&"z"===c||"z"===b&&"x"===c?(k="y",o=i.depthSegments):("z"===b&&"y"===c||"y"===b&&"z"===c)&&(k="x",n=i.depthSegments);var s=n+1,t=o+1,u=f/n,v=g/o,w=new a.Vector3;for(w[k]=h>0?1:-1,m=0;t>m;m++)for(l=0;s>l;l++){var x=new a.Vector3;x[b]=(l*u-p)*d,x[c]=(m*v-q)*e,x[k]=h,i.vertices.push(x)}for(m=0;o>m;m++)for(l=0;n>l;l++){var y=l+s*m,z=l+s*(m+1),A=l+1+s*(m+1),B=l+1+s*m,C=new a.Vector2(l/n,1-m/o),D=new a.Vector2(l/n,1-(m+1)/o),E=new a.Vector2((l+1)/n,1-(m+1)/o),F=new a.Vector2((l+1)/n,1-m/o),G=new a.Face3(y+r,z+r,B+r);G.normal.copy(w),G.vertexNormals.push(w.clone(),w.clone(),w.clone()),G.materialIndex=j,i.faces.push(G),i.faceVertexUvs[0].push([C,D,F]),G=new a.Face3(z+r,A+r,B+r),G.normal.copy(w),G.vertexNormals.push(w.clone(),w.clone(),w.clone()),G.materialIndex=j,i.faces.push(G),i.faceVertexUvs[0].push([D.clone(),E,F.clone()])}}a.Geometry.call(this),this.type="BoxGeometry",this.parameters={width:b,height:c,depth:d,widthSegments:e,heightSegments:f,depthSegments:g},this.widthSegments=e||1,this.heightSegments=f||1,this.depthSegments=g||1;var i=this,j=b/2,k=c/2,l=d/2;h("z","y",-1,-1,d,c,j,0),h("z","y",1,-1,d,c,-j,1),h("x","z",1,1,b,d,k,2),h("x","z",1,-1,b,d,-k,3),h("x","y",1,-1,b,c,l,4),h("x","y",-1,-1,b,c,-l,5),this.mergeVertices()},a.BoxGeometry.prototype=Object.create(a.Geometry.prototype),a.CircleGeometry=function(b,c,d,e){a.Geometry.call(this),this.type="CircleGeometry",this.parameters={radius:b,segments:c,thetaStart:d,thetaLength:e},b=b||50,c=void 0!==c?Math.max(3,c):8,d=void 0!==d?d:0,e=void 0!==e?e:2*Math.PI;var f,g=[],h=new a.Vector3,i=new a.Vector2(.5,.5);for(this.vertices.push(h),g.push(i),f=0;c>=f;f++){var j=new a.Vector3,k=d+f/c*e;j.x=b*Math.cos(k),j.y=b*Math.sin(k),this.vertices.push(j),g.push(new a.Vector2((j.x/b+1)/2,(j.y/b+1)/2))}var l=new a.Vector3(0,0,1);for(f=1;c>=f;f++)this.faces.push(new a.Face3(f,f+1,0,[l.clone(),l.clone(),l.clone()])),this.faceVertexUvs[0].push([g[f].clone(),g[f+1].clone(),i.clone()]);this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,b)},a.CircleGeometry.prototype=Object.create(a.Geometry.prototype),a.CubeGeometry=function(b,c,d,e,f,g){return console.warn("THREE.CubeGeometry has been renamed to THREE.BoxGeometry."),new a.BoxGeometry(b,c,d,e,f,g)},a.CylinderGeometry=function(b,c,d,e,f,g){a.Geometry.call(this),this.type="CylinderGeometry",this.parameters={radiusTop:b,radiusBottom:c,height:d,radialSegments:e,heightSegments:f,openEnded:g},b=void 0!==b?b:20,c=void 0!==c?c:20,d=void 0!==d?d:100,e=e||8,f=f||1,g=void 0!==g?g:!1;var h,i,j=d/2,k=[],l=[];for(i=0;f>=i;i++){var m=[],n=[],o=i/f,p=o*(c-b)+b;for(h=0;e>=h;h++){var q=h/e,r=new a.Vector3;r.x=p*Math.sin(q*Math.PI*2),r.y=-o*d+j,r.z=p*Math.cos(q*Math.PI*2),this.vertices.push(r),m.push(this.vertices.length-1),n.push(new a.Vector2(q,1-o))}k.push(m),l.push(n)}var s,t,u=(c-b)/d;for(h=0;e>h;h++)for(0!==b?(s=this.vertices[k[0][h]].clone(),t=this.vertices[k[0][h+1]].clone()):(s=this.vertices[k[1][h]].clone(),t=this.vertices[k[1][h+1]].clone()),s.setY(Math.sqrt(s.x*s.x+s.z*s.z)*u).normalize(),t.setY(Math.sqrt(t.x*t.x+t.z*t.z)*u).normalize(),i=0;f>i;i++){var v=k[i][h],w=k[i+1][h],x=k[i+1][h+1],y=k[i][h+1],z=s.clone(),A=s.clone(),B=t.clone(),C=t.clone(),D=l[i][h].clone(),E=l[i+1][h].clone(),F=l[i+1][h+1].clone(),G=l[i][h+1].clone();this.faces.push(new a.Face3(v,w,y,[z,A,C])),this.faceVertexUvs[0].push([D,E,G]),this.faces.push(new a.Face3(w,x,y,[A.clone(),B,C.clone()])),this.faceVertexUvs[0].push([E.clone(),F,G.clone()])}if(g===!1&&b>0)for(this.vertices.push(new a.Vector3(0,j,0)),h=0;e>h;h++){var v=k[0][h],w=k[0][h+1],x=this.vertices.length-1,z=new a.Vector3(0,1,0),A=new a.Vector3(0,1,0),B=new a.Vector3(0,1,0),D=l[0][h].clone(),E=l[0][h+1].clone(),F=new a.Vector2(E.x,0);this.faces.push(new a.Face3(v,w,x,[z,A,B])),this.faceVertexUvs[0].push([D,E,F])}if(g===!1&&c>0)for(this.vertices.push(new a.Vector3(0,-j,0)),h=0;e>h;h++){var v=k[i][h+1],w=k[i][h],x=this.vertices.length-1,z=new a.Vector3(0,-1,0),A=new a.Vector3(0,-1,0),B=new a.Vector3(0,-1,0),D=l[i][h+1].clone(),E=l[i][h].clone(),F=new a.Vector2(E.x,1);this.faces.push(new a.Face3(v,w,x,[z,A,B])),this.faceVertexUvs[0].push([D,E,F])}this.computeFaceNormals()},a.CylinderGeometry.prototype=Object.create(a.Geometry.prototype),a.ExtrudeGeometry=function(b,c){return"undefined"==typeof b?void(b=[]):(a.Geometry.call(this),this.type="ExtrudeGeometry",b=b instanceof Array?b:[b],this.addShapeList(b,c),void this.computeFaceNormals())},a.ExtrudeGeometry.prototype=Object.create(a.Geometry.prototype),a.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;c>d;d++){var e=a[d];this.addShape(e,b)}},a.ExtrudeGeometry.prototype.addShape=function(b,c){function d(a,b,c){return b||console.log("die"),b.clone().multiplyScalar(c).add(a)}function e(b,c,d){var e,f,g=1e-10,h=1,i=b.x-c.x,j=b.y-c.y,k=d.x-b.x,l=d.y-b.y,m=i*i+j*j,n=i*l-j*k;if(Math.abs(n)>g){var o=Math.sqrt(m),p=Math.sqrt(k*k+l*l),q=c.x-j/o,r=c.y+i/o,s=d.x-l/p,t=d.y+k/p,u=((s-q)*l-(t-r)*k)/(i*l-j*k);e=q+i*u-b.x,f=r+j*u-b.y;var v=e*e+f*f;if(2>=v)return new a.Vector2(e,f);h=Math.sqrt(v/2)}else{var w=!1;i>g?k>g&&(w=!0):-g>i?-g>k&&(w=!0):Math.sign(j)==Math.sign(l)&&(w=!0),w?(e=-j,f=i,h=Math.sqrt(m)):(e=i,f=j,h=Math.sqrt(m/2))}return new a.Vector2(e/h,f/h)}function f(){if(u){var a=0,b=T*a;for(W=0;U>W;W++)S=L[W],j(S[2]+b,S[1]+b,S[0]+b);for(a=w+2*t,b=T*a,W=0;U>W;W++)S=L[W],j(S[0]+b,S[1]+b,S[2]+b)}else{for(W=0;U>W;W++)S=L[W],j(S[2],S[1],S[0]);for(W=0;U>W;W++)S=L[W],j(S[0]+T*w,S[1]+T*w,S[2]+T*w)}}function g(){var a=0;for(h(M,a),a+=M.length,D=0,E=J.length;E>D;D++)C=J[D],h(C,a),a+=C.length}function h(a,b){var c,d;for(W=a.length;--W>=0;){c=W,d=W-1,0>d&&(d=a.length-1);var e=0,f=w+2*t;for(e=0;f>e;e++){var g=T*e,h=T*(e+1),i=b+c+g,j=b+d+g,l=b+d+h,m=b+c+h;k(i,j,l,m,a,e,f,c,d)}}}function i(b,c,d){F.vertices.push(new a.Vector3(b,c,d))}function j(b,c,d){b+=G,c+=G,d+=G,F.faces.push(new a.Face3(b,c,d,null,null,z));var e=B.generateTopUV(F,b,c,d);F.faceVertexUvs[0].push(e)}function k(b,c,d,e,f,g,h,i,j){b+=G,c+=G,d+=G,e+=G,F.faces.push(new a.Face3(b,c,e,null,null,A)),F.faces.push(new a.Face3(c,d,e,null,null,A));var k=B.generateSideWallUV(F,b,c,d,e);F.faceVertexUvs[0].push([k[0],k[1],k[3]]),F.faceVertexUvs[0].push([k[1],k[2],k[3]])}var l,m,n,o,p,q=void 0!==c.amount?c.amount:100,r=void 0!==c.bevelThickness?c.bevelThickness:6,s=void 0!==c.bevelSize?c.bevelSize:r-2,t=void 0!==c.bevelSegments?c.bevelSegments:3,u=void 0!==c.bevelEnabled?c.bevelEnabled:!0,v=void 0!==c.curveSegments?c.curveSegments:12,w=void 0!==c.steps?c.steps:1,x=c.extrudePath,y=!1,z=c.material,A=c.extrudeMaterial,B=void 0!==c.UVGenerator?c.UVGenerator:a.ExtrudeGeometry.WorldUVGenerator;x&&(l=x.getSpacedPoints(w),y=!0,u=!1,m=void 0!==c.frames?c.frames:new a.TubeGeometry.FrenetFrames(x,w,!1),n=new a.Vector3,o=new a.Vector3,p=new a.Vector3),u||(t=0,r=0,s=0);var C,D,E,F=this,G=this.vertices.length,H=b.extractPoints(v),I=H.shape,J=H.holes,K=!a.Shape.Utils.isClockWise(I);if(K){for(I=I.reverse(),D=0,E=J.length;E>D;D++)C=J[D],a.Shape.Utils.isClockWise(C)&&(J[D]=C.reverse());K=!1}var L=a.Shape.Utils.triangulateShape(I,J),M=I;for(D=0,E=J.length;E>D;D++)C=J[D],I=I.concat(C);for(var N,O,P,Q,R,S,T=I.length,U=L.length,V=(M.length,180/Math.PI,[]),W=0,X=M.length,Y=X-1,Z=W+1;X>W;W++,Y++,Z++){Y===X&&(Y=0),Z===X&&(Z=0);M[W],M[Y],M[Z];V[W]=e(M[W],M[Y],M[Z])}var $,_=[],aa=V.concat();for(D=0,E=J.length;E>D;D++){for(C=J[D],$=[],W=0,X=C.length,Y=X-1,Z=W+1;X>W;W++,Y++,Z++)Y===X&&(Y=0),Z===X&&(Z=0),$[W]=e(C[W],C[Y],C[Z]);_.push($),aa=aa.concat($)}for(N=0;t>N;N++){for(P=N/t,Q=r*(1-P),O=s*Math.sin(P*Math.PI/2),W=0,X=M.length;X>W;W++)R=d(M[W],V[W],O),i(R.x,R.y,-Q);for(D=0,E=J.length;E>D;D++)for(C=J[D],$=_[D],W=0,X=C.length;X>W;W++)R=d(C[W],$[W],O),i(R.x,R.y,-Q)}for(O=s,W=0;T>W;W++)R=u?d(I[W],aa[W],O):I[W],y?(o.copy(m.normals[0]).multiplyScalar(R.x),n.copy(m.binormals[0]).multiplyScalar(R.y),p.copy(l[0]).add(o).add(n),i(p.x,p.y,p.z)):i(R.x,R.y,0);var ba;for(ba=1;w>=ba;ba++)for(W=0;T>W;W++)R=u?d(I[W],aa[W],O):I[W],y?(o.copy(m.normals[ba]).multiplyScalar(R.x),n.copy(m.binormals[ba]).multiplyScalar(R.y),p.copy(l[ba]).add(o).add(n),i(p.x,p.y,p.z)):i(R.x,R.y,q/w*ba);for(N=t-1;N>=0;N--){for(P=N/t,Q=r*(1-P),O=s*Math.sin(P*Math.PI/2),W=0,X=M.length;X>W;W++)R=d(M[W],V[W],O),i(R.x,R.y,q+Q);for(D=0,E=J.length;E>D;D++)for(C=J[D],$=_[D],W=0,X=C.length;X>W;W++)R=d(C[W],$[W],O),y?i(R.x,R.y+l[w-1].y,l[w-1].x+Q):i(R.x,R.y,q+Q)}f(),g()},a.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(b,c,d,e){var f=b.vertices,g=f[c],h=f[d],i=f[e];return[new a.Vector2(g.x,g.y),new a.Vector2(h.x,h.y),new a.Vector2(i.x,i.y)]},generateSideWallUV:function(b,c,d,e,f){var g=b.vertices,h=g[c],i=g[d],j=g[e],k=g[f];return Math.abs(h.y-i.y)<.01?[new a.Vector2(h.x,1-h.z),new a.Vector2(i.x,1-i.z),new a.Vector2(j.x,1-j.z),new a.Vector2(k.x,1-k.z)]:[new a.Vector2(h.y,1-h.z),new a.Vector2(i.y,1-i.z),new a.Vector2(j.y,1-j.z),new a.Vector2(k.y,1-k.z)]}},a.ShapeGeometry=function(b,c){a.Geometry.call(this),this.type="ShapeGeometry",b instanceof Array==!1&&(b=[b]),this.addShapeList(b,c),this.computeFaceNormals()},a.ShapeGeometry.prototype=Object.create(a.Geometry.prototype),a.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;d>c;c++)this.addShape(a[c],b);return this},a.ShapeGeometry.prototype.addShape=function(b,c){void 0===c&&(c={});var d,e,f,g=void 0!==c.curveSegments?c.curveSegments:12,h=c.material,i=void 0===c.UVGenerator?a.ExtrudeGeometry.WorldUVGenerator:c.UVGenerator,j=this.vertices.length,k=b.extractPoints(g),l=k.shape,m=k.holes,n=!a.Shape.Utils.isClockWise(l);if(n){for(l=l.reverse(),d=0,e=m.length;e>d;d++)f=m[d],a.Shape.Utils.isClockWise(f)&&(m[d]=f.reverse());n=!1}var o=a.Shape.Utils.triangulateShape(l,m),p=l;for(d=0,e=m.length;e>d;d++)f=m[d],l=l.concat(f);var q,r,s=l.length,t=o.length;p.length;for(d=0;s>d;d++)q=l[d],this.vertices.push(new a.Vector3(q.x,q.y,0));for(d=0;t>d;d++){r=o[d];var u=r[0]+j,v=r[1]+j,w=r[2]+j;this.faces.push(new a.Face3(u,v,w,null,null,h)),this.faceVertexUvs[0].push(i.generateTopUV(this,u,v,w))}},a.LatheGeometry=function(b,c,d,e){a.Geometry.call(this),this.type="LatheGeometry",this.parameters={points:b,segments:c,phiStart:d,phiLength:e},c=c||12,d=d||0,e=e||2*Math.PI;for(var f=1/(b.length-1),g=1/c,h=0,i=c;i>=h;h++)for(var j=d+h*g*e,k=Math.cos(j),l=Math.sin(j),m=0,n=b.length;n>m;m++){var o=b[m],p=new a.Vector3;p.x=k*o.x-l*o.y,p.y=l*o.x+k*o.y,p.z=o.z,this.vertices.push(p)}for(var q=b.length,h=0,i=c;i>h;h++)for(var m=0,n=b.length-1;n>m;m++){var r=m+q*h,s=r,t=r+q,k=r+1+q,u=r+1,v=h*g,w=m*f,x=v+g,y=w+f;this.faces.push(new a.Face3(s,t,u)),this.faceVertexUvs[0].push([new a.Vector2(v,w),new a.Vector2(x,w),new a.Vector2(v,y)]),this.faces.push(new a.Face3(t,k,u)),this.faceVertexUvs[0].push([new a.Vector2(x,w),new a.Vector2(x,y),new a.Vector2(v,y)])}this.mergeVertices(),this.computeFaceNormals(),this.computeVertexNormals()},a.LatheGeometry.prototype=Object.create(a.Geometry.prototype),a.PlaneGeometry=function(b,c,d,e){console.info("THREE.PlaneGeometry: Consider using THREE.PlaneBufferGeometry for lower memory footprint."),a.Geometry.call(this),this.type="PlaneGeometry",this.parameters={width:b,height:c,widthSegments:d,heightSegments:e},this.fromBufferGeometry(new a.PlaneBufferGeometry(b,c,d,e))},a.PlaneGeometry.prototype=Object.create(a.Geometry.prototype),a.PlaneBufferGeometry=function(b,c,d,e){a.BufferGeometry.call(this),this.type="PlaneBufferGeometry",this.parameters={width:b,height:c,widthSegments:d,heightSegments:e};for(var f=b/2,g=c/2,h=d||1,i=e||1,j=h+1,k=i+1,l=b/h,m=c/i,n=new Float32Array(j*k*3),o=new Float32Array(j*k*3),p=new Float32Array(j*k*2),q=0,r=0,s=0;k>s;s++)for(var t=s*m-g,u=0;j>u;u++){var v=u*l-f;n[q]=v,n[q+1]=-t,o[q+2]=1,p[r]=u/h,p[r+1]=1-s/i,q+=3,r+=2}q=0;for(var w=new(n.length/3>65535?Uint32Array:Uint16Array)(h*i*6),s=0;i>s;s++)for(var u=0;h>u;u++){var x=u+j*s,y=u+j*(s+1),z=u+1+j*(s+1),A=u+1+j*s;w[q]=x,w[q+1]=y,w[q+2]=A,w[q+3]=y,w[q+4]=z,w[q+5]=A,q+=6}this.addAttribute("index",new a.BufferAttribute(w,1)),this.addAttribute("position",new a.BufferAttribute(n,3)),this.addAttribute("normal",new a.BufferAttribute(o,3)),this.addAttribute("uv",new a.BufferAttribute(p,2))},a.PlaneBufferGeometry.prototype=Object.create(a.BufferGeometry.prototype),a.RingGeometry=function(b,c,d,e,f,g){a.Geometry.call(this),this.type="RingGeometry",this.parameters={innerRadius:b,outerRadius:c,thetaSegments:d,phiSegments:e,thetaStart:f,thetaLength:g},b=b||0,c=c||50,f=void 0!==f?f:0,g=void 0!==g?g:2*Math.PI,d=void 0!==d?Math.max(3,d):8,e=void 0!==e?Math.max(1,e):8;var h,i,j=[],k=b,l=(c-b)/e;for(h=0;e+1>h;h++){for(i=0;d+1>i;i++){var m=new a.Vector3,n=f+i/d*g;m.x=k*Math.cos(n),m.y=k*Math.sin(n),this.vertices.push(m),j.push(new a.Vector2((m.x/c+1)/2,(m.y/c+1)/2))}k+=l}var o=new a.Vector3(0,0,1);for(h=0;e>h;h++){var p=h*(d+1);for(i=0;d>i;i++){var n=i+p,q=n,r=n+d+1,s=n+d+2;this.faces.push(new a.Face3(q,r,s,[o.clone(),o.clone(),o.clone()])),this.faceVertexUvs[0].push([j[q].clone(),j[r].clone(),j[s].clone()]),q=n,r=n+d+2,s=n+1,this.faces.push(new a.Face3(q,r,s,[o.clone(),o.clone(),o.clone()])),this.faceVertexUvs[0].push([j[q].clone(),j[r].clone(),j[s].clone()])}}this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,k)},a.RingGeometry.prototype=Object.create(a.Geometry.prototype),a.SphereGeometry=function(b,c,d,e,f,g,h){a.Geometry.call(this),this.type="SphereGeometry",this.parameters={radius:b,widthSegments:c,heightSegments:d,phiStart:e,phiLength:f,thetaStart:g,thetaLength:h},b=b||50,c=Math.max(3,Math.floor(c)||8),d=Math.max(2,Math.floor(d)||6),e=void 0!==e?e:0,f=void 0!==f?f:2*Math.PI,g=void 0!==g?g:0,h=void 0!==h?h:Math.PI;var i,j,k=[],l=[];for(j=0;d>=j;j++){var m=[],n=[];for(i=0;c>=i;i++){var o=i/c,p=j/d,q=new a.Vector3;q.x=-b*Math.cos(e+o*f)*Math.sin(g+p*h),q.y=b*Math.cos(g+p*h),q.z=b*Math.sin(e+o*f)*Math.sin(g+p*h),this.vertices.push(q),m.push(this.vertices.length-1),n.push(new a.Vector2(o,1-p))}k.push(m),l.push(n)}for(j=0;d>j;j++)for(i=0;c>i;i++){var r=k[j][i+1],s=k[j][i],t=k[j+1][i],u=k[j+1][i+1],v=this.vertices[r].clone().normalize(),w=this.vertices[s].clone().normalize(),x=this.vertices[t].clone().normalize(),y=this.vertices[u].clone().normalize(),z=l[j][i+1].clone(),A=l[j][i].clone(),B=l[j+1][i].clone(),C=l[j+1][i+1].clone();Math.abs(this.vertices[r].y)===b?(z.x=(z.x+A.x)/2,this.faces.push(new a.Face3(r,t,u,[v,x,y])),this.faceVertexUvs[0].push([z,B,C])):Math.abs(this.vertices[t].y)===b?(B.x=(B.x+C.x)/2,this.faces.push(new a.Face3(r,s,t,[v,w,x])),this.faceVertexUvs[0].push([z,A,B])):(this.faces.push(new a.Face3(r,s,u,[v,w,y])),this.faceVertexUvs[0].push([z,A,C]),this.faces.push(new a.Face3(s,t,u,[w.clone(),x,y.clone()])),this.faceVertexUvs[0].push([A.clone(),B,C.clone()]))}this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,b)},a.SphereGeometry.prototype=Object.create(a.Geometry.prototype),a.TextGeometry=function(b,c){c=c||{};var d=a.FontUtils.generateShapes(b,c);c.amount=void 0!==c.height?c.height:50,void 0===c.bevelThickness&&(c.bevelThickness=10),void 0===c.bevelSize&&(c.bevelSize=8),void 0===c.bevelEnabled&&(c.bevelEnabled=!1),a.ExtrudeGeometry.call(this,d,c),this.type="TextGeometry"},a.TextGeometry.prototype=Object.create(a.ExtrudeGeometry.prototype),a.TorusGeometry=function(b,c,d,e,f){a.Geometry.call(this),this.type="TorusGeometry",this.parameters={radius:b,tube:c,radialSegments:d,tubularSegments:e,arc:f},b=b||100,c=c||40,d=d||8,e=e||6,f=f||2*Math.PI;for(var g=new a.Vector3,h=[],i=[],j=0;d>=j;j++)for(var k=0;e>=k;k++){var l=k/e*f,m=j/d*Math.PI*2;g.x=b*Math.cos(l),g.y=b*Math.sin(l);var n=new a.Vector3;n.x=(b+c*Math.cos(m))*Math.cos(l),n.y=(b+c*Math.cos(m))*Math.sin(l),n.z=c*Math.sin(m),this.vertices.push(n),h.push(new a.Vector2(k/e,j/d)),i.push(n.clone().sub(g).normalize())}for(var j=1;d>=j;j++)for(var k=1;e>=k;k++){var o=(e+1)*j+k-1,p=(e+1)*(j-1)+k-1,q=(e+1)*(j-1)+k,r=(e+1)*j+k,s=new a.Face3(o,p,r,[i[o].clone(),i[p].clone(),i[r].clone()]);this.faces.push(s),this.faceVertexUvs[0].push([h[o].clone(),h[p].clone(),h[r].clone()]),s=new a.Face3(p,q,r,[i[p].clone(),i[q].clone(),i[r].clone()]),this.faces.push(s),this.faceVertexUvs[0].push([h[p].clone(),h[q].clone(),h[r].clone()])}this.computeFaceNormals()},a.TorusGeometry.prototype=Object.create(a.Geometry.prototype),a.TorusKnotGeometry=function(b,c,d,e,f,g,h){function i(b,c,d,e,f){var g=Math.cos(b),h=Math.sin(b),i=c/d*b,j=Math.cos(i),k=e*(2+j)*.5*g,l=e*(2+j)*h*.5,m=f*e*Math.sin(i)*.5;return new a.Vector3(k,l,m)}a.Geometry.call(this),this.type="TorusKnotGeometry",this.parameters={radius:b,tube:c,radialSegments:d,tubularSegments:e,p:f,q:g,heightScale:h},b=b||100,c=c||40,d=d||64,e=e||8,f=f||2,g=g||3,h=h||1;for(var j=new Array(d),k=new a.Vector3,l=new a.Vector3,m=new a.Vector3,n=0;d>n;++n){j[n]=new Array(e);var o=n/d*2*f*Math.PI,p=i(o,g,f,b,h),q=i(o+.01,g,f,b,h);k.subVectors(q,p),l.addVectors(q,p),m.crossVectors(k,l),l.crossVectors(m,k),m.normalize(),l.normalize();for(var r=0;e>r;++r){var s=r/e*2*Math.PI,t=-c*Math.cos(s),u=c*Math.sin(s),v=new a.Vector3;v.x=p.x+t*l.x+u*m.x,v.y=p.y+t*l.y+u*m.y,v.z=p.z+t*l.z+u*m.z,j[n][r]=this.vertices.push(v)-1}}for(var n=0;d>n;++n)for(var r=0;e>r;++r){var w=(n+1)%d,x=(r+1)%e,y=j[n][r],z=j[w][r],A=j[w][x],B=j[n][x],C=new a.Vector2(n/d,r/e),D=new a.Vector2((n+1)/d,r/e),E=new a.Vector2((n+1)/d,(r+1)/e),F=new a.Vector2(n/d,(r+1)/e);this.faces.push(new a.Face3(y,z,B)),this.faceVertexUvs[0].push([C,D,F]),this.faces.push(new a.Face3(z,A,B)),this.faceVertexUvs[0].push([D.clone(),E,F.clone()])}this.computeFaceNormals(),this.computeVertexNormals()},a.TorusKnotGeometry.prototype=Object.create(a.Geometry.prototype),a.TubeGeometry=function(b,c,d,e,f){function g(b,c,d){return C.vertices.push(new a.Vector3(b,c,d))-1}a.Geometry.call(this),this.type="TubeGeometry",this.parameters={path:b,segments:c,radius:d,radialSegments:e,closed:f},c=c||64,d=d||1,e=e||8,f=f||!1;var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B=[],C=this,D=c+1,E=new a.Vector3,F=new a.TubeGeometry.FrenetFrames(b,c,f),G=F.tangents,H=F.normals,I=F.binormals;for(this.tangents=G,this.normals=H,this.binormals=I,p=0;D>p;p++)for(B[p]=[],k=p/(D-1),o=b.getPointAt(k),h=G[p],i=H[p],j=I[p],q=0;e>q;q++)l=q/e*2*Math.PI,m=-d*Math.cos(l),n=d*Math.sin(l),E.copy(o),E.x+=m*i.x+n*j.x,E.y+=m*i.y+n*j.y,E.z+=m*i.z+n*j.z,B[p][q]=g(E.x,E.y,E.z);for(p=0;c>p;p++)for(q=0;e>q;q++)r=f?(p+1)%c:p+1,s=(q+1)%e,t=B[p][q],u=B[r][q],v=B[r][s],w=B[p][s],x=new a.Vector2(p/c,q/e),y=new a.Vector2((p+1)/c,q/e),z=new a.Vector2((p+1)/c,(q+1)/e),A=new a.Vector2(p/c,(q+1)/e),this.faces.push(new a.Face3(t,u,w)),this.faceVertexUvs[0].push([x,y,A]),this.faces.push(new a.Face3(u,v,w)),this.faceVertexUvs[0].push([y.clone(),z,A.clone()]);this.computeFaceNormals(),this.computeVertexNormals()},a.TubeGeometry.prototype=Object.create(a.Geometry.prototype),a.TubeGeometry.FrenetFrames=function(b,c,d){function e(){o[0]=new a.Vector3,p[0]=new a.Vector3,g=Number.MAX_VALUE,h=Math.abs(n[0].x),i=Math.abs(n[0].y),j=Math.abs(n[0].z),g>=h&&(g=h,m.set(1,0,0)),g>=i&&(g=i,m.set(0,1,0)),g>=j&&m.set(0,0,1),q.crossVectors(n[0],m).normalize(),o[0].crossVectors(n[0],q),p[0].crossVectors(n[0],o[0])}var f,g,h,i,j,k,l,m=(new a.Vector3,new a.Vector3),n=(new a.Vector3,[]),o=[],p=[],q=new a.Vector3,r=new a.Matrix4,s=c+1,t=1e-4;for(this.tangents=n,this.normals=o,this.binormals=p,k=0;s>k;k++)l=k/(s-1),n[k]=b.getTangentAt(l),n[k].normalize();for(e(),k=1;s>k;k++)o[k]=o[k-1].clone(),p[k]=p[k-1].clone(),q.crossVectors(n[k-1],n[k]),q.length()>t&&(q.normalize(),f=Math.acos(a.Math.clamp(n[k-1].dot(n[k]),-1,1)),o[k].applyMatrix4(r.makeRotationAxis(q,f))),p[k].crossVectors(n[k],o[k]);if(d)for(f=Math.acos(a.Math.clamp(o[0].dot(o[s-1]),-1,1)),f/=s-1,n[0].dot(q.crossVectors(o[0],o[s-1]))>0&&(f=-f),k=1;s>k;k++)o[k].applyMatrix4(r.makeRotationAxis(n[k],f*k)),p[k].crossVectors(n[k],o[k])},a.PolyhedronGeometry=function(b,c,d,e){function f(b){var c=b.normalize().clone();c.index=l.vertices.push(c)-1;var d=i(b)/2/Math.PI+.5,e=j(b)/Math.PI+.5;return c.uv=new a.Vector2(d,1-e),c}function g(b,c,d){var e=new a.Face3(b.index,c.index,d.index,[b.clone(),c.clone(),d.clone()]);l.faces.push(e),u.copy(b).add(c).add(d).divideScalar(3);var f=i(u);l.faceVertexUvs[0].push([k(b.uv,b,f),k(c.uv,c,f),k(d.uv,d,f)])}function h(a,b){for(var c=Math.pow(2,b),d=(Math.pow(4,b),f(l.vertices[a.a])),e=f(l.vertices[a.b]),h=f(l.vertices[a.c]),i=[],j=0;c>=j;j++){i[j]=[];for(var k=f(d.clone().lerp(h,j/c)),m=f(e.clone().lerp(h,j/c)),n=c-j,o=0;n>=o;o++)0==o&&j==c?i[j][o]=k:i[j][o]=f(k.clone().lerp(m,o/n))}for(var j=0;c>j;j++)for(var o=0;2*(c-j)-1>o;o++){var p=Math.floor(o/2);o%2==0?g(i[j][p+1],i[j+1][p],i[j][p]):g(i[j][p+1],i[j+1][p+1],i[j+1][p])}}function i(a){return Math.atan2(a.z,-a.x)}function j(a){return Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))}function k(b,c,d){return 0>d&&1===b.x&&(b=new a.Vector2(b.x-1,b.y)),0===c.x&&0===c.z&&(b=new a.Vector2(d/2/Math.PI+.5,b.y)),b.clone()}a.Geometry.call(this),this.type="PolyhedronGeometry",this.parameters={vertices:b,indices:c,radius:d,detail:e},d=d||1,e=e||0;for(var l=this,m=0,n=b.length;n>m;m+=3)f(new a.Vector3(b[m],b[m+1],b[m+2]));for(var o=this.vertices,p=[],m=0,q=0,n=c.length;n>m;m+=3,q++){var r=o[c[m]],s=o[c[m+1]],t=o[c[m+2]];p[q]=new a.Face3(r.index,s.index,t.index,[r.clone(),s.clone(),t.clone()])}for(var u=new a.Vector3,m=0,n=p.length;n>m;m++)h(p[m],e);for(var m=0,n=this.faceVertexUvs[0].length;n>m;m++){var v=this.faceVertexUvs[0][m],w=v[0].x,x=v[1].x,y=v[2].x,z=Math.max(w,Math.max(x,y)),A=Math.min(w,Math.min(x,y));z>.9&&.1>A&&(.2>w&&(v[0].x+=1),.2>x&&(v[1].x+=1),.2>y&&(v[2].x+=1))}for(var m=0,n=this.vertices.length;n>m;m++)this.vertices[m].multiplyScalar(d);this.mergeVertices(),this.computeFaceNormals(),this.boundingSphere=new a.Sphere(new a.Vector3,d)},a.PolyhedronGeometry.prototype=Object.create(a.Geometry.prototype),a.DodecahedronGeometry=function(b,c){this.parameters={radius:b,detail:c};var d=(1+Math.sqrt(5))/2,e=1/d,f=[-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,-e,-d,0,-e,d,0,e,-d,0,e,d,-e,-d,0,-e,d,0,e,-d,0,e,d,0,-d,0,-e,d,0,-e,-d,0,e,d,0,e],g=[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.PolyhedronGeometry.call(this,f,g,b,c)},a.DodecahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.IcosahedronGeometry=function(b,c){var d=(1+Math.sqrt(5))/2,e=[-1,d,0,1,d,0,-1,-d,0,1,-d,0,0,-1,d,0,1,d,0,-1,-d,0,1,-d,d,0,-1,d,0,1,-d,0,-1,-d,0,1],f=[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.PolyhedronGeometry.call(this,e,f,b,c),this.type="IcosahedronGeometry",this.parameters={radius:b,detail:c}},a.IcosahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.OctahedronGeometry=function(b,c){this.parameters={radius:b,detail:c};var d=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],e=[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.PolyhedronGeometry.call(this,d,e,b,c),this.type="OctahedronGeometry",this.parameters={radius:b,detail:c}},a.OctahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.TetrahedronGeometry=function(b,c){var d=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],e=[2,1,0,0,3,2,1,3,0,2,3,1];a.PolyhedronGeometry.call(this,d,e,b,c),this.type="TetrahedronGeometry",this.parameters={radius:b,detail:c}},a.TetrahedronGeometry.prototype=Object.create(a.Geometry.prototype),a.ParametricGeometry=function(b,c,d){a.Geometry.call(this),this.type="ParametricGeometry",this.parameters={func:b,slices:c,stacks:d};var e,f,g,h,i,j=this.vertices,k=this.faces,l=this.faceVertexUvs[0],m=c+1;for(e=0;d>=e;e++)for(i=e/d,f=0;c>=f;f++)h=f/c,g=b(h,i),j.push(g);var n,o,p,q,r,s,t,u;for(e=0;d>e;e++)for(f=0;c>f;f++)n=e*m+f,o=e*m+f+1,p=(e+1)*m+f+1,q=(e+1)*m+f,r=new a.Vector2(f/c,e/d),s=new a.Vector2((f+1)/c,e/d),t=new a.Vector2((f+1)/c,(e+1)/d),u=new a.Vector2(f/c,(e+1)/d),k.push(new a.Face3(n,o,q)),l.push([r,s,u]),k.push(new a.Face3(o,p,q)),l.push([s.clone(),t,u.clone()]);this.computeFaceNormals(),this.computeVertexNormals()},a.ParametricGeometry.prototype=Object.create(a.Geometry.prototype),a.AxisHelper=function(b){b=b||1;var c=new Float32Array([0,0,0,b,0,0,0,0,0,0,b,0,0,0,0,0,0,b]),d=new Float32Array([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1]),e=new a.BufferGeometry;e.addAttribute("position",new a.BufferAttribute(c,3)),e.addAttribute("color",new a.BufferAttribute(d,3));var f=new a.LineBasicMaterial({vertexColors:a.VertexColors});a.Line.call(this,e,f,a.LinePieces)},a.AxisHelper.prototype=Object.create(a.Line.prototype),a.ArrowHelper=function(){var b=new a.Geometry;b.vertices.push(new a.Vector3(0,0,0),new a.Vector3(0,1,0));var c=new a.CylinderGeometry(0,.5,1,5,1);return c.applyMatrix((new a.Matrix4).makeTranslation(0,-.5,0)),function(d,e,f,g,h,i){a.Object3D.call(this),void 0===g&&(g=16776960),void 0===f&&(f=1),void 0===h&&(h=.2*f),void 0===i&&(i=.2*h),this.position.copy(e),this.line=new a.Line(b,new a.LineBasicMaterial({color:g})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new a.Mesh(c,new a.MeshBasicMaterial({color:g})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(d),this.setLength(f,h,i)}}(),a.ArrowHelper.prototype=Object.create(a.Object3D.prototype),a.ArrowHelper.prototype.setDirection=function(){var b,c=new a.Vector3;return function(a){a.y>.99999?this.quaternion.set(0,0,0,1):a.y<-.99999?this.quaternion.set(1,0,0,0):(c.set(a.z,0,-a.x).normalize(),b=Math.acos(a.y),this.quaternion.setFromAxisAngle(c,b))}}(),a.ArrowHelper.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a),void 0===c&&(c=.2*b),this.line.scale.set(1,a,1),this.line.updateMatrix(),this.cone.scale.set(c,b,c),this.cone.position.y=a,this.cone.updateMatrix()},a.ArrowHelper.prototype.setColor=function(a){this.line.material.color.set(a),this.cone.material.color.set(a)},a.BoxHelper=function(b){var c=new a.BufferGeometry;c.addAttribute("position",new a.BufferAttribute(new Float32Array(72),3)),a.Line.call(this,c,new a.LineBasicMaterial({color:16776960}),a.LinePieces),void 0!==b&&this.update(b)},a.BoxHelper.prototype=Object.create(a.Line.prototype),a.BoxHelper.prototype.update=function(a){var b=a.geometry;null===b.boundingBox&&b.computeBoundingBox();var c=b.boundingBox.min,d=b.boundingBox.max,e=this.geometry.attributes.position.array;e[0]=d.x,e[1]=d.y,e[2]=d.z,e[3]=c.x,e[4]=d.y,e[5]=d.z,e[6]=c.x,e[7]=d.y,e[8]=d.z,e[9]=c.x,e[10]=c.y,e[11]=d.z,e[12]=c.x,e[13]=c.y,e[14]=d.z,e[15]=d.x,e[16]=c.y,e[17]=d.z,e[18]=d.x,e[19]=c.y,e[20]=d.z,e[21]=d.x,e[22]=d.y,e[23]=d.z,e[24]=d.x,e[25]=d.y,e[26]=c.z,e[27]=c.x,e[28]=d.y,e[29]=c.z,e[30]=c.x,e[31]=d.y,e[32]=c.z,e[33]=c.x,e[34]=c.y,e[35]=c.z,e[36]=c.x,e[37]=c.y,e[38]=c.z,e[39]=d.x,e[40]=c.y,e[41]=c.z,e[42]=d.x,e[43]=c.y,e[44]=c.z,e[45]=d.x,e[46]=d.y,e[47]=c.z,e[48]=d.x,e[49]=d.y,e[50]=d.z,e[51]=d.x,e[52]=d.y,e[53]=c.z,e[54]=c.x,e[55]=d.y,e[56]=d.z,e[57]=c.x,e[58]=d.y,e[59]=c.z,e[60]=c.x,e[61]=c.y,e[62]=d.z,e[63]=c.x,e[64]=c.y,e[65]=c.z,e[66]=d.x,e[67]=c.y,e[68]=d.z,e[69]=d.x,e[70]=c.y,e[71]=c.z,this.geometry.attributes.position.needsUpdate=!0,this.geometry.computeBoundingSphere(),this.matrix=a.matrixWorld,this.matrixAutoUpdate=!1},a.BoundingBoxHelper=function(b,c){var d=void 0!==c?c:8947848;this.object=b,this.box=new a.Box3,a.Mesh.call(this,new a.BoxGeometry(1,1,1),new a.MeshBasicMaterial({color:d,wireframe:!0}))},a.BoundingBoxHelper.prototype=Object.create(a.Mesh.prototype),a.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.center(this.position)},a.CameraHelper=function(b){function c(a,b,c){d(a,c),d(b,c)}function d(b,c){e.vertices.push(new a.Vector3),e.colors.push(new a.Color(c)), +void 0===g[b]&&(g[b]=[]),g[b].push(e.vertices.length-1)}var e=new a.Geometry,f=new a.LineBasicMaterial({color:16777215,vertexColors:a.FaceColors}),g={},h=16755200,i=16711680,j=43775,k=16777215,l=3355443;c("n1","n2",h),c("n2","n4",h),c("n4","n3",h),c("n3","n1",h),c("f1","f2",h),c("f2","f4",h),c("f4","f3",h),c("f3","f1",h),c("n1","f1",h),c("n2","f2",h),c("n3","f3",h),c("n4","f4",h),c("p","n1",i),c("p","n2",i),c("p","n3",i),c("p","n4",i),c("u1","u2",j),c("u2","u3",j),c("u3","u1",j),c("c","t",k),c("p","c",l),c("cn1","cn2",l),c("cn3","cn4",l),c("cf1","cf2",l),c("cf3","cf4",l),a.Line.call(this,e,f,a.LinePieces),this.camera=b,this.matrix=b.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=g,this.update()},a.CameraHelper.prototype=Object.create(a.Line.prototype),a.CameraHelper.prototype.update=function(){var b,c,d=new a.Vector3,e=new a.Camera,f=function(a,f,g,h){d.set(f,g,h).unproject(e);var i=c[a];if(void 0!==i)for(var j=0,k=i.length;k>j;j++)b.vertices[i[j]].copy(d)};return function(){b=this.geometry,c=this.pointMap;var a=1,d=1;e.projectionMatrix.copy(this.camera.projectionMatrix),f("c",0,0,-1),f("t",0,0,1),f("n1",-a,-d,-1),f("n2",a,-d,-1),f("n3",-a,d,-1),f("n4",a,d,-1),f("f1",-a,-d,1),f("f2",a,-d,1),f("f3",-a,d,1),f("f4",a,d,1),f("u1",.7*a,1.1*d,-1),f("u2",.7*-a,1.1*d,-1),f("u3",0,2*d,-1),f("cf1",-a,0,1),f("cf2",a,0,1),f("cf3",0,-d,1),f("cf4",0,d,1),f("cn1",-a,0,-1),f("cn2",a,0,-1),f("cn3",0,-d,-1),f("cn4",0,d,-1),b.verticesNeedUpdate=!0}}(),a.DirectionalLightHelper=function(b,c){a.Object3D.call(this),this.light=b,this.light.updateMatrixWorld(),this.matrix=b.matrixWorld,this.matrixAutoUpdate=!1,c=c||1;var d=new a.Geometry;d.vertices.push(new a.Vector3(-c,c,0),new a.Vector3(c,c,0),new a.Vector3(c,-c,0),new a.Vector3(-c,-c,0),new a.Vector3(-c,c,0));var e=new a.LineBasicMaterial({fog:!1});e.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.lightPlane=new a.Line(d,e),this.add(this.lightPlane),d=new a.Geometry,d.vertices.push(new a.Vector3,new a.Vector3),e=new a.LineBasicMaterial({fog:!1}),e.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine=new a.Line(d,e),this.add(this.targetLine),this.update()},a.DirectionalLightHelper.prototype=Object.create(a.Object3D.prototype),a.DirectionalLightHelper.prototype.dispose=function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()},a.DirectionalLightHelper.prototype.update=function(){var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3;return function(){b.setFromMatrixPosition(this.light.matrixWorld),c.setFromMatrixPosition(this.light.target.matrixWorld),d.subVectors(c,b),this.lightPlane.lookAt(d),this.lightPlane.material.color.copy(this.light.color).multiplyScalar(this.light.intensity),this.targetLine.geometry.vertices[1].copy(d),this.targetLine.geometry.verticesNeedUpdate=!0,this.targetLine.material.color.copy(this.lightPlane.material.color)}}(),a.EdgesHelper=function(b,c){var d=void 0!==c?c:16777215,e=[0,0],f={},g=function(a,b){return a-b},h=["a","b","c"],i=new a.BufferGeometry,j=b.geometry.clone();j.mergeVertices(),j.computeFaceNormals();for(var k=j.vertices,l=j.faces,m=0,n=0,o=l.length;o>n;n++)for(var p=l[n],q=0;3>q;q++){e[0]=p[h[q]],e[1]=p[h[(q+1)%3]],e.sort(g);var r=e.toString();void 0===f[r]?(f[r]={vert1:e[0],vert2:e[1],face1:n,face2:void 0},m++):f[r].face2=n}var s=new Float32Array(2*m*3),t=0;for(var r in f){var u=f[r];if(void 0===u.face2||l[u.face1].normal.dot(l[u.face2].normal)<.9999){var v=k[u.vert1];s[t++]=v.x,s[t++]=v.y,s[t++]=v.z,v=k[u.vert2],s[t++]=v.x,s[t++]=v.y,s[t++]=v.z}}i.addAttribute("position",new a.BufferAttribute(s,3)),a.Line.call(this,i,new a.LineBasicMaterial({color:d}),a.LinePieces),this.matrix=b.matrixWorld,this.matrixAutoUpdate=!1},a.EdgesHelper.prototype=Object.create(a.Line.prototype),a.FaceNormalsHelper=function(b,c,d,e){this.object=b,this.size=void 0!==c?c:1;for(var f=void 0!==d?d:16776960,g=void 0!==e?e:1,h=new a.Geometry,i=this.object.geometry.faces,j=0,k=i.length;k>j;j++)h.vertices.push(new a.Vector3,new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new a.Matrix3,this.update()},a.FaceNormalsHelper.prototype=Object.create(a.Line.prototype),a.FaceNormalsHelper.prototype.update=function(){var a=this.geometry.vertices,b=this.object,c=b.geometry.vertices,d=b.geometry.faces,e=b.matrixWorld;b.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(e);for(var f=0,g=0,h=d.length;h>f;f++,g+=2){var i=d[f];a[g].copy(c[i.a]).add(c[i.b]).add(c[i.c]).divideScalar(3).applyMatrix4(e),a[g+1].copy(i.normal).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size).add(a[g])}return this.geometry.verticesNeedUpdate=!0,this},a.GridHelper=function(b,c){var d=new a.Geometry,e=new a.LineBasicMaterial({vertexColors:a.VertexColors});this.color1=new a.Color(4473924),this.color2=new a.Color(8947848);for(var f=-b;b>=f;f+=c){d.vertices.push(new a.Vector3(-b,0,f),new a.Vector3(b,0,f),new a.Vector3(f,0,-b),new a.Vector3(f,0,b));var g=0===f?this.color1:this.color2;d.colors.push(g,g,g,g)}a.Line.call(this,d,e,a.LinePieces)},a.GridHelper.prototype=Object.create(a.Line.prototype),a.GridHelper.prototype.setColors=function(a,b){this.color1.set(a),this.color2.set(b),this.geometry.colorsNeedUpdate=!0},a.HemisphereLightHelper=function(b,c,d,e){a.Object3D.call(this),this.light=b,this.light.updateMatrixWorld(),this.matrix=b.matrixWorld,this.matrixAutoUpdate=!1,this.colors=[new a.Color,new a.Color];var f=new a.SphereGeometry(c,4,2);f.applyMatrix((new a.Matrix4).makeRotationX(-Math.PI/2));for(var g=0,h=8;h>g;g++)f.faces[g].color=this.colors[4>g?0:1];var i=new a.MeshBasicMaterial({vertexColors:a.FaceColors,wireframe:!0});this.lightSphere=new a.Mesh(f,i),this.add(this.lightSphere),this.update()},a.HemisphereLightHelper.prototype=Object.create(a.Object3D.prototype),a.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose(),this.lightSphere.material.dispose()},a.HemisphereLightHelper.prototype.update=function(){var b=new a.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity),this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity),this.lightSphere.lookAt(b.setFromMatrixPosition(this.light.matrixWorld).negate()),this.lightSphere.geometry.colorsNeedUpdate=!0}}(),a.PointLightHelper=function(b,c){this.light=b,this.light.updateMatrixWorld();var d=new a.SphereGeometry(c,4,2),e=new a.MeshBasicMaterial({wireframe:!0,fog:!1});e.color.copy(this.light.color).multiplyScalar(this.light.intensity),a.Mesh.call(this,d,e),this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1},a.PointLightHelper.prototype=Object.create(a.Mesh.prototype),a.PointLightHelper.prototype.dispose=function(){this.geometry.dispose(),this.material.dispose()},a.PointLightHelper.prototype.update=function(){this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)},a.SkeletonHelper=function(b){this.bones=this.getBoneList(b);for(var c=new a.Geometry,d=0;dj;j++)for(var l=i[j],m=0,n=l.vertexNormals.length;n>m;m++)h.vertices.push(new a.Vector3,new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.normalMatrix=new a.Matrix3,this.update()},a.VertexNormalsHelper.prototype=Object.create(a.Line.prototype),a.VertexNormalsHelper.prototype.update=function(b){var c=new a.Vector3;return function(a){var b=["a","b","c","d"];this.object.updateMatrixWorld(!0),this.normalMatrix.getNormalMatrix(this.object.matrixWorld);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,i=0,j=f.length;j>i;i++)for(var k=f[i],l=0,m=k.vertexNormals.length;m>l;l++){var n=k[b[l]],o=e[n],p=k.vertexNormals[l];d[h].copy(o).applyMatrix4(g),c.copy(p).applyMatrix3(this.normalMatrix).normalize().multiplyScalar(this.size),c.add(d[h]),h+=1,d[h].copy(c),h+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),a.VertexTangentsHelper=function(b,c,d,e){this.object=b,this.size=void 0!==c?c:1;for(var f=void 0!==d?d:255,g=void 0!==e?e:1,h=new a.Geometry,i=(b.geometry.vertices,b.geometry.faces),j=0,k=i.length;k>j;j++)for(var l=i[j],m=0,n=l.vertexTangents.length;n>m;m++)h.vertices.push(new a.Vector3),h.vertices.push(new a.Vector3);a.Line.call(this,h,new a.LineBasicMaterial({color:f,linewidth:g}),a.LinePieces),this.matrixAutoUpdate=!1,this.update()},a.VertexTangentsHelper.prototype=Object.create(a.Line.prototype),a.VertexTangentsHelper.prototype.update=function(b){var c=new a.Vector3;return function(a){var b=["a","b","c","d"];this.object.updateMatrixWorld(!0);for(var d=this.geometry.vertices,e=this.object.geometry.vertices,f=this.object.geometry.faces,g=this.object.matrixWorld,h=0,i=0,j=f.length;j>i;i++)for(var k=f[i],l=0,m=k.vertexTangents.length;m>l;l++){var n=k[b[l]],o=e[n],p=k.vertexTangents[l];d[h].copy(o).applyMatrix4(g),c.copy(p).transformDirection(g).multiplyScalar(this.size),c.add(d[h]),h+=1,d[h].copy(c),h+=1}return this.geometry.verticesNeedUpdate=!0,this}}(),a.WireframeHelper=function(b,c){var d=void 0!==c?c:16777215,e=[0,0],f={},g=function(a,b){return a-b},h=["a","b","c"],i=new a.BufferGeometry;if(b.geometry instanceof a.Geometry){for(var j=b.geometry.vertices,k=b.geometry.faces,l=0,m=new Uint32Array(6*k.length),n=0,o=k.length;o>n;n++)for(var p=k[n],q=0;3>q;q++){e[0]=p[h[q]],e[1]=p[h[(q+1)%3]],e.sort(g);var r=e.toString();void 0===f[r]&&(m[2*l]=e[0],m[2*l+1]=e[1],f[r]=!0,l++)}for(var s=new Float32Array(2*l*3),n=0,o=l;o>n;n++)for(var q=0;2>q;q++){var t=j[m[2*n+q]],u=6*n+3*q;s[u+0]=t.x,s[u+1]=t.y,s[u+2]=t.z}i.addAttribute("position",new a.BufferAttribute(s,3))}else if(b.geometry instanceof a.BufferGeometry)if(void 0!==b.geometry.attributes.index){var j=b.geometry.attributes.position.array,v=b.geometry.attributes.index.array,w=b.geometry.drawcalls,l=0;0===w.length&&(w=[{count:v.length,index:0,start:0}]);for(var m=new Uint32Array(2*v.length),x=0,y=w.length;y>x;++x)for(var z=w[x].start,A=w[x].count,u=w[x].index,n=z,B=z+A;B>n;n+=3)for(var q=0;3>q;q++){e[0]=u+v[n+q],e[1]=u+v[n+(q+1)%3],e.sort(g);var r=e.toString();void 0===f[r]&&(m[2*l]=e[0],m[2*l+1]=e[1],f[r]=!0,l++)}for(var s=new Float32Array(2*l*3),n=0,o=l;o>n;n++)for(var q=0;2>q;q++){var u=6*n+3*q,C=3*m[2*n+q];s[u+0]=j[C],s[u+1]=j[C+1],s[u+2]=j[C+2]}i.addAttribute("position",new a.BufferAttribute(s,3))}else{for(var j=b.geometry.attributes.position.array,l=j.length/3,D=l/3,s=new Float32Array(2*l*3),n=0,o=D;o>n;n++)for(var q=0;3>q;q++){var u=18*n+6*q,E=9*n+3*q;s[u+0]=j[E],s[u+1]=j[E+1],s[u+2]=j[E+2];var C=9*n+3*((q+1)%3);s[u+3]=j[C],s[u+4]=j[C+1],s[u+5]=j[C+2]}i.addAttribute("position",new a.BufferAttribute(s,3))}a.Line.call(this,i,new a.LineBasicMaterial({color:d}),a.LinePieces),this.matrix=b.matrixWorld,this.matrixAutoUpdate=!1},a.WireframeHelper.prototype=Object.create(a.Line.prototype),a.ImmediateRenderObject=function(){a.Object3D.call(this),this.render=function(a){}},a.ImmediateRenderObject.prototype=Object.create(a.Object3D.prototype),a.MorphBlendMesh=function(b,c){a.Mesh.call(this,b,c),this.animationsMap={},this.animationsList=[];var d=this.geometry.morphTargets.length,e="__default",f=0,g=d-1,h=d/1;this.createAnimation(e,f,g,h),this.setAnimationWeight(e,1)},a.MorphBlendMesh.prototype=Object.create(a.Mesh.prototype),a.MorphBlendMesh.prototype.createAnimation=function(a,b,c,d){var e={startFrame:b,endFrame:c,length:c-b+1,fps:d,duration:(c-b)/d,lastFrame:0,currentFrame:0,active:!1,time:0,direction:1,weight:1,directionBackwards:!1,mirroredLoop:!1};this.animationsMap[a]=e,this.animationsList.push(e)},a.MorphBlendMesh.prototype.autoCreateAnimations=function(a){for(var b,c=/([a-z]+)_?(\d+)/,d={},e=this.geometry,f=0,g=e.morphTargets.length;g>f;f++){var h=e.morphTargets[f],i=h.name.match(c);if(i&&i.length>1){var j=i[1];i[2];d[j]||(d[j]={start:1/0,end:-(1/0)});var k=d[j];fk.end&&(k.end=f),b||(b=j)}}for(var j in d){var k=d[j];this.createAnimation(j,k.start,k.end,a)}this.firstAnimation=b},a.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){var b=this.animationsMap[a];b&&(b.direction=1,b.directionBackwards=!1)},a.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){var b=this.animationsMap[a];b&&(b.direction=-1,b.directionBackwards=!0)},a.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)},a.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)},a.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)},a.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)},a.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0,c=this.animationsMap[a];return c&&(b=c.time),b},a.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1,c=this.animationsMap[a];return c&&(b=c.duration),b},a.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("animation["+a+"] undefined")},a.MorphBlendMesh.prototype.stopAnimation=function(a){var b=this.animationsMap[a];b&&(b.active=!1)},a.MorphBlendMesh.prototype.update=function(b){for(var c=0,d=this.animationsList.length;d>c;c++){var e=this.animationsList[c];if(e.active){var f=e.duration/e.length;e.time+=e.direction*b,e.mirroredLoop?(e.time>e.duration||e.time<0)&&(e.direction*=-1,e.time>e.duration&&(e.time=e.duration,e.directionBackwards=!0),e.time<0&&(e.time=0,e.directionBackwards=!1)):(e.time=e.time%e.duration,e.time<0&&(e.time+=e.duration));var g=e.startFrame+a.Math.clamp(Math.floor(e.time/f),0,e.length-1),h=e.weight;g!==e.currentFrame&&(this.morphTargetInfluences[e.lastFrame]=0,this.morphTargetInfluences[e.currentFrame]=1*h,this.morphTargetInfluences[g]=0,e.lastFrame=e.currentFrame,e.currentFrame=g);var i=e.time%f/f;e.directionBackwards&&(i=1-i),this.morphTargetInfluences[e.currentFrame]=i*h,this.morphTargetInfluences[e.lastFrame]=(1-i)*h}}}}(),BrainBrowser.SurfaceViewer.modules.annotations=function(a){"use strict";function b(b){b=b||{};var c=b.model_name||null;return!c&&a.model.children[0]&&(c=a.model.children[0].userData.model_name),c}var c=BrainBrowser.createTreeStore(),d=.5,e=65280,f=16711680;a.annotations={add:function(e,g,h){h=h||{};var i,j,k=b(h);k&&(j=a.getVertex(e,{model_name:h.model_name}),i={data:g,model_name:k,vertex:e,position:j,marker:a.drawDot(j.x,j.y,j.z,d,f)},i.marker.userData.annotation_info=i,c.set(k,e,i),h.activate!==!1&&a.annotations.activate(e,h))},get:function(d,e){e=e||{};var f,g=b(e);return g?(f=c.get(g,d),e.activate!==!1&&a.annotations.activate(d,e),f):null},remove:function(d,e){e=e||{};var f,g=b(e);return g?(f=c.remove(g,d),a.model.remove(f.marker),f.marker=null,a.updated=!0,f):null},reset:function(){a.annotations.forEach(function(b){a.annotations.remove(b.vertex)})},activate:function(b,c){c=c||{};var d=a.annotations.get(b,{model_name:c.model_name,activate:!1});d&&(a.annotations.forEach(function(a){a===d?a.marker.material.color.setHex(e):a.marker.material.color.setHex(f)}),a.updated=!0)},forEach:function(a){c.forEach(2,a)},setMarkerOnColor:function(a){e=a},setMarkerOffColor:function(a){f=a},setMarkerRadius:function(a){d=a}}},BrainBrowser.SurfaceViewer.modules.color=function(a){"use strict";function b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;for(i=0,k=b.length;k>i;i++){if(d=b[i],l=d.getObjectByName("__WIREFRAME__"),p=!!l,p&&(m=l.geometry.attributes.color.array),c=d.geometry,e=d.userData.original_data.indices,f=c.attributes.color,g=f.array,BrainBrowser.WEBGL_UINT_INDEX_ENABLED){for(h=0;hh;h+=3)n=4*h,o=2*n,g[n]=a[4*e[h]],g[n+1]=a[4*e[h]+1],g[n+2]=a[4*e[h]+2],g[n+3]=1,g[n+4]=a[4*e[h+1]],g[n+5]=a[4*e[h+1]+1],g[n+6]=a[4*e[h+1]+2],g[n+7]=1,g[n+8]=a[4*e[h+2]],g[n+9]=a[4*e[h+2]+1],g[n+10]=a[4*e[h+2]+2],g[n+11]=1,p&&(m[o]=g[n],m[o+1]=g[n+1],m[o+2]=g[n+2],m[o+3]=g[n+3],m[o+4]=g[n+4],m[o+5]=g[n+5],m[o+6]=g[n+6],m[o+7]=g[n+7],m[o+8]=g[n+4],m[o+9]=g[n+5],m[o+10]=g[n+6],m[o+11]=g[n+7],m[o+12]=g[n+8],m[o+13]=g[n+9],m[o+14]=g[n+10],m[o+15]=g[n+11],m[o+16]=g[n+8],m[o+17]=g[n+9],m[o+18]=g[n+10],m[o+19]=g[n+11],m[o+20]=g[n],m[o+21]=g[n+1],m[o+22]=g[n+2],m[o+23]=g[n+3]);f.needsUpdate=!0,p&&(l.geometry.attributes.color.needsUpdate=!0)}}function c(b,c){var d,e,f,g,h,i,j,k=a.model_data.get(c),l=[],m=[];for(b.forEach(function(b){l.push(a.color_map.mapColors(b.values,{min:b.range_min,max:b.range_max,default_colors:k.colors})),m.push(b.alpha)}),d=new Float32Array(l[0].length),e=0,i=l[0].length/4;i>e;e++)for(f=0,h=l.length;h>f;f++)g=4*e,j=m[f],d[g]+=l[f][g]*j,d[g+1]+=l[f][g+1]*j,d[g+2]+=l[f][g+2]*j,d[g+3]+=j;return d}var d=null,e=[];a.updateColors=function(f){function g(c){var d,f=a.model.getObjectByName(l,!0);d=f?[f]:a.model.children.filter(function(a){return!!a.userData.original_data}),b(c,d),e.forEach(function(a){a()}),e.length=0,a.triggerEvent("updatecolors",{model_data:m,intensity_data:h,colors:c,blend:i}),i&&a.triggerEvent("blendcolors",{model_data:m,intensity_data:h,colors:c})}f=f||{};var h,i,j=f.complete,k=f.model_name,l=f.shape_name||k+"_1",m=a.model_data.get(k);BrainBrowser.utils.isFunction(j)&&e.push(j),m.intensity_data.length>1?(h=m.intensity_data,i=!0):(h=m.intensity_data[0],i=!1),clearTimeout(d),d=setTimeout(function(){g(i?c(h,f.model_name):a.color_map.mapColors(h.values,{min:h.range_min,max:h.range_max,default_colors:a.model_data.get(f.model_name).colors}))},0)},a.setIntensity=function(){var b,c,d,e,f,g=Array.prototype.slice.call(arguments);b=BrainBrowser.utils.isNumeric(g[0])?a.model_data.getDefaultIntensityData():g.shift(),f=b.model_data,c=g[0],d=g[1],e=g[2]||{},b&&c>=0&&c1?a.blend(e.complete):a.updateColors({model_name:i,complete:e.complete}),a.triggerEvent("loadintensitydata",{model_data:j,intensity_data:b})})}function d(b){a.color_map=b,a.triggerEvent("loadcolormap",{color_map:b}),a.model_data.forEach(function(b){b.intensity_data[0]&&a.updateColors({model_name:b.name})})}function e(a,b,c,d){var e,g=b+"_model";if(!n.worker_urls[g])throw e="error in SurfaceViewer configuration.\nModel worker URL for "+b+" not defined.\nUse 'BrainBrowser.config.set(\"model_types."+b+".worker\", ...)' to set it.",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);var h,i=new Worker(n.worker_urls[g]);i.addEventListener("message",function(a){var g,j=a.data;if(j.error)throw e="error parsing model.\n"+j.error_message+"\nFile type: "+b+"\nOptions: "+JSON.stringify(c),BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);j.colors=j.colors||new Float32Array([.7,.7,.7,1]),BrainBrowser.WEBGL_UINT_INDEX_ENABLED?f(j,d):(h=new Worker(n.worker_urls.deindex),h.addEventListener("message",function(a){d(a.data)}),g=[j.vertices.buffer],j.normals&&g.push(j.normals.buffer),j.colors&&g.push(j.colors.buffer),j.shapes.forEach(function(a){g.push(a.indices.buffer)}),h.postMessage(j,g)),i.terminate()});var j=BrainBrowser.utils.getWorkerImportURL();i.postMessage({data:a,options:c,url:j})}function f(a,b){var c=a.vertices;4===a.colors.length&&(a.colors=g(a.colors,c.length/3)),k(a),b(a)}function g(a,b){var c,d,e,f,g,h,i;for(g=new Float32Array(4*b),c=a[0],d=a[1],e=a[2],f=a[3],h=0,i=g.length;i>h;h+=4)g[h]=c,g[h+1]=d,g[h+2]=e,g[h+3]=f;return g}function h(b,c,d){d=d||{};var e=d.complete,f=i(b,c,d);a.triggerEvent("displaymodel",{model:a.model,model_data:b,new_shapes:f}),e&&e()}function i(b,c,d){var e,f,g,h,i,k,m,n=a.model,p=b.shapes,q="line"===b.type,r=d.render_depth,s=d.pick_ignore,t=d.recenter||b.split,u=[],v={is_line:q};if(BrainBrowser.WEBGL_UINT_INDEX_ENABLED&&(i=new o.BufferAttribute(new Float32Array(b.vertices),3),b.normals&&(k=new o.BufferAttribute(new Float32Array(b.normals),3)),b.colors&&(m=new o.BufferAttribute(new Float32Array(b.colors),4))),b.name=b.name||c,a.model_data.add(b.name,b),p){for(g=0,h=p.length;h>g;g++)f=b.shapes[g],0!==f.indices.length&&(BrainBrowser.WEBGL_UINT_INDEX_ENABLED?(l(m.array,f.color,f.indices),v={position:i,normal:k,color:m,index:new o.BufferAttribute(new Uint32Array(f.indices),1)}):(i=k=m=null,i=new o.BufferAttribute(new Float32Array(f.unindexed.position),3),f.unindexed.normal&&(k=new o.BufferAttribute(new Float32Array(f.unindexed.normal),3)),f.unindexed.color&&(m=new o.BufferAttribute(new Float32Array(f.unindexed.color),4)),v={position:i,normal:k,color:m}),v.is_line=q,v.centroid=f.centroid,v.recenter=t,e=j(v),e.name=f.name||c+"_"+(g+1),e.userData.model_name=b.name,e.userData.original_data={vertices:b.vertices,indices:f.indices,normals:b.normals,colors:b.colors},e.userData.pick_ignore=s,r&&(e.renderDepth=r),u.push(e),n.add(e));b.split&&(n.children[0].name="left",n.children[1].name="right")}return u}function j(a){var b,c,d,e,f,g,h,i=a.position,j=i.array,k=a.normal,l=a.color,m=a.index,n=a.centroid,p=a.is_line,q=a.recenter,r=new o.BufferGeometry;if(r.dynamic=!0,q)if(m)for(b=m.array,c=new Float32Array(j),g=0,h=b.length;h>g;g++)d=3*b[g],j[d]=c[d]-n.x,j[d+1]=c[d+1]-n.y,j[d+2]=c[d+2]-n.z;else for(g=0,h=j.length;h>g;g+=3)j[g]-=n.x,j[g+1]-=n.y,j[g+2]-=n.z;return r.addAttribute("position",i),m&&r.addAttribute("index",m),k?r.addAttribute("normal",k):r.computeVertexNormals(),l&&r.addAttribute("color",l),p?(e=new o.LineBasicMaterial({vertexColors:o.VertexColors}),f=new o.Line(r,e,o.LinePieces)):(e=new o.MeshPhongMaterial({color:16777215,ambient:16777215,specular:1052688,shininess:150,vertexColors:o.VertexColors}),f=new o.Mesh(r,e),f.userData.has_wireframe=!0),f.userData.centroid=n,q&&(f.userData.recentered=!0,f.position.set(n.x,n.y,n.z)),f}function k(a){var b,c,d,e,f,g,h=a.vertices;b=d=f=Number.POSITIVE_INFINITY,c=e=g=Number.NEGATIVE_INFINITY,a.shapes.forEach(function(a){var i,j,k,l,m,n,o,p,q,r,s,t,u=a.indices;for(o=q=s=Number.POSITIVE_INFINITY,p=r=t=Number.NEGATIVE_INFINITY,m=0,n=u.length;n>m;m++)i=u[m],j=h[3*i],k=h[3*i+1],l=h[3*i+2],o=Math.min(o,j),q=Math.min(q,k),s=Math.min(s,l),p=Math.max(p,j),r=Math.max(r,k),t=Math.max(t,l);a.bounding_box={min_x:o,min_y:q,min_z:s,max_x:p,max_y:r,max_z:t},a.centroid={x:o+(p-o)/2,y:q+(r-q)/2,z:s+(t-s)/2},b=Math.min(b,o),d=Math.min(d,q),f=Math.min(f,s),c=Math.max(c,p),e=Math.max(e,r),g=Math.max(g,t)}),a.bounding_box={min_x:b,min_y:d,min_z:f,max_x:c,max_y:e,max_z:g},a.size={x:c-b,y:e-d,z:g-f}}function l(a,b,c){if(b){var d,e,f,g,h,i,j,k=4===b.length;for(d=b[0],e=b[1],f=b[2],g=b[3],h=0,j=c.length;j>h;h++)k||(i=4*h,d=b[i],e=b[i+1],f=b[i+2],g=b[i+3]),i=4*c[h],a[i]=d,a[i+1]=e,a[i+2]=f,a[i+3]=g}}function m(a,b){b=b||{};var c=b.format||"mniobj",d=BrainBrowser.config.get(a+"."+c);return d&&d.binary&&(b.result_type=b.result_type||"arraybuffer"),b}var n=BrainBrowser.SurfaceViewer,o=n.THREE,p=BrainBrowser.loader,q={};a.model_data={add:function(a,b){q[a]=b,b.intensity_data=[]},get:function(a){return a=a||Object.keys(q)[0],q[a]||null},getDefaultIntensityData:function(a){var b,c,d,e;if(a)b=this.get(a),c=b?b.intensity_data[0]:null;else for(b=Object.keys(q).map(function(a){return q[a]}),d=0,e=b.length;e>d&&!(c=b[d].intensity_data[0]);d++);return c||null},count:function(){return Object.keys(q).length},clear:function(){q={}},forEach:function(a){Object.keys(q).forEach(function(b){a(q[b],b)})}},a.loadModelFromURL=function(a,c){c=m("model_types",c),p.loadFromURL(a,b,c)},a.loadModelFromFile=function(a,c){c=m("model_types",c),p.loadFromFile(a,b,c)},a.loadIntensityDataFromURL=function(a,b){b=m("intensity_data_types",b),p.loadFromURL(a,c,b)},a.loadIntensityDataFromFile=function(a,b){b=m("intensity_data_types",b),p.loadFromFile(a,c,b)},a.loadColorMapFromURL=function(a,b){p.loadColorMapFromURL(a,d,b)},a.loadColorMapFromFile=function(a,b){p.loadColorMapFromFile(a,d,b)},a.clearScreen=function(){for(var b=a.model.children;b.length>0;)a.model.remove(b[0]);a.model_data.clear(),a.resetView(),a.triggerEvent("clearscreen")}},BrainBrowser.SurfaceViewer.modules.rendering=function(a){"use strict";function b(f){var g,m,n=a.model,o=i.position,p=j/a.zoom;window.requestAnimationFrame(b),d=c||f,c=f,g=c-d,m=15e-5*g,a.autorotate.x&&(n.rotation.x+=m,a.updated=!0),a.autorotate.y&&(n.rotation.y+=m,a.updated=!0),a.autorotate.z&&(n.rotation.z+=m,a.updated=!0),e!==a.zoom&&(e=a.zoom,a.updated=!0,a.triggerEvent("zoom",{zoom:a.zoom})),a.updated&&(p>i.near&&p<.9*i.far&&(o.z=p,k.position.z=p),l.render(h,i),a.triggerEvent("draw",{renderer:l,scene:h,camera:i}),a.updated=!1)}var c,d,e,f=BrainBrowser.SurfaceViewer.THREE,g=new f.WebGLRenderer({preserveDrawingBuffer:!0,alpha:!0,autoClear:!1}),h=new f.Scene,i=new f.PerspectiveCamera(30,a.dom_element.offsetWidth/a.dom_element.offsetHeight,1,3e3),j=500,k=new f.PointLight(16777215),l=g,m={},n=g.domElement;a.model=new f.Object3D,h.add(a.model),a.render=function(){var c=a.dom_element;g.setClearColor(0),c.appendChild(g.domElement),i.position.z=j,k.position.set(0,0,j),h.add(k),a.updateViewport(),b()},a.updateViewport=function(){var b=a.dom_element;l.setSize(b.offsetWidth,b.offsetHeight),i.aspect=b.offsetWidth/b.offsetHeight,i.updateProjectionMatrix(),a.updated=!0},a.canvasDataURL=function(){return g.domElement.toDataURL()},a.addEffect=function(b){var c;BrainBrowser.utils.isFunction(f[b])&&(c=new f[b](g),c.setSize(a.dom_element.offsetWidth,a.dom_element.offsetHeight),m[b]=c)},a.setEffect=function(b){l=m[b]?m[b]:g,l.setSize(a.dom_element.offsetWidth,a.dom_element.offsetHeight),l.render(h,i),a.updated=!0},a.setCameraPosition=function(b,c,d){i.position.set(b,c,d),k.position.set(b,c,d),a.updated=!0},a.getCameraPosition=function(){return i.position},a.resetView=function(){var b=a.model,c=new f.Matrix4;c.getInverse(b.matrix),b.applyMatrix(c),i.position.set(0,0,j),k.position.set(0,0,j);var d=b.userData.model_center_offset||new f.Vector3(0,0,0);b.children.forEach(function(a){var b=a.userData.centroid,c=a.userData.recentered;a.userData.original_data&&(b&&c?a.position.set(b.x+d.x,b.y+d.y,b.z+d.z):a.position.set(d.x,d.y,d.z),a.rotation.set(0,0,0),a.material.opacity=1)}),b.rotation.set(0,0,0),a.zoom=1,a.updated=!0},a.setClearColor=function(b,c){void 0===c&&(c=1),g.setClearColor(b,c),a.updated=!0},a.drawDot=function(b,c,d,e,g){e=e||2,e=e>=0?e:0,g=g>=0?g:16711680;var i=new f.SphereGeometry(e),j=new f.MeshBasicMaterial({color:g}),k=new f.Mesh(i,j);if(k.position.set(b,c,d),a.model){var l=a.model.userData.model_center_offset;void 0!==l&&(k.translateX(-l.x),k.translateY(-l.y),k.translateZ(-l.z)),a.model.add(k)}else h.add(k);return a.updated=!0,k},a.drawGrid=function(b,c,d){d=d||{};var e=d.name,g=d.color_center_line,i=d.color_grid,j=d.x||0,k=d.y||0,l=d.z||0,m=d.euler_rotation;(void 0===b||0>=b)&&(b=100),(void 0===c||0>=c)&&(c=10),g=g>=0?g:4473924,i=i>=0?i:8947848;var n=new f.GridHelper(b,c);return n.name=e,n.setColors(g,i),n.position.set(j,k,l),void 0!==m&&n.setRotationFromEuler(m),a.model?a.model.add(n):h.add(n),a.updated=!0,n},a.gridHelper=function(a,b,c,d,e,g,h,i,j,k,l){for(var m=new f.Geometry,n=new f.LineBasicMaterial({vertexColors:f.VertexColors}),o=Object.create(f.GridHelper.prototype),p=a;b>=p;p+=l)m.vertices.push(new f.Vector3(c,0,p),new f.Vector3(d,0,p)),m.colors.push(e,e);for(var q=g;h>=q;q+=l)m.vertices.push(new f.Vector3(q,0,i),new f.Vector3(q,0,j)),m.colors.push(k,k);return f.Line.call(o,m,n,f.LinePieces),o},a.drawLine=function(b,c,d){d=d||{};var e=d.color>=0?d.color:4473924,g=new f.Geometry;g.vertices.push(b.clone()),g.vertices.push(c.clone()),g.computeLineDistances();var i=d.dashed===!0?new f.LineDashedMaterial({linewidth:3,color:e,gapSize:3}):new f.LineBasicMaterial({linewidth:3,color:e}),j=new f.Line(g,i,f.LinePieces);return d.draw===!1?j:(a.model?a.model.add(j):h.add(j),a.updated=!0,j)},a.drawAxes=function(b,c){c=c||{};var d=c.name||"axes",e=c.center||new f.Vector3(0,0,0),g=c.x_color>=0?c.x_color:16711680,i=c.y_color>=0?c.y_color:65280,j=c.z_color>=0?c.z_color:255,k=c.complete===!0;if(void 0===b){ +var l=a.model_data.get().size,m=Math.max(l.x,l.y,l.z);b=m/2*1.2}var n=new f.Object3D;return n.name=d,n.add(a.drawLine(e,new f.Vector3(e.x+b,e.y,e.z),{color:g,dashed:!1,draw:!1})),k&&n.add(a.drawLine(e,new f.Vector3(-b+e.x,e.y,e.z),{color:g,dashed:!0,draw:!1})),n.add(a.drawLine(e,new f.Vector3(e.x,e.y+b,e.z),{color:i,dashed:!1,draw:!1})),k&&n.add(a.drawLine(e,new f.Vector3(e.x,-b+e.y,e.z),{color:i,dashed:!0,draw:!1})),n.add(a.drawLine(e,new f.Vector3(e.x,e.y,e.z+b),{color:j,dashed:!1,draw:!1})),k&&n.add(a.drawLine(e,new f.Vector3(e.x,e.y,-b+e.z),{color:j,dashed:!0,draw:!1})),a.model?a.model.add(n):h.add(n),a.updated=!0,n},a.pick=function(b,c,d){b=void 0===b?a.mouse.x:b,c=void 0===c?a.mouse.y:c,d=void 0===d?.25:d/100,b=b/a.dom_element.offsetWidth*2-1,c=-c/a.dom_element.offsetHeight*2+1;var e,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=a.model,B=new f.Raycaster,C=new f.Vector3(b,c,i.near),D=null,E=new f.Matrix4;for(C.unproject(i),B.set(i.position,C.sub(i.position).normalize()),e=B.intersectObject(A,!0),u=0;uu;u++)r=k[u],BrainBrowser.WEBGL_UINT_INDEX_ENABLED||(r=q[r]),s=new f.Vector3(p[3*r],p[3*r+1],p[3*r+2]),t=j.distanceTo(new f.Vector3(s.x-x,s.y-y,s.z-z)),o>t&&(m=r,n=s,o=t);g={index:m,point:n,object:h}}else g=null;return g},a.pickByVertex=function(b,c){var d=a.model;if(c=c||{},void 0===b)return null;var e,f,g=a.getVertex(b,{model_name:c.model_name});return d.children.forEach(function(a){if(!(0===Object.keys(a.userData).length&&a.userData.constructor===Object||0!==Object.keys(a.userData).length&&a.userData.model_name!==c.model_name)){var d,h=a.geometry.attributes.index.array;for(b=parseInt(b,0),d=0;dg?c(a,d):setTimeout(function(){b(a,d)},0)}function c(a,b){var c,d=new Worker(BrainBrowser.SurfaceViewer.worker_urls.wireframe),f=a.geometry.attributes;d.addEventListener("message",function(c){var h,i,j,k,l=new e.BufferGeometry;j=c.data.positions?new e.BufferAttribute(c.data.positions,3):f.position,k=c.data.colors?new e.BufferAttribute(c.data.colors,4):f.color,l.addAttribute("position",j),l.addAttribute("color",k),c.data.indices&&l.addAttribute("index",new e.BufferAttribute(c.data.indices,1)),l.attributes.color.needsUpdate=!0,h=new e.LineBasicMaterial({vertexColors:e.VertexColors}),i=new e.Line(l,h,e.LinePieces),i.name="__WIREFRAME__",i.material.visible=!1,a.add(i),a.creating_wireframe=!1,g--,b(i),d.terminate()}),c=BrainBrowser.WEBGL_UINT_INDEX_ENABLED?{indices:f.index.array}:{positions:f.position.array,colors:f.color.array},d.postMessage(c),g++}function d(b,c,d,e){b.material.visible=e||!d,c.material.visible=d,a.updated=!0}var e=BrainBrowser.SurfaceViewer.THREE,f=20,g=0,h={medialView:function(b){var c=a.model;b.split?(c.getObjectByName("left").position.x-=100,c.getObjectByName("left").rotation.z-=Math.PI/2,c.getObjectByName("right").position.x+=100,c.getObjectByName("right").rotation.z+=Math.PI/2,c.rotation.x-=Math.PI/2):(c.rotation.x+=Math.PI/2,c.rotation.y+=Math.PI,c.rotation.z+=Math.PI/2)},lateralView:function(b){var c,d,e=a.model;b.split?(c=e.getObjectByName("left"),d=e.getObjectByName("right"),c.position.x-=100,c.rotation.z-=Math.PI/2,d.position.x+=100,d.rotation.z+=Math.PI/2,e.rotation.x+=Math.PI/2,e.rotation.y+=Math.PI):(e.rotation.x+=Math.PI/2,e.rotation.y+=Math.PI,e.rotation.z-=Math.PI/2)},inferiorView:function(){a.model.rotation.y+=Math.PI},anteriorView:function(){a.resetView(),a.model.rotation.x-=Math.PI/2,a.model.rotation.z+=Math.PI},posteriorView:function(){a.resetView(),a.model.rotation.x-=Math.PI/2}};a.setTransparency=function(b,c){c=c||{};var d,e,f,g=c.shape_name,h=a.model.getObjectByName(g);d=h?[h]:a.model.children||[],d.forEach(function(a){e=a.material,e.opacity=b,1===b||b>1?e.transparent=!1:e.transparent=!0,f=a.getObjectByName("__WIREFRAME__"),f&&(f.material.opacity=e.opacity,f.material.transparent=e.transparent)}),a.updated=!0},a.setWireframe=function(c,e){e=e||{};var f,g,h=e.keep_surface!==!0?!1:!0,i=e.shape_name,j=a.model.getObjectByName(i);f=j?[j]:a.model.children||[],f.forEach(function(a){g=a.getObjectByName("__WIREFRAME__"),g?d(a,g,c,h):a.userData.has_wireframe&&!a.userData.creating_wireframe&&b(a,function(b){d(a,b,c,h)})})},a.setView=function(b,c){var d=b+"View",e=a.model_data.get(c);a.resetView(),e&&BrainBrowser.utils.isFunction(h[d])&&h[d](e),a.updated=!0},a.separateHalves=function(b,c){b=b||1,c=c||{},a.model_data.get(c.model_name).split&&(a.model.children[0].position.x-=b,a.model.children[1].position.x+=b),a.updated=!0}}; \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/brainbrowser.volume-viewer.min.js b/build/brainbrowser-2.5.5/brainbrowser.volume-viewer.min.js new file mode 100644 index 00000000..9181f93b --- /dev/null +++ b/build/brainbrowser-2.5.5/brainbrowser.volume-viewer.min.js @@ -0,0 +1,35 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b=!1,c=!1,d=!1,e=!1,f=document.createElement("canvas"),g=null;b=!!f,c=!!window.Worker;try{f&&window.WebGLRenderingContext&&(g=f.getContext("webgl")||f.getContext("experimental-webgl")),d=!!g}catch(h){d=!1}d&&(e=!!g.getExtension("OES_element_index_uint")),a.CANVAS_ENABLED=b,a.WEB_WORKERS_ENABLED=c,a.WEBGL_ENABLED=d,a.WEBGL_UINT_INDEX_ENABLED=e}var b="2.5.5";b=b.indexOf("BRAINBROWSER_VERSION")>0?"D.E.V":b;var c=window.BrainBrowser={version:b};a(c),window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1e3/60)},window.cancelAnimationFrame=window.cancelAnimationFrame||function(a){window.clearTimeout(a)}}(),function(){"use strict";function a(b,c,d,e){return c>d?e(b):void Object.keys(b).forEach(function(f){a(b[f],c+1,d,e)})}BrainBrowser.createTreeStore=function(){var b={};return{set:function(){var a,c,d,e,f=arguments[arguments.length-1],g=Array.prototype.slice.call(arguments,0,arguments.length-1),h=b;for(c=0,d=g.length-1;d>c;c++){if(a=g[c],h[a]&&"object"!=typeof h[a])throw e="Hash key '["+g.slice(0,c+1).join("][")+"]' has already been set to a non-object value.\nCannot set '["+g.join("][")+"]'",BrainBrowser.events.triggerEvent("error",{message:e}),new Error(e);h[a]||(h[a]={}),h=h[a]}a=g[c],h[a]=f},get:function(){var a,c,d,e=Array.prototype.slice.call(arguments),f=b;if(0===e.length)return b;for(c=0,d=e.length-1;d>c;c++){if(a=e[c],void 0===f[a])return null;f=f[a]}return a=e[c],void 0!==f[a]?f[a]:null},remove:function(){var a,c,d,e,f=Array.prototype.slice.call(arguments),g=b;for(c=0,d=f.length-1;d>c;c++){if(a=f[c],void 0===g[a])return null;g=g[a]}return a=f[c],e=g[a],g[a]=void 0,e},reset:function(a){a=a&&"object"==typeof a?a:{},b=a},forEach:function(c,d){c=c>0?c:1,a(b,1,c,d)}}}}(),function(){"use strict";BrainBrowser.createColorMap=function(a,b){function c(a,b,c,d,e,f,g){var h;return(b>a||a>c)&&!e?-1:(h=Math.floor(Math.max(0,Math.min((a-b)*d,g-1))),f&&(h=g-1-h),h*=4)}function d(a,b,c){var d,e,f,g=document.createElement("canvas"),h=new Array(256);for(g.width=256,g.height=c,d=0;256>d;d++)h[d]=d;for(f=r.scale,r.scale=255,a=r.mapColors(h),r.scale=f,e=g.getContext("2d"),d=0;256>d;d++)e.fillStyle="rgb("+Math.floor(a[4*d])+", "+Math.floor(a[4*d+1])+", "+Math.floor(a[4*d+2])+")",e.fillRect(d,0,1,b);return g}b=b||{};var e,f,g,h,i,j,k,l,m=void 0===b.clamp?!0:b.clamp,n=b.flip||!1,o=b.scale||1,p=b.contrast||1,q=b.brightness||0;if(a)for(f=a.trim().split(/\n/),e=[],k=0,i=0,g=f.length;g>i;i++)if(l=f[i].trim().split(/\s+/).slice(0,5),h=l.length,!(3>h)){for(h>4&&(k=parseInt(l[0],10),k*=4,h=4,l=l.slice(1,5)),j=0;h>j;j++)e[k+j]=parseFloat(l[j]);4>h&&(e[k+3]=1),k+=4}var r={colors:e,clamp:m,flip:n,scale:o,contrast:p,brightness:q,mapColors:function(a,b){b=b||{};var d,e,f,g,h,i,j=void 0===b.min?0:b.min,k=void 0===b.max?255:b.max,l=b.default_colors||[0,0,0,1],m=b.destination||new Float32Array(4*a.length),n=r.colors,o=r.colors.length/4,p=void 0===b.scale?r.scale:b.scale,q=void 0===b.clamp?r.clamp:b.clamp,s=void 0===b.flip?r.flip:b.flip,t=void 0===b.brightness?r.brightness:b.brightness,u=void 0===b.contrast?r.contrast:b.contrast,v=4===l.length?0:1,w=k-j,x=o/w;for(t*=p,u*=p,e=0,h=a.length;h>e;e++)d=a[e],f=4*e,i=c(d,j,k,x,q,s,o),0>i?(g=f*v,m[f]=u*l[g]+t,m[f+1]=u*l[g+1]+t,m[f+2]=u*l[g+2]+t,m[f+3]=p*l[g+3]):(m[f]=u*n[i]+t,m[f+1]=u*n[i+1]+t,m[f+2]=u*n[i+2]+t,m[f+3]=p*n[i+3]);return m},colorFromValue:function(a,b){b=b||{};var d,e=b.hex||!1,f=void 0===b.min?0:b.min,g=void 0===b.max?255:b.max,h=void 0===b.scale?r.scale:b.scale,i=void 0===b.brightness?r.brightness:b.brightness,j=void 0===b.contrast?r.contrast:b.contrast,k=g-f,l=r.colors.length/4,m=l/k,n=c(a,f,g,m,r.clamp,r.flip,l);return d=n>=0?Array.prototype.slice.call(r.colors,n,n+4):[0,0,0,1],d[0]=Math.max(0,Math.min(j*d[0]+i,1)),d[1]=Math.max(0,Math.min(j*d[1]+i,1)),d[2]=Math.max(0,Math.min(j*d[2]+i,1)),e?(d[0]=Math.floor(255*d[0]),d[1]=Math.floor(255*d[1]),d[2]=Math.floor(255*d[2]),d[3]=Math.floor(255*d[3]),d[0]=("0"+d[0].toString(16)).slice(-2),d[1]=("0"+d[1].toString(16)).slice(-2),d[2]=("0"+d[2].toString(16)).slice(-2),d=d.slice(0,3).join("")):(d[0]=d[0]*h,d[1]=d[1]*h,d[2]=d[2]*h,d[3]=d[3]*h),d},createElement:function(a,b){var c,e,f=r.colors,g=b-a;return c=d(f,20,40,n),e=c.getContext("2d"),e.fillStyle="#FFA000",e.fillRect(.5,20,1,10),e.fillText(a.toPrecision(3),.5,40),e.fillRect(c.width/4,20,1,10),e.fillText((a+.25*g).toPrecision(3),.25*c.width,40),e.fillRect(c.width/2,20,1,10),e.fillText((a+.5*g).toPrecision(3),.5*c.width,40),e.fillRect(3*c.width/4,20,1,10),e.fillText((a+.75*g).toPrecision(3),.75*c.width,40),e.fillRect(c.width-.5,20,1,10),e.fillText(b.toPrecision(3),c.width-20,40),c}};return r}}(),function(){"use strict";var a=BrainBrowser.createTreeStore();BrainBrowser.config={set:function(b,c){b=b||"";var d=b.split(".");d.push(c),a.set.apply(a,d)},get:function(b){b=b||"";var c=b.split(".");return a.get.apply(a,c)}}}(),function(){"use strict";function a(a,b){try{a.call(b.target,b)}catch(c){console.error("Error in event handler for: ",b.name),console.error(c.stack||c.message||c)}}var b=["eventmodelcleanup"];BrainBrowser.events={unpropagatedEvent:function(a){b.push(a)},addEventModel:function(c){var d=[],e={};c.addEventListener=function(a,b){d[a]||(d[a]=[]),d[a].push(b)},c.triggerEvent=function(e,f){var g=this,h=c.directPropagationTargets(e);f=f||{},f.name=e,f.target=g,d[e]&&d[e].forEach(function(b){a(b,f)}),d["*"]&&d["*"].forEach(function(b){a(b,f)}),-1===b.indexOf(e)&&(h.forEach(function(a){a.triggerEvent.call(g,e,f)}),0===h.length&&c!==BrainBrowser.events&&BrainBrowser.events.triggerEvent.call(g,e,f))},c.propagateEventTo=function(a,b){if(!BrainBrowser.utils.isFunction(b.allPropagationTargets))throw new Error("Propagation target doesn't seem to have an event model.");if(c===BrainBrowser.events||-1!==b.allPropagationTargets(a).indexOf(c))throw new Error("Propagating event '"+a+"' would cause a cycle.");e[a]=e[a]||[],-1===c.directPropagationTargets().indexOf(b)&&b.addEventListener("eventmodelcleanup",function(){this===b&&c.stopPropagatingTo(b)}),-1===e[a].indexOf(b)&&e[a].push(b)},c.propagateEventFrom=function(a,b){b.propagateEventTo(a,c)},c.stopPropagatingTo=function(a){Object.keys(e).forEach(function(b){e[b]=e[b].filter(function(b){return b!==a})})},c.directPropagationTargets=function(a){var b=[],c=void 0===a?Object.keys(e):[a,"*"];return c.forEach(function(a){var c=e[a]||[];c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})}),b},c.allPropagationTargets=function(a){var b=c.directPropagationTargets(a),d=Array.prototype.slice.call(b);return b.forEach(function(b){b.allPropagationTargets(a).forEach(function(a){-1===d.indexOf(a)&&d.push(a)})}),d}}},BrainBrowser.events.addEventModel(BrainBrowser.events)}(),function(){"use strict";var a=BrainBrowser.loader={loadFromURL:function(b,c,d){d=d||{};var e,f=new XMLHttpRequest,g=d.result_type,h=b.split("/"),i=h[h.length-1];f.open("GET",b),"arraybuffer"===g&&(f.responseType="arraybuffer"),f.onreadystatechange=function(){if(4===f.readyState){if(e=f.status,!(e>=200&&300>e||304===e)){var g="error loading URL: "+b+"\nHTTP Response: "+f.status+"\nHTTP Status: "+f.statusText+"\nResponse was: \n"+f.response;throw BrainBrowser.events.triggerEvent("error",{message:g}),new Error(g)}a.checkCancel(d)||c(f.response,i,d)}},f.send()},loadFromFile:function(a,b,c){var d=a.files;if(0!==d.length){c=c||{};var e=c.result_type,f=new FileReader,g=a.value.split("\\"),h=g[g.length-1];f.file=d[0],f.onloadend=function(a){var d=a.target.result;try{var f=pako.inflate(d);d=f.buffer}catch(g){}finally{if("arraybuffer"!==e)if("function"!=typeof TextDecoder){var i=new Blob([d]),j=new FileReader;j.onload=function(a){b(a.target.result,h,c)},j.readAsText(i)}else{var k=new DataView(d),l=new TextDecoder;d=l.decode(k),b(d,h,c)}else b(d,h,c)}},f.onerror=function(){var a="error reading file: "+h;throw BrainBrowser.events.triggerEvent("error",{message:a}),new Error(a)},f.readAsArrayBuffer(d[0])}},loadColorMapFromURL:function(b,c,d){a.loadFromURL(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},loadColorMapFromFile:function(b,c,d){a.loadFromFile(b,function(a,b,d){c(BrainBrowser.createColorMap(a,d),b,d)},d)},checkCancel:function(a){a=a||{},BrainBrowser.utils.isFunction(a)&&(a={test:a});var b=a.test,c=a.cleanup,d=!1;return b&&b()&&(d=!0,c&&c()),d}}}(),function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.pako=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=h.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==p)throw new Error(k[c]);if(b.header&&h.deflateSetHeader(this.strm,b.header),b.dictionary){var e;if(e="string"==typeof b.dictionary?j.string2buf(b.dictionary):"[object ArrayBuffer]"===m.call(b.dictionary)?new Uint8Array(b.dictionary):b.dictionary,c=h.deflateSetDictionary(this.strm,e),c!==p)throw new Error(k[c]);this._dict_set=!0}}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}function g(a,b){return b=b||{},b.gzip=!0,e(a,b)}var h=a("./zlib/deflate"),i=a("./utils/common"),j=a("./utils/strings"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=Object.prototype.toString,n=0,o=4,p=0,q=1,r=2,s=-1,t=0,u=8;d.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?o:n,"string"==typeof a?e.input=j.string2buf(a):"[object ArrayBuffer]"===m.call(a)?e.input=new Uint8Array(a):e.input=a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new i.Buf8(f),e.next_out=0,e.avail_out=f),c=h.deflate(e,d),c!==q&&c!==p)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&(d===o||d===r))&&("string"===this.options.to?this.onData(j.buf2binstring(i.shrinkBuf(e.output,e.next_out))):this.onData(i.shrinkBuf(e.output,e.next_out)))}while((e.avail_in>0||0===e.avail_out)&&c!==q);return d===o?(c=h.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===p):d===r?(this.onEnd(p),e.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===p&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=d,c.deflate=e,c.deflateRaw=f,c.gzip=g},{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=h.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=g.inflateInit2(this.strm,b.windowBits);if(c!==j.Z_OK)throw new Error(k[c]);this.header=new m,g.inflateGetHeader(this.strm,this.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}var g=a("./zlib/inflate"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/constants"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=a("./zlib/gzheader"),n=Object.prototype.toString;d.prototype.push=function(a,b){var c,d,e,f,k,l,m=this.strm,o=this.options.chunkSize,p=this.options.dictionary,q=!1;if(this.ended)return!1;d=b===~~b?b:b===!0?j.Z_FINISH:j.Z_NO_FLUSH,"string"==typeof a?m.input=i.binstring2buf(a):"[object ArrayBuffer]"===n.call(a)?m.input=new Uint8Array(a):m.input=a,m.next_in=0,m.avail_in=m.input.length;do{if(0===m.avail_out&&(m.output=new h.Buf8(o),m.next_out=0,m.avail_out=o),c=g.inflate(m,j.Z_NO_FLUSH),c===j.Z_NEED_DICT&&p&&(l="string"==typeof p?i.string2buf(p):"[object ArrayBuffer]"===n.call(p)?new Uint8Array(p):p,c=g.inflateSetDictionary(this.strm,l)),c===j.Z_BUF_ERROR&&q===!0&&(c=j.Z_OK,q=!1),c!==j.Z_STREAM_END&&c!==j.Z_OK)return this.onEnd(c),this.ended=!0,!1;m.next_out&&(0===m.avail_out||c===j.Z_STREAM_END||0===m.avail_in&&(d===j.Z_FINISH||d===j.Z_SYNC_FLUSH))&&("string"===this.options.to?(e=i.utf8border(m.output,m.next_out),f=m.next_out-e,k=i.buf2string(m.output,e),m.next_out=f,m.avail_out=o-f,f&&h.arraySet(m.output,m.output,e,f,0),this.onData(k)):this.onData(h.shrinkBuf(m.output,m.next_out))),0===m.avail_in&&0===m.avail_out&&(q=!0)}while((m.avail_in>0||0===m.avail_out)&&c!==j.Z_STREAM_END);return c===j.Z_STREAM_END&&(d=j.Z_FINISH),d===j.Z_FINISH?(c=g.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===j.Z_OK):d===j.Z_SYNC_FLUSH?(this.onEnd(j.Z_OK),m.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===j.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=d,c.inflate=e,c.inflateRaw=f,c.ungzip=e},{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],4:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":3}],5:[function(a,b,c){"use strict";function d(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=d},{}],6:[function(a,b,c){"use strict";b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(a,b,c){"use strict";function d(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function e(a,b,c,d){var e=f,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^e[255&(a^b[h])];return-1^a}var f=d();b.exports=e},{}],8:[function(a,b,c){"use strict";function d(a,b){return a.msg=I[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(E.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){F._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,E.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=G(a.adler,b,e,c):2===a.state.wrap&&(a.adler=H(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-la?a.strstart-(a.w_size-la):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ka,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ka-(m-f),f=m-ka,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-la)){E.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ja)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===J)return ua;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return ua;if(a.strstart-a.block_start>=a.w_size-la&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?ua:ua}function o(a,b){for(var c,d;;){if(a.lookahead=ja&&(a.ins_h=(a.ins_h<=ja)if(d=F._tr_tally(a,a.strstart-a.match_start,a.match_length-ja),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ja){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=ja&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=ja-1)),a.prev_length>=ja&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ja,d=F._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ja),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=ja&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ka;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ka-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ja?(c=F._tr_tally(a,1,a.match_length-ja),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===J)return ua;break}if(a.match_length=0,c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function s(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e}function t(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=D[a.level].max_lazy,a.good_match=D[a.level].good_length,a.nice_match=D[a.level].nice_length,a.max_chain_length=D[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ja-1,a.match_available=0,a.ins_h=0}function u(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new E.Buf16(2*ha),this.dyn_dtree=new E.Buf16(2*(2*fa+1)),this.bl_tree=new E.Buf16(2*(2*ga+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new E.Buf16(ia+1),this.heap=new E.Buf16(2*ea+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new E.Buf16(2*ea+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=Z,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?na:sa,a.adler=2===b.wrap?0:1,b.last_flush=J,F._tr_init(b),O):d(a,Q)}function w(a){var b=v(a);return b===O&&t(a.state),b}function x(a,b){return a&&a.state?2!==a.state.wrap?Q:(a.state.gzhead=b,O):Q}function y(a,b,c,e,f,g){if(!a)return Q;var h=1;if(b===T&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>_||c!==$||8>e||e>15||0>b||b>9||0>g||g>X)return d(a,Q);8===e&&(e=9);var i=new u;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,w(a)}function z(a,b){return y(a,b,$,aa,ba,Y)}function A(a,b){var c,h,k,l;if(!a||!a.state||b>N||0>b)return a?d(a,Q):Q;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ta&&b!==M)return d(a,0===a.avail_out?S:Q);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===na)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=H(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=oa):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,ya),h.status=sa);else{var m=$+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=V||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ma),m+=31-m%31,h.status=sa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===oa)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=pa)}else h.status=pa;if(h.status===pa)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=qa)}else h.status=qa;if(h.status===qa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=ra)}else h.status=ra;if(h.status===ra&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=sa)):h.status=sa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,O}else if(0===a.avail_in&&e(b)<=e(c)&&b!==M)return d(a,S);if(h.status===ta&&0!==a.avail_in)return d(a,S);if(0!==a.avail_in||0!==h.lookahead||b!==J&&h.status!==ta){var o=h.strategy===V?r(h,b):h.strategy===W?q(h,b):D[h.level].func(h,b);if((o===wa||o===xa)&&(h.status=ta),o===ua||o===wa)return 0===a.avail_out&&(h.last_flush=-1),O;if(o===va&&(b===K?F._tr_align(h):b!==N&&(F._tr_stored_block(h,0,0,!1),b===L&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,O}return b!==M?O:h.wrap<=0?P:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?O:P)}function B(a){var b;return a&&a.state?(b=a.state.status,b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra&&b!==sa&&b!==ta?d(a,Q):(a.state=null,b===sa?d(a,R):O)):Q}function C(a,b){var c,d,e,g,h,i,j,k,l=b.length;if(!a||!a.state)return Q;if(c=a.state,g=c.wrap,2===g||1===g&&c.status!==na||c.lookahead)return Q;for(1===g&&(a.adler=G(a.adler,b,l,0)),c.wrap=0,l>=c.w_size&&(0===g&&(f(c.head),c.strstart=0,c.block_start=0,c.insert=0),k=new E.Buf8(c.w_size),E.arraySet(k,b,l-c.w_size,c.w_size,0),b=k,l=c.w_size),h=a.avail_in,i=a.next_in,j=a.input,a.avail_in=l,a.next_in=0,a.input=b,m(c);c.lookahead>=ja;){d=c.strstart,e=c.lookahead-(ja-1);do c.ins_h=(c.ins_h<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",c.mode=d;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&c.sane){a.msg="invalid distance too far back",c.mode=d;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),c.hold=p,c.bits=q}},{}],11:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new s.Buf16(320),this.work=new s.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=L,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new s.Buf32(pa),b.distcode=b.distdyn=new s.Buf32(qa),b.sane=1,b.back=-1,D):G}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):G}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?G:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):G}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==D&&(a.state=null),c):G}function j(a){return i(a,sa)}function k(a){if(ta){var b;for(q=new s.Buf32(512),r=new s.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(w(y,a.lens,0,288,q,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;w(z,a.lens,0,32,r,0,a.work,{bits:5}),ta=!1}a.lencode=q,a.lenbits=9,a.distcode=r,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(s.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),s.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(s.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=u(c.check,Ba,2,0),m=0,n=0,c.mode=M;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=ma;break}if((15&m)!==K){a.msg="unknown compression method",c.mode=ma;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=ma;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=N;case N:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=u(c.check,Ba,4,0)),m=0,n=0,c.mode=O;case O:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=P;case P:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=Q;case Q:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),s.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=R;case R:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=S;case S:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=T;case T:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=W;break;case U:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ja;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=Y;break;case 1:if(k(c),c.mode=ca,b===C){m>>>=2,n-=2;break a}break;case 2:c.mode=_;break;case 3:a.msg="invalid block type",c.mode=ma}m>>>=2,n-=2;break;case Y:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=ma;break}if(c.length=65535&m,m=0,n=0,c.mode=Z,b===C)break a;case Z:c.mode=$;case $:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;s.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=W;break;case _:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=ma;break}c.have=0,c.mode=aa;case aa:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=w(x,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=ma;break}c.have=0,c.mode=ba;case ba:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=ma;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=ma;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===ma)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=ma;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=w(y,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=ma;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=w(z,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=ma;break}if(c.mode=ca,b===C)break a;case ca:c.mode=da;case da:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,v(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===W&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ia;break}if(32&ra){c.back=-1,c.mode=W;break}if(64&ra){a.msg="invalid literal/length code",c.mode=ma;break}c.extra=15&ra,c.mode=ea;case ea:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=fa;case fa:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=ma;break}c.offset=sa,c.extra=15&ra,c.mode=ga;case ga:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=ma;break}c.mode=ha;case ha:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=ma;break}q>c.wnext?(q-=c.wnext,r=c.wsize-q):r=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,r=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[r++];while(--q);0===c.length&&(c.mode=da);break;case ia:if(0===j)break a;f[h++]=c.length,j--,c.mode=da;break;case ja:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[c+E]]++;for(H=C,G=e;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;e>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===h||1!==G))return-1;for(Q[1]=0,D=1;e>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[c+E]&&(r[Q[b[c+E]]++]=E);if(a===h?(N=R=r,y=19):a===i?(N=k,O-=257,R=l,S-=257,y=256):(N=m,R=n,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<f||a===j&&L>g)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[c+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<f||a===j&&L>g)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":3}],13:[function(a,b,c){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length}function f(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b}function g(a){return 256>a?ia[a]:ia[256+(a>>>7)]}function h(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function i(a,b,c){a.bi_valid>X-c?(a.bi_buf|=b<>X-a.bi_valid,a.bi_valid+=c-X):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function l(a){16===a.bi_valid?(h(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function m(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;W>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;V>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function n(a,b,c){var d,e,f=new Array(W+1),g=0;for(d=1;W>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=k(f[h]++,h))}}function o(){var a,b,c,d,f,g=new Array(W+1);for(c=0,d=0;Q-1>d;d++)for(ka[d]=c,a=0;a<1<d;d++)for(la[d]=f,a=0;a<1<>=7;T>d;d++)for(la[d]=f<<7,a=0;a<1<=b;b++)g[b]=0;for(a=0;143>=a;)ga[2*a+1]=8,a++,g[8]++;for(;255>=a;)ga[2*a+1]=9,a++,g[9]++;for(;279>=a;)ga[2*a+1]=7,a++,g[7]++;for(;287>=a;)ga[2*a+1]=8,a++,g[8]++;for(n(ga,S+1,g),a=0;T>a;a++)ha[2*a+1]=5,ha[2*a]=k(a,5);ma=new e(ga,ba,R+1,S,W),na=new e(ha,ca,0,T,W),oa=new e(new Array(0),da,0,U,Y)}function p(a){var b;for(b=0;S>b;b++)a.dyn_ltree[2*b]=0;for(b=0;T>b;b++)a.dyn_dtree[2*b]=0;for(b=0;U>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*Z]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function q(a){a.bi_valid>8?h(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function r(a,b,c,d){q(a),d&&(h(a,c),h(a,~c)),G.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function s(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)t(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],t(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,t(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],m(a,b),n(f,j,a.bl_count)}function w(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*$]++):10>=h?a.bl_tree[2*_]++:a.bl_tree[2*aa]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function x(a,b,c){var d,e,f=-1,g=b[1],h=0,k=7,l=4;for(0===g&&(k=138,l=3),d=0;c>=d;d++)if(e=g,g=b[2*(d+1)+1],!(++hh){do j(a,e,a.bl_tree);while(0!==--h)}else 0!==e?(e!==f&&(j(a,e,a.bl_tree),h--),j(a,$,a.bl_tree),i(a,h-3,2)):10>=h?(j(a,_,a.bl_tree),i(a,h-3,3)):(j(a,aa,a.bl_tree),i(a,h-11,7));h=0,f=e,0===g?(k=138,l=3):e===g?(k=6,l=3):(k=7,l=4)}}function y(a){var b;for(w(a,a.dyn_ltree,a.l_desc.max_code),w(a,a.dyn_dtree,a.d_desc.max_code),v(a,a.bl_desc),b=U-1;b>=3&&0===a.bl_tree[2*ea[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function z(a,b,c,d){var e;for(i(a,b-257,5),i(a,c-1,5),i(a,d-4,4),e=0;d>e;e++)i(a,a.bl_tree[2*ea[e]+1],3);x(a,a.dyn_ltree,b-1),x(a,a.dyn_dtree,c-1)}function A(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return I;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return J;for(b=32;R>b;b++)if(0!==a.dyn_ltree[2*b])return J;return I}function B(a){pa||(o(),pa=!0),a.l_desc=new f(a.dyn_ltree,ma),a.d_desc=new f(a.dyn_dtree,na),a.bl_desc=new f(a.bl_tree,oa),a.bi_buf=0,a.bi_valid=0,p(a)}function C(a,b,c,d){i(a,(L<<1)+(d?1:0),3),r(a,b,c,!0)}function D(a){i(a,M<<1,3),j(a,Z,ga),l(a)}function E(a,b,c,d){var e,f,g=0;a.level>0?(a.strm.data_type===K&&(a.strm.data_type=A(a)),v(a,a.l_desc),v(a,a.d_desc),g=y(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?C(a,b,c,d):a.strategy===H||f===e?(i(a,(M<<1)+(d?1:0),3),u(a,ga,ha)):(i(a,(N<<1)+(d?1:0),3),z(a,a.l_desc.max_code+1,a.d_desc.max_code+1,g+1),u(a,a.dyn_ltree,a.dyn_dtree)),p(a),d&&q(a)}function F(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ja[c]+R+1)]++,a.dyn_dtree[2*g(b)]++),a.last_lit===a.lit_bufsize-1}var G=a("../utils/common"),H=4,I=0,J=1,K=2,L=0,M=1,N=2,O=3,P=258,Q=29,R=256,S=R+1+Q,T=30,U=19,V=2*S+1,W=15,X=16,Y=7,Z=256,$=16,_=17,aa=18,ba=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ca=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],da=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ea=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa=512,ga=new Array(2*(S+2));d(ga);var ha=new Array(2*T);d(ha);var ia=new Array(fa);d(ia);var ja=new Array(P-O+1);d(ja);var ka=new Array(Q);d(ka);var la=new Array(T);d(la);var ma,na,oa,pa=!1;c._tr_init=B,c._tr_stored_block=C,c._tr_flush_block=E,c._tr_tally=F,c._tr_align=D},{"../utils/common":3}],15:[function(a,b,c){"use strict";function d(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=d},{}],"/":[function(a,b,c){"use strict";var d=a("./lib/utils/common").assign,e=a("./lib/deflate"),f=a("./lib/inflate"),g=a("./lib/zlib/constants"),h={};d(h,e,f,g),b.exports=h},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")}),function(){"use strict";BrainBrowser.utils={webglExtensionAvailable:function(a){if(!BrainBrowser.WEBGL_ENABLED)return!1;var b=document.createElement("canvas"),c=b.getContext("webgl")||b.getContext("experimental-webgl");return!!c.getExtension(a)},webGLErrorMessage:function(){var a,b='BrainBrowser requires WebGL.
';return b+=window.WebGLRenderingContext?"Your browser seems to support it, but it is
disabled or unavailable.
":"Your browser does not seem to support it.
",b+='Test your browser\'s WebGL support here.',a=document.createElement("div"),a.id="webgl-error",a.innerHTML=b,a},isFunction:function(a){return a instanceof Function||"function"==typeof a},isNumeric:function(a){return!isNaN(parseFloat(a))},createDataURL:function(a,b){if(!window.URL||!window.URL.createObjectURL)throw new Error("createDataURL requires URL.createObjectURL which does not seem to be available is this browser.");return window.URL.createObjectURL(new Blob([a],{type:b||"text/plain"}))},getWorkerImportURL:function(){var a=BrainBrowser.config.get("worker_dir"),b=document.location.origin+"/"+a,c=document.location.href,d=c.lastIndexOf("/");return d>=0&&(b=c.substring(0,d+1)+a),b},min:function(){var a=Array.prototype.slice.call(arguments);a=1===a.length&&BrainBrowser.utils.isNumeric(a[0].length)?a[0]:a;var b,c,d=a[0];for(b=1,c=a.length;c>b;b++)a[b]b;b++)a[b]>d&&(d=a[b]);return d},getOffset:function(a){for(var b=0,c=0;a.offsetParent;)b+=a.offsetTop,c+=a.offsetLeft,a=a.offsetParent;return{top:b,left:c}},captureMouse:function(a){var b={x:0,y:0,left:!1,middle:!1,right:!1};return document.addEventListener("mousemove",function(c){var d,e,f=BrainBrowser.utils.getOffset(a);void 0!==c.pageX?(d=c.pageX,e=c.pageY):(d=c.clientX+window.pageXOffset,e=c.clientY+window.pageYOffset),b.x=d-f.left,b.y=e-f.top},!1),a.addEventListener("mousedown",function(a){a.preventDefault(),0===a.button&&(b.left=!0),1===a.button&&(b.middle=!0),2===a.button&&(b.right=!0)},!1),a.addEventListener("mouseup",function(a){a.preventDefault(),0===a.button&&(b.left=!1),1===a.button&&(b.middle=!1),2===a.button&&(b.right=!1)},!1),a.addEventListener("mouseleave",function(a){a.preventDefault(),b.left=b.middle=b.right=!1},!1),a.addEventListener("contextmenu",function(a){a.preventDefault()},!1),b},captureTouch:function(a){function b(b){var d,e,f,g,h,i=BrainBrowser.utils.getOffset(a);for(c.length=g=b.touches.length,f=0;g>f;f++)h=b.touches[f],void 0!==h.pageX?(d=h.pageX,e=h.pageY):(d=h.clientX+window.pageXOffset,e=h.clientY+window.pageYOffset),c[f]=c[f]||{},c[f].x=d-i.left,c[f].y=e-i.top}var c=[];return a.addEventListener("touchstart",b,!1),a.addEventListener("touchmove",b,!1),a.addEventListener("touchend",b,!1),c}}}(),function(){"use strict";var a=BrainBrowser.VolumeViewer={};a.modules={},a.volume_loaders={},a.start=function(b,c){function d(){document.addEventListener("keydown",function(a){if(f.active_panel){var b,c,d=f.active_panel,e=d.volume,g=d.axis,h=a.which,i={17:function(){d.anchor||(d.mouse.left||d.mouse.middle||d.mouse.right)&&(d.anchor={x:d.mouse.x,y:d.mouse.y})},37:function(){b=d.slice.width_space.name,e.position[b]>0&&e.position[b]--},38:function(){b=d.slice.height_space.name,e.position[b]0&&e.position[b]--}};return"function"==typeof i[h]?(a.preventDefault(),i[h](),d.updated=!0,e.display.forEach(function(a){d!==a&&a.updateSlice()}),f.synced&&f.syncPosition(d,e,g),!1):32===h&&(a.preventDefault(),e.header.time)?(c=a.shiftKey?Math.max(0,e.current_time-1):Math.min(e.current_time+1,e.header.time.space_length-1),e.current_time=c,f.synced&&f.volumes.forEach(function(a){a!==e&&(a.current_time=Math.max(0,Math.min(c,a.header.time.space_length-1)))}),f.redrawVolumes(),!1):void 0}},!1),document.addEventListener("keyup",function(a){var b=a.which,c={17:function(){f.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})})}};return"function"==typeof c[b]?(a.preventDefault(),c[b](),!1):void 0},!1)}var e;e="string"==typeof b?document.getElementById(b):b;var f={dom_element:e,volumes:[],containers:[],synced:!1};return Object.keys(a.modules).forEach(function(b){a.modules[b](f)}),BrainBrowser.events.addEventModel(f),console.log("BrainBrowser Volume Viewer v"+BrainBrowser.version),d(),c(f),f}}(),function(){"use strict";BrainBrowser.VolumeViewer.createDisplay=function(){var a={},b={setPanel:function(c,d){a[c]&&a[c].triggerEvent("eventmodelcleanup"),d.propagateEventTo("*",b),a[c]=d},getPanel:function(b){return a[b]},refreshPanels:function(){b.forEach(function(a){a.updateSlice()})},setContrast:function(a){b.forEach(function(b){b.contrast=a})},setBrightness:function(a){b.forEach(function(b){b.brightness=a})},forEach:function(b){Object.keys(a).forEach(function(c,d){b(a[c],c,d)})}};return BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.forEach(function(a){a.triggerEvent("eventmodelcleanup")})}),b}}(),function(){"use strict";function a(a,b){a.slice=b,a.slice_image=a.volume.getSliceImage(a.slice,a.zoom,a.contrast,a.brightness)}function b(a,b){var c,d,e,f,g,h,i=a.context,j=a.getCursorPosition(),k=a.zoom,l=8*(k/a.default_zoom);b=b||"#FF0000",i.save(),i.strokeStyle=b,i.fillStyle=b,e=1,c=j.x,d=j.y,i.lineWidth=2*e,i.beginPath(),i.moveTo(c,d-l),i.lineTo(c,d-e),i.moveTo(c,d+e),i.lineTo(c,d+l),i.moveTo(c-l,d),i.lineTo(c-e,d),i.moveTo(c+e,d),i.lineTo(c+l,d),i.stroke(),a.anchor&&(g=(a.anchor.x-j.x)/a.zoom,h=(a.anchor.y-j.y)/a.zoom,f=Math.sqrt(g*g+h*h),i.font="bold 12px arial",a.canvas.width-j.x<50?(i.textAlign="right",c=j.x-l):(i.textAlign="left",c=j.x+l),j.y<30?(i.textBaseline="top",d=j.y+l):(i.textBaseline="bottom",d=j.y-l),i.fillText(f.toFixed(2),c,d),i.lineWidth=1,i.beginPath(),i.arc(a.anchor.x,a.anchor.y,2*e,0,2*Math.PI),i.fill(),i.moveTo(a.anchor.x,a.anchor.y),i.lineTo(j.x,j.y),i.stroke()),i.restore()}function c(a){var b,c=a.slice_image;c&&(b={x:a.image_center.x-a.slice_image.width/2,y:a.image_center.y-a.slice_image.height/2},a.context.putImageData(c,b.x,b.y))}function d(a){var b=a.slice;return{x:a.image_center.x-Math.abs(b.width_space.step*b.width_space.space_length*a.zoom)/2,y:a.image_center.y-Math.abs(b.height_space.step*b.height_space.space_length*a.zoom)/2}}BrainBrowser.VolumeViewer.createPanel=function(e){e=e||{};var f=0,g={x:0,y:0},h={x:0,y:0},i=null,j=[],k={image_center:{x:0,y:0},zoom:1,contrast:1,brightness:0,updated:!0,setSize:function(a,b,c){c=c||{},a=a>0?a:0,b=b>0?b:0;var d,e,f,g=c.scale_image;g&&(d=k.canvas.width,e=k.canvas.width,f=Math.min(a/d,b/e)),k.canvas.width=a,k.canvas.height=b,g&&(k.zoom=k.zoom*f,k.default_zoom=k.default_zoom*f,k.image_center.x=a/2,k.image_center.y=b/2,k.updateVolumePosition(),k.updateSlice()),k.updated=!0},followPointer:function(a){var b=a.x-h.x,c=a.y-h.y;return k.translateImage(b,c),h.x=a.x,h.y=a.y,{dx:b,dy:c}},translateImage:function(a,b){k.image_center.x+=a,k.image_center.y+=b,k.updated=!0},reset:function(){k.zoom=k.default_zoom,k.image_center.x=k.canvas.width/2,k.image_center.y=k.canvas.height/2,k.updated=!0},getCursorPosition:function(){var a=k.volume,b=k.slice,c=d(k);return{x:a.position[b.width_space.name]*Math.abs(b.width_space.step)*k.zoom+c.x,y:(b.height_space.space_length-a.position[b.height_space.name]-1)*Math.abs(b.height_space.step)*k.zoom+c.y}},updateVolumePosition:function(a,b){var c,e,f,g=d(k),h=k.zoom,i=k.volume,j=k.slice;(void 0===a||void 0===b)&&(c=k.getCursorPosition(),a=c.x,b=c.y),e=Math.round((a-g.x)/h/Math.abs(j.width_space.step)),f=Math.round(j.height_space.space_length-(b-g.y)/h/Math.abs(j.height_space.step)-1),i.position[k.slice.width_space.name]=e,i.position[k.slice.height_space.name]=f,k.updated=!0},updateSlice:function(b){clearTimeout(i),BrainBrowser.utils.isFunction(b)&&j.push(b),i=setTimeout(function(){var b,c=k.volume;b=c.slice(k.axis),a(k,b),k.triggerEvent("sliceupdate",{volume:c,slice:b}),k.updated=!0,j.forEach(function(a){a(b)}),j.length=0},0)},draw:function(a,d){var e=k.getCursorPosition();if((g.x!==e.x||g.y!==e.y)&&(g.x=e.x,g.y=e.y,k.updated=!0,k.triggerEvent("cursorupdate",{volume:k.volume,cursor:e})),f!==k.zoom&&(f=k.zoom,k.updated=!0,k.triggerEvent("zoom",{volume:k.volume,zoom:k.zoom})),k.touches[0]?(h.x=k.touches[0].x, +h.y=k.touches[0].y):(h.x=k.mouse.x,h.y=k.mouse.y),k.updated){var i=k.canvas,j=k.context,l=4,m=l/2;j.globalAlpha=255,j.clearRect(0,0,i.width,i.height),c(k),k.triggerEvent("draw",{volume:k.volume,cursor:e,canvas:i,context:j}),b(k,a),d&&(j.save(),j.strokeStyle="#EC2121",j.lineWidth=l,j.strokeRect(m,m,i.width-l,i.height-l),j.restore()),k.updated=!1}}};if(Object.keys(e).forEach(function(a){BrainBrowser.utils.isFunction(k[a])||(k[a]=e[a])}),BrainBrowser.events.addEventModel(k),k.canvas&&BrainBrowser.utils.isFunction(k.canvas.getContext)&&(k.context=k.canvas.getContext("2d"),k.mouse=BrainBrowser.utils.captureMouse(k.canvas),k.touches=BrainBrowser.utils.captureTouch(k.canvas)),k.volume){var l=k.volume;a(k,l.slice(k.axis)),k.default_zoom=l.getPreferredZoom(k.canvas.width,k.canvas.height),k.zoom=k.default_zoom}return k}}(),function(){"use strict";BrainBrowser.VolumeViewer.utils={nearestNeighbor:function(a,b,c,d,e,f){f=f||{};var g,h,i,j,k,l,m,n,o,p,q=f.block_size||1,r=f.array_type||Uint8ClampedArray;if(b===d&&c===e)return a;for(k=new r(d*e*q),g=b/d,h=c/e,m=0;e>m;m++)for(i=Math.floor(m*h)*b,n=m*d,l=0;d>l;l++)for(j=(i+Math.floor(l*g))*q,o=(n+l)*q,p=0;q>p;p++)k[o+p]=a[j+p];return k},flipArray:function(a,b,c,d){d=d||{};var e,f,g,h,i,j,k,l,m,n=d.flipx||!1,o=d.flipy||!1,p=d.block_size||1,q=new a.constructor(a.length);if(!n&&!o){for(e=0,f=a.length;f>e;e++)q[e]=a[e];return q}for(f=0;c>f;f++)for(j=f*b,i=o?c-f-1:f,l=i*b,e=0;b>e;e++)for(k=(j+e)*p,h=n?b-e-1:e,m=(l+h)*p,g=0;p>g;g++)q[k+g]=a[m+g];return q}}}(),BrainBrowser.VolumeViewer.modules.loading=function(a){"use strict";function b(a,b){var c,d=h.volume_loaders[a.type];if(!d)throw c="Unsuported Volume Type",BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);d(a,b)}function c(c,d,e){b(d,function(b){var f=0,h=d.views||["xspace","yspace","zspace"];BrainBrowser.events.addEventModel(b),b.addEventListener("eventmodelcleanup",function(){b.display.triggerEvent("eventmodelcleanup")}),a.volumes[c]=b,b.color_map=i,b.display=g(a.dom_element,c,d),b.propagateEventTo("*",a),["xspace","yspace","zspace"].forEach(function(a){b.position[a]=Math.floor(b.header[a].space_length/2)}),b.display.forEach(function(c){c.updateSlice(function(){++f===h.length&&(a.triggerEvent("volumeloaded",{volume:b}),BrainBrowser.utils.isFunction(e)&&e(b))})})})}function d(b,c,d){b.cursor_color=c,i=b,a.volumes.forEach(function(a){a.color_map=a.color_map||i}),BrainBrowser.utils.isFunction(d)&&d(b)}function e(b,c,d,e){c.cursor_color=d,a.setVolumeColorMap(b,c),BrainBrowser.utils.isFunction(e)&&e(a.volumes[b],c)}function f(a,b,c,d){var e=document.getElementById(c).innerHTML.replace(/\{\{VOLID\}\}/gm,b),f=document.createElement("div");f.innerHTML=e;var g,h,i,j=f.childNodes,k=f.getElementsByClassName(d)[0];for(g=0,h=a.childNodes.length;h>g;g++)i=a.childNodes[g],1===i.nodeType&&(k.appendChild(i),g--,h--);return j}function g(b,c,d){var e,g=document.createElement("div"),i=a.volumes[c],l=h.createDisplay(),m=d.template||{},n=d.views||["xspace","yspace","zspace"];l.propagateEventTo("*",i),g.classList.add("volume-container"),n.forEach(function(a){var b=document.createElement("canvas");b.width=j,b.height=k,b.classList.add("slice-display"),b.style.backgroundColor="#000000",g.appendChild(b),l.setPanel(a,h.createPanel({volume:i,volume_id:c,axis:a,canvas:b,image_center:{x:b.width/2,y:b.height/2}}))}),m.element_id&&m.viewer_insert_class&&(e=f(g,c,m.element_id,m.viewer_insert_class),"function"==typeof m.complete&&m.complete(i,e),Array.prototype.forEach.call(e,function(a){1===a.nodeType&&g.appendChild(a)})),function(){var b=null;n.forEach(function(d){function e(b,c,e){e&&(a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),r.anchor={x:b.x,y:b.y}),c||(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.syncPosition(r,i,d)),r.updated=!0}function f(b,e){var f;e?(f=r.followPointer(b),a.synced&&a.volumes.forEach(function(a,b){var e;b!==c&&(e=a.display.getPanel(d),e.translateImage(f.dx,f.dy))})):(r.updateVolumePosition(b.x,b.y),i.display.forEach(function(a){r!==a&&a.updateSlice()}),a.synced&&a.syncPosition(r,i,d)),r.updated=!0}function g(a){a.target===b&&(a.preventDefault(),f(r.mouse,a.shiftKey))}function h(a){a.target===b&&(a.preventDefault(),f(r.touches[0],r.touches.length===n.length))}function j(){document.removeEventListener("mousemove",g,!1),document.removeEventListener("mouseup",j,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function k(){document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),a.volumes.forEach(function(a){a.display.forEach(function(a){a.anchor=null})}),b=null}function m(a){var b,c=r.touches[0].x-r.touches[1].x,d=r.touches[0].y-r.touches[1].y,e=Math.sqrt(c*c+d*d);a.preventDefault(),null!==t&&(b=e-t,q(.2*b)),t=e}function o(){document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),t=null}function p(a){a.preventDefault(),q(Math.max(-1,Math.min(1,a.wheelDelta||-a.detail)))}function q(b){r.zoom*=0>b?1/1.05:1.05,r.zoom=Math.max(r.zoom,.25),r.updateVolumePosition(),r.updateSlice(),a.synced&&a.volumes.forEach(function(a,b){var e=a.display.getPanel(d);b!==c&&(e.zoom=r.zoom,e.updateVolumePosition(),e.updateSlice())})}var r=l.getPanel(d),s=r.canvas,t=null;s.addEventListener("mousedown",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,document.addEventListener("mousemove",g,!1),document.addEventListener("mouseup",j,!1),e(r.mouse,c.shiftKey,c.ctrlKey)},!1),s.addEventListener("touchstart",function(c){c.preventDefault(),b=c.target,a.active_panel&&(a.active_panel.updated=!0),a.active_panel=r,2===r.touches.length?(document.removeEventListener("touchmove",h,!1),document.removeEventListener("touchend",k,!1),document.addEventListener("touchmove",m,!1),document.addEventListener("touchend",o,!1)):(document.removeEventListener("touchmove",m,!1),document.removeEventListener("touchend",o,!1),document.addEventListener("touchmove",h,!1),document.addEventListener("touchend",k,!1),e(r.touches[0],3===r.touches.length,!0))},!1),s.addEventListener("mousewheel",p,!1),s.addEventListener("DOMMouseScroll",p,!1)})}(),a.containers[c]=g;var o,p=a.containers;for(o=c+1;o1?a.createOverlay(f,function(){BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")}):(BrainBrowser.utils.isFunction(i)&&i(),a.triggerEvent("volumesloaded")))})}b=b||{};var e,f=b.overlay&&"object"==typeof b.overlay?b.overlay:{},g=b.volumes,h=b.volumes.length,i=b.complete,j=0;for(e=0;h>e;e++)d(e)},a.loadVolumeColorMapFromURL=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromURL(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromURL=function(a,b,c){BrainBrowser.loader.loadColorMapFromURL(a,function(a){d(a,b,c)},{scale:255})},a.loadVolumeColorMapFromFile=function(a,b,c,d){BrainBrowser.loader.loadColorMapFromFile(b,function(b){e(a,b,c,d)},{scale:255})},a.loadDefaultColorMapFromFile=function(a,b,c){BrainBrowser.loader.loadColorMapFromFile(a,function(a){d(a,b,c)},{scale:255})},a.setVolumeColorMap=function(b,c){a.volumes[b].color_map=c},a.loadVolume=function(b,d){c(a.volumes.length,b,d)},a.clearVolumes=function(){a.volumes.forEach(function(a){a.triggerEvent("eventmodelcleanup")}),a.volumes=[],a.containers=[],a.active_panel=null,a.dom_element.innerHTML=""},a.createOverlay=function(b,c){b=b||{},a.loadVolume({volumes:a.volumes,type:"overlay",template:b.template},c)},a.setDefaultPanelSize=function(a,b){j=a,k=b},a.syncPosition=function(b,c,d){var e=c.getWorldCoords();a.volumes.forEach(function(a){if(a!==c){var b=a.display.getPanel(d);b.volume.setWorldCoords(e.x,e.y,e.z),b.updated=!0,a.display.forEach(function(a){a!==b&&a.updateSlice()})}})}},BrainBrowser.VolumeViewer.modules.rendering=function(a){"use strict";a.draw=function(){a.volumes.forEach(function(b){b.display.forEach(function(c){c.draw(b.color_map.cursor_color,a.active_panel===c)})})},a.render=function(){a.triggerEvent("rendering"),function b(){window.requestAnimationFrame(b),a.draw()}()},a.redrawVolume=function(b){var c=a.volumes[b];c.display.forEach(function(a){a.updateSlice()})},a.redrawVolumes=function(){a.volumes.forEach(function(b,c){a.redrawVolume(c)})},a.resetDisplays=function(){a.volumes.forEach(function(a){a.display.forEach(function(a){a.reset()})})},a.setPanelSize=function(b,c,d){a.volumes.forEach(function(a){a.display.forEach(function(a){a.setSize(b,c,d)})})}},function(){"use strict";function a(a){return"undefined"!=typeof a}function b(b){return a(b)?b.constructor.name:"undefined"}function c(a){if(a>=m.INT8&&a=m.FLT&&a<=m.DBL}function e(a,b){function d(){var a={};return a.hdr_offset=0,a.data_offset=0,a.data_length=0,a.n_filled=0,a.chunk_size=0,a.chunk_dims=[],a.sym_btree=0,a.sym_lheap=0,a.name="",a.attributes={},a.children=[],a.array=void 0,a.type=-1,a.inflate=!1,a.dims=[],a}function e(){da=Z}function f(){var a=Z-da;if(a%$!==0){var c=$-a%$;Z+=c,b&&console.log("skipping "+c+" bytes at "+a+" for alignmnent")}}function g(a){Z+=a}function h(a){Z=a}function i(){return Z}function j(){var a=ba.getUint8(Z);return Z+=1,a}function k(){var a=ba.getUint16(Z,_);return Z+=2,a}function l(){var a=ba.getUint32(Z,_);return Z+=4,a}function n(){var a=ba.getUint64(Z,_);return Z+=8,a}function o(){var a=ba.getFloat32(Z,_);return Z+=4,a}function p(){var a=ba.getFloat64(Z,_);return Z+=8,a}function q(a){var b=0;if(a=a||ca.offsz,4===a)b=ba.getUint32(Z,_);else{if(8!==a)throw new Error("Unsupported value for offset size "+a);b=ba.getUint64(Z,_)}return Z+=a,b}function r(){var a=ba.getUint64(Z,_);return Z+=ca.lensz,a}function s(a){var b,c,d="";for(b=0;a>b;b+=1){if(c=j(),0===c){Z+=a-b-1;break}d+=String.fromCharCode(c)}return d}function t(b,c,d){var e,f,g,h,i=Z;switch(d&&(Z=d),b){case m.INT8:e=new Int8Array(a,Z,c);break;case m.UINT8:e=new Uint8Array(a,Z,c);break;case m.INT16:if(Z%2!==0)for(g=new ArrayBuffer(c),f=c/2,e=new Int16Array(g),h=0;f>h;h+=1)e[h]=k();else e=new Int16Array(a,Z,c/2),Z+=c;break;case m.UINT16:if(Z%2!==0)for(g=new ArrayBuffer(c),f=c/2,e=new Uint16Array(g),h=0;f>h;h+=1)e[h]=k();else e=new Uint16Array(a,Z,c/2),Z+=c;break;case m.INT32:if(Z%4!==0)for(g=new ArrayBuffer(c),f=c/4,e=new Int32Array(g),h=0;f>h;h+=1)e[h]=l();else e=new Int32Array(a,Z,c/4),Z+=c;break;case m.UINT32:if(Z%4!==0)for(g=new ArrayBuffer(c),f=c/4,e=new Uint32Array(g),h=0;f>h;h+=1)e[h]=l();else e=new Uint32Array(a,Z,c/4),Z+=c;break;case m.FLT:if(Z%4!==0)for(g=new ArrayBuffer(c),f=c/4,e=new Float32Array(g),h=0;f>h;h+=1)e[h]=o();else e=new Float32Array(a,Z,c/4),Z+=c;break;case m.DBL:if(Z%8!==0)for(g=new ArrayBuffer(c),f=c/8,e=new Float64Array(g),h=0;f>h;h+=1)e[h]=p();else e=new Float64Array(a,Z,c/8),Z+=c;break;default:throw new Error("Bad type in getArray "+b)}return d&&(Z=i),e}function u(a){var b,c;switch(a){case 1:b=ba.getUint8(Z);break;case 2:b=ba.getUint16(Z,_);break;case 4:b=ba.getUint32(Z,_);break;case 8:b=ba.getUint64(Z,_);break;default:if(b=0,_)for(c=a-1;c>=0;c--)b=(b<<8)+ba.getUint8(Z+c);else for(c=0;a>c;c++)b=(b<<8)+ba.getUint8(Z+c)}return Z+=a,b}function v(a){var b;for(b=0;b2)throw new Error("Unsupported HDF5 superblock version "+a.sbver);return a.sbver<=1?(a.fsver=j(),a.rgver=j(),g(1),a.shver=j(),a.offsz=j(),a.lensz=j(),g(1),a.gln_k=k(),a.gin_k=k(),a.cflags=l(),1===a.sbver&&(a.isin_k=k(),g(2)),a.base_addr=q(a.offsz),a.gfsi_addr=q(a.offsz),a.eof_addr=q(a.offsz),a.dib_addr=q(a.offsz),a.root_ln_offs=q(a.offsz),a.root_addr=q(a.offsz),a.root_cache_type=l(),g(4),g(16)):(a.offsz=j(),a.lensz=j(),a.cflags=j(),a.base_addr=q(a.offsz),a.ext_addr=q(a.offsz),a.eof_addr=q(a.offsz),a.root_addr=q(a.offsz),a.checksum=l()),b&&console.log("HDF5 SB "+a.sbver+" "+a.offsz+" "+a.lensz+" "+a.cflags),a}function x(){var a={};if(!v("FRHP"))throw new Error("Bad or missing FRHP signature");a.ver=j(),a.idlen=k(),a.iof_el=k(),a.flags=j(),a.objmax=l(),a.objnid=r(),a.objbta=q(),a.nf_blk=r(),a.af_blk=q(),a.heap_total=r(),a.heap_alloc=r(),a.bai_offset=r(),a.heap_nobj=r(),a.heap_chuge=r(),a.heap_nhuge=r(),a.heap_ctiny=r(),a.heap_ntiny=r(),a.table_width=k(),a.start_blksz=r(),a.max_blksz=r(),a.max_heapsz=k(),a.rib_srows=k(),a.root_addr=q(),a.rib_crows=k();var c=Math.log2(a.max_blksz)-Math.log2(a.start_blksz)+2;if(a.K=Math.min(a.rib_crows,c)*a.table_width,a.N=a.rib_crows0)throw new Error("Filters present in fractal heap.");return a}function y(){var a={};if(!v("BTHD"))throw new Error("Bad or missing BTHD signature");return a.ver=j(),a.type=j(),a.nodesz=l(),a.recsz=k(),a.depth=k(),a.splitp=j(),a.mergep=j(),a.root_addr=q(),a.root_nrec=k(),a.total_nrec=r(),a.checksum=l(),b&&console.log("BTHD V"+a.ver+" T"+a.type+" "+a.nodesz+" "+a.recsz+" "+a.depth+" "+a.root_addr+" "+a.root_nrec+" "+a.total_nrec),a}function z(a,c,d,e){var f,g,k,m;if(1===c)for(f=0;d>f;f++){k=q(),m=r();var n=r();b&&console.log(" -> "+k+" "+m+" "+n+" "+ea),g=i(),n===ea&&(h(k),N(m,e)),h(g)}else{if(8!==c)throw new Error("Unhandled V2 btree type.");var o,p;o=a.max_heapsz/8;var s=Math.min(a.objmax,a.max_blksz);for(p=256>=s?1:65536>=s?2:4,f=0;d>f;f++){var t=j();if(0!==(192&t))throw new Error("Bad Fractal Heap ID version "+t);var v,w=48&t;if(16===w)ea=u(7);else{if(0!==w)throw new Error("Can't handle this Heap ID: "+t);k=u(o),m=u(p)}if(v=j(),l(),l(),b&&console.log(" -> "+t+" "+k+" "+m+" "+v),g=i(),16===w){h(a.objbta);var x=y();if(1!==x.type)throw new Error("Can only handle type-1 btrees");h(x.root_addr),A(a,x.root_nrec,e)}else{var z=T(a,k);z>=0&&(h(z),N(m,e))}h(g)}}}function A(a,c,d){if(!v("BTLF"))throw new Error("Bad or missing BTLF signature");var e=j(),f=j();b&&console.log("BTLF V"+e+" T"+f+" "+i()),z(a,f,c,d)}function B(a,c,d,e){if(!v("BTIN"))throw new Error("Bad or missing BTIN signature");var f,g=j(),h=j();for(b&&console.log("BTIN V"+g+" T"+h),z(a,h,c,e),f=0;c>=f;f++){var i,k=q(),l=u(1);d>1&&(i=u(1)),b&&console.log(" child->"+k+" "+l+" "+i)}}function C(a){if(af?f:b[d]}return e}function E(c){var d,e={};if(!v("TREE"))throw new Error("Bad TREE signature at "+i());if(e.keys=[],e.node_type=j(),e.node_level=j(),e.entries_used=k(),e.left_sibling=q(),e.right_sibling=q(),b&&console.log("BTREE type "+e.node_type+" lvl "+e.node_level+" n_used "+e.entries_used+" "+e.left_sibling+" "+e.right_sibling),c){var f,g=[];for(d=0;dm&&(r=d(),r.hdr_offset=o,a&&(t=i(),h(a.lh_dseg_off+n),r.name=s(a.lh_dseg_len),h(t)),b&&console.log(" "+m+" O "+n+" A "+o+" T "+p+" '"+r.name+"'"),c.children.push(r))}function G(){var a={};if(!v("HEAP"))throw new Error("Bad or missing HEAP signature");return a.lh_ver=j(),g(3),a.lh_dseg_len=r(),a.lh_flst_len=r(),a.lh_dseg_off=q(),b&&console.log("LHEAP V"+a.lh_ver+" "+a.lh_dseg_len+" "+a.lh_flst_len+" "+a.lh_dseg_off),a}function H(a,c){var d,e=j(),f=j(),h=j();g(1>=e?5:1);var i,k=1,l=[];for(i=0;f>i;i+=1)l[i]=r(),k*=l[i];d=f*ca.lensz+(1>=e?8:4);var m=[];if(0!==(1&h))for(d+=f*ca.lensz,i=0;f>i;i+=1)m[i]=r();var n=[];if(0!==(2&h))for(d+=f*ca.lensz,i=0;f>i;i+=1)n[i]=r();var o="hdf5MsgDataspace V"+e+" N"+f+" F"+h;return b&&(0!==f&&(o+="["+l.join(", ")+"]"),console.log(o)),a>d&&g(a-d),c&&(c.dims=l),k}function I(a){var c=j(),d=j();0!==(1&d)&&n();var e=q(),f=q();0!==(2&d)&&q(),b&&console.log("hdf5MsgLinkInfo V"+c+" F"+d+" FH "+e+" BT "+f);var g=i();if(e>4,u=15&s,v=[];for(o=0;3>o;o+=1)v[o]=j();var w=l();switch(b&&console.log("hdf5MsgDatatype V"+t+" C"+u+" "+J(u)+" "+v[0]+"."+v[1]+"."+v[2]+" "+w),u){case 0:switch(c=k(),d=k(),w){case 4:p.typ_type=8&v[0]?m.INT32:m.UINT32;break;case 2:p.typ_type=8&v[0]?m.INT16:m.UINT16;break;case 1:p.typ_type=8&v[0]?m.INT8:m.UINT8;break;default:throw new Error("Unknown type size "+w)}p.typ_length=w,q+=4,b&&console.log(" ("+c+" "+d+")");break;case 1:if(r="",b)switch(65&v[0]){case 0:r+="LE ";break;case 1:r+="BE ";break;case 65:r+="VX ";break;default:throw new Error("Reserved fp byte order: "+v[0])}if(c=k(),d=k(),e=j(),f=j(),h=j(),i=j(),n=l(),b&&(r+=c+" "+d+" "+e+" "+f+" "+h+" "+i+" "+n),64===d&&0===c&&52===e&&11===f&&0===h&&52===i&&1023===n&&8===w)p.typ_type=m.DBL;else{if(32!==d||0!==c||23!==e||8!==f||0!==h||23!==i||127!==n||4!==w)throw new Error("Unsupported floating-point type");p.typ_type=m.FLT}b&&console.log(r),p.typ_length=w,q+=12;break;case 3:p.typ_type=m.STR,p.typ_length=w;break;default:throw new Error("Unimplemented HDF5 data class "+u)}return a>q&&g(a-q),p}function L(a){var c,d,e,f,h,m,n,o="",p=j(),s=[],t=1;if(1===p||2===p){if(d=j(),c=j(),g(5),b&&(o+="hdf5MsgLayout V"+p+" N"+d+" C"+c),1===c||2===c){var u=q();b&&(o+=" A"+u),a.data_offset=u}for(f=0;d>f;f+=1)s[f]=l(),t*=s[f];b&&(o+="["+s.join(", ")+"]"),2===c&&(n=l(),a.chunk_dims=s,a.chunk_size=t*n,b&&(o+=" E"+n)),0===c?(e=l(),b&&(o+="("+e+")"),a.data_offset=i(),a.data_length=e):1===c&&(a.data_length=t)}else{if(3!==p)throw new Error("Illegal layout version "+p);if(c=j(),o="hdf5MsgLayout V"+p+" C"+c,0===c)e=k(),b&&(o+="("+e+")"),a.data_offset=i(),a.data_length=e;else if(1===c)h=q(),m=r(),b&&(o+="("+h+", "+m+")"),a.data_offset=h,a.data_length=m;else if(2===c){for(d=j(),h=q(),a.data_offset=h,a.chunk_size=1,f=0;d-1>f;f+=1)s[f]=l(),t*=s[f];b&&(o+="(N"+d+", A"+h+" ["+s.join(",")+"]"),n=l(),a.chunk_dims=s,a.chunk_size=t*n,b&&(o+=" E"+n)}}b&&console.log(o)}function M(a){var c=j(),d=j(),e="hdf5MsgPipeline V"+c+" N"+d;1===c&&g(6),b&&console.log(e);var f,h,i,l,m;for(f=0;d>f;f+=1){if(h=k(),1!==h)throw new Error("Unimplemented HDF5 filter "+h);if("object"!=typeof pako)throw new Error("Need pako to inflate data.");a.inflate=!0,i=1===c||h>256?k():0,l=k(),m=k(),0!==(1&m)&&(m+=1),0!==i&&g(i),g(4*m),b&&console.log(" "+f+" ID"+h+" F"+l+" "+m)}}function N(a,c){var d=j(),e=j(),f=k(),g=k(),h=k(),l="hdf5MsgAttribute V"+d+" F"+e+" "+a+": ";if(0!==(3&e))throw new Error("Shared dataspaces and datatypes are not supported.");if(3===d){var n=j();b&&(l+=0===n?"ASCII":"UTF-8")}b&&(l+="("+f+" "+g+" "+h+")"),3>d&&(f=8*Math.floor((f+7)/8),g=8*Math.floor((g+7)/8),h=8*Math.floor((h+7)/8),b&&(l+="/("+f+" "+g+" "+h+")"));var o=s(f);b&&(l+=" Name: "+o,console.log(l));var p=K(g),q=H(h),r=0;r=a>0?3>d?a-(8+f+g+h):a-(9+f+g+h):p.typ_length*q,b&&console.log(" attribute data size "+r+" "+i());var u;u=p.typ_type===m.STR?s(r):t(p.typ_type,r),c.attributes[o]=u}function O(){var a=4,c=8,d=j(),e=j();0!==(1&e)&&(k(),k()),0!==(2&e)&&(a=k(),c=k()),b&&console.log("hdf5MsgGroupInfo V"+d+" F"+e+" ENT "+a+" LNL "+c)}function P(a){var c=j(),e=0;if(1!==c)throw new Error("Bad link message version "+c);var f=j();0!==(8&f)&&(e=j()),0!==(4&f)&&n(),0!==(16&f)&&j();var g=1<<(3&f),h=u(g),i=d();i.name=s(h),0===(8&f)&&(i.hdr_offset=q()),b&&console.log("hdf5MsgLink V"+c+" F"+f+" T"+e+" NM "+i.name+" OF "+i.hdr_offset),a.children.push(i)}function Q(a,c,d,e){if(!v("FHDB"))throw new Error("Bad or missing FHDB signature");var f=j();if(0!==f)throw new Error("Bad FHDB version: "+f);q();var g=Math.ceil(a.max_heapsz/8),h=u(g);0!==(2&a.flags)&&l(),b&&console.log("FHDB V:"+f+" R:"+c+" O:"+h+" A:"+d);var i=5+ca.offsz+g;0!==(2&a.flags)&&(i+=4);var k;return k=1>=c?a.start_blksz:Math.pow(2,c-1)*a.start_blksz,e?e(c,d,h,k):!0}function R(a,c){if(!v("FHIB"))throw new Error("Bad or missing FHIB signature");var d=j();if(0!==d)throw new Error("Bad FHIB version: "+d);q();var e=Math.ceil(a.max_heapsz/8),f=u(e);b&&console.log("FHIB V:"+d+" O:"+f);var g,i,k=[];for(g=0;g=e&&e+f>b?(c=d+(b-e),!1):!0}),c}function U(a){var c=j();if(0!==c)throw new Error("Bad attribute information message version: "+c);var d=j();0!==(1&d)&&k();var e=q(),f=q();0!==(2&d)&&q(),b&&console.log("hdf5MsgAttrInfo V"+c+" F"+d+" HP "+e+" AN "+f);var g,l=i();if(e0?B(g,m.root_nrec,m.depth,a):A(g,m.root_nrec,a)}h(l)}function V(a,c){var d,e={};switch(a.hm_type){case 1:H(a.hm_size,c);break;case 2:I(c);break;case 3:d=K(a.hm_size),c&&(c.type=d.typ_type);break;case 6:P(c);break;case 8:L(c);break;case 10:O();break;case 11:M(c);break;case 12:N(a.hm_size,c);break;case 16:e.cq_off=q(),e.cq_len=r(),aa.push(e),b&&console.log("hdf5MsgObjHdrContinue "+e.cq_off+" "+e.cq_len);break;case 17:c.sym_btree=q(),c.sym_lheap=q(),b&&console.log("hdf5MsgSymbolTable "+c.sym_btree+" "+c.sym_lheap);break;case 21:U(c);break;case 0:case 4:case 5:case 7:case 18:case 19:case 20:case 22:case 24:g(a.hm_size);break;default:throw new Error("Unknown message type: "+a.hm_type)}}function W(a){if(!v("OHDR"))throw new Error("Bad or missing OHDR signature");var c=j(),d=j();0!==(32&d)&&(l(),l(),l(),l()),0!==(16&d)&&(k(),k());var e=1<<(3&d),f=u(e),m=0,n=0,o=f;b&&console.log("hdf5V2ObjectHeader V"+c+" F"+d+" HS"+f);for(var p,q,r;;){for(;o-n>=8;)p={},p.hm_type=j(),p.hm_size=k(),p.hm_flags=j(),b&&console.log(" msg"+m+" F"+p.hm_flags+" T "+p.hm_type+" S "+p.hm_size+" ("+n+"/"+o+") "+C(p.hm_type)),0!==(4&d)&&(p.hm_corder=k()),r=i(),V(p,a),h(r+p.hm_size),n+=p.hm_size+4,m+=1;if(o-n>4&&g(o-(n+4)),l(),0===aa.length)break;if(q=aa.shift(),h(q.cq_off),o=q.cq_len-4,n=0,b&&console.log("continuing with "+q.cq_len+" bytes at "+i()),!v("OCHK"))throw new Error("Bad v2 object continuation")}a.children.forEach(function(a,c){h(a.hdr_offset),b&&console.log(c+" "+a.hdr_offset+" "+a.name),v("OHDR")?(h(a.hdr_offset),W(a)):(h(a.hdr_offset),Y(a))})}function X(a){if(0!==a.chunk_size&&a.data_offset>0&&a.data_offset0&&a.data_offset=p){if(0===aa.length)break;d=aa.shift(),h(d.cq_off),p=d.cq_len,b&&console.log("continuing with "+p+" bytes at "+i()),e()}if(f(),n={},n.hm_type=k(),n.hm_size=k(),n.hm_flags=j(),n.hm_size%8!==0)throw new Error("Size is not 8-byte aligned: "+n.hm_size);g(3),p-=8+n.hm_size,b&&console.log(" msg"+m+" F "+n.hm_flags+" T "+n.hm_type+" S "+n.hm_size+"("+p+") "+C(n.hm_type)),o=i(),V(n,a),h(o+n.hm_size)}if(0!==a.sym_btree&&0!==a.sym_lheap){h(a.sym_btree);var q=E();h(a.sym_lheap);var r,s=G();for(r=0;rd;d+=1)e+=" ";e+=a.name+(a.children.length?"/":""),a.type>0&&(e+=" "+b(a.array),a.dims.length&&(e+="["+a.dims.join(", ")+"]"),e+=a.array?":"+a.array.length:" NULL"),console.log(e),Object.keys(a.attributes).forEach(function(g){var h=a.attributes[g];for(e="",d=0;2*c+1>d;d+=1)e+=" ";e+=a.name+":"+g+" "+b(h)+"["+h.length+"] ","string"==typeof h?e+=JSON.stringify(h):(e+="{"+f(h.slice(0,16),", "),h.length>16&&(e+=", ..."),e+="}"),console.log(e)}),a.children.forEach(function(a){g(a,c+1)})}function h(b,c,d){var e;return b.name===c&&b.type>0?e=b:b.children.find(function(b){return e=h(b,c,d+1),a(e)}),e}function i(b,c,d){var e=b.attributes[c];return e?e:(b.children.find(function(b){return e=i(b,c,d+1),a(e)}),e)}function j(a,b,c,e,f){var g=new ArrayBuffer(a.array.length*Float32Array.BYTES_PER_ELEMENT),h=new Float32Array(g),i=a.dims.length-b.dims.length;if(1>i)throw new Error("Too few slice dimensions: "+a.dims.length+" "+b.dims.length);var j,k=1;for(j=b.dims.length;jv;v+=1)w=p[m],we[1]?h[m]=0:(h[m]=w,l+=w,w>n&&(n=w),o>w&&(o=w)),m+=1;else for(s=e[1]-e[0],t=q[j]-r[j],u=r[j],v=0;k>v;v+=1)w=(p[m]-x)/s*t+u,h[m]=w,l+=w,m+=1,w>n&&(n=w),o>w&&(o=w);return f&&(console.log("Min: "+o),console.log("Max: "+n),console.log("Sum: "+l),console.log("Mean: "+l/m),console.log("Count: "+m)),g}function k(a,b){var c=a.order;return"Uint8Array"===b.array.constructor.name&&c.length>0&&"vector_dimension"===c[c.length-1]&&3===a.vector_dimension.space_length}function l(a){var b,c=a.array,d=c.length,e=new ArrayBuffer(d/3*4),f=new Uint8Array(e),g=0;for(b=0;d>b;b+=3)f[g+0]=c[b+0],f[g+1]=c[b+1],f[g+2]=c[b+2],f[g+3]=255,g+=4;return e}var m={INT8:1,UINT8:2,INT16:3,UINT16:4,INT32:5,UINT32:6,FLT:7,DBL:8,STR:9};Array.prototype.find||(Array.prototype.find=function(a){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof a)throw new TypeError("predicate must be a function");for(var b,c=Object(this),d=c.length>>>0,e=arguments[1],f=0;d>f;f++)if(b=c[f],a.call(e,b,f,c))return b;return void 0});var n=[0,1,1,2,2,4,4,4,8,0],o=BrainBrowser.VolumeViewer;o.utils.hdf5Loader=function(b){var c,d=!1;try{c=e(b,d)}catch(f){d&&(console.log(f),console.log("Trying as NetCDF...")),c=o.utils.netcdfReader(b,d)}d&&g(c,0);var n=h(c,"image");if(!a(n))throw new Error("Can't find image dataset.");var p=i(n,"valid_range",0);if(!a(p)){var q,r;switch(n.type){case m.INT8:q=-128,r=127;break;case m.UINT8:q=0,r=255;break;case m.INT16:q=-32768,r=32767;break;case m.UINT16:q=0,r=65535;break;case m.INT32:q=-(1<<31),r=(1<<31)-1;break;case m.UINT32:q=0,r=0}p=Float32Array.of(q,r)}var s=h(c,"image-min");a(s)&&a(s.array)||(s={array:Float32Array.of(0),dims:[]});var t=h(c,"image-max");a(t)&&a(t.array)||(t={array:Float32Array.of(1),dims:[]});var u={},v=i(n,"dimorder",0);if("string"!=typeof v)throw new Error("Can't find dimension order.");u.order=v.split(","),u.order.forEach(function(b){var d=h(c,b);if(!a(d))throw new Error("Can't find dimension variable "+b);if(u[b]={},v=i(d,"step",0),a(v)||(v=Float32Array.of(1)),u[b].step=v[0],v=i(d,"start",0),a(v)||(v=Float32Array.of(0)),u[b].start=v[0],v=i(d,"length",0),!a(v))throw new Error("Can't find length for "+b);u[b].space_length=v[0],v=i(d,"direction_cosines",0),a(v)?u[b].direction_cosines=Array.prototype.slice.call(v):"xspace"===b?u[b].direction_cosines=[1,0,0]:"yspace"===b?u[b].direction_cosines=[0,1,0]:"zspace"===b&&(u[b].direction_cosines=[0,0,1])});var w;return k(u,n)?(u.order.pop(),u.datatype="rgb8",w=l(n)):(u.datatype="float32",w=j(n,s,t,p,d)),{header_text:JSON.stringify(u),raw_data:w}}}(),function(){"use strict";function a(a,b){var c,f={order:["xspace","yspace","zspace"],xspace:{},yspace:{},zspace:{}},g=new DataView(a,0,284),h=!0,i=g.getUint32(0,!0);1===i?h=!0:16777216===i?h=!1:c="This does not look like an MGH file.";var j=0,k=[0,0,0,0],l=4,m=1;for(j=0;4>j&&(k[j]=g.getUint32(l,h),!(k[j]<=1));j++)m*=k[j],l+=4;(3>j||j>4)&&(c="Cannot handle "+j+"-dimensional images yet.");var n,o,p=g.getUint32(20,h),q=g.getUint16(28,h),r=[1,1,1],s=[[-1,0,0],[0,0,-1],[0,1,0],[0,0,0]]; +if(q){for(l=30,n=0;3>n;n++)r[n]=g.getFloat32(l,h),l+=4;for(n=0;4>n;n++)for(o=0;3>o;o++)s[n][o]=g.getFloat32(l,h),l+=4}if(e)for(n=0;3>n;n++){var t="";for(o=0;4>o;o++)t+="xyzc"[o]+"_"+"ras"[n]+" "+s[o][n]+" ";console.log(t)}for(var u=[0,1,2],v=0;3>v;v++){var w=0,x=Math.abs(s[v][0]),y=Math.abs(s[v][1]),z=Math.abs(s[v][2]);f.order[v]="xspace",y>x&&y>z&&(w=1,f.order[v]="yspace"),z>x&&z>y&&(w=2,f.order[v]="zspace"),u[v]=w}4===j&&(e&&console.log("Creating time dimension: "+k[3]),f.time={space_length:k[3],step:1,start:0,name:"time"},f.order.push("time"));var A=!1,B=[[0,0,0,0],[0,0,0,0],[0,0,0,0]];for(n=0;3>n;n++)for(o=0;3>o;o++)B[n][o]=s[o][n]*r[n];for(n=0;3>n;n++){var C=0;for(o=0;3>o;o++)C+=B[n][o]*(k[o]/2);A?B[n][3]=-C:B[n][3]=s[3][n]-C}var D=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]];for(n=0;3>n;n++)for(o=0;4>o;o++){var E=o;3>o&&(E=u[o]),D[n][E]=B[n][o]}if(d.utils.transformToMinc(D,f),void 0!==c)throw BrainBrowser.events.triggerEvent("error",{message:c}),new Error(c);for(f.datatype=p,f.little_endian=h,f.nvoxels=m,n=0;3>n;n++)f[f.order[n]].space_length=k[n];BrainBrowser.utils.isFunction(b)&&b(f)}function b(a,b,e){var f=d.createVolume(a,c(a,b));f.type="mgh",f.intensity_min=a.voxel_min,f.intensity_max=a.voxel_max,f.saveOriginAndTransform(a),BrainBrowser.utils.isFunction(e)&&e(f)}function c(a,b){var c=null,e=1;switch(a.datatype){case 0:e=1;break;case 1:case 3:e=4;break;case 4:e=2;break;default:var f="Unsupported data type: "+a.datatype;throw BrainBrowser.events.triggerEvent("error",{message:f}),new Error(f)}var g=a.nvoxels*e;switch(e>1&&!a.little_endian&&d.utils.swapn(new Uint8Array(b,284,g),e),a.datatype){case 0:c=new Uint8Array(b,284,a.nvoxels);break;case 1:c=new Int32Array(b,284,a.nvoxels);break;case 3:c=new Float32Array(b,284,a.nvoxels);break;case 4:c=new Int16Array(b,284,a.nvoxels)}d.utils.scanDataRange(c,a);var h,i=1;for(h=0;h0,A=s.step>0,B=q.step>0,C=0;if(l=B?b:q.space_length-b-1,l>=0&&l=0;h--)for(k=A?h:u-h-1,n=m+k*x,i=0;t>i;i++)j=z?i:t-i-1,o=n+j*w,y[C++]=g.data[o];return e={axis:a,data:y,width_space:r,height_space:s,width:t,height:u},f[a][c][b]=e,e},saveOriginAndTransform:function(a){var b=a.xspace.start,c=a.yspace.start,d=a.zspace.start,e=a.xspace.direction_cosines,f=a.yspace.direction_cosines,g=a.zspace.direction_cosines,h=a.xspace.step,i=a.yspace.step,j=a.zspace.step;a.voxel_origin={x:b*e[0]+c*f[0]+d*g[0],y:b*e[1]+c*f[1]+d*g[1],z:b*e[2]+c*f[2]+d*g[2]};var k=a.voxel_origin,l=(-k.x*e[0]-k.y*e[1]-k.z*e[2])/h,m=(-k.x*f[0]-k.y*f[1]-k.z*f[2])/i,n=(-k.x*g[0]-k.y*g[1]-k.z*g[2])/j;a.w2v=[[e[0]/h,e[1]/h,e[2]/h,l],[f[0]/i,f[1]/i,f[2]/i,m],[g[0]/j,g[1]/j,g[2]/j,n]]},getSliceImage:function(a,b,c,f){b=b||1;var h,i=g.color_map;if(!i)throw h="No color map set for this volume. Cannot render slice.",g.triggerEvent("error",h),new Error(h);var j=a.width_space.step,k=a.height_space.step,l=Math.abs(Math.floor(a.width*j*b)),m=Math.abs(Math.floor(a.height*k*b)),n=d.createImageData(a.width,a.height),o=d.createImageData(l,m);if("rgb8"===g.header.datatype){var p=new Uint8ClampedArray(a.data.buffer);n.data.set(p,0)}else i.mapColors(a.data,{min:g.intensity_min,max:g.intensity_max,contrast:c,brightness:f,destination:n.data});return o.data.set(e.utils.nearestNeighbor(n.data,n.width,n.height,l,m,{block_size:4})),o},getIntensityValue:function(a,b,c,d){var e=g.header,f=g.getVoxelCoords();if(a=void 0===a?f.i:a,b=void 0===b?f.j:b,c=void 0===c?f.k:c,d=void 0===d?g.current_time:d,0>a||a>=e[e.order[0]].space_length||0>b||b>=e[e.order[1]].space_length||0>c||c>=e[e.order[2]].space_length)return 0;var h=e.time?d*e.time.offset:0,i=a*e[e.order[0]].offset+b*e[e.order[1]].offset+c*e[e.order[2]].offset+h;return g.data[i]},getVoxelCoords:function(){var a=g.header,b={xspace:a.xspace.step>0?g.position.xspace:a.xspace.space_length-g.position.xspace,yspace:a.yspace.step>0?g.position.yspace:a.yspace.space_length-g.position.yspace,zspace:a.zspace.step>0?g.position.zspace:a.zspace.space_length-g.position.zspace};return{i:b[a.order[0]],j:b[a.order[1]],k:b[a.order[2]]}},setVoxelCoords:function(a,b,c){var d=g.header,e=d.order[0],f=d.order[1],h=d.order[2];g.position[e]=d[e].step>0?a:d[e].space_length-a,g.position[f]=d[f].step>0?b:d[f].space_length-b,g.position[h]=d[h].step>0?c:d[h].space_length-c},getWorldCoords:function(){var a=g.getVoxelCoords();return g.voxelToWorld(a.i,a.j,a.k)},setWorldCoords:function(a,b,c){var d=g.worldToVoxel(a,b,c);g.setVoxelCoords(d.i,d.j,d.k)},voxelToWorld:function(a,b,c){var d,e,f,h={},i=g.header;h[i.order[0]]=a,h[i.order[1]]=b,h[i.order[2]]=c,d=h.xspace,e=h.yspace,f=h.zspace;var j=i.xspace.direction_cosines,k=i.yspace.direction_cosines,l=i.zspace.direction_cosines,m=i.xspace.step,n=i.yspace.step,o=i.zspace.step,p=i.voxel_origin;return{x:d*j[0]*m+e*k[0]*n+f*l[0]*o+p.x,y:d*j[1]*m+e*k[1]*n+f*l[1]*o+p.y,z:d*j[2]*m+e*k[2]*n+f*l[2]*o+p.z}},worldToVoxel:function(b,c,d){var e=a.w2v,f={vx:b*e[0][0]+c*e[0][1]+d*e[0][2]+e[0][3],vy:b*e[1][0]+c*e[1][1]+d*e[1][2]+e[1][3],vz:b*e[2][0]+c*e[2][1]+d*e[2][2]+e[2][3]},g={};return g[a.order[0]]=Math.round(f.vx),g[a.order[1]]=Math.round(f.vy),g[a.order[2]]=Math.round(f.vz),{i:g.xspace,j:g.yspace,k:g.zspace}},getVoxelMin:function(){return g.header.voxel_min},getVoxelMax:function(){return g.header.voxel_max},getPreferredZoom:function(a,b){var c=g.header,d=c.xspace.space_length*Math.abs(c.xspace.step),e=c.yspace.space_length*Math.abs(c.yspace.step),f=c.zspace.space_length*Math.abs(c.xspace.step),h=a/d,i=a/e,j=b/e,k=b/f;return Math.min(i,h,k,j)}};return g},e.utils.scanDataRange=function(a,b){var c=0,d=+(1/0),e=-(1/0);for(c=0;ce&&(e=f),d>f&&(d=f)}b.voxel_min=d,b.voxel_max=e}}(),function(){"use strict";function a(a){if(a>=c.BYTE&&a0&&(h+=","),h+=c[g].name;h.length>0&&(a.attributes.dimorder=h)}var c={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6},d=[0,1,1,2,4,4,8],e=BrainBrowser.VolumeViewer;e.utils.netcdfReader=function(d,f){function g(){return{begin:0,vsize:0,name:"",attributes:{},children:[],array:void 0,type:-1,dims:[],nelem:0}}function h(){var a=x.getUint8(v);return v+=1,a}function i(){var a=x.getUint32(v,w);return v+=4,a}function j(a){var b,c,d="";for(b=0;a>b;b+=1){if(c=h(),0===c){v+=a-b-1;break}d+=String.fromCharCode(c)}return d}function k(a){return 4*Math.floor((a+3)/4)}function l(b,f,g,h){var i,j;if(h=h||v,b===c.CHAR)i=new Int8Array(d,h,f);else if(b===c.BYTE)i=new Uint8Array(d,h,f);else if(b===c.DOUBLE){var l=new ArrayBuffer(f),m=0;for(i=new Float64Array(l),j=0;f>j;j+=8)i[m]=x.getFloat64(h+j),m+=1}else{var n=f/a(b);if(e.utils.swapn(new Uint8Array(d,h,f),a(b)),b===c.SHORT)i=new Int16Array(d,h,n);else if(b===c.INT)i=new Int32Array(d,h,n);else{if(b!==c.FLOAT)throw"Bad type in getArray "+b;i=new Float32Array(d,h,n)}}return h===v&&(v+=k(f)),i}function m(){var a=j(3);if("CDF"!==a)return!1;var b=h();return 1!==b?!1:!0}function n(a,b,c){var d,e=i(),f=i();if(e===a)for(d=0;f>d;d++)b(c);else if(0!==e||0!==f)throw new Error("Protocol error.")}function o(){var a=i(),b=j(k(a)),c=i();y.push({name:b,length:c})}function p(){n(10,o)}function q(b){var d=i(),e=j(k(d)),f=i(),g=i(),h=l(f,a(f)*g,[]);if(f===c.CHAR){var m,n="";for(m=0;me;e++){if(f=i(),0>f||f>=y.length)throw new Error("Illegal dimension id: "+f);p.push(f),o.push(y[f].length),0===o[e]&&(s=!0)}r(q);var t=i(),u=i(),v=i();for(q.name=m,q.type=t,q.dims=o,q.dimids=p,q.vsize=u,q.begin=v,q.nelem=1,e=0;eb;b++)h=l(e.type,e.nelem,[],c),e.array.set(h,d),c+=g,d+=h.length}}var v=0,w=!1,x=new DataView(d),y=[];if(f=f||!1,!m())throw new Error("Sorry, this does not look like a NetCDF file.");var z=g(),A=i(),B=[];return p(),r(z),t(z),u(),z.dimensions=y,z.numrec=A,z}}(),function(){"use strict";function a(a,c){var d,f={order:[],xspace:{},yspace:{},zspace:{}},g=new DataView(a,0,348),h=new Uint8Array(a,0,348),i=!0,j=g.getUint32(0,!0);348===j?i=!0:1543569408===j?i=!1:d="This does not look like a NIfTI-1 file.";var k=g.getUint16(40,i);(3>k||k>4)&&(d="Cannot handle "+k+"-dimensional images yet.");var l=String.fromCharCode.apply(null,h.subarray(344,348));if("n+1\x00"!==l&&(d="Bad magic number: '"+l+"'"),void 0!==d)throw BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d);var m=g.getUint16(48,i),n=g.getUint16(70,i),o=g.getUint16(72,i),p=g.getFloat32(80,i),q=g.getFloat32(84,i),r=g.getFloat32(88,i),s=g.getFloat32(92,i),t=g.getFloat32(108,i);352>t&&(t=352);var u=g.getFloat32(112,i),v=g.getFloat32(116,i),w=g.getUint16(252,i),x=g.getUint16(254,i),y=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];if(m>=1&&(f.time={},f.time.space_length=m,f.time.step=s,f.time.start=0,f.time.name="time"),f.bytes_per_voxel=o/8,f.must_swap_data=!i&&f.bytes_per_voxel>1,x>0)y[0][0]=g.getFloat32(280,i),y[0][1]=g.getFloat32(284,i),y[0][2]=g.getFloat32(288,i),y[0][3]=g.getFloat32(292,i),y[1][0]=g.getFloat32(296,i),y[1][1]=g.getFloat32(300,i),y[1][2]=g.getFloat32(304,i),y[1][3]=g.getFloat32(308,i),y[2][0]=g.getFloat32(312,i),y[2][1]=g.getFloat32(316,i),y[2][2]=g.getFloat32(320,i),y[2][3]=g.getFloat32(324,i);else if(w>0){var z=g.getFloat32(256,i),A=g.getFloat32(260,i),B=g.getFloat32(264,i),C=g.getFloat32(268,i),D=g.getFloat32(272,i),E=g.getFloat32(276,i),F=g.getFloat32(76,i)<0?-1:1;y=b(z,A,B,C,D,E,p,q,r,F)}else y[0][0]=p,y[1][1]=q,y[2][2]=r;var G,H,I=[0,1,2],J=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]];for(G=0;3>G;G++){var K=Math.abs(y[0][G]),L=Math.abs(y[1][G]),M=Math.abs(y[2][G]);K>L&&K>M?(f.order[2-G]="xspace",I[G]=0):L>K&&L>M?(f.order[2-G]="yspace",I[G]=1):(f.order[2-G]="zspace",I[G]=2)}for(G=0;3>G;G++)for(H=0;4>H;H++){var N=H;3>H&&(N=I[H]),J[G][N]=y[G][H]}e.utils.transformToMinc(J,f),f[f.order[2]].space_length=g.getUint16(42,i),f[f.order[1]].space_length=g.getUint16(44,i),f[f.order[0]].space_length=g.getUint16(46,i),m>=1&&f.order.unshift("time"),f.datatype=n,f.vox_offset=t,f.scl_slope=u,f.scl_inter=v,BrainBrowser.utils.isFunction(c)&&c(f)}function b(a,b,c,d,e,f,g,h,i,j){var k,l,m,n,o=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]],p=a,q=b,r=c;return k=1-(p*p+q*q+r*r),1e-7>k?(k=1/Math.sqrt(p*p+q*q+r*r),p*=k,q*=k,r*=k,k=0):k=Math.sqrt(k),l=g>0?g:1,m=h>0?h:1,n=i>0?i:1,0>j&&(n=-n),o[0][0]=(k*k+p*p-q*q-r*r)*l,o[0][1]=2*(p*q-k*r)*m,o[0][2]=2*(p*r+k*q)*n,o[1][0]=2*(p*q+k*r)*l,o[1][1]=(k*k+q*q-p*p-r*r)*m,o[1][2]=2*(q*r-k*p)*n,o[2][0]=2*(p*r-k*q)*l,o[2][1]=2*(q*r+k*p)*m,o[2][2]=(k*k+r*r-q*q-p*p)*n,o[0][3]=d,o[1][3]=e,o[2][3]=f,o}function c(a,b,c){var f=e.createVolume(a,d(a,b));f.type="nifti",f.intensity_min=f.header.voxel_min,f.intensity_max=f.header.voxel_max,f.saveOriginAndTransform(a),BrainBrowser.utils.isFunction(c)&&c(f)}function d(a,b){var c=null;switch(a.must_swap_data&&e.utils.swapn(new Uint8Array(b,a.vox_offset),a.bytes_per_voxel),a.datatype){case 2:c=new Uint8Array(b,a.vox_offset);break;case 4:c=new Int16Array(b,a.vox_offset);break;case 8:c=new Int32Array(b,a.vox_offset);break;case 16:c=new Float32Array(b,a.vox_offset);break;case 64:c=new Float64Array(b,a.vox_offset);break;case 256:c=new Int8Array(b,a.vox_offset);break;case 512:c=new Uint16Array(b,a.vox_offset);break;case 768:c=new Uint32Array(b,a.vox_offset);break;default:var d="Unsupported data type: "+a.datatype;throw BrainBrowser.events.triggerEvent("error",{message:d}),new Error(d)}var f=0,g=a.scl_slope,h=a.scl_inter;if(0!==g){var i=new Float32Array(c.length);for(f=0;f=b&&(b=1),Math.sqrt(b)}function d(a,b,c){return a[0]*(b[1]*c[2]-b[2]*c[1])-a[1]*(b[0]*c[2]-b[2]*c[0])+a[2]*(b[0]*c[1]-b[1]*c[0])}for(var e=[],f=[],g=[],h=c(a[0]),i=c(a[1]),j=c(a[2]),k=a[0][0]<0?-h:h,l=a[1][1]<0?-i:i,m=a[2][2]<0?-j:j,n=0;3>n;n++)e[n]=a[n][0]/k,f[n]=a[n][1]/l,g[n]=a[n][2]/m;b.xspace.step=k,b.yspace.step=l,b.zspace.step=m;var o=[a[0][3],a[1][3],a[2][3]],p=d(e,f,g),q=d(o,f,g),r=d(e,o,g),s=d(e,f,o);b.xspace.start=q/p,b.yspace.start=r/p,b.zspace.start=s/p,b.xspace.direction_cosines=e,b.yspace.direction_cosines=f,b.zspace.direction_cosines=g},e.utils.swapn=function(a,b){for(var c=0;ce;){var f=a[c+d];a[c+d]=a[c+e],a[c+e]=f,d--,e++}}}(),function(){"use strict";function a(a,b,c){var d=a.length;if(1===d)return a[0];var e,f,g,h,i,j,k,l,m,n=c.data,o=c.width,p=c.height,q=new Uint32Array(a.length),r=new Float32Array(b);for(e=0;p>e;e+=1)for(m=e*o,f=0;o>f;f+=1)for(j=4*(m+f),k=0,g=0;d>g;g+=1)h=a[g],e=t;O--){for(var P={i:N.i,j:N.j,k:N.k},Q=r;s>Q;Q++){if(P.i<0||P.i>=D||P.j<0||P.j>=E||P.k<0||P.k>=F)H[I]=0;else{var R=w+Math.round(P.i)*A+Math.round(P.j)*B+Math.round(P.k)*C;G>I&&(H[I]=m.data[R])}I++,P.i+=L.di,P.j+=L.dj,P.k+=L.dk}N.i-=M.di,N.j-=M.dj,N.k-=M.dk}n.mapColors(H,{min:o,max:p,contrast:e,brightness:f,destination:q.data}),i.push(q)}),a(i,k.blend_ratios,c.createImageData(j,l))},k.getIntensityValue=function(a,b,c,d){var e=k.getVoxelCoords();a=void 0===a?e.i:a,b=void 0===b?e.j:b,c=void 0===c?e.k:c,d=void 0===d?this.current_time:d;var f=[],g=k.voxelToWorld(a,b,c);return this.volumes.forEach(function(a){var b=a.worldToVoxel(g.x,g.y,g.z);f.push(a.getIntensityValue(b.i,b.j,b.k,d))}),f.reduce(function(a,b,c){return a+b*k.blend_ratios[c]},0)},f.forEach(function(a){k.volumes.push(a),k.blend_ratios.push(1/f.length)}),BrainBrowser.utils.isFunction(e)&&e(k)}}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/deindex.worker.js b/build/brainbrowser-2.5.5/workers/deindex.worker.js new file mode 100644 index 00000000..e662d548 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/deindex.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a,c,d,e){a=a||[],c=c||[],d=d||[],e=e;var f,g,h,i,j,k,l,m,n,o,p=a.length,q=3*p,r=4*p,s=d.length>0,t={},u={};4===e.length&&(j=!0,f=e[0],g=e[1],h=e[2],i=e[3]);var v=new Float32Array(q),w=s?new Float32Array(q):null,x=new Float32Array(r);for(k=0,l=a.length;l>k;k++)b(t,c[3*a[k]],c[3*a[k]+1],c[3*a[k]+2]);for(u.x=t.min_x+(t.max_x-t.min_x)/2,u.y=t.min_y+(t.max_y-t.min_y)/2,u.z=t.min_z+(t.max_z-t.min_z)/2,k=0;p>k;k+=3)m=3*k,n=4*k,v[m]=c[3*a[k]],v[m+1]=c[3*a[k]+1],v[m+2]=c[3*a[k]+2],v[m+3]=c[3*a[k+1]],v[m+4]=c[3*a[k+1]+1],v[m+5]=c[3*a[k+1]+2],v[m+6]=c[3*a[k+2]],v[m+7]=c[3*a[k+2]+1],v[m+8]=c[3*a[k+2]+2],s&&(w[m]=d[3*a[k]],w[m+1]=d[3*a[k]+1],w[m+2]=d[3*a[k]+2],w[m+3]=d[3*a[k+1]],w[m+4]=d[3*a[k+1]+1],w[m+5]=d[3*a[k+1]+2],w[m+6]=d[3*a[k+2]],w[m+7]=d[3*a[k+2]+1],w[m+8]=d[3*a[k+2]+2]),j?(x[n]=f,x[n+1]=g,x[n+2]=h,x[n+3]=i,x[n+4]=f,x[n+5]=g,x[n+6]=h,x[n+7]=i,x[n+8]=f,x[n+9]=g,x[n+10]=h,x[n+11]=i):(x[n]=e[4*a[k]],x[n+1]=e[4*a[k]+1],x[n+2]=e[4*a[k]+2],x[n+3]=e[4*a[k]+3],x[n+4]=e[4*a[k+1]],x[n+5]=e[4*a[k+1]+1],x[n+6]=e[4*a[k+1]+2],x[n+7]=e[4*a[k+1]+3],x[n+8]=e[4*a[k+2]],x[n+9]=e[4*a[k+2]+1],x[n+10]=e[4*a[k+2]+2],x[n+11]=e[4*a[k+2]+3]);return o={centroid:u,bounding_box:t,unindexed:{position:v,normal:w,color:x}}}function b(a,b,c,d){(!a.min_x||a.min_x>b)&&(a.min_x=b),(!a.max_x||a.max_xc)&&(a.min_y=c),(!a.max_y||a.max_yd)&&(a.min_z=d),(!a.max_z||a.max_zc;c++)e=h[c],f=a(e.indices,i,j,e.color||k),e.centroid=f.centroid,e.unindexed=f.unindexed,l.push(e.indices.buffer),l.push(e.unindexed.position.buffer),e.unindexed.normal&&l.push(e.unindexed.normal.buffer),e.unindexed.color&&l.push(e.unindexed.color.buffer);j&&l.push(j.buffer),k&&l.push(k.buffer),g.deindexed=!0,self.postMessage(g,l)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/freesurferasc.intensity.worker.js b/build/brainbrowser-2.5.5/workers/freesurferasc.intensity.worker.js new file mode 100644 index 00000000..15e18755 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/freesurferasc.intensity.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h;for(a=a.trim(),c=a.split("\n"),f=c.length,b=new Float32Array(f),d=parseFloat(c[0].trim().split(/\s+/)[4]),b[0]=d,g=d,h=d,e=1;f>e;e++)d=parseFloat(c[e].trim().split(/\s+/)[4]),b[e]=d,g=Math.min(g,d),h=Math.max(h,d);return{values:new Float32Array(b),min:g,max:h}}self.addEventListener("message",function(b){var c=a(b.data.data);self.postMessage(c,[c.values.buffer])})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/freesurferasc.worker.js b/build/brainbrowser-2.5.5/workers/freesurferasc.worker.js new file mode 100644 index 00000000..e02c0d49 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/freesurferasc.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j={};for(a=a.split("\n"),d=a[1].trim().split(/\s+/),e=parseInt(d[0],10),f=parseInt(d[1],10),b=new Float32Array(3*e),c=new Uint32Array(3*f),h=0;e>h;h++)g=a[h+2].trim().split(/\s+/),i=3*h,b[i]=parseFloat(g[0]),b[i+1]=parseFloat(g[1]),b[i+2]=parseFloat(g[2]);for(h=0;f>h;h++)g=a[h+e+2].trim().split(/\s+/),i=3*h,c[i]=parseInt(g[0],10),c[i+1]=parseInt(g[1],10),c[i+2]=parseInt(g[2],10);return j.type="polygon",j.vertices=b,j.shapes=[{indices:c}],j}self.addEventListener("message",function(b){var c=a(b.data.data),d=[c.vertices.buffer,c.shapes[0].indices.buffer];self.postMessage(c,d)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/freesurferbin.intensity.worker.js b/build/brainbrowser-2.5.5/workers/freesurferbin.intensity.worker.js new file mode 100644 index 00000000..f7fd22b0 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/freesurferbin.intensity.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777215!==k)return{error:!0,error_message:"Unrecognized file format."};if(d=i.getUint32(j),j+=8,e=i.getUint32(j),j+=4,1!==e)return{error:!0,error_message:"Only one value per vertex supported. Number of values: "+e};for(c=new Float32Array(d),c[0]=f=g=i.getFloat32(j),j+=4,h=1;d>h;h++)c[h]=i.getFloat32(j),f=Math.min(f,c[h]),g=Math.max(g,c[h]),j+=4;return{values:c,min:f,max:g}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){var c=a(b.data.data);self.postMessage(c,[c.values.buffer])})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/freesurferbin.worker.js b/build/brainbrowser-2.5.5/workers/freesurferbin.worker.js new file mode 100644 index 00000000..4888e92b --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/freesurferbin.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var c,d,e,f,g,h,i=new DataView(a),j=0,k=b(i);if(j+=3,16777214!==k)return{error:!0,error_message:"Only triangle meshes supported."};for(;10!==i.getUint8(j)||10!==i.getUint8(j+1);)j++;for(j+=2,d=i.getUint32(j),j+=4,f=3*i.getUint32(j),j+=4,c=new Float32Array(3*d),e=new Uint32Array(f),g=0;d>g;g++)h=3*g,c[h]=i.getFloat32(j),j+=4,c[h+1]=i.getFloat32(j),j+=4,c[h+2]=i.getFloat32(j),j+=4;for(g=0;f>g;g++)e[g]=i.getUint32(j),j+=4;return{vertices:c,shapes:[{indices:e}]}}function b(a){var b,c=0;for(b=0;3>b;b++)c+=a.getUint8(b)<<8*(3-b-1);return c}self.addEventListener("message",function(b){var c=a(b.data.data),d=[c.vertices.buffer,c.shapes[0].indices.buffer];self.postMessage(c,d)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/gifti-reader.js b/build/brainbrowser-2.5.5/workers/gifti-reader.js new file mode 100644 index 00000000..3f4d0519 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/gifti-reader.js @@ -0,0 +1,35 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.gifti=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gl;l+=3)h=this._keyStr.indexOf(a.charAt(m++)),i=this._keyStr.indexOf(a.charAt(m++)),j=this._keyStr.indexOf(a.charAt(m++)),k=this._keyStr.indexOf(a.charAt(m++)),e=h<<2|i>>4,f=(15&i)<<4|j>>2,g=(3&j)<<6|k,d[l]=e,64!=j&&(d[l+1]=f),64!=k&&(d[l+2]=g);return d}},e=typeof b;"undefined"!==e&&b.exports&&(b.exports=d)},{}],2:[function(a,b,c){},{}],3:[function(a,b,c){(function(b){"use strict";function d(){try{var a=new Uint8Array(1);return a.foo=function(){return 42},42===a.foo()&&"function"==typeof a.subarray&&0===a.subarray(1,1).byteLength}catch(b){return!1}}function e(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function f(a){return this instanceof f?(f.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),"number"==typeof a?g(this,a):"string"==typeof a?h(this,a,arguments.length>1?arguments[1]:"utf8"):i(this,a)):arguments.length>1?new f(a,arguments[1]):new f(a)}function g(a,b){if(a=p(a,0>b?0:0|q(b)),!f.TYPED_ARRAY_SUPPORT)for(var c=0;b>c;c++)a[c]=0;return a}function h(a,b,c){("string"!=typeof c||""===c)&&(c="utf8");var d=0|s(b,c);return a=p(a,d),a.write(b,c),a}function i(a,b){if(f.isBuffer(b))return j(a,b);if(Y(b))return k(a,b);if(null==b)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(b.buffer instanceof ArrayBuffer)return l(a,b);if(b instanceof ArrayBuffer)return m(a,b)}return b.length?n(a,b):o(a,b)}function j(a,b){var c=0|q(b.length);return a=p(a,c),b.copy(a,0,0,c),a}function k(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function l(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function m(a,b){return b.byteLength,f.TYPED_ARRAY_SUPPORT?(a=new Uint8Array(b),a.__proto__=f.prototype):a=l(a,new Uint8Array(b)),a}function n(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function o(a,b){var c,d=0;"Buffer"===b.type&&Y(b.data)&&(c=b.data,d=0|q(c.length)),a=p(a,d);for(var e=0;d>e;e+=1)a[e]=255&c[e];return a}function p(a,b){f.TYPED_ARRAY_SUPPORT?(a=new Uint8Array(b),a.__proto__=f.prototype):a.length=b;var c=0!==b&&b<=f.poolSize>>>1;return c&&(a.parent=Z),a}function q(a){if(a>=e())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+e().toString(16)+" bytes");return 0|a}function r(a,b){if(!(this instanceof r))return new r(a,b);var c=new f(a,b);return delete c.parent,c}function s(a,b){"string"!=typeof a&&(a=""+a);var c=a.length;if(0===c)return 0;for(var d=!1;;)switch(b){case"ascii":case"binary":case"raw":case"raws":return c;case"utf8":case"utf-8":return R(a).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return U(a).length;default:if(d)return R(a).length;b=(""+b).toLowerCase(),d=!0}}function t(a,b,c){var d=!1;if(b=0|b,c=void 0===c||c===1/0?this.length:0|c,a||(a="utf8"),0>b&&(b=0),c>this.length&&(c=this.length),b>=c)return"";for(;;)switch(a){case"hex":return F(this,b,c);case"utf8":case"utf-8":return B(this,b,c);case"ascii":return D(this,b,c);case"binary":return E(this,b,c);case"base64":return A(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}}function u(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d),d>e&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;d>g;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function v(a,b,c,d){return V(R(b,a.length-c),a,c,d)}function w(a,b,c,d){return V(S(b),a,c,d)}function x(a,b,c,d){return w(a,b,c,d)}function y(a,b,c,d){return V(U(b),a,c,d)}function z(a,b,c,d){return V(T(b,a.length-c),a,c,d)}function A(a,b,c){return 0===b&&c===a.length?W.fromByteArray(a):W.fromByteArray(a.slice(b,c))}function B(a,b,c){c=Math.min(a.length,c);for(var d=[],e=b;c>e;){var f=a[e],g=null,h=f>239?4:f>223?3:f>191?2:1;if(c>=e+h){var i,j,k,l;switch(h){case 1:128>f&&(g=f);break;case 2:i=a[e+1],128===(192&i)&&(l=(31&f)<<6|63&i,l>127&&(g=l));break;case 3:i=a[e+1],j=a[e+2],128===(192&i)&&128===(192&j)&&(l=(15&f)<<12|(63&i)<<6|63&j,l>2047&&(55296>l||l>57343)&&(g=l));break;case 4:i=a[e+1],j=a[e+2],k=a[e+3],128===(192&i)&&128===(192&j)&&128===(192&k)&&(l=(15&f)<<18|(63&i)<<12|(63&j)<<6|63&k,l>65535&&1114112>l&&(g=l))}}null===g?(g=65533,h=1):g>65535&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|1023&g),d.push(g),e+=h}return C(d)}function C(a){var b=a.length;if($>=b)return String.fromCharCode.apply(String,a);for(var c="",d=0;b>d;)c+=String.fromCharCode.apply(String,a.slice(d,d+=$));return c}function D(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(127&a[e]);return d}function E(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(a[e]);return d}function F(a,b,c){var d=a.length;(!b||0>b)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=Q(a[f]);return e}function G(a,b,c){for(var d=a.slice(b,c),e="",f=0;fa)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function I(a,b,c,d,e,g){if(!f.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>e||g>b)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range")}function J(a,b,c,d){0>b&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);f>e;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function K(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);f>e;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function L(a,b,c,d,e,f){if(c+d>a.length)throw new RangeError("index out of range");if(0>c)throw new RangeError("index out of range")}function M(a,b,c,d,e){return e||L(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(a,b,c,d,23,4),c+4}function N(a,b,c,d,e){return e||L(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(a,b,c,d,52,8),c+8}function O(a){if(a=P(a).replace(_,""),a.length<2)return"";for(;a.length%4!==0;)a+="=";return a}function P(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Q(a){return 16>a?"0"+a.toString(16):a.toString(16)}function R(a,b){b=b||1/0;for(var c,d=a.length,e=null,f=[],g=0;d>g;g++){if(c=a.charCodeAt(g),c>55295&&57344>c){if(!e){if(c>56319){(b-=3)>-1&&f.push(239,191,189);continue}if(g+1===d){(b-=3)>-1&&f.push(239,191,189);continue}e=c;continue}if(56320>c){(b-=3)>-1&&f.push(239,191,189),e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&(b-=3)>-1&&f.push(239,191,189);if(e=null,128>c){if((b-=1)<0)break;f.push(c)}else if(2048>c){if((b-=2)<0)break;f.push(c>>6|192,63&c|128)}else if(65536>c){if((b-=3)<0)break;f.push(c>>12|224,c>>6&63|128,63&c|128)}else{if(!(1114112>c))throw new Error("Invalid code point");if((b-=4)<0)break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,63&c|128)}}return f}function S(a){for(var b=[],c=0;c>8,e=c%256,f.push(e),f.push(d);return f}function U(a){return W.toByteArray(O(a))}function V(a,b,c,d){for(var e=0;d>e&&!(e+c>=b.length||e>=a.length);e++)b[e+c]=a[e];return e}var W=a("base64-js"),X=a("ieee754"),Y=a("isarray");c.Buffer=f,c.SlowBuffer=r,c.INSPECT_MAX_BYTES=50,f.poolSize=8192;var Z={};f.TYPED_ARRAY_SUPPORT=void 0!==b.TYPED_ARRAY_SUPPORT?b.TYPED_ARRAY_SUPPORT:d(),f._augment=function(a){return a.__proto__=f.prototype,a},f.TYPED_ARRAY_SUPPORT?(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})):(f.prototype.length=void 0,f.prototype.parent=void 0),f.isBuffer=function(a){return!(null==a||!a._isBuffer)},f.compare=function(a,b){if(!f.isBuffer(a)||!f.isBuffer(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,g=Math.min(c,d);g>e&&a[e]===b[e];)++e;return e!==g&&(c=a[e],d=b[e]),d>c?-1:c>d?1:0},f.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(a,b){if(!Y(a))throw new TypeError("list argument must be an Array of Buffers.");if(0===a.length)return new f(0);var c;if(void 0===b)for(b=0,c=0;c0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),""},f.prototype.compare=function(a){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");return this===a?0:f.compare(this,a)},f.prototype.indexOf=function(a,b){function c(a,b,c){for(var d=-1,e=0;c+e2147483647?b=2147483647:-2147483648>b&&(b=-2147483648),b>>=0,0===this.length)return-1;if(b>=this.length)return-1;if(0>b&&(b=Math.max(this.length+b,0)),"string"==typeof a)return 0===a.length?-1:String.prototype.indexOf.call(this,a,b);if(f.isBuffer(a))return c(this,a,b);if("number"==typeof a)return f.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,a,b):c(this,[a],b);throw new TypeError("val must be string, number or Buffer")},f.prototype.write=function(a,b,c,d){if(void 0===b)d="utf8",c=this.length,b=0;else if(void 0===c&&"string"==typeof b)d=b,c=this.length,b=0;else if(isFinite(b))b=0|b,isFinite(c)?(c=0|c,void 0===d&&(d="utf8")):(d=c,c=void 0);else{var e=d;d=b,b=0|c,c=e}var f=this.length-b;if((void 0===c||c>f)&&(c=f),a.length>0&&(0>c||0>b)||b>this.length)throw new RangeError("attempt to write outside buffer bounds");d||(d="utf8");for(var g=!1;;)switch(d){case"hex":return u(this,a,b,c);case"utf8":case"utf-8":return v(this,a,b,c);case"ascii":return w(this,a,b,c);case"binary":return x(this,a,b,c);case"base64":return y(this,a,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return z(this,a,b,c);default:if(g)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase(),g=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;f.prototype.slice=function(a,b){var c=this.length;a=~~a,b=void 0===b?c:~~b,0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c),0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c),a>b&&(b=a);var d;if(f.TYPED_ARRAY_SUPPORT)d=this.subarray(a,b),d.__proto__=f.prototype;else{var e=b-a;d=new f(e,void 0);for(var g=0;e>g;g++)d[g]=this[g+a]}return d.length&&(d.parent=this.parent||this),d},f.prototype.readUIntLE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f0&&(e*=256);)d+=this[a+--b]*e;return d},f.prototype.readUInt8=function(a,b){return b||H(a,1,this.length),this[a]},f.prototype.readUInt16LE=function(a,b){return b||H(a,2,this.length),this[a]|this[a+1]<<8},f.prototype.readUInt16BE=function(a,b){return b||H(a,2,this.length),this[a]<<8|this[a+1]},f.prototype.readUInt32LE=function(a,b){return b||H(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},f.prototype.readUInt32BE=function(a,b){return b||H(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},f.prototype.readIntLE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f=e&&(d-=Math.pow(2,8*b)),d},f.prototype.readIntBE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=b,e=1,f=this[a+--d];d>0&&(e*=256);)f+=this[a+--d]*e;return e*=128,f>=e&&(f-=Math.pow(2,8*b)),f},f.prototype.readInt8=function(a,b){return b||H(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},f.prototype.readInt16LE=function(a,b){b||H(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt16BE=function(a,b){b||H(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt32LE=function(a,b){return b||H(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},f.prototype.readInt32BE=function(a,b){return b||H(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},f.prototype.readFloatLE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!0,23,4)},f.prototype.readFloatBE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!1,23,4)},f.prototype.readDoubleLE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!0,52,8)},f.prototype.readDoubleBE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!1,52,8)},f.prototype.writeUIntLE=function(a,b,c,d){a=+a,b=0|b,c=0|c,d||I(this,a,b,c,Math.pow(2,8*c),0);var e=1,f=0;for(this[b]=255&a;++f=0&&(f*=256);)this[b+e]=a/f&255;return b+c},f.prototype.writeUInt8=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,1,255,0),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=255&a,b+1},f.prototype.writeUInt16LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeUInt16BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeUInt32LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=255&a):K(this,a,b,!0),b+4},f.prototype.writeUInt32BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeIntLE=function(a,b,c,d){if(a=+a,b=0|b,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=0,g=1,h=0>a?1:0;for(this[b]=255&a;++f>0)-h&255;return b+c},f.prototype.writeIntBE=function(a,b,c,d){if(a=+a,b=0|b,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=c-1,g=1,h=0>a?1:0;for(this[b+f]=255&a;--f>=0&&(g*=256);)this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeInt8=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,1,127,-128),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),0>a&&(a=255+a+1),this[b]=255&a,b+1},f.prototype.writeInt16LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeInt16BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeInt32LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):K(this,a,b,!0),b+4},f.prototype.writeInt32BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,2147483647,-2147483648),0>a&&(a=4294967295+a+1),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeFloatLE=function(a,b,c){return M(this,a,b,!0,c)},f.prototype.writeFloatBE=function(a,b,c){return M(this,a,b,!1,c)},f.prototype.writeDoubleLE=function(a,b,c){return N(this,a,b,!0,c)},f.prototype.writeDoubleBE=function(a,b,c){return N(this,a,b,!1,c)},f.prototype.copy=function(a,b,c,d){if(c||(c=0),d||0===d||(d=this.length),b>=a.length&&(b=a.length),b||(b=0),d>0&&c>d&&(d=c),d===c)return 0;if(0===a.length||0===this.length)return 0;if(0>b)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-bc&&d>b)for(e=g-1;e>=0;e--)a[e+b]=this[e+c];else if(1e3>g||!f.TYPED_ARRAY_SUPPORT)for(e=0;g>e;e++)a[e+b]=this[e+c];else Uint8Array.prototype.set.call(a,this.subarray(c,c+g),b);return g},f.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),b>c)throw new RangeError("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new RangeError("start out of bounds");if(0>c||c>this.length)throw new RangeError("end out of bounds");var d;if("number"==typeof a)for(d=b;c>d;d++)this[d]=a;else{var e=R(a.toString()),f=e.length;for(d=b;c>d;d++)this[d]=e[d%f]}return this}};var _=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"base64-js":4,ieee754:5,isarray:6}],4:[function(a,b,c){!function(a){"use strict";function b(a){var b=k[a.charCodeAt(0)];return void 0!==b?b:-1}function c(a){function c(a){i[k++]=a}var d,e,f,g,h,i;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var j=a.length;h="="===a.charAt(j-2)?2:"="===a.charAt(j-1)?1:0,i=new l(3*a.length/4-h),f=h>0?a.length-4:a.length;var k=0;for(d=0,e=0;f>d;d+=4,e+=3)g=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&g)>>16),c((65280&g)>>8),c(255&g);return 2===h?(g=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&g)):1===h&&(g=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(g>>8&255),c(255&g)),i}function d(a){return j[a]}function e(a){return d(a>>18&63)+d(a>>12&63)+d(a>>6&63)+d(63&a)}function f(a,b,c){for(var d,f=[],g=b;c>g;g+=3)d=(a[g]<<16)+(a[g+1]<<8)+a[g+2],f.push(e(d));return f.join("")}function g(a){var b,c,e,g=a.length%3,h="",i=[],j=16383;for(b=0,e=a.length-g;e>b;b+=j)i.push(f(a,b,b+j>e?e:b+j));switch(g){case 1:c=a[a.length-1],h+=d(c>>2),h+=d(c<<4&63),h+="==";break;case 2:c=(a[a.length-2]<<8)+a[a.length-1],h+=d(c>>10),h+=d(c>>4&63),h+=d(c<<2&63),h+="="}return i.push(h),i.join("")}var h,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=[];for(h=0;h>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?NaN:(n?-1:1)*(1/0);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=0>b||0===b&&0>1/b?1:0;for(b=Math.abs(b),isNaN(b)||b===1/0?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],6:[function(a,b,c){var d={}.toString;b.exports=Array.isArray||function(a){return"[object Array]"==d.call(a)}},{}],7:[function(a,b,c){function d(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function e(a){return"function"==typeof a}function f(a){return"number"==typeof a}function g(a){return"object"==typeof a&&null!==a}function h(a){return void 0===a}b.exports=d,d.EventEmitter=d,d.prototype._events=void 0,d.prototype._maxListeners=void 0,d.defaultMaxListeners=10,d.prototype.setMaxListeners=function(a){if(!f(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},d.prototype.emit=function(a){var b,c,d,f,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||g(this._events.error)&&!this._events.error.length)){if(b=arguments[1],b instanceof Error)throw b;throw TypeError('Uncaught, unspecified "error" event.')}if(c=this._events[a],h(c))return!1;if(e(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:f=Array.prototype.slice.call(arguments,1),c.apply(this,f)}else if(g(c))for(f=Array.prototype.slice.call(arguments,1),j=c.slice(),d=j.length,i=0;d>i;i++)j[i].apply(this,f);return!0},d.prototype.addListener=function(a,b){var c;if(!e(b))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,e(b.listener)?b.listener:b),this._events[a]?g(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,g(this._events[a])&&!this._events[a].warned&&(c=h(this._maxListeners)?d.defaultMaxListeners:this._maxListeners,c&&c>0&&this._events[a].length>c&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())),this},d.prototype.on=d.prototype.addListener,d.prototype.once=function(a,b){function c(){this.removeListener(a,c),d||(d=!0,b.apply(this,arguments))}if(!e(b))throw TypeError("listener must be a function");var d=!1;return c.listener=b,this.on(a,c),this},d.prototype.removeListener=function(a,b){var c,d,f,h;if(!e(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],f=c.length,d=-1,c===b||e(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(g(c)){for(h=f;h-->0;)if(c[h]===b||c[h].listener&&c[h].listener===b){d=h;break}if(0>d)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(d,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},d.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],e(c))this.removeListener(a,c);else if(c)for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},d.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?e(this._events[a])?[this._events[a]]:this._events[a].slice():[]},d.prototype.listenerCount=function(a){if(this._events){var b=this._events[a];if(e(b))return 1;if(b)return b.length}return 0},d.listenerCount=function(a,b){return a.listenerCount(b)}},{}],8:[function(a,b,c){"function"==typeof Object.create?b.exports=function(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:b.exports=function(a,b){a.super_=b;var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a}},{}],9:[function(a,b,c){b.exports=function(a){return!(null==a||!(a._isBuffer||a.constructor&&"function"==typeof a.constructor.isBuffer&&a.constructor.isBuffer(a)))}},{}],10:[function(a,b,c){b.exports=Array.isArray||function(a){return"[object Array]"==Object.prototype.toString.call(a)}},{}],11:[function(a,b,c){function d(){k=!1,h.length?j=h.concat(j):l=-1,j.length&&e()}function e(){if(!k){var a=setTimeout(d);k=!0;for(var b=j.length;b;){for(h=j,j=[];++l1)for(var c=1;c0)if(b.ended&&!e){var h=new Error("stream.push() after EOF");a.emit("error",h)}else if(b.endEmitted&&e){var h=new Error("stream.unshift() after end event");a.emit("error",h)}else!b.decoder||e||d||(c=b.decoder.write(c)),e||(b.reading=!1),b.flowing&&0===b.length&&!b.sync?(a.emit("data",c),a.read(0)):(b.length+=b.objectMode?1:c.length,e?b.buffer.unshift(c):b.buffer.push(c),b.needReadable&&l(a)),n(a,b);else e||(b.reading=!1);return g(b)}function g(a){return!a.ended&&(a.needReadable||a.length=J?a=J:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a}function i(a,b){return 0===b.length&&b.ended?0:b.objectMode?0===a?0:1:null===a||isNaN(a)?b.flowing&&b.buffer.length?b.buffer[0].length:b.length:0>=a?0:(a>b.highWaterMark&&(b.highWaterMark=h(a)),a>b.length?b.ended?b.length:(b.needReadable=!0,0):a)}function j(a,b){var c=null;return B.isBuffer(b)||"string"==typeof b||null===b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function k(a,b){if(!b.ended){if(b.decoder){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,l(a)}}function l(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(F("emitReadable",b.flowing),b.emittedReadable=!0,b.sync?z(m,a):m(a))}function m(a){F("emit readable"),a.emit("readable"),t(a)}function n(a,b){b.readingMore||(b.readingMore=!0,z(o,a,b))}function o(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length=e)c=f?d.join(""):1===d.length?d[0]:B.concat(d,e),d.length=0;else if(aj&&a>i;j++){var h=d[0],l=Math.min(a-i,h.length);f?c+=h.slice(0,l):h.copy(c,i,0,l),l0)throw new Error("endReadable called on non-empty stream");b.endEmitted||(b.ended=!0,z(w,b,a))}function w(a,b){a.endEmitted||0!==a.length||(a.endEmitted=!0,b.readable=!1,b.emit("end"))}function x(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}function y(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}b.exports=e;var z=a("process-nextick-args"),A=a("isarray"),B=a("buffer").Buffer;e.ReadableState=d;var C,D=(a("events"),function(a,b){return a.listeners(b).length});!function(){try{C=a("stream")}catch(b){}finally{C||(C=a("events").EventEmitter)}}();var B=a("buffer").Buffer,E=a("core-util-is");E.inherits=a("inherits");var F,G=a("util");F=G&&G.debuglog?G.debuglog("stream"):function(){};var H;E.inherits(e,C);var I,I;e.prototype.push=function(a,b){var c=this._readableState;return c.objectMode||"string"!=typeof a||(b=b||c.defaultEncoding,b!==c.encoding&&(a=new B(a,b), +b="")),f(this,c,a,b,!1)},e.prototype.unshift=function(a){var b=this._readableState;return f(this,b,a,"",!0)},e.prototype.isPaused=function(){return this._readableState.flowing===!1},e.prototype.setEncoding=function(b){return H||(H=a("string_decoder/").StringDecoder),this._readableState.decoder=new H(b),this._readableState.encoding=b,this};var J=8388608;e.prototype.read=function(a){F("read",a);var b=this._readableState,c=a;if(("number"!=typeof a||a>0)&&(b.emittedReadable=!1),0===a&&b.needReadable&&(b.length>=b.highWaterMark||b.ended))return F("read: emitReadable",b.length,b.ended),0===b.length&&b.ended?v(this):l(this),null;if(a=i(a,b),0===a&&b.ended)return 0===b.length&&v(this),null;var d=b.needReadable;F("need readable",d),(0===b.length||b.length-a0?u(a,b):null,null===e&&(b.needReadable=!0,a=0),b.length-=a,0!==b.length||b.ended||(b.needReadable=!0),c!==a&&b.ended&&0===b.length&&v(this),null!==e&&this.emit("data",e),e},e.prototype._read=function(a){this.emit("error",new Error("not implemented"))},e.prototype.pipe=function(a,b){function d(a){F("onunpipe"),a===l&&f()}function e(){F("onend"),a.end()}function f(){F("cleanup"),a.removeListener("close",i),a.removeListener("finish",j),a.removeListener("drain",q),a.removeListener("error",h),a.removeListener("unpipe",d),l.removeListener("end",e),l.removeListener("end",f),l.removeListener("data",g),r=!0,!m.awaitDrain||a._writableState&&!a._writableState.needDrain||q()}function g(b){F("ondata");var c=a.write(b);!1===c&&(1!==m.pipesCount||m.pipes[0]!==a||1!==l.listenerCount("data")||r||(F("false write response, pause",l._readableState.awaitDrain),l._readableState.awaitDrain++),l.pause())}function h(b){F("onerror",b),k(),a.removeListener("error",h),0===D(a,"error")&&a.emit("error",b)}function i(){a.removeListener("finish",j),k()}function j(){F("onfinish"),a.removeListener("close",i),k()}function k(){F("unpipe"),l.unpipe(a)}var l=this,m=this._readableState;switch(m.pipesCount){case 0:m.pipes=a;break;case 1:m.pipes=[m.pipes,a];break;default:m.pipes.push(a)}m.pipesCount+=1,F("pipe count=%d opts=%j",m.pipesCount,b);var n=(!b||b.end!==!1)&&a!==c.stdout&&a!==c.stderr,o=n?e:f;m.endEmitted?z(o):l.once("end",o),a.on("unpipe",d);var q=p(l);a.on("drain",q);var r=!1;return l.on("data",g),a._events&&a._events.error?A(a._events.error)?a._events.error.unshift(h):a._events.error=[h,a._events.error]:a.on("error",h),a.once("close",i),a.once("finish",j),a.emit("pipe",l),m.flowing||(F("pipe resume"),l.resume()),a},e.prototype.unpipe=function(a){var b=this._readableState;if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,b.flowing=!1,a&&a.emit("unpipe",this),this);if(!a){var c=b.pipes,d=b.pipesCount;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var e=0;d>e;e++)c[e].emit("unpipe",this);return this}var e=y(b.pipes,a);return-1===e?this:(b.pipes.splice(e,1),b.pipesCount-=1,1===b.pipesCount&&(b.pipes=b.pipes[0]),a.emit("unpipe",this),this)},e.prototype.on=function(a,b){var c=C.prototype.on.call(this,a,b);if("data"===a&&!1!==this._readableState.flowing&&this.resume(),"readable"===a&&this.readable){var d=this._readableState;d.readableListening||(d.readableListening=!0,d.emittedReadable=!1,d.needReadable=!0,d.reading?d.length&&l(this,d):z(q,this))}return c},e.prototype.addListener=e.prototype.on,e.prototype.resume=function(){var a=this._readableState;return a.flowing||(F("resume"),a.flowing=!0,r(this,a)),this},e.prototype.pause=function(){return F("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(F("pause"),this._readableState.flowing=!1,this.emit("pause")),this},e.prototype.wrap=function(a){var b=this._readableState,c=!1,d=this;a.on("end",function(){if(F("wrapped end"),b.decoder&&!b.ended){var a=b.decoder.end();a&&a.length&&d.push(a)}d.push(null)}),a.on("data",function(e){if(F("wrapped data"),b.decoder&&(e=b.decoder.write(e)),(!b.objectMode||null!==e&&void 0!==e)&&(b.objectMode||e&&e.length)){var f=d.push(e);f||(c=!0,a.pause())}});for(var e in a)void 0===this[e]&&"function"==typeof a[e]&&(this[e]=function(b){return function(){return a[b].apply(a,arguments)}}(e));var f=["error","close","destroy","pause","resume"];return x(f,function(b){a.on(b,d.emit.bind(d,b))}),d._read=function(b){F("wrapped _read",b),c&&(c=!1,a.resume())},d},e._fromList=u}).call(this,a("_process"))},{"./_stream_duplex":13,_process:11,buffer:3,"core-util-is":18,events:7,inherits:8,isarray:10,"process-nextick-args":19,"string_decoder/":26,util:2}],16:[function(a,b,c){"use strict";function d(a){this.afterTransform=function(b,c){return e(a,b,c)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function e(a,b,c){var d=a._transformState;d.transforming=!1;var e=d.writecb;if(!e)return a.emit("error",new Error("no writecb in Transform class"));d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&a.push(c),e&&e(b);var f=a._readableState;f.reading=!1,(f.needReadable||f.length-1))throw new TypeError("Unknown encoding: "+a);this._writableState.defaultEncoding=a},g.prototype._write=function(a,b,c){c(new Error("not implemented"))},g.prototype._writev=null,g.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),null!==a&&void 0!==a&&this.write(a,b),d.corked&&(d.corked=1,this.uncork()),d.ending||d.finished||v(this,d,c)}},{"./_stream_duplex":13,buffer:3,"core-util-is":18,events:7,inherits:8,"process-nextick-args":19,"util-deprecate":20}],18:[function(a,b,c){(function(a){function b(a){return Array.isArray?Array.isArray(a):"[object Array]"===q(a)}function d(a){return"boolean"==typeof a}function e(a){return null===a}function f(a){return null==a}function g(a){return"number"==typeof a}function h(a){return"string"==typeof a}function i(a){return"symbol"==typeof a}function j(a){return void 0===a}function k(a){return"[object RegExp]"===q(a)}function l(a){return"object"==typeof a&&null!==a}function m(a){return"[object Date]"===q(a)}function n(a){return"[object Error]"===q(a)||a instanceof Error}function o(a){return"function"==typeof a}function p(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function q(a){return Object.prototype.toString.call(a)}c.isArray=b,c.isBoolean=d,c.isNull=e,c.isNullOrUndefined=f,c.isNumber=g,c.isString=h,c.isSymbol=i,c.isUndefined=j,c.isRegExp=k,c.isObject=l,c.isDate=m,c.isError=n,c.isFunction=o,c.isPrimitive=p,c.isBuffer=a.isBuffer}).call(this,{isBuffer:a("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":9}],19:[function(a,b,c){(function(a){"use strict";function c(b){for(var c=new Array(arguments.length-1),d=0;d=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived=55296&&56319>=d)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&56319>=d){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(2>=b&&c>>4==14){this.charLength=3;break}if(3>=b&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{buffer:3}],27:[function(a,b,c){"use strict";var d=a("./lib/utils/common").assign,e=a("./lib/deflate"),f=a("./lib/inflate"),g=a("./lib/zlib/constants"),h={};d(h,e,f,g),b.exports=h},{"./lib/deflate":28,"./lib/inflate":29,"./lib/utils/common":30,"./lib/zlib/constants":33}],28:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=i.assign({level:s,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:t,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=h.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==p)throw new Error(k[c]);b.header&&h.deflateSetHeader(this.strm,b.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}function g(a,b){return b=b||{},b.gzip=!0,e(a,b)}var h=a("./zlib/deflate"),i=a("./utils/common"),j=a("./utils/strings"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=Object.prototype.toString,n=0,o=4,p=0,q=1,r=2,s=-1,t=0,u=8;d.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?o:n,"string"==typeof a?e.input=j.string2buf(a):"[object ArrayBuffer]"===m.call(a)?e.input=new Uint8Array(a):e.input=a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new i.Buf8(f),e.next_out=0,e.avail_out=f),c=h.deflate(e,d),c!==q&&c!==p)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&(d===o||d===r))&&("string"===this.options.to?this.onData(j.buf2binstring(i.shrinkBuf(e.output,e.next_out))):this.onData(i.shrinkBuf(e.output,e.next_out)))}while((e.avail_in>0||0===e.avail_out)&&c!==q);return d===o?(c=h.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===p):d===r?(this.onEnd(p),e.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===p&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=d,c.deflate=e,c.deflateRaw=f,c.gzip=g},{"./utils/common":30,"./utils/strings":31,"./zlib/deflate":35,"./zlib/messages":40,"./zlib/zstream":42}],29:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=h.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=g.inflateInit2(this.strm,b.windowBits);if(c!==j.Z_OK)throw new Error(k[c]);this.header=new m,g.inflateGetHeader(this.strm,this.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}var g=a("./zlib/inflate"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/constants"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=a("./zlib/gzheader"),n=Object.prototype.toString;d.prototype.push=function(a,b){var c,d,e,f,k,l=this.strm,m=this.options.chunkSize,o=!1;if(this.ended)return!1;d=b===~~b?b:b===!0?j.Z_FINISH:j.Z_NO_FLUSH,"string"==typeof a?l.input=i.binstring2buf(a):"[object ArrayBuffer]"===n.call(a)?l.input=new Uint8Array(a):l.input=a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new h.Buf8(m),l.next_out=0,l.avail_out=m),c=g.inflate(l,j.Z_NO_FLUSH),c===j.Z_BUF_ERROR&&o===!0&&(c=j.Z_OK,o=!1),c!==j.Z_STREAM_END&&c!==j.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===j.Z_STREAM_END||0===l.avail_in&&(d===j.Z_FINISH||d===j.Z_SYNC_FLUSH))&&("string"===this.options.to?(e=i.utf8border(l.output,l.next_out),f=l.next_out-e,k=i.buf2string(l.output,e),l.next_out=f,l.avail_out=m-f,f&&h.arraySet(l.output,l.output,e,f,0),this.onData(k)):this.onData(h.shrinkBuf(l.output,l.next_out))),0===l.avail_in&&0===l.avail_out&&(o=!0)}while((l.avail_in>0||0===l.avail_out)&&c!==j.Z_STREAM_END);return c===j.Z_STREAM_END&&(d=j.Z_FINISH),d===j.Z_FINISH?(c=g.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===j.Z_OK):d===j.Z_SYNC_FLUSH?(this.onEnd(j.Z_OK),l.avail_out=0,!0):!0},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===j.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=d,c.inflate=e,c.inflateRaw=f,c.ungzip=e},{"./utils/common":30,"./utils/strings":31,"./zlib/constants":33,"./zlib/gzheader":36,"./zlib/inflate":38,"./zlib/messages":40,"./zlib/zstream":42}],30:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],31:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":30}],32:[function(a,b,c){"use strict";function d(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=d},{}],33:[function(a,b,c){"use strict";b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],34:[function(a,b,c){"use strict";function d(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function e(a,b,c,d){var e=f,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^e[255&(a^b[h])];return-1^a}var f=d();b.exports=e},{}],35:[function(a,b,c){"use strict";function d(a,b){return a.msg=H[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(D.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){E._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,D.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=F(a.adler,b,e,c):2===a.state.wrap&&(a.adler=G(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ka?a.strstart-(a.w_size-ka):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ja,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ja-(m-f),f=m-ja,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ka)){D.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ia)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===I)return ta;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return ta;if(a.strstart-a.block_start>=a.w_size-ka&&(h(a,!1),0===a.strm.avail_out))return ta}return a.insert=0,b===L?(h(a,!0),0===a.strm.avail_out?va:wa):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?ta:ta}function o(a,b){for(var c,d;;){if(a.lookahead=ia&&(a.ins_h=(a.ins_h<=ia)if(d=E._tr_tally(a,a.strstart-a.match_start,a.match_length-ia),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ia){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=ia&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=ia-1)),a.prev_length>=ia&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ia,d=E._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ia),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=ia&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ja;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ja-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ia?(c=E._tr_tally(a,1,a.match_length-ia),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=E._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return ta}return a.insert=0,b===L?(h(a,!0),0===a.strm.avail_out?va:wa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ta:ua}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===I)return ta;break}if(a.match_length=0,c=E._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return ta}return a.insert=0,b===L?(h(a,!0),0===a.strm.avail_out?va:wa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ta:ua}function s(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e}function t(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=C[a.level].max_lazy,a.good_match=C[a.level].good_length,a.nice_match=C[a.level].nice_length,a.max_chain_length=C[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ia-1,a.match_available=0,a.ins_h=0}function u(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Z,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new D.Buf16(2*ga),this.dyn_dtree=new D.Buf16(2*(2*ea+1)),this.bl_tree=new D.Buf16(2*(2*fa+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new D.Buf16(ha+1),this.heap=new D.Buf16(2*da+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new D.Buf16(2*da+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=Y,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?ma:ra,a.adler=2===b.wrap?0:1,b.last_flush=I,E._tr_init(b),N):d(a,P)}function w(a){var b=v(a);return b===N&&t(a.state),b}function x(a,b){return a&&a.state?2!==a.state.wrap?P:(a.state.gzhead=b,N):P}function y(a,b,c,e,f,g){if(!a)return P;var h=1;if(b===S&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>$||c!==Z||8>e||e>15||0>b||b>9||0>g||g>W)return d(a,P);8===e&&(e=9);var i=new u;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,w(a)}function z(a,b){return y(a,b,Z,_,aa,X)}function A(a,b){var c,h,k,l;if(!a||!a.state||b>M||0>b)return a?d(a,P):P;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===sa&&b!==L)return d(a,0===a.avail_out?R:P);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===ma)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=U||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=G(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=na):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=U||h.level<2?4:0),i(h,xa),h.status=ra);else{var m=Z+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=U||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=la),m+=31-m%31,h.status=ra,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===na)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=oa)}else h.status=oa;if(h.status===oa)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=pa)}else h.status=pa;if(h.status===pa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=G(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=qa)}else h.status=qa;if(h.status===qa&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=ra)):h.status=ra),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,N}else if(0===a.avail_in&&e(b)<=e(c)&&b!==L)return d(a,R);if(h.status===sa&&0!==a.avail_in)return d(a,R);if(0!==a.avail_in||0!==h.lookahead||b!==I&&h.status!==sa){var o=h.strategy===U?r(h,b):h.strategy===V?q(h,b):C[h.level].func(h,b);if((o===va||o===wa)&&(h.status=sa),o===ta||o===va)return 0===a.avail_out&&(h.last_flush=-1),N;if(o===ua&&(b===J?E._tr_align(h):b!==M&&(E._tr_stored_block(h,0,0,!1),b===K&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,N}return b!==L?N:h.wrap<=0?O:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?N:O)}function B(a){var b;return a&&a.state?(b=a.state.status,b!==ma&&b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra&&b!==sa?d(a,P):(a.state=null,b===ra?d(a,Q):N)):P}var C,D=a("../utils/common"),E=a("./trees"),F=a("./adler32"),G=a("./crc32"),H=a("./messages"),I=0,J=1,K=3,L=4,M=5,N=0,O=1,P=-2,Q=-3,R=-5,S=-1,T=1,U=2,V=3,W=4,X=0,Y=2,Z=8,$=9,_=15,aa=8,ba=29,ca=256,da=ca+1+ba,ea=30,fa=19,ga=2*da+1,ha=15,ia=3,ja=258,ka=ja+ia+1,la=32,ma=42,na=69,oa=73,pa=91,qa=103,ra=113,sa=666,ta=1,ua=2,va=3,wa=4,xa=3;C=[new s(0,0,0,0,n),new s(4,4,8,4,o),new s(4,5,16,8,o),new s(4,6,32,32,o),new s(4,4,16,16,p),new s(8,16,32,32,p),new s(8,16,128,128,p),new s(8,32,128,256,p),new s(32,128,258,1024,p),new s(32,258,258,4096,p)],c.deflateInit=z,c.deflateInit2=y,c.deflateReset=w,c.deflateResetKeep=v,c.deflateSetHeader=x,c.deflate=A,c.deflateEnd=B,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":30,"./adler32":32,"./crc32":34,"./messages":40,"./trees":41}],36:[function(a,b,c){"use strict";function d(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=d},{}],37:[function(a,b,c){"use strict";var d=30,e=12;b.exports=function(a,b){var c,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;c=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=c.dmax,l=c.wsize,m=c.whave,n=c.wnext,o=c.window,p=c.hold,q=c.bits,r=c.lencode,s=c.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",c.mode=d;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&c.sane){a.msg="invalid distance too far back",c.mode=d;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),c.hold=p,c.bits=q}},{}],38:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,ra)}function k(a){if(sa){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sa=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=la;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=la;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=la;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg="invalid literal/length code",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[oa++];while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[c+E]]++;for(H=C,G=e;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;e>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===h||1!==G))return-1;for(Q[1]=0,D=1;e>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[c+E]&&(r[Q[b[c+E]]++]=E);if(a===h?(N=R=r,y=19):a===i?(N=k,O-=257,R=l,S-=257,y=256):(N=m,R=n,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<f||a===j&&L>g)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[c+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<f||a===j&&L>g)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":30}],40:[function(a,b,c){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],41:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length}function f(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b}function g(a){return 256>a?ia[a]:ia[256+(a>>>7)]}function h(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function i(a,b,c){a.bi_valid>X-c?(a.bi_buf|=b<>X-a.bi_valid,a.bi_valid+=c-X):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function l(a){16===a.bi_valid?(h(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function m(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;W>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;V>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function n(a,b,c){var d,e,f=new Array(W+1),g=0;for(d=1;W>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=k(f[h]++,h))}}function o(){var a,b,c,d,f,g=new Array(W+1);for(c=0,d=0;Q-1>d;d++)for(ka[d]=c,a=0;a<1<d;d++)for(la[d]=f,a=0;a<1<>=7;T>d;d++)for(la[d]=f<<7,a=0;a<1<=b;b++)g[b]=0;for(a=0;143>=a;)ga[2*a+1]=8,a++,g[8]++;for(;255>=a;)ga[2*a+1]=9,a++,g[9]++;for(;279>=a;)ga[2*a+1]=7,a++,g[7]++;for(;287>=a;)ga[2*a+1]=8,a++,g[8]++;for(n(ga,S+1,g),a=0;T>a;a++)ha[2*a+1]=5,ha[2*a]=k(a,5);ma=new e(ga,ba,R+1,S,W),na=new e(ha,ca,0,T,W),oa=new e(new Array(0),da,0,U,Y)}function p(a){var b;for(b=0;S>b;b++)a.dyn_ltree[2*b]=0;for(b=0;T>b;b++)a.dyn_dtree[2*b]=0;for(b=0;U>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*Z]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function q(a){a.bi_valid>8?h(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function r(a,b,c,d){q(a),d&&(h(a,c),h(a,~c)),G.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function s(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)t(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],t(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,t(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],m(a,b),n(f,j,a.bl_count)}function w(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*$]++):10>=h?a.bl_tree[2*_]++:a.bl_tree[2*aa]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function x(a,b,c){var d,e,f=-1,g=b[1],h=0,k=7,l=4;for(0===g&&(k=138,l=3),d=0;c>=d;d++)if(e=g,g=b[2*(d+1)+1],!(++hh){do j(a,e,a.bl_tree);while(0!==--h)}else 0!==e?(e!==f&&(j(a,e,a.bl_tree),h--),j(a,$,a.bl_tree),i(a,h-3,2)):10>=h?(j(a,_,a.bl_tree),i(a,h-3,3)):(j(a,aa,a.bl_tree),i(a,h-11,7));h=0,f=e,0===g?(k=138,l=3):e===g?(k=6,l=3):(k=7,l=4)}}function y(a){var b;for(w(a,a.dyn_ltree,a.l_desc.max_code),w(a,a.dyn_dtree,a.d_desc.max_code),v(a,a.bl_desc),b=U-1;b>=3&&0===a.bl_tree[2*ea[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function z(a,b,c,d){var e;for(i(a,b-257,5),i(a,c-1,5),i(a,d-4,4),e=0;d>e;e++)i(a,a.bl_tree[2*ea[e]+1],3);x(a,a.dyn_ltree,b-1),x(a,a.dyn_dtree,c-1)}function A(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return I;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return J;for(b=32;R>b;b++)if(0!==a.dyn_ltree[2*b])return J;return I}function B(a){pa||(o(),pa=!0),a.l_desc=new f(a.dyn_ltree,ma),a.d_desc=new f(a.dyn_dtree,na),a.bl_desc=new f(a.bl_tree,oa),a.bi_buf=0,a.bi_valid=0,p(a)}function C(a,b,c,d){i(a,(L<<1)+(d?1:0),3),r(a,b,c,!0)}function D(a){i(a,M<<1,3),j(a,Z,ga),l(a)}function E(a,b,c,d){var e,f,g=0;a.level>0?(a.strm.data_type===K&&(a.strm.data_type=A(a)),v(a,a.l_desc),v(a,a.d_desc),g=y(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?C(a,b,c,d):a.strategy===H||f===e?(i(a,(M<<1)+(d?1:0),3),u(a,ga,ha)):(i(a,(N<<1)+(d?1:0),3),z(a,a.l_desc.max_code+1,a.d_desc.max_code+1,g+1),u(a,a.dyn_ltree,a.dyn_dtree)),p(a),d&&q(a)}function F(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ja[c]+R+1)]++,a.dyn_dtree[2*g(b)]++),a.last_lit===a.lit_bufsize-1}var G=a("../utils/common"),H=4,I=0,J=1,K=2,L=0,M=1,N=2,O=3,P=258,Q=29,R=256,S=R+1+Q,T=30,U=19,V=2*S+1,W=15,X=16,Y=7,Z=256,$=16,_=17,aa=18,ba=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ca=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],da=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ea=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa=512,ga=new Array(2*(S+2));d(ga);var ha=new Array(2*T);d(ha);var ia=new Array(fa);d(ia);var ja=new Array(P-O+1);d(ja);var ka=new Array(Q);d(ka);var la=new Array(T);d(la);var ma,na,oa,pa=!1;c._tr_init=B,c._tr_stored_block=C,c._tr_flush_block=E,c._tr_tally=F,c._tr_align=D},{"../utils/common":30}],42:[function(a,b,c){"use strict";function d(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=d},{}],43:[function(a,b,c){(function(b){!function(c){function d(a,b){if(!(this instanceof d))return new d(a,b);var e=this;f(e),e.q=e.c="",e.bufferCheckPosition=c.MAX_BUFFER_LENGTH,e.opt=b||{},e.opt.lowercase=e.opt.lowercase||e.opt.lowercasetags,e.looseCase=e.opt.lowercase?"toLowerCase":"toUpperCase",e.tags=[],e.closed=e.closedRoot=e.sawRoot=!1,e.tag=e.error=null,e.strict=!!a,e.noscript=!(!a&&!e.opt.noscript),e.state=V.BEGIN,e.strictEntities=e.opt.strictEntities,e.ENTITIES=e.strictEntities?Object.create(c.XML_ENTITIES):Object.create(c.ENTITIES),e.attribList=[],e.opt.xmlns&&(e.ns=Object.create(Q)),e.trackPosition=e.opt.position!==!1,e.trackPosition&&(e.position=e.line=e.column=0),n(e,"onready")}function e(a){for(var b=Math.max(c.MAX_BUFFER_LENGTH,10),d=0,e=0,f=D.length;f>e;e++){var g=a[D[e]].length;if(g>b)switch(D[e]){case"textNode":p(a);break;case"cdata": +o(a,"oncdata",a.cdata),a.cdata="";break;case"script":o(a,"onscript",a.script),a.script="";break;default:r(a,"Max buffer length exceeded: "+D[e])}d=Math.max(d,g)}var h=c.MAX_BUFFER_LENGTH-d;a.bufferCheckPosition=h+a.position}function f(a){for(var b=0,c=D.length;c>b;b++)a[D[b]]=""}function g(a){p(a),""!==a.cdata&&(o(a,"oncdata",a.cdata),a.cdata=""),""!==a.script&&(o(a,"onscript",a.script),a.script="")}function h(a,b){return new i(a,b)}function i(a,b){if(!(this instanceof i))return new i(a,b);E.apply(this),this._parser=new d(a,b),this.writable=!0,this.readable=!0;var c=this;this._parser.onend=function(){c.emit("end")},this._parser.onerror=function(a){c.emit("error",a),c._parser.error=null},this._decoder=null,G.forEach(function(a){Object.defineProperty(c,"on"+a,{get:function(){return c._parser["on"+a]},set:function(b){return b?void c.on(a,b):(c.removeAllListeners(a),c._parser["on"+a]=b,b)},enumerable:!0,configurable:!1})})}function j(a){return a.split("").reduce(function(a,b){return a[b]=!0,a},{})}function k(a){return"[object RegExp]"===Object.prototype.toString.call(a)}function l(a,b){return k(a)?!!b.match(a):a[b]}function m(a,b){return!l(a,b)}function n(a,b,c){a[b]&&a[b](c)}function o(a,b,c){a.textNode&&p(a),n(a,b,c)}function p(a){a.textNode=q(a.opt,a.textNode),a.textNode&&n(a,"ontext",a.textNode),a.textNode=""}function q(a,b){return a.trim&&(b=b.trim()),a.normalize&&(b=b.replace(/\s+/g," ")),b}function r(a,b){return p(a),a.trackPosition&&(b+="\nLine: "+a.line+"\nColumn: "+a.column+"\nChar: "+a.c),b=new Error(b),a.error=b,n(a,"onerror",b),a}function s(a){return a.sawRoot&&!a.closedRoot&&t(a,"Unclosed root tag"),a.state!==V.BEGIN&&a.state!==V.BEGIN_WHITESPACE&&a.state!==V.TEXT&&r(a,"Unexpected end"),p(a),a.c="",a.closed=!0,n(a,"onend"),d.call(a,a.strict,a.opt),a}function t(a,b){if("object"!=typeof a||!(a instanceof d))throw new Error("bad call to strictFail");a.strict&&r(a,b)}function u(a){a.strict||(a.tagName=a.tagName[a.looseCase]());var b=a.tags[a.tags.length-1]||a,c=a.tag={name:a.tagName,attributes:{}};a.opt.xmlns&&(c.ns=b.ns),a.attribList.length=0}function v(a,b){var c=a.indexOf(":"),d=0>c?["",a]:a.split(":"),e=d[0],f=d[1];return b&&"xmlns"===a&&(e="xmlns",f=""),{prefix:e,local:f}}function w(a){if(a.strict||(a.attribName=a.attribName[a.looseCase]()),-1!==a.attribList.indexOf(a.attribName)||a.tag.attributes.hasOwnProperty(a.attribName))return void(a.attribName=a.attribValue="");if(a.opt.xmlns){var b=v(a.attribName,!0),c=b.prefix,d=b.local;if("xmlns"===c)if("xml"===d&&a.attribValue!==O)t(a,"xml: prefix must be bound to "+O+"\nActual: "+a.attribValue);else if("xmlns"===d&&a.attribValue!==P)t(a,"xmlns: prefix must be bound to "+P+"\nActual: "+a.attribValue);else{var e=a.tag,f=a.tags[a.tags.length-1]||a;e.ns===f.ns&&(e.ns=Object.create(f.ns)),e.ns[d]=a.attribValue}a.attribList.push([a.attribName,a.attribValue])}else a.tag.attributes[a.attribName]=a.attribValue,o(a,"onattribute",{name:a.attribName,value:a.attribValue});a.attribName=a.attribValue=""}function x(a,b){if(a.opt.xmlns){var c=a.tag,d=v(a.tagName);c.prefix=d.prefix,c.local=d.local,c.uri=c.ns[d.prefix]||"",c.prefix&&!c.uri&&(t(a,"Unbound namespace prefix: "+JSON.stringify(a.tagName)),c.uri=d.prefix);var e=a.tags[a.tags.length-1]||a;c.ns&&e.ns!==c.ns&&Object.keys(c.ns).forEach(function(b){o(a,"onopennamespace",{prefix:b,uri:c.ns[b]})});for(var f=0,g=a.attribList.length;g>f;f++){var h=a.attribList[f],i=h[0],j=h[1],k=v(i,!0),l=k.prefix,m=k.local,n=""===l?"":c.ns[l]||"",p={name:i,value:j,prefix:l,local:m,uri:n};l&&"xmlns"!==l&&!n&&(t(a,"Unbound namespace prefix: "+JSON.stringify(l)),p.uri=l),a.tag.attributes[i]=p,o(a,"onattribute",p)}a.attribList.length=0}a.tag.isSelfClosing=!!b,a.sawRoot=!0,a.tags.push(a.tag),o(a,"onopentag",a.tag),b||(a.noscript||"script"!==a.tagName.toLowerCase()?a.state=V.TEXT:a.state=V.SCRIPT,a.tag=null,a.tagName=""),a.attribName=a.attribValue="",a.attribList.length=0}function y(a){if(!a.tagName)return t(a,"Weird empty close tag."),a.textNode+="",void(a.state=V.TEXT);if(a.script){if("script"!==a.tagName)return a.script+="",a.tagName="",void(a.state=V.SCRIPT);o(a,"onscript",a.script),a.script=""}var b=a.tags.length,c=a.tagName;a.strict||(c=c[a.looseCase]());for(var d=c;b--;){var e=a.tags[b];if(e.name===d)break;t(a,"Unexpected close tag")}if(0>b)return t(a,"Unmatched closing tag: "+a.tagName),a.textNode+="",void(a.state=V.TEXT);a.tagName=c;for(var f=a.tags.length;f-->b;){var g=a.tag=a.tags.pop();a.tagName=a.tag.name,o(a,"onclosetag",a.tagName);var h={};for(var i in g.ns)h[i]=g.ns[i];var j=a.tags[a.tags.length-1]||a;a.opt.xmlns&&g.ns!==j.ns&&Object.keys(g.ns).forEach(function(b){var c=g.ns[b];o(a,"onclosenamespace",{prefix:b,uri:c})})}0===b&&(a.closedRoot=!0),a.tagName=a.attribValue=a.attribName="",a.attribList.length=0,a.state=V.TEXT}function z(a){var b,c=a.entity,d=c.toLowerCase(),e="";return a.ENTITIES[c]?a.ENTITIES[c]:a.ENTITIES[d]?a.ENTITIES[d]:(c=d,"#"===c.charAt(0)&&("x"===c.charAt(1)?(c=c.slice(2),b=parseInt(c,16),e=b.toString(16)):(c=c.slice(1),b=parseInt(c,10),e=b.toString(10))),c=c.replace(/^0+/,""),e.toLowerCase()!==c?(t(a,"Invalid character entity"),"&"+a.entity+";"):String.fromCodePoint(b))}function A(a,b){"<"===b?(a.state=V.OPEN_WAKA,a.startTagPosition=a.position):m(H,b)&&(t(a,"Non-whitespace before first tag."),a.textNode=b,a.state=V.TEXT)}function B(a,b){var c="";return b"===d?(o(b,"onsgmldeclaration",b.sgmlDecl),b.sgmlDecl="",b.state=V.TEXT):l(K,d)?(b.state=V.SGML_DECL_QUOTED,b.sgmlDecl+=d):b.sgmlDecl+=d;continue;case V.SGML_DECL_QUOTED:d===b.q&&(b.state=V.SGML_DECL,b.q=""),b.sgmlDecl+=d;continue;case V.DOCTYPE:">"===d?(b.state=V.TEXT,o(b,"ondoctype",b.doctype),b.doctype=!0):(b.doctype+=d,"["===d?b.state=V.DOCTYPE_DTD:l(K,d)&&(b.state=V.DOCTYPE_QUOTED,b.q=d));continue;case V.DOCTYPE_QUOTED:b.doctype+=d,d===b.q&&(b.q="",b.state=V.DOCTYPE);continue;case V.DOCTYPE_DTD:b.doctype+=d,"]"===d?b.state=V.DOCTYPE:l(K,d)&&(b.state=V.DOCTYPE_DTD_QUOTED,b.q=d);continue;case V.DOCTYPE_DTD_QUOTED:b.doctype+=d,d===b.q&&(b.state=V.DOCTYPE_DTD,b.q="");continue;case V.COMMENT:"-"===d?b.state=V.COMMENT_ENDING:b.comment+=d;continue;case V.COMMENT_ENDING:"-"===d?(b.state=V.COMMENT_ENDED,b.comment=q(b.opt,b.comment),b.comment&&o(b,"oncomment",b.comment),b.comment=""):(b.comment+="-"+d,b.state=V.COMMENT);continue;case V.COMMENT_ENDED:">"!==d?(t(b,"Malformed comment"),b.comment+="--"+d,b.state=V.COMMENT):b.state=V.TEXT;continue;case V.CDATA:"]"===d?b.state=V.CDATA_ENDING:b.cdata+=d;continue;case V.CDATA_ENDING:"]"===d?b.state=V.CDATA_ENDING_2:(b.cdata+="]"+d,b.state=V.CDATA);continue;case V.CDATA_ENDING_2:">"===d?(b.cdata&&o(b,"oncdata",b.cdata),o(b,"onclosecdata"),b.cdata="",b.state=V.TEXT):"]"===d?b.cdata+="]":(b.cdata+="]]"+d,b.state=V.CDATA);continue;case V.PROC_INST:"?"===d?b.state=V.PROC_INST_ENDING:l(H,d)?b.state=V.PROC_INST_BODY:b.procInstName+=d;continue;case V.PROC_INST_BODY:if(!b.procInstBody&&l(H,d))continue;"?"===d?b.state=V.PROC_INST_ENDING:b.procInstBody+=d;continue;case V.PROC_INST_ENDING:">"===d?(o(b,"onprocessinginstruction",{name:b.procInstName,body:b.procInstBody}),b.procInstName=b.procInstBody="",b.state=V.TEXT):(b.procInstBody+="?"+d,b.state=V.PROC_INST_BODY);continue;case V.OPEN_TAG:l(S,d)?b.tagName+=d:(u(b),">"===d?x(b):"/"===d?b.state=V.OPEN_TAG_SLASH:(m(H,d)&&t(b,"Invalid character in tag name"),b.state=V.ATTRIB));continue;case V.OPEN_TAG_SLASH:">"===d?(x(b,!0),y(b)):(t(b,"Forward-slash in opening tag not followed by >"),b.state=V.ATTRIB);continue;case V.ATTRIB:if(l(H,d))continue;">"===d?x(b):"/"===d?b.state=V.OPEN_TAG_SLASH:l(R,d)?(b.attribName=d,b.attribValue="",b.state=V.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case V.ATTRIB_NAME:"="===d?b.state=V.ATTRIB_VALUE:">"===d?(t(b,"Attribute without value"),b.attribValue=b.attribName,w(b),x(b)):l(H,d)?b.state=V.ATTRIB_NAME_SAW_WHITE:l(S,d)?b.attribName+=d:t(b,"Invalid attribute name");continue;case V.ATTRIB_NAME_SAW_WHITE:if("="===d)b.state=V.ATTRIB_VALUE;else{if(l(H,d))continue;t(b,"Attribute without value"),b.tag.attributes[b.attribName]="",b.attribValue="",o(b,"onattribute",{name:b.attribName,value:""}),b.attribName="",">"===d?x(b):l(R,d)?(b.attribName=d,b.state=V.ATTRIB_NAME):(t(b,"Invalid attribute name"),b.state=V.ATTRIB)}continue;case V.ATTRIB_VALUE:if(l(H,d))continue;l(K,d)?(b.q=d,b.state=V.ATTRIB_VALUE_QUOTED):(t(b,"Unquoted attribute value"),b.state=V.ATTRIB_VALUE_UNQUOTED,b.attribValue=d);continue;case V.ATTRIB_VALUE_QUOTED:if(d!==b.q){"&"===d?b.state=V.ATTRIB_VALUE_ENTITY_Q:b.attribValue+=d;continue}w(b),b.q="",b.state=V.ATTRIB_VALUE_CLOSED;continue;case V.ATTRIB_VALUE_CLOSED:l(H,d)?b.state=V.ATTRIB:">"===d?x(b):"/"===d?b.state=V.OPEN_TAG_SLASH:l(R,d)?(t(b,"No whitespace between attributes"),b.attribName=d,b.attribValue="",b.state=V.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case V.ATTRIB_VALUE_UNQUOTED:if(m(L,d)){"&"===d?b.state=V.ATTRIB_VALUE_ENTITY_U:b.attribValue+=d;continue}w(b),">"===d?x(b):b.state=V.ATTRIB;continue;case V.CLOSE_TAG:if(b.tagName)">"===d?y(b):l(S,d)?b.tagName+=d:b.script?(b.script+=""===d?y(b):t(b,"Invalid characters in closing tag");continue;case V.TEXT_ENTITY:case V.ATTRIB_VALUE_ENTITY_Q:case V.ATTRIB_VALUE_ENTITY_U:var h,i;switch(b.state){case V.TEXT_ENTITY:h=V.TEXT,i="textNode";break;case V.ATTRIB_VALUE_ENTITY_Q:h=V.ATTRIB_VALUE_QUOTED,i="attribValue";break;case V.ATTRIB_VALUE_ENTITY_U:h=V.ATTRIB_VALUE_UNQUOTED,i="attribValue"}";"===d?(b[i]+=z(b),b.entity="",b.state=h):l(b.entity.length?U:T,d)?b.entity+=d:(t(b,"Invalid character in entity name"),b[i]+="&"+b.entity+d,b.entity="",b.state=h);continue;default:throw new Error(b,"Unknown state: "+b.state)}}return b.position>=b.bufferCheckPosition&&e(b),b}c.parser=function(a,b){return new d(a,b)},c.SAXParser=d,c.SAXStream=i,c.createStream=h,c.MAX_BUFFER_LENGTH=65536;var D=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];c.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(a){function b(){}b.prototype=a;var c=new b;return c}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}),d.prototype={end:function(){s(this)},write:C,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){g(this)}};var E;try{E=a("stream").Stream}catch(F){E=function(){}}var G=c.EVENTS.filter(function(a){return"error"!==a&&"end"!==a});i.prototype=Object.create(E.prototype,{constructor:{value:i}}),i.prototype.write=function(c){if("function"==typeof b&&"function"==typeof b.isBuffer&&b.isBuffer(c)){if(!this._decoder){var d=a("string_decoder").StringDecoder;this._decoder=new d("utf8")}c=this._decoder.write(c)}return this._parser.write(c.toString()),this.emit("data",c),!0},i.prototype.end=function(a){return a&&a.length&&this.write(a),this._parser.end(),!0},i.prototype.on=function(a,b){var c=this;return c._parser["on"+a]||-1===G.indexOf(a)||(c._parser["on"+a]=function(){var b=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);b.splice(0,0,a),c.emit.apply(c,b)}),E.prototype.on.call(c,a,b)};var H="\r\n ",I="0124356789",J="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",K="'\"",L=H+">",M="[CDATA[",N="DOCTYPE",O="http://www.w3.org/XML/1998/namespace",P="http://www.w3.org/2000/xmlns/",Q={xml:O,xmlns:P};H=j(H),I=j(I),J=j(J);var R=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,S=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/,T=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,U=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;K=j(K),L=j(L);var V=0;c.STATE={BEGIN:V++,BEGIN_WHITESPACE:V++,TEXT:V++,TEXT_ENTITY:V++,OPEN_WAKA:V++,SGML_DECL:V++,SGML_DECL_QUOTED:V++,DOCTYPE:V++,DOCTYPE_QUOTED:V++,DOCTYPE_DTD:V++,DOCTYPE_DTD_QUOTED:V++,COMMENT_STARTING:V++,COMMENT:V++,COMMENT_ENDING:V++,COMMENT_ENDED:V++,CDATA:V++,CDATA_ENDING:V++,CDATA_ENDING_2:V++,PROC_INST:V++,PROC_INST_BODY:V++,PROC_INST_ENDING:V++,OPEN_TAG:V++,OPEN_TAG_SLASH:V++,ATTRIB:V++,ATTRIB_NAME:V++,ATTRIB_NAME_SAW_WHITE:V++,ATTRIB_VALUE:V++,ATTRIB_VALUE_QUOTED:V++,ATTRIB_VALUE_CLOSED:V++,ATTRIB_VALUE_UNQUOTED:V++,ATTRIB_VALUE_ENTITY_Q:V++,ATTRIB_VALUE_ENTITY_U:V++,CLOSE_TAG:V++,CLOSE_TAG_SAW_WHITE:V++,SCRIPT:V++,SCRIPT_ENDING:V++},c.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},c.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,"int":8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(c.ENTITIES).forEach(function(a){var b=c.ENTITIES[a],d="number"==typeof b?String.fromCharCode(b):b;c.ENTITIES[a]=d});for(var W in c.STATE)c.STATE[c.STATE[W]]=W;V=c.STATE,String.fromCodePoint||!function(){var a=String.fromCharCode,b=Math.floor,c=function(){var c,d,e=16384,f=[],g=-1,h=arguments.length;if(!h)return"";for(var i="";++gj||j>1114111||b(j)!==j)throw RangeError("Invalid code point: "+j);65535>=j?f.push(j):(j-=65536,c=(j>>10)+55296,d=j%1024+56320,f.push(c,d)),(g+1===h||f.length>e)&&(i+=a.apply(null,f),f.length=0)}return i};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0}):String.fromCodePoint=c}()}("undefined"==typeof c?this.sax={}:c)}).call(this,a("buffer").Buffer)},{buffer:3,stream:25,string_decoder:26}],44:[function(a,b,c){"use strict";var d=d||{};d.Transform=d.Transform||("undefined"!=typeof a?a("./transform.js"):null);var e=e||("undefined"!=typeof a?a("../lib/base64-binary.js"):null),f=f||("undefined"!=typeof a?a("pako"):null);d.NIFTI_INTENT_GENMATRIX="NIFTI_INTENT_GENMATRIX",d.NIFTI_INTENT_LABEL="NIFTI_INTENT_LABEL",d.NIFTI_INTENT_NODE_INDEX="NIFTI_INTENT_NODE_INDEX",d.NIFTI_INTENT_POINTSET="NIFTI_INTENT_POINTSET",d.NIFTI_INTENT_RGB_VECTOR="NIFTI_INTENT_RGB_VECTOR",d.NIFTI_INTENT_RGBA_VECTOR="NIFTI_INTENT_RGBA_VECTOR",d.NIFTI_INTENT_SHAPE="NIFTI_INTENT_SHAPE",d.NIFTI_INTENT_TIME_SERIES="NIFTI_INTENT_TIME_SERIES",d.NIFTI_INTENT_TRIANGLE="NIFTI_INTENT_TRIANGLE",d.NIFTI_INTENT_NONE="NIFTI_INTENT_NONE",d.NIFTI_INTENT_VECTOR="NIFTI_INTENT_VECTOR",d.ATT_ARRAYINDEXINGORDER="ArrayIndexingOrder",d.ATT_DATATYPE="DataType",d.ATT_DIMENSIONALITY="Dimensionality",d.ATT_DIMN="Dim",d.ATT_ENCODING="Encoding",d.ATT_ENDIAN="Endian",d.ATT_EXTERNALFILENAME="ExternalFileName",d.ATT_EXTERNALFILEOFFSET="ExternalFileOffset",d.ATT_INTENT="Intent",d.ENCODING_ASCII="ASCII",d.ENCODING_BASE64BINARY="Base64Binary",d.ENCODING_GZIPBASE64BINARY="GZipBase64Binary",d.ENCODING_EXTERNALFILEBINARY="ExternalFileBinary",d.TYPE_NIFTI_TYPE_UINT8="NIFTI_TYPE_UINT8",d.TYPE_NIFTI_TYPE_INT32="NIFTI_TYPE_INT32",d.TYPE_NIFTI_TYPE_FLOAT32="NIFTI_TYPE_FLOAT32",d.DataArray=d.DataArray||function(){this.attributes=null,this.metadata={},this.transforms=[],this.data=null,this.dataConverted=!1},d.DataArray.prototype.isPointSet=function(){return this.attributes[d.ATT_INTENT]===d.NIFTI_INTENT_POINTSET},d.DataArray.prototype.isTriangles=function(){return this.attributes[d.ATT_INTENT]===d.NIFTI_INTENT_TRIANGLE},d.DataArray.prototype.isNormals=function(){return this.attributes[d.ATT_INTENT]===d.NIFTI_INTENT_VECTOR},d.DataArray.prototype.isColors=function(){return this.attributes[d.ATT_INTENT]===d.NIFTI_INTENT_RGB_VECTOR||this.attributes[d.ATT_INTENT]===d.NIFTI_INTENT_RGBA_VECTOR},d.DataArray.prototype.getDimensions=function(){return parseInt(this.attributes[d.ATT_DIMENSIONALITY])},d.DataArray.prototype.getNumElements=function(a){return void 0===a&&(a=0),parseInt(this.attributes[d.ATT_DIMN+a])},d.DataArray.prototype.isScalar=function(){return 1==this.getDimensions()},d.DataArray.prototype.isTriple=function(){return 2==this.getDimensions()&&3==this.getNumElements(1)},d.DataArray.prototype.isQuad=function(){return 2==this.getDimensions()&&4==this.getNumElements(1)},d.DataArray.prototype.isAscii=function(){return d.ENCODING_ASCII===this.attributes[d.ATT_ENCODING]},d.DataArray.prototype.isBase64Binary=function(){return d.ENCODING_BASE64BINARY===this.attributes[d.ATT_ENCODING]},d.DataArray.prototype.isGzipBase64Binary=function(){return d.ENCODING_GZIPBASE64BINARY===this.attributes[d.ATT_ENCODING]},d.DataArray.prototype.isBase64Encoded=function(){return this.isBase64Binary()||this.isGzipBase64Binary()},d.DataArray.prototype.isFloat32=function(){return d.TYPE_NIFTI_TYPE_FLOAT32===this.attributes[d.ATT_DATATYPE]},d.DataArray.prototype.isInt32=function(){return d.TYPE_NIFTI_TYPE_INT32===this.attributes[d.ATT_DATATYPE]},d.DataArray.prototype.isUnsignedInt8=function(){return d.TYPE_NIFTI_TYPE_UINT8===this.attributes[d.ATT_DATATYPE]},d.DataArray.prototype.getData=function(){return this.dataConverted||(this.dataConverted=!0,this.isAscii()?this.isUnsignedInt8()?d.DataArray.readUnsignedInt8ASCII(this):this.isInt32()?d.DataArray.readSignedInt32ASCII(this):d.DataArray.readFloat32ASCII(this):this.isBase64Binary()?this.isUnsignedInt8()?d.DataArray.readUnsignedInt8Base64(this):this.isInt32()?d.DataArray.readSignedInt32Base64(this):d.DataArray.readFloat32Base64(this):this.isGzipBase64Binary()&&(this.isUnsignedInt8()?d.DataArray.readUnsignedInt8GZIPBase64(this):this.isInt32()?d.DataArray.readSignedInt32GZIPBase64(this):d.DataArray.readFloat32GZIPBase64(this))),this.data},d.DataArray.prototype.getDataAsync=function(a,b){this.dataConverted||(this.dataConverted=!0,this.isAscii()?(this.isUnsignedInt8()?d.DataArray.readUnsignedInt8ASCII(this):this.isInt32()?d.DataArray.readSignedInt32ASCII(this):d.DataArray.readFloat32ASCII(this),b()):this.isBase64Binary()?(this.isUnsignedInt8()?d.DataArray.readUnsignedInt8Base64(this):this.isInt32()?d.DataArray.readSignedInt32Base64(this):d.DataArray.readFloat32Base64(this),b()):this.isGzipBase64Binary()&&(this.isUnsignedInt8()?d.DataArray.readUnsignedInt8GZIPBase64Async(this,a,b):this.isInt32()?d.DataArray.readSignedInt32GZIPBase64Async(this,a,b):d.DataArray.readFloat32GZIPBase64Async(this,a,b)))},d.DataArray.readFloat32ASCII=function(a){var b=/[+-]?\d+(\.\d+)?/g;a.data=new Float32Array(a.data.match(b).map(function(a){return parseFloat(a)}))},d.DataArray.readSignedInt32ASCII=function(a){var b=/[+-]?\d+(\.\d+)?/g;a.data=new Int32Array(a.data.match(b).map(function(a){return parseInt(a)}))},d.DataArray.readUnsignedInt8ASCII=function(a){var b=/[+-]?\d+(\.\d+)?/g;a.data=new Uint8Array(a.data.match(b).map(function(a){return parseInt(a)}))},d.DataArray.readUnsignedInt8Base64=function(a){var b=e.decodeArrayBuffer(a.data);a.data=new Uint8Array(b,0,b.byteLength)},d.DataArray.readSignedInt32Base64=function(a){var b=e.decodeArrayBuffer(a.data);a.data=new Int32Array(b,0,b.byteLength/4)},d.DataArray.readFloat32Base64=function(a){var b=e.decodeArrayBuffer(a.data);a.data=new Float32Array(b,0,b.byteLength/4)},d.DataArray.readUnsignedInt8GZIPBase64=function(a){var b=e.decodeArrayBuffer(a.data);b=f.inflate(b).buffer,a.data=new Uint8Array(b,0,b.byteLength)},d.DataArray.readUnsignedInt8GZIPBase64Async=function(a,b,c){var g=e.decodeArrayBuffer(a.data),h=new f.Inflate,i=function(){a.data=new Uint8Array(h.result.buffer,0,h.result.buffer.byteLength),c(a.data)};setTimeout(function(){d.DataArray.readNext(h,g,0,b,i)},0)},d.DataArray.readSignedInt32GZIPBase64=function(a){var b=e.decodeArrayBuffer(a.data);b=f.inflate(b).buffer,a.data=new Int32Array(b,0,b.byteLength/4)},d.DataArray.readSignedInt32GZIPBase64Async=function(a,b,c){var g=e.decodeArrayBuffer(a.data),h=new f.Inflate,i=function(){a.data=new Int32Array(h.result.buffer,0,h.result.buffer.byteLength/4),c(a.data)};setTimeout(function(){d.DataArray.readNext(h,g,0,b,i)},0)},d.DataArray.readFloat32GZIPBase64=function(a){var b=e.decodeArrayBuffer(a.data);b=f.inflate(b).buffer,a.data=new Float32Array(b,0,b.byteLength/4)},d.DataArray.readFloat32GZIPBase64Async=function(a,b,c){var g=e.decodeArrayBuffer(a.data),h=new f.Inflate,i=function(){a.data=new Float32Array(h.result.buffer,0,h.result.buffer.byteLength/4),c(a.data)};setTimeout(function(){d.DataArray.readNext(h,g,0,b,i)},0)},d.DataArray.readNext=function(a,b,c,e,f){var g=c+32768,h=g>=b.byteLength;a.push(b.slice(c,c+32768),h),h?f():(e(g/b.byteLength),setTimeout(function(){d.DataArray.readNext(a,b,g,e,f)},0))};var g=typeof b;"undefined"!==g&&b.exports&&(b.exports=d.DataArray)},{"../lib/base64-binary.js":1,"./transform.js":47,pako:27}],45:[function(a,b,c){"use strict";var d=d||{};d.Utils=d.Utils||("undefined"!=typeof a?a("./utilities.js"):null),d.DataArray=d.DataArray||("undefined"!=typeof a?a("./dataArray.js"):null),d.Transform=d.Transform||("undefined"!=typeof a?a("./transform.js"):null),d.Label=d.Label||("undefined"!=typeof a?a("./label.js"):null);var e=e||("undefined"!=typeof a?a("sax"):null);d.TAG_TRANSFORM="CoordinateSystemTransformMatrix",d.TAG_DATA="Data",d.TAG_DATAARRAY="DataArray",d.TAG_DATASPACE="DataSpace",d.TAG_GIFTI="GIFTI",d.TAG_LABEL="Label",d.TAG_LABELTABLE="LabelTable",d.TAG_MATRIXDATA="MatrixData",d.TAG_METADATA="MetaData",d.TAG_MD="MD",d.TAG_NAME="Name",d.TAG_TRANSFORMEDSPACE="TransformedSpace",d.TAG_VALUE="Value",d.GIFTI=d.GIFTI||function(){this.attributes=null,this.metadata={},this.dataArrays=[],this.labelTable=[]},d.GIFTI.prototype.getPointsDataArray=function(){var a;for(a=0;ac;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b},d.Utils.crc32=function(a){for(var b=d.Utils.crcTable||(d.Utils.crcTable=d.Utils.makeCRCTable()),c=-1,e=0;e>>8^b[255&(c^a.getUint8(e))];return(-1^c)>>>0};var e=typeof b;"undefined"!==e&&b.exports&&(b.exports=d.Utils)},{}]},{},[45])(45)}); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/gifti.worker.js b/build/brainbrowser-2.5.5/workers/gifti.worker.js new file mode 100644 index 00000000..93c2d1f1 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/gifti.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b={},c=gifti.parse(a),d=c.getNumPoints(),e=c.getNumTriangles();if(e>0&&d>0)b.type="polygon",b.vertices=c.getPointsDataArray().getData(),b.shapes=[{indices:c.getTrianglesDataArray().getData()}];else if(c.dataArrays.length>0){var f,g,h,i=c.dataArrays[0].getData(),j=i.length;for(f=+Number.MAX_VALUE,g=-Number.MAX_VALUE,h=0;j>h;h++)f=Math.min(f,i[h]),g=Math.max(g,i[h]);b.values=i,b.min=f,b.max=g;var k="";Object.keys(c.labelTable).forEach(function(a){var b=c.labelTable[a];k+=b.key+" ",k+=b.r+" ",k+=b.g+" ",k+=b.b+" ",k+=b.a+"\n"}),k.length>0&&(b.colors=k)}return b}self.addEventListener("message",function(b){var c=b.data;importScripts(c.url+"gifti-reader.js");var d=a(c.data)||{error:!0,error_message:"Error parsing data."},e=[];d.vertices&&d.shapes[0].indices?(e.push(d.vertices.buffer,d.shapes[0].indices.buffer),self.postMessage(d,e)):(e.push(d.values.buffer),self.postMessage(d,e))})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/json.worker.js b/build/brainbrowser-2.5.5/workers/json.worker.js new file mode 100644 index 00000000..4b4566bc --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/json.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var e={name:a.name,type:a.type,shapes:[]},f=[];return e.vertices=new Float32Array(b(a.vertices)),f.push(e.vertices.buffer),a.colors=a.colors||a.color,a.colors&&(e.colors=b(a.colors),e.vertices.length===e.colors.length||3===e.colors.length?e.colors=c(e.colors):e.colors=new Float32Array(e.colors),f.push(e.colors.buffer)),a.normals&&(e.normals=new Float32Array(b(a.normals)),f.push(e.normals.buffer)),void 0===a.shapes&&(a.shapes=[]),a.indices&&a.shapes.push({indices:a.indices}),a.shapes.forEach(function(a){var c=new Uint32Array(b(a.indices));a.one_indexed&&d(c),f.push(c.buffer),a.color=a.color||a.colors,Array.isArray(a.color)&&3===a.color.length&&a.color.push(1),a.color&&(a.color=new Float32Array(a.color),f.push(a.color.buffer)),e.shapes.push({name:a.name,indices:c,color:a.color})}),{result:e,transfer:f}}function b(a,c){if(!Array.isArray(a))return[a];if(c=c||0,c===a.length)return[];var d,e,f=[];for(d=0,e=a.length;e>d;d++)f.push.apply(f,b(a[d]));return f}function c(a){var b,c,d,e;for(b=new Float32Array(4*a.length/3),c=d=0,e=a.length;e>c;)b[d++]=a[c++],b[d++]=a[c++],b[d++]=a[c++],b[d++]=1;return b}function d(a){var b,c;for(b=0,c=a.length;c>b;b++)a[b]=a[b]-1}self.addEventListener("message",function(b){var c=a(JSON.parse(b.data.data)),d=c.result,e=c.transfer;self.postMessage(d,e)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/mniobj.worker.js b/build/brainbrowser-2.5.5/workers/mniobj.worker.js new file mode 100644 index 00000000..138c86ec --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/mniobj.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a,l){j=a.trim().split(/\s+/).reverse(),k=j.length-1;var m,n,o,p,q,r,s,t,u,v,w=l.split,x={},y=i();if(x.split=!1,x.type="P"===y?"polygon":"L"===y?"line":y,"polygon"===x.type)b(x),x.num_vertices=parseInt(i(),10),c(x),d(x),x.nitems=parseInt(i(),10);else{if("line"!==x.type)return x.error=!0,void(x.error_message='Invalid MNI Object class: must be "polygon" or "line"');b(x),x.num_vertices=parseInt(i(),10),c(x),x.nitems=parseInt(i(),10)}if(e(x),f(x),g(x),"polygon"===x.type)w&&(x.split=!0,h(x));else if("line"===x.type){for(t=[],r=x.indices,s=x.end_indices,q=x.nitems,u=v=0,m=0;q>m;m++)o=0===m?0:s[m-1],p=s[m],u+=2*(p-o-1);for(t=new Uint32Array(u),m=0;q>m;m++){for(o=0===m?0:s[m-1],t[v++]=r[o],p=s[m],n=o+1;p-1>n;n++)t[v++]=r[n],t[v++]=r[n];t[v++]=r[p-1]}x.indices=t}return x}function b(a){"polygon"===a.type?a.surface_properties={ambient:parseFloat(i()),diffuse:parseFloat(i()),specular_reflectance:parseFloat(i()),specular_scattering:parseFloat(i()),transparency:parseFloat(i())}:"line"===a.type&&(a.surfaceProperties={width:i()})}function c(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.vertices=d}function d(a){var b,c=3*a.num_vertices,d=new Float32Array(c);for(b=0;c>b;b++)d[b]=parseFloat(i());a.normals=d}function e(a){var b,c,d,e=parseInt(i(),10);if(0===e)for(b=new Float32Array(4),c=0;4>c;c++)b[c]=parseFloat(i());else if(1===e)for(d=4*a.num_polygons,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else if(2===e)for(d=4*a.num_vertices,b=new Float32Array(d),c=0;d>c;c++)b[c]=parseFloat(i());else a.error=!0,a.error_message="Invalid color flag: "+e;a.color_flag=e,a.colors=b}function f(a){var b,c=a.nitems,d=new Uint32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.end_indices=d}function g(a){var b,c=k+1,d=new Uint32Array(c);for(b=0;c>b;b++)d[b]=parseInt(i(),10);a.indices=d}function h(a){var b=a.indices.length;a.left={indices:new Uint32Array(Array.prototype.slice.call(a.indices,0,b/2))},a.right={indices:new Uint32Array(Array.prototype.slice.call(a.indices,b/2))}}function i(){return j[k--]}var j,k;self.addEventListener("message",function(b){var c=b.data,d=a(c.data,c.options)||{error:!0,error_message:"Error parsing data."},e={type:d.type,vertices:d.vertices,normals:d.normals,colors:d.colors,surface_properties:d.surface_properties,split:d.split,error:d.error,error_message:d.error_message},f=[e.vertices.buffer,e.colors.buffer];e.normals&&f.push(e.normals.buffer),e.split?(e.shapes=[{indices:d.left.indices},{indices:d.right.indices}],f.push(d.left.indices.buffer,d.right.indices.buffer)):(e.shapes=[{indices:d.indices}],f.push(d.indices.buffer)),self.postMessage(e,f)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/text.intensity.worker.js b/build/brainbrowser-2.5.5/workers/text.intensity.worker.js new file mode 100644 index 00000000..d00e1cc5 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/text.intensity.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b,c,d,e,f={};for(f.values=new Float32Array(a.trim().split(/\s+/).map(parseFloat)),d=f.values[0],e=f.values[0],b=1,c=f.values.length;c>b;b++)d=Math.min(d,f.values[b]),e=Math.max(e,f.values[b]);return f.min=d,f.max=e,f}self.addEventListener("message",function(b){var c=a(b.data.data);self.postMessage(c,[c.values.buffer])})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/wavefrontobj.worker.js b/build/brainbrowser-2.5.5/workers/wavefrontobj.worker.js new file mode 100644 index 00000000..c8d6bd00 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/wavefrontobj.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],r=[],s=[],t={},u=[];for(t.shapes=[],a=a.split("\n"),b={indices:[],texture_indices:[],normal_indices:[]},s.push(b),j=0,m=a.length;m>j;j++)if(g=a[j].replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/),h=g[0],i=g.length,!h.match("#")||""===g)switch(h){case"o":case"g":b={name:g[1],indices:[],texture_indices:[],normal_indices:[]},s.push(b);break;case"v":p.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));break;case"vt":for(k=1;i>k;k++)q.push(parseFloat(g[k]));break;case"vn":r.push(parseFloat(g[1]),parseFloat(g[2]),parseFloat(g[3]));break;case"f":for(d=b.indices,f=b.normal_indices,e=b.texture_indices,o=g[1].split("/"),l=2;i-1>l;l++)d.push(parseInt(o[0],10)-1),e.push(parseInt(o[1],10)-1),o[2]&&f.push(parseInt(o[2],10)-1),n=g[l].split("/"),d.push(parseInt(n[0],10)-1),e.push(parseInt(n[1],10)-1),n[2]&&f.push(parseInt(n[2],10)-1),n=g[l+1].split("/"),d.push(parseInt(n[0],10)-1),e.push(parseInt(n[1],10)-1),n[2]&&f.push(parseInt(n[2],10)-1)}return t.type="polygon",t.vertices=new Float32Array(p),u.push(t.vertices.buffer),r.length>0&&(c=new Float32Array(p.length)),s.forEach(function(a){var b,d,e={};if(e.indices=new Uint32Array(a.indices),u.push(e.indices.buffer),a.normal_indices.length>0)for(j=0,m=a.normal_indices.length;m>j;j++)b=3*a.indices[j],d=3*a.normal_indices[j],c[b]=r[d],c[b+1]=r[d+1],c[b+2]=r[d+2];a.texture_indices.length>0&&(e.texture_indices=new Uint32Array(a.texture_indices),u.push(e.texture_indices.buffer)),t.shapes.push(e)}),c&&(t.normals=new Float32Array(c),u.push(t.normals.buffer)),q.length>0&&(t.texture_coords=new Float32Array(q),u.push(t.texture_coords.buffer)),{result:t,transfer:u}}self.addEventListener("message",function(b){var c=a(b.data.data),d=c.result,e=c.transfer;self.postMessage(d,e)})}(); \ No newline at end of file diff --git a/build/brainbrowser-2.5.5/workers/wireframe.worker.js b/build/brainbrowser-2.5.5/workers/wireframe.worker.js new file mode 100644 index 00000000..8a85e312 --- /dev/null +++ b/build/brainbrowser-2.5.5/workers/wireframe.worker.js @@ -0,0 +1,32 @@ +/* +* BrainBrowser: Web-based Neurological Visualization Tools +* (https://brainbrowser.cbrain.mcgill.ca) +* +* Copyright (C) 2011 +* The Royal Institution for the Advancement of Learning +* McGill University +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* +* BrainBrowser v2.5.5 +* +* Author: Tarek Sherif (http://tareksherif.ca/) +* Author: Nicolas Kassis +* Author: Paul Mougel +* +* three.js (c) 2010-2014 three.js authors, used under the MIT license +*/ +!function(){"use strict";function a(a){var b,c,d,e=new Uint32Array(2*a.length);for(b=0,d=a.length;d>b;b+=3)c=2*b,e[c]=a[b],e[c+1]=a[b+1],e[c+2]=a[b+1],e[c+3]=a[b+2],e[c+4]=a[b+2],e[c+5]=a[b];return{indices:e}}function b(a,b){var c,d,e,f,g,h=new Float32Array(2*a.length),i=new Float32Array(2*b.length),j=a.length/3;for(c=0;j>c;c+=3)e=3*c,f=4*c,d=2*e,g=2*f,h[d]=a[e],h[d+1]=a[e+1],h[d+2]=a[e+2],h[d+3]=a[e+3],h[d+4]=a[e+4],h[d+5]=a[e+5],h[d+6]=a[e+3],h[d+7]=a[e+4],h[d+8]=a[e+5],h[d+9]=a[e+6],h[d+10]=a[e+7],h[d+11]=a[e+8],h[d+12]=a[e+6],h[d+13]=a[e+7],h[d+14]=a[e+8],h[d+15]=a[e],h[d+16]=a[e+1],h[d+17]=a[e+2],i[g]=b[f],i[g+1]=b[f+1],i[g+2]=b[f+2],i[g+3]=b[f+3],i[g+4]=b[f+4],i[g+5]=b[f+5],i[g+6]=b[f+6],i[g+7]=b[f+7],i[g+8]=b[f+4],i[g+9]=b[f+5],i[g+10]=b[f+6],i[g+11]=b[f+7],i[g+12]=b[f+8],i[g+13]=b[f+9],i[g+14]=b[f+10],i[g+15]=b[f+11],i[g+16]=b[f+8],i[g+17]=b[f+9],i[g+18]=b[f+10],i[g+19]=b[f+11],i[g+20]=b[f],i[g+21]=b[f+1],i[g+22]=b[f+2],i[g+23]=b[f+3];return{positions:h,colors:i}}self.addEventListener("message",function(c){var d,e,f=c.data;f.indices?(d=a(f.indices),e=[d.indices.buffer]):(d=b(f.positions,f.colors),e=[d.positions.buffer,d.colors.buffer]),self.postMessage(d,e)})}(); \ No newline at end of file diff --git a/package.json b/package.json index 3340df40..2d60eb0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "brainbrowser", - "version": "2.5.4", + "version": "2.5.5", "license": "GNU Affero GPL 3.0", "devDependencies": { "bower": "~1.7.9", diff --git a/release/brainbrowser-2.5.5.tar.gz b/release/brainbrowser-2.5.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..87eafbf890ada2c8559d096ca48c08a92a40a036 GIT binary patch literal 245023 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


IK(hMs`M#F0Ovoya?ukA=MU<~262r8&*i<0eK5 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