From 83106db1bf78406409189876eef9f2e70cffef7f Mon Sep 17 00:00:00 2001 From: nicolasrannou Date: Fri, 16 Dec 2016 14:22:50 +0100 Subject: [PATCH] reference threejs and ami through bower --- ami-import.html | 4 ++-- ami.min.js | 25 ------------------------- bower.json | 5 +++-- 3 files changed, 5 insertions(+), 29 deletions(-) delete mode 100644 ami.min.js diff --git a/ami-import.html b/ami-import.html index aa7297d..17ec861 100644 --- a/ami-import.html +++ b/ami-import.html @@ -1,2 +1,2 @@ - - + + \ No newline at end of file diff --git a/ami.min.js b/ami.min.js deleted file mode 100644 index 0ac2e2f..0000000 --- a/ami.min.js +++ /dev/null @@ -1,25 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AMI=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0&&!codeLengths[length-1])length--;code.push({children:[],index:0});var p=code[0],q;for(i=0;i0){p=code.pop()}p.index++;code.push(p);while(code.length<=i){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q}k++}if(i+10){bitsCount--;return bitsData>>bitsCount&1}bitsData=data[offset++];if(bitsData==255){var nextByte=data[offset++];if(nextByte){throw"unexpected marker: "+(bitsData<<8|nextByte).toString(16)}}bitsCount=7;return bitsData>>>7}function decodeHuffman(tree){var node=tree;var bit;while((bit=readBit())!==null){node=node[bit];if(typeof node==="number")return node;if(typeof node!=="object")throw"invalid huffman sequence"}return null}function receive(length){var n=0;while(length>0){var bit=readBit();if(bit===null)return;n=n<<1|bit;length--}return n}function receiveAndExtend(length){var n=receive(length);if(n>=1<>4;if(s===0){if(r<15)break;k+=16;continue}k+=r;var z=dctZigZag[k];component.blockData[offset+z]=receiveAndExtend(s);k++}}function decodeDCFirst(component,offset){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:receiveAndExtend(t)<0){eobrun--;return}var k=spectralStart,e=spectralEnd;while(k<=e){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<>4;if(s===0){if(r<15){eobrun=receive(r)+(1<=65488&&marker<=65495){offset+=2}else{break}}return offset-startOffset}function quantizeAndInverse(component,blockBufferOffset,p){var qt=component.quantizationTable;var v0,v1,v2,v3,v4,v5,v6,v7,t;var i;for(i=0;i<64;i++){p[i]=component.blockData[blockBufferOffset+i]*qt[i]}for(i=0;i<8;++i){var row=8*i;if(p[1+row]===0&&p[2+row]===0&&p[3+row]===0&&p[4+row]===0&&p[5+row]===0&&p[6+row]===0&&p[7+row]===0){t=dctSqrt2*p[0+row]+512>>10;p[0+row]=t;p[1+row]=t;p[2+row]=t;p[3+row]=t;p[4+row]=t;p[5+row]=t;p[6+row]=t;p[7+row]=t;continue}v0=dctSqrt2*p[0+row]+128>>8;v1=dctSqrt2*p[4+row]+128>>8;v2=p[2+row];v3=p[6+row];v4=dctSqrt1d2*(p[1+row]-p[7+row])+128>>8;v7=dctSqrt1d2*(p[1+row]+p[7+row])+128>>8;v5=p[3+row]<<4;v6=p[5+row]<<4;t=v0-v1+1>>1;v0=v0+v1+1>>1;v1=t;t=v2*dctSin6+v3*dctCos6+128>>8;v2=v2*dctCos6-v3*dctSin6+128>>8;v3=t;t=v4-v6+1>>1;v4=v4+v6+1>>1;v6=t;t=v7+v5+1>>1;v5=v7-v5+1>>1;v7=t;t=v0-v3+1>>1;v0=v0+v3+1>>1;v3=t;t=v1-v2+1>>1;v1=v1+v2+1>>1;v2=t;t=v4*dctSin3+v7*dctCos3+2048>>12;v4=v4*dctCos3-v7*dctSin3+2048>>12;v7=t;t=v5*dctSin1+v6*dctCos1+2048>>12;v5=v5*dctCos1-v6*dctSin1+2048>>12;v6=t;p[0+row]=v0+v7;p[7+row]=v0-v7;p[1+row]=v1+v6;p[6+row]=v1-v6;p[2+row]=v2+v5;p[5+row]=v2-v5;p[3+row]=v3+v4;p[4+row]=v3-v4}for(i=0;i<8;++i){var col=i;if(p[1*8+col]===0&&p[2*8+col]===0&&p[3*8+col]===0&&p[4*8+col]===0&&p[5*8+col]===0&&p[6*8+col]===0&&p[7*8+col]===0){t=dctSqrt2*p[i+0]+8192>>14;p[0*8+col]=t;p[1*8+col]=t;p[2*8+col]=t;p[3*8+col]=t;p[4*8+col]=t;p[5*8+col]=t;p[6*8+col]=t;p[7*8+col]=t;continue}v0=dctSqrt2*p[0*8+col]+2048>>12;v1=dctSqrt2*p[4*8+col]+2048>>12;v2=p[2*8+col];v3=p[6*8+col];v4=dctSqrt1d2*(p[1*8+col]-p[7*8+col])+2048>>12;v7=dctSqrt1d2*(p[1*8+col]+p[7*8+col])+2048>>12;v5=p[3*8+col];v6=p[5*8+col];t=v0-v1+1>>1;v0=v0+v1+1>>1;v1=t;t=v2*dctSin6+v3*dctCos6+2048>>12;v2=v2*dctCos6-v3*dctSin6+2048>>12;v3=t;t=v4-v6+1>>1;v4=v4+v6+1>>1;v6=t;t=v7+v5+1>>1;v5=v7-v5+1>>1;v7=t;t=v0-v3+1>>1;v0=v0+v3+1>>1;v3=t;t=v1-v2+1>>1;v1=v1+v2+1>>1;v2=t;t=v4*dctSin3+v7*dctCos3+2048>>12;v4=v4*dctCos3-v7*dctSin3+2048>>12;v7=t;t=v5*dctSin1+v6*dctCos1+2048>>12;v5=v5*dctCos1-v6*dctSin1+2048>>12;v6=t;p[0*8+col]=v0+v7;p[7*8+col]=v0-v7;p[1*8+col]=v1+v6;p[6*8+col]=v1-v6;p[2*8+col]=v2+v5;p[5*8+col]=v2-v5;p[3*8+col]=v3+v4;p[4*8+col]=v3-v4}for(i=0;i<64;++i){var index=blockBufferOffset+i;var q=p[i];q=q<=-2056/component.bitConversion?0:q>=2024/component.bitConversion?255/component.bitConversion:q+2056/component.bitConversion>>4;component.blockData[index]=q}}function buildComponentData(frame,component){var lines=[];var blocksPerLine=component.blocksPerLine;var blocksPerColumn=component.blocksPerColumn;var samplesPerLine=blocksPerLine<<3;var computationBuffer=new Int32Array(64);var i,j,ll=0;for(var blockRow=0;blockRow=255?255:a|0}constructor.prototype={load:function load(path){var handleData=function(data){this.parse(data);if(this.onload)this.onload()}.bind(this);if(path.indexOf("data:")>-1){var offset=path.indexOf("base64,")+7;var data=atob(path.substring(offset));var arr=new Uint8Array(data.length);for(var i=data.length-1;i>=0;i--){arr[i]=data.charCodeAt(i)}handleData(data)}else{var xhr=new XMLHttpRequest;xhr.open("GET",path,true);xhr.responseType="arraybuffer";xhr.onload=function(){var data=new Uint8Array(xhr.response);handleData(data)}.bind(this);xhr.send(null)}},parse:function parse(data){function readUint16(){var value=data[offset]<<8|data[offset+1];offset+=2;return value}function readDataBlock(){var length=readUint16();var array=data.subarray(offset,offset+length-2);offset+=array.length;return array}function prepareComponents(frame){var mcusPerLine=Math.ceil(frame.samplesPerLine/8/frame.maxH);var mcusPerColumn=Math.ceil(frame.scanLines/8/frame.maxV);for(var i=0;i>4===0){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=data[offset++]}}else if(quantizationTableSpec>>4===1){for(j=0;j<64;j++){var zz=dctZigZag[j];tableData[zz]=readUint16()}}else throw"DQT: invalid table spec";quantizationTables[quantizationTableSpec&15]=tableData}break;case 65472:case 65473:case 65474:if(frame){throw"Only single frame JPEGs supported"}readUint16();frame={};frame.extended=fileMarker===65473;frame.progressive=fileMarker===65474;frame.precision=data[offset++];frame.scanLines=readUint16();frame.samplesPerLine=readUint16();frame.components=[];frame.componentIds={};var componentsCount=data[offset++],componentId;var maxH=0,maxV=0;for(i=0;i>4;var v=data[offset+1]&15;if(maxH>4===0?huffmanTablesDC:huffmanTablesAC)[huffmanTableSpec&15]=buildHuffmanTable(codeLengths,huffmanValues)}break;case 65501:readUint16();resetInterval=readUint16();break;case 65498:var scanLength=readUint16();var selectorsCount=data[offset++];var components=[],component;for(i=0;i>4];component.huffmanTableAC=huffmanTablesAC[tableSpec&15];components.push(component)}var spectralStart=data[offset++];var spectralEnd=data[offset++];var successiveApproximation=data[offset++];var processed=decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successiveApproximation>>4,successiveApproximation&15);offset+=processed;break;default:if(data[offset-3]==255&&data[offset-2]>=192&&data[offset-2]<=254){offset-=3;break}throw"unknown JPEG marker "+fileMarker.toString(16)}fileMarker=readUint16()}this.width=frame.samplesPerLine;this.height=frame.scanLines;this.jfif=jfif;this.adobe=adobe;this.components=[];switch(frame.components.length){case 1:this.colorspace=ColorSpace.Grayscale;break;case 3:if(this.adobe)this.colorspace=ColorSpace.AdobeRGB;else this.colorspace=ColorSpace.RGB;break;case 4:this.colorspace=ColorSpace.CYMK;break;default:this.colorspace=ColorSpace.Unknown}for(var i=0;i>24&255,tbox>>16&255,tbox>>8&255,tbox&255);warn("Unsupported header type "+tbox+" ("+headerType+")");break}if(jumpDataLength){position+=dataLength}}},parseImageProperties:function JpxImage_parseImageProperties(stream){var newByte=stream.getByte();while(newByte>=0){var oldByte=newByte;newByte=stream.getByte();var code=oldByte<<8|newByte;if(code===65361){stream.skip(4);var Xsiz=stream.getInt32()>>>0;var Ysiz=stream.getInt32()>>>0;var XOsiz=stream.getInt32()>>>0;var YOsiz=stream.getInt32()>>>0;stream.skip(16);var Csiz=stream.getUint16();this.width=Xsiz-XOsiz;this.height=Ysiz-YOsiz;this.componentsCount=Csiz;this.bitsPerComponent=8;return}}throw new Error("JPX Error: No size marker found in JPX stream")},parseCodestream:function JpxImage_parseCodestream(data,start,end){var context={};try{var doNotRecover=false;var position=start;while(position+1>5;spqcds=[];while(j>3;spqcd.mu=0}else{spqcd.epsilon=data[j]>>3;spqcd.mu=(data[j]&7)<<8|data[j+1];j+=2}spqcds.push(spqcd)}qcd.SPqcds=spqcds;if(context.mainHeader){context.QCD=qcd}else{context.currentTile.QCD=qcd;context.currentTile.QCC=[]}break;case 65373:length=readUint16(data,position);var qcc={};j=position+2;var cqcc;if(context.SIZ.Csiz<257){cqcc=data[j++]}else{cqcc=readUint16(data,j);j+=2}sqcd=data[j++];switch(sqcd&31){case 0:spqcdSize=8;scalarExpounded=true;break;case 1:spqcdSize=16;scalarExpounded=false;break;case 2:spqcdSize=16;scalarExpounded=true;break;default:throw new Error("JPX Error: Invalid SQcd value "+sqcd)}qcc.noQuantization=spqcdSize===8;qcc.scalarExpounded=scalarExpounded;qcc.guardBits=sqcd>>5;spqcds=[];while(j>3;spqcd.mu=0}else{spqcd.epsilon=data[j]>>3;spqcd.mu=(data[j]&7)<<8|data[j+1];j+=2}spqcds.push(spqcd)}qcc.SPqcds=spqcds;if(context.mainHeader){context.QCC[cqcc]=qcc}else{context.currentTile.QCC[cqcc]=qcc}break;case 65362:length=readUint16(data,position);var cod={};j=position+2;var scod=data[j++];cod.entropyCoderWithCustomPrecincts=!!(scod&1);cod.sopMarkerUsed=!!(scod&2);cod.ephMarkerUsed=!!(scod&4);cod.progressionOrder=data[j++];cod.layersCount=readUint16(data,j);j+=2;cod.multipleComponentTransform=data[j++];cod.decompositionLevelsCount=data[j++];cod.xcb=(data[j++]&15)+2;cod.ycb=(data[j++]&15)+2;var blockStyle=data[j++];cod.selectiveArithmeticCodingBypass=!!(blockStyle&1);cod.resetContextProbabilities=!!(blockStyle&2);cod.terminationOnEachCodingPass=!!(blockStyle&4);cod.verticalyStripe=!!(blockStyle&8);cod.predictableTermination=!!(blockStyle&16);cod.segmentationSymbolUsed=!!(blockStyle&32);cod.reversibleTransformation=data[j++];if(cod.entropyCoderWithCustomPrecincts){var precinctsSizes=[];while(j>4})}cod.precinctsSizes=precinctsSizes}var unsupported=[];if(cod.selectiveArithmeticCodingBypass){unsupported.push("selectiveArithmeticCodingBypass")}if(cod.resetContextProbabilities){unsupported.push("resetContextProbabilities")}if(cod.terminationOnEachCodingPass){unsupported.push("terminationOnEachCodingPass")}if(cod.verticalyStripe){unsupported.push("verticalyStripe")}if(cod.predictableTermination){unsupported.push("predictableTermination")}if(unsupported.length>0){doNotRecover=true;throw new Error("JPX Error: Unsupported COD options ("+unsupported.join(", ")+")")}if(context.mainHeader){context.COD=cod}else{context.currentTile.COD=cod;context.currentTile.COC=[]}break;case 65424:length=readUint16(data,position);tile={};tile.index=readUint16(data,position+2);tile.length=readUint32(data,position+4);tile.dataEnd=tile.length+position-2;tile.partIndex=data[position+8];tile.partsCount=data[position+9];context.mainHeader=false;if(tile.partIndex===0){tile.COD=context.COD;tile.COC=context.COC.slice(0);tile.QCD=context.QCD;tile.QCC=context.QCC.slice(0)}context.currentTile=tile;break;case 65427:tile=context.currentTile;if(tile.partIndex===0){initializeTile(context,tile.index);buildPackets(context)}length=tile.dataEnd-position;parseTilePackets(context,data,position,length);break;case 65365:case 65367:case 65368:case 65380:length=readUint16(data,position);break;case 65363:throw new Error("JPX Error: Codestream code 0xFF53 (COC) is "+"not implemented");default:throw new Error("JPX Error: Unknown codestream code: "+code.toString(16))}position+=length}}catch(e){if(doNotRecover||this.failOnCorruptedImage){throw e}else{warn("Trying to recover from "+e.message)}}this.tiles=transformComponents(context);this.width=context.SIZ.Xsiz-context.SIZ.XOsiz;this.height=context.SIZ.Ysiz-context.SIZ.YOsiz;this.componentsCount=context.SIZ.Csiz}};function calculateComponentDimensions(component,siz){component.x0=Math.ceil(siz.XOsiz/component.XRsiz);component.x1=Math.ceil(siz.Xsiz/component.XRsiz);component.y0=Math.ceil(siz.YOsiz/component.YRsiz);component.y1=Math.ceil(siz.Ysiz/component.YRsiz);component.width=component.x1-component.x0;component.height=component.y1-component.y0}function calculateTileGrids(context,components){var siz=context.SIZ;var tile,tiles=[];var numXtiles=Math.ceil((siz.Xsiz-siz.XTOsiz)/siz.XTsiz);var numYtiles=Math.ceil((siz.Ysiz-siz.YTOsiz)/siz.YTsiz);for(var q=0;q0?Math.min(codOrCoc.xcb,result.PPx-1):Math.min(codOrCoc.xcb,result.PPx);result.ycb_=r>0?Math.min(codOrCoc.ycb,result.PPy-1):Math.min(codOrCoc.ycb,result.PPy);return result}function buildPrecincts(context,resolution,dimensions){var precinctWidth=1<resolution.trx0?Math.ceil(resolution.trx1/precinctWidth)-Math.floor(resolution.trx0/precinctWidth):0;var numprecinctshigh=resolution.try1>resolution.try0?Math.ceil(resolution.try1/precinctHeight)-Math.floor(resolution.try0/precinctHeight):0;var numprecincts=numprecinctswide*numprecinctshigh;resolution.precinctParameters={precinctWidth:precinctWidth,precinctHeight:precinctHeight,numprecinctswide:numprecinctswide,numprecinctshigh:numprecinctshigh,numprecincts:numprecincts,precinctWidthInSubband:precinctWidthInSubband,precinctHeightInSubband:precinctHeightInSubband}}function buildCodeblocks(context,subband,dimensions){var xcb_=dimensions.xcb_;var ycb_=dimensions.ycb_;var codeblockWidth=1<>xcb_;var cby0=subband.tby0>>ycb_;var cbx1=subband.tbx1+codeblockWidth-1>>xcb_;var cby1=subband.tby1+codeblockHeight-1>>ycb_;var precinctParameters=subband.resolution.precinctParameters;var codeblocks=[];var precincts=[];var i,j,codeblock,precinctNumber;for(j=cby0;jprecinct.cbxMax){precinct.cbxMax=i}if(jprecinct.cbyMax){precinct.cbyMax=j}}else{precincts[precinctNumber]=precinct={cbxMin:i,cbyMin:j,cbxMax:i,cbyMax:j}}codeblock.precinct=precinct}}subband.codeblockParameters={codeblockWidth:xcb_,codeblockHeight:ycb_,numcodeblockwide:cbx1-cbx0+1,numcodeblockhigh:cby1-cby0+1};subband.codeblocks=codeblocks;subband.precincts=precincts}function createPacket(resolution,precinctNumber,layerNumber){var precinctCodeblocks=[];var subbands=resolution.subbands;for(var i=0,ii=subbands.length;icomponent.codingStyleParameters.decompositionLevelsCount){continue}var resolution=component.resolutions[r];var numprecincts=resolution.precinctParameters.numprecincts;for(;kcomponent.codingStyleParameters.decompositionLevelsCount){continue}var resolution=component.resolutions[r];var numprecincts=resolution.precinctParameters.numprecincts;for(;kcomponent.codingStyleParameters.decompositionLevelsCount){continue}var resolution=component.resolutions[r];var numprecincts=resolution.precinctParameters.numprecincts;if(p>=numprecincts){continue}for(;l=0;--r){var resolution=component.resolutions[r];var widthCurrentResolution=scale*resolution.precinctParameters.precinctWidth;var heightCurrentResolution=scale*resolution.precinctParameters.precinctHeight;minWidthCurrentComponent=Math.min(minWidthCurrentComponent,widthCurrentResolution);minHeightCurrentComponent=Math.min(minHeightCurrentComponent,heightCurrentResolution);maxNumWideCurrentComponent=Math.max(maxNumWideCurrentComponent,resolution.precinctParameters.numprecinctswide);maxNumHighCurrentComponent=Math.max(maxNumHighCurrentComponent,resolution.precinctParameters.numprecinctshigh);sizePerResolution[r]={width:widthCurrentResolution,height:heightCurrentResolution};scale<<=1}minWidth=Math.min(minWidth,minWidthCurrentComponent);minHeight=Math.min(minHeight,minHeightCurrentComponent);maxNumWide=Math.max(maxNumWide,maxNumWideCurrentComponent);maxNumHigh=Math.max(maxNumHigh,maxNumHighCurrentComponent);sizePerComponent[c]={resolutions:sizePerResolution,minWidth:minWidthCurrentComponent,minHeight:minHeightCurrentComponent,maxNumWide:maxNumWideCurrentComponent,maxNumHigh:maxNumHighCurrentComponent}}return{components:sizePerComponent,minWidth:minWidth,minHeight:minHeight,maxNumWide:maxNumWide,maxNumHigh:maxNumHigh}}function buildPackets(context){var siz=context.SIZ;var tileIndex=context.currentTile.index;var tile=context.tiles[tileIndex];var componentsCount=siz.Csiz;for(var c=0;c=data.length){throw new Error("Unexpected EOF")}var b=data[offset+position];position++;if(skipNextBit){buffer=buffer<<7|b;bufferSize+=7;skipNextBit=false}else{buffer=buffer<<8|b;bufferSize+=8}if(b===255){skipNextBit=true}}bufferSize-=count;return buffer>>>bufferSize&(1<=data.length){return}if(inclusionTree.isAboveThreshold()){break}if(inclusionTree.isKnown()){inclusionTree.nextLevel();continue}if(readBits(1)){inclusionTree.setKnown();if(inclusionTree.isLeaf()){codeblock.included=true;codeblockIncluded=firstTimeInclusion=true;break}else{inclusionTree.nextLevel()}}else{inclusionTree.incrementValue()}}}if(!codeblockIncluded){continue}if(firstTimeInclusion){zeroBitPlanesTree=precinct.zeroBitPlanesTree;zeroBitPlanesTree.reset(codeblockColumn,codeblockRow);while(true){if(position>=data.length){return}if(readBits(1)){valueReady=!zeroBitPlanesTree.nextLevel();if(valueReady){break}}else{zeroBitPlanesTree.incrementValue()}}codeblock.zeroBitPlanes=zeroBitPlanesTree.value}var codingpasses=readCodingpasses();while(readBits(1)){codeblock.Lblock++}var codingpassesLog2=log2(codingpasses);var bits=(codingpasses<1<0){var packetItem=queue.shift();codeblock=packetItem.codeblock;if(codeblock["data"]===undefined){codeblock.data=[]}codeblock.data.push({data:data,start:offset+position,end:offset+position+packetItem.dataLength,codingpasses:packetItem.codingpasses});position+=packetItem.dataLength}}catch(e){return}}return position}function copyCoefficients(coefficients,levelWidth,levelHeight,subband,delta,mb,reversible,segmentationSymbolUsed){var x0=subband.tbx0;var y0=subband.tby0;var width=subband.tbx1-subband.tbx0;var codeblocks=subband.codeblocks;var right=subband.type.charAt(0)==="H"?1:0;var bottom=subband.type.charAt(1)==="H"?levelWidth:0;for(var i=0,ii=codeblocks.length;i=mb){coefficients[pos]=n}else{coefficients[pos]=n*(1<0?1-i:0)}else{mu=spqcds[b].mu;epsilon=spqcds[b].epsilon;b++}var subband=resolution.subbands[j];var gainLog2=SubbandsGainLog2[subband.type];var delta=reversible?1:Math.pow(2,precision+gainLog2-epsilon)*(1+mu/2048);var mb=guardBits+epsilon-1;copyCoefficients(coefficients,width,height,subband,delta,mb,reversible,segmentationSymbolUsed)}subbandCoefficients.push({width:width,height:height,items:coefficients})}var result=transform.calculate(subbandCoefficients,component.tcx0,component.tcy0);return{left:component.tcx0,top:component.tcy0,width:result.width,height:result.height,items:result.items}}function transformComponents(context){var siz=context.SIZ;var components=context.components;var componentsCount=siz.Csiz;var resultImages=[];for(var i=0,ii=context.tiles.length;i=max?255:r>>shift;out[pos++]=g<=0?0:g>=max?255:g>>shift;out[pos++]=b<=0?0:b>=max?255:b>>shift}}else{for(j=0;j>2);r=g+y2;b=g+y1;out[pos++]=r<=0?0:r>=max?255:r>>shift;out[pos++]=g<=0?0:g>=max?255:g>>shift;out[pos++]=b<=0?0:b>=max?255:b>>shift}}if(fourComponents){for(j=0,pos=3;j=maxK?255:k+offset>>shift}}}else{for(c=0;c=max?255:val+offset>>shift;pos+=componentsCount}}else{var isSigned=components[c].isSigned;var items=transformedTiles[c].items;if(isSigned){for(pos=c,j=0,jj=items.length;j>=1;j>>=1;currentLevel++}currentLevel--;level=this.levels[currentLevel];level.items[level.index]=value;this.currentLevel=currentLevel;delete this.value},incrementValue:function TagTree_incrementValue(){var level=this.levels[this.currentLevel];level.items[level.index]++},nextLevel:function TagTree_nextLevel(){var currentLevel=this.currentLevel;var level=this.levels[currentLevel];var value=level.items[level.index];currentLevel--;if(currentLevel<0){this.value=value;return false}this.currentLevel=currentLevel;level=this.levels[currentLevel];level.items[level.index]=value;return true}};return TagTree}();var InclusionTree=function InclusionTreeClosure(){function InclusionTree(width,height){var levelsLength=log2(Math.max(width,height))+1;this.levels=[];for(var i=0;i>=1;j>>=1;currentLevel++}this.currentLevel=this.levels.length-1;this.minValue=this.levels[this.currentLevel].items[0];return},incrementValue:function InclusionTree_incrementValue(){var level=this.levels[this.currentLevel];level.items[level.index]=level.items[level.index]+1;if(level.items[level.index]>this.minValue){this.minValue=level.items[level.index]}},nextLevel:function InclusionTree_nextLevel(){var currentLevel=this.currentLevel;currentLevel--;if(currentLevel<0){return false}else{this.currentLevel=currentLevel;var level=this.levels[currentLevel];if(level.items[level.index]this.minValue){this.minValue=level.items[level.index]}return true}},isLeaf:function InclusionTree_isLeaf(){return this.currentLevel===0},isAboveThreshold:function InclusionTree_isAboveThreshold(){var levelindex=this.currentLevel;var level=this.levels[levelindex];return level.items[level.index]>this.currentStopValue},isKnown:function InclusionTree_isKnown(){var levelindex=this.currentLevel;var level=this.levels[levelindex];return level.status[level.index]>0},setKnown:function InclusionTree_setKnown(){var levelindex=this.currentLevel;var level=this.levels[levelindex];level.status[level.index]=1;return}};return InclusionTree}();var BitModel=function BitModelClosure(){var UNIFORM_CONTEXT=17;var RUNLENGTH_CONTEXT=18;var LLAndLHContextsLabel=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]);var HLContextLabel=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]);var HHContextLabel=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);function BitModel(width,height,subband,zeroBitPlanes,mb){this.width=width;this.height=height;this.contextLabelTable=subband==="HH"?HHContextLabel:subband==="HL"?HLContextLabel:LLAndLHContextsLabel;var coefficientCount=width*height;this.neighborsSignificance=new Uint8Array(coefficientCount);this.coefficentsSign=new Uint8Array(coefficientCount);this.coefficentsMagnitude=mb>14?new Uint32Array(coefficientCount):mb>6?new Uint16Array(coefficientCount):new Uint8Array(coefficientCount);this.processingFlags=new Uint8Array(coefficientCount);var bitsDecoded=new Uint8Array(coefficientCount);if(zeroBitPlanes!==0){for(var i=0;i0;var right=column+10){i=index-width;if(left){neighborsSignificance[i-1]+=16}if(right){neighborsSignificance[i+1]+=16}neighborsSignificance[i]+=4}if(row+1=height){break}processingFlags[index]&=processedInverseMask;if(coefficentsMagnitude[index]||!neighborsSignificance[index]){continue}var contextLabel=labels[neighborsSignificance[index]];var decision=decoder.readBit(contexts,contextLabel);if(decision){var sign=this.decodeSignBit(i,j,index);coefficentsSign[index]=sign;coefficentsMagnitude[index]=1;this.setNeighborsSignificance(i,j,index);processingFlags[index]|=firstMagnitudeBitMask}bitsDecoded[index]++;processingFlags[index]|=processedMask}}}},decodeSignBit:function BitModel_decodeSignBit(row,column,index){var width=this.width,height=this.height;var coefficentsMagnitude=this.coefficentsMagnitude;var coefficentsSign=this.coefficentsSign;var contribution,sign0,sign1,significance1;var contextLabel,decoded;significance1=column>0&&coefficentsMagnitude[index-1]!==0;if(column+10&&coefficentsMagnitude[index-width]!==0;if(row+1=0){contextLabel=9+contribution;decoded=this.decoder.readBit(this.contexts,contextLabel)}else{contextLabel=9-contribution;decoded=this.decoder.readBit(this.contexts,contextLabel)^1}return decoded},runMagnitudeRefinementPass:function BitModel_runMagnitudeRefinementPass(){var decoder=this.decoder;var width=this.width,height=this.height;var coefficentsMagnitude=this.coefficentsMagnitude;var neighborsSignificance=this.neighborsSignificance;var contexts=this.contexts;var bitsDecoded=this.bitsDecoded;var processingFlags=this.processingFlags;var processedMask=1;var firstMagnitudeBitMask=2;var length=width*height;var width4=width*4;for(var index0=0,indexNext;index0>1;offset=offset|0;var j,n,current,next;var alpha=-1.586134342059924;var beta=-.052980118572961;var gamma=.882911075530934;var delta=.443506852043971;var K=1.230174104914001;var K_=1/K;j=offset-3;for(n=len+4;n--;j+=2){x[j]*=K_}j=offset-2;current=delta*x[j-1];for(n=len+3;n--;j+=2){next=delta*x[j+1];x[j]=K*x[j]-current-next;if(n--){j+=2;current=delta*x[j+1];x[j]=K*x[j]-current-next}else{break}}j=offset-1;current=gamma*x[j-1];for(n=len+2;n--;j+=2){next=gamma*x[j+1];x[j]-=current+next;if(n--){j+=2;current=gamma*x[j+1];x[j]-=current+next}else{break}}j=offset;current=beta*x[j-1];for(n=len+1;n--;j+=2){next=beta*x[j+1];x[j]-=current+next;if(n--){j+=2;current=beta*x[j+1];x[j]-=current+next}else{break}}if(len!==0){j=offset+1;current=alpha*x[j-1];for(n=len;n--;j+=2){next=alpha*x[j+1];x[j]-=current+next;if(n--){j+=2;current=alpha*x[j+1];x[j]-=current+next}else{break}}}};return IrreversibleTransform}();var ReversibleTransform=function ReversibleTransformClosure(){function ReversibleTransform(){Transform.call(this)}ReversibleTransform.prototype=Object.create(Transform.prototype);ReversibleTransform.prototype.filter=function reversibleTransformFilter(x,offset,length){var len=length>>1;offset=offset|0;var j,n;for(j=offset,n=len+1;n--;j+=2){x[j]-=x[j-1]+x[j+1]+2>>2}for(j=offset+1,n=len;n--;j+=2){x[j]+=x[j-1]+x[j+1]>>1}};return ReversibleTransform}();return JpxImage}();"use strict";var ArithmeticDecoder=function ArithmeticDecoderClosure(){var QeTable=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];function ArithmeticDecoder(data,start,end){this.data=data;this.bp=start;this.dataEnd=end;this.chigh=data[start];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}ArithmeticDecoder.prototype={byteIn:function ArithmeticDecoder_byteIn(){var data=this.data;var bp=this.bp;if(data[bp]===255){var b1=data[bp+1];if(b1>143){this.clow+=65280;this.ct=8}else{bp++;this.clow+=data[bp]<<9;this.ct=7;this.bp=bp}}else{bp++;this.clow+=bp65535){this.chigh+=this.clow>>16;this.clow&=65535}},readBit:function ArithmeticDecoder_readBit(contexts,pos){var cx_index=contexts[pos]>>1,cx_mps=contexts[pos]&1;var qeTableIcx=QeTable[cx_index];var qeIcx=qeTableIcx.qe;var d;var a=this.a-qeIcx;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while((a&32768)===0);this.a=a;contexts[pos]=cx_index<<1|cx_mps;return d}};return ArithmeticDecoder}();"use strict";var globalScope=typeof window==="undefined"?this:window;var isWorker=typeof window==="undefined";var FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0];var TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4};var ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3};var AnnotationType={WIDGET:1,TEXT:2,LINK:3};var StreamType={UNKNOWN:0,FLATE:1,LZW:2,DCT:3,JPX:4,JBIG:5,A85:6,AHX:7,CCF:8,RL:9};var FontType={UNKNOWN:0,TYPE1:1,TYPE1C:2,CIDFONTTYPE0:3,CIDFONTTYPE0C:4,TRUETYPE:5,CIDFONTTYPE2:6,TYPE3:7,OPENTYPE:8,TYPE0:9,MMTYPE1:10};if(!globalScope.PDFJS){globalScope.PDFJS={}}globalScope.PDFJS.pdfBug=false;PDFJS.VERBOSITY_LEVELS={errors:0,warnings:1,infos:5};var OPS=PDFJS.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91};function info(msg){if(PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.infos){console.log("Info: "+msg)}}function warn(msg){if(PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.warnings){console.log("Warning: "+msg)}}function error(msg){if(arguments.length>1){var logArguments=["Error:"];logArguments.push.apply(logArguments,arguments);console.log.apply(console,logArguments);msg=[].join.call(arguments," ")}else{console.log("Error: "+msg)}console.log(backtrace());UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);throw new Error(msg)}function backtrace(){try{throw new Error}catch(e){return e.stack?e.stack.split("\n").slice(2).join("\n"):""}}function assert(cond,msg){if(!cond){error(msg)}}var UNSUPPORTED_FEATURES=PDFJS.UNSUPPORTED_FEATURES={unknown:"unknown",forms:"forms",javaScript:"javaScript",smask:"smask",shadingPattern:"shadingPattern",font:"font"};var UnsupportedManager=PDFJS.UnsupportedManager=function UnsupportedManagerClosure(){var listeners=[];return{listen:function(cb){listeners.push(cb)},notify:function(featureId){warn('Unsupported feature "'+featureId+'"');for(var i=0,ii=listeners.length;i=0?i:pathLength;i=baseUrl.lastIndexOf("?",pathLength);pathLength=i>=0?i:pathLength;var prefixLength=baseUrl.lastIndexOf("/",pathLength);return baseUrl.substring(0,prefixLength+1)+url}}function isValidUrl(url,allowRelative){if(!url){return false}var protocol=/^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url);if(!protocol){return allowRelative}protocol=protocol[0].toLowerCase();switch(protocol){case"http":case"https":case"ftp":case"mailto":case"tel":return true;default:return false}}PDFJS.isValidUrl=isValidUrl;function shadow(obj,prop,value){Object.defineProperty(obj,prop,{value:value,enumerable:true,configurable:true,writable:false});return value}PDFJS.shadow=shadow;var PasswordResponses=PDFJS.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};var PasswordException=function PasswordExceptionClosure(){function PasswordException(msg,code){this.name="PasswordException";this.message=msg;this.code=code}PasswordException.prototype=new Error;PasswordException.constructor=PasswordException;return PasswordException}();PDFJS.PasswordException=PasswordException;var UnknownErrorException=function UnknownErrorExceptionClosure(){function UnknownErrorException(msg,details){this.name="UnknownErrorException";this.message=msg;this.details=details}UnknownErrorException.prototype=new Error;UnknownErrorException.constructor=UnknownErrorException;return UnknownErrorException}();PDFJS.UnknownErrorException=UnknownErrorException;var InvalidPDFException=function InvalidPDFExceptionClosure(){function InvalidPDFException(msg){this.name="InvalidPDFException";this.message=msg}InvalidPDFException.prototype=new Error;InvalidPDFException.constructor=InvalidPDFException;return InvalidPDFException}();PDFJS.InvalidPDFException=InvalidPDFException;var MissingPDFException=function MissingPDFExceptionClosure(){function MissingPDFException(msg){this.name="MissingPDFException";this.message=msg}MissingPDFException.prototype=new Error;MissingPDFException.constructor=MissingPDFException;return MissingPDFException}();PDFJS.MissingPDFException=MissingPDFException;var UnexpectedResponseException=function UnexpectedResponseExceptionClosure(){function UnexpectedResponseException(msg,status){this.name="UnexpectedResponseException";this.message=msg;this.status=status}UnexpectedResponseException.prototype=new Error;UnexpectedResponseException.constructor=UnexpectedResponseException;return UnexpectedResponseException}();PDFJS.UnexpectedResponseException=UnexpectedResponseException;var NotImplementedException=function NotImplementedExceptionClosure(){function NotImplementedException(msg){this.message=msg}NotImplementedException.prototype=new Error;NotImplementedException.prototype.name="NotImplementedException";NotImplementedException.constructor=NotImplementedException;return NotImplementedException}();var MissingDataException=function MissingDataExceptionClosure(){function MissingDataException(begin,end){this.begin=begin;this.end=end;this.message="Missing data ["+begin+", "+end+")"}MissingDataException.prototype=new Error;MissingDataException.prototype.name="MissingDataException";MissingDataException.constructor=MissingDataException;return MissingDataException}();var XRefParseException=function XRefParseExceptionClosure(){function XRefParseException(msg){this.message=msg}XRefParseException.prototype=new Error;XRefParseException.prototype.name="XRefParseException";XRefParseException.constructor=XRefParseException;return XRefParseException}();function bytesToString(bytes){assert(bytes!==null&&typeof bytes==="object"&&bytes.length!==undefined,"Invalid argument for bytesToString");var length=bytes.length;var MAX_ARGUMENT_COUNT=8192;if(length>24&255,value>>16&255,value>>8&255,value&255)}function log2(x){var n=1,i=0;while(x>n){n<<=1;i++}return i}function readInt8(data,start){return data[start]<<24>>24}function readUint16(data,offset){return data[offset]<<8|data[offset+1]}function readUint32(data,offset){return(data[offset]<<24|data[offset+1]<<16|data[offset+2]<<8|data[offset+3])>>>0}function isLittleEndian(){var buffer8=new Uint8Array(2);buffer8[0]=1;var buffer16=new Uint16Array(buffer8.buffer);return buffer16[0]===1}Object.defineProperty(PDFJS,"isLittleEndian",{configurable:true,get:function PDFJS_isLittleEndian(){return shadow(PDFJS,"isLittleEndian",isLittleEndian())}});function hasCanvasTypedArrays(){var canvas=document.createElement("canvas");canvas.width=canvas.height=1;var ctx=canvas.getContext("2d");var imageData=ctx.createImageData(1,1);return typeof imageData.data.buffer!=="undefined"}Object.defineProperty(PDFJS,"hasCanvasTypedArrays",{configurable:true,get:function PDFJS_hasCanvasTypedArrays(){return shadow(PDFJS,"hasCanvasTypedArrays",hasCanvasTypedArrays())}});var Uint32ArrayView=function Uint32ArrayViewClosure(){function Uint32ArrayView(buffer,length){this.buffer=buffer;this.byteLength=buffer.length;this.length=length===undefined?this.byteLength>>2:length;ensureUint32ArrayViewProps(this.length)}Uint32ArrayView.prototype=Object.create(null);var uint32ArrayViewSetters=0;function createUint32ArrayProp(index){return{get:function(){var buffer=this.buffer,offset=index<<2;return(buffer[offset]|buffer[offset+1]<<8|buffer[offset+2]<<16|buffer[offset+3]<<24)>>>0},set:function(value){var buffer=this.buffer,offset=index<<2;buffer[offset]=value&255;buffer[offset+1]=value>>8&255;buffer[offset+2]=value>>16&255;buffer[offset+3]=value>>>24&255}}}function ensureUint32ArrayViewProps(length){while(uint32ArrayViewSettersrect[2]){r[0]=rect[2];r[2]=rect[0]}if(rect[1]>rect[3]){r[1]=rect[3];r[3]=rect[1]}return r};Util.intersect=function Util_intersect(rect1,rect2){function compare(a,b){return a-b}var orderedX=[rect1[0],rect1[2],rect2[0],rect2[2]].sort(compare),orderedY=[rect1[1],rect1[3],rect2[1],rect2[3]].sort(compare),result=[];rect1=Util.normalizeRect(rect1);rect2=Util.normalizeRect(rect2);if(orderedX[0]===rect1[0]&&orderedX[1]===rect2[0]||orderedX[0]===rect2[0]&&orderedX[1]===rect1[0]){result[0]=orderedX[1];result[2]=orderedX[2]}else{return false}if(orderedY[0]===rect1[1]&&orderedY[1]===rect2[1]||orderedY[0]===rect2[1]&&orderedY[1]===rect1[1]){result[1]=orderedY[1];result[3]=orderedY[2]}else{return false}return result};Util.sign=function Util_sign(num){return num<0?-1:1};Util.appendToArray=function Util_appendToArray(arr1,arr2){Array.prototype.push.apply(arr1,arr2)};Util.prependToArray=function Util_prependToArray(arr1,arr2){Array.prototype.unshift.apply(arr1,arr2)};Util.extendObj=function extendObj(obj1,obj2){for(var key in obj2){obj1[key]=obj2[key]}};Util.getInheritableProperty=function Util_getInheritableProperty(dict,name){while(dict&&!dict.has(name)){dict=dict.get("Parent")}if(!dict){return null}return dict.get(name)};Util.inherit=function Util_inherit(sub,base,prototype){sub.prototype=Object.create(base.prototype);sub.prototype.constructor=sub;for(var prop in prototype){sub.prototype[prop]=prototype[prop]}};Util.loadScript=function Util_loadScript(src,callback){var script=document.createElement("script");var loaded=false;script.setAttribute("src",src);if(callback){script.onload=function(){if(!loaded){callback()}loaded=true}}document.getElementsByTagName("head")[0].appendChild(script)};return Util}();var PageViewport=PDFJS.PageViewport=function PageViewportClosure(){function PageViewport(viewBox,scale,rotation,offsetX,offsetY,dontFlip){this.viewBox=viewBox;this.scale=scale;this.rotation=rotation;this.offsetX=offsetX;this.offsetY=offsetY;var centerX=(viewBox[2]+viewBox[0])/2;var centerY=(viewBox[3]+viewBox[1])/2;var rotateA,rotateB,rotateC,rotateD;rotation=rotation%360;rotation=rotation<0?rotation+360:rotation;switch(rotation){case 180:rotateA=-1;rotateB=0;rotateC=0;rotateD=1;break;case 90:rotateA=0;rotateB=1;rotateC=1;rotateD=0;break;case 270:rotateA=0;rotateB=-1;rotateC=-1;rotateD=0;break;default:rotateA=1;rotateB=0;rotateC=0;rotateD=-1;break}if(dontFlip){rotateC=-rotateC;rotateD=-rotateD}var offsetCanvasX,offsetCanvasY;var width,height;if(rotateA===0){offsetCanvasX=Math.abs(centerY-viewBox[1])*scale+offsetX;offsetCanvasY=Math.abs(centerX-viewBox[0])*scale+offsetY;width=Math.abs(viewBox[3]-viewBox[1])*scale;height=Math.abs(viewBox[2]-viewBox[0])*scale}else{offsetCanvasX=Math.abs(centerX-viewBox[0])*scale+offsetX;offsetCanvasY=Math.abs(centerY-viewBox[1])*scale+offsetY;width=Math.abs(viewBox[2]-viewBox[0])*scale;height=Math.abs(viewBox[3]-viewBox[1])*scale}this.transform=[rotateA*scale,rotateB*scale,rotateC*scale,rotateD*scale,offsetCanvasX-rotateA*scale*centerX-rotateC*scale*centerY,offsetCanvasY-rotateB*scale*centerX-rotateD*scale*centerY];this.width=width;this.height=height;this.fontScale=scale}PageViewport.prototype={clone:function PageViewPort_clone(args){args=args||{};var scale="scale"in args?args.scale:this.scale;var rotation="rotation"in args?args.rotation:this.rotation;return new PageViewport(this.viewBox.slice(),scale,rotation,this.offsetX,this.offsetY,args.dontFlip)},convertToViewportPoint:function PageViewport_convertToViewportPoint(x,y){return Util.applyTransform([x,y],this.transform)},convertToViewportRectangle:function PageViewport_convertToViewportRectangle(rect){var tl=Util.applyTransform([rect[0],rect[1]],this.transform);var br=Util.applyTransform([rect[2],rect[3]],this.transform);return[tl[0],tl[1],br[0],br[1]]},convertToPdfPoint:function PageViewport_convertToPdfPoint(x,y){return Util.applyInverseTransform([x,y],this.transform)}};return PageViewport}();var PDFStringTranslateTable=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function stringToPDFString(str){var i,n=str.length,strBuf=[];if(str[0]==="þ"&&str[1]==="ÿ"){for(i=2;i0){var handler=this.handlers.shift();var nextStatus=handler.thisPromise._status;var nextValue=handler.thisPromise._value;try{if(nextStatus===STATUS_RESOLVED){if(typeof handler.onResolve==="function"){nextValue=handler.onResolve(nextValue)}}else if(typeof handler.onReject==="function"){nextValue=handler.onReject(nextValue);nextStatus=STATUS_RESOLVED;if(handler.thisPromise._unhandledRejection){this.removeUnhandeledRejection(handler.thisPromise)}}}catch(ex){nextStatus=STATUS_REJECTED;nextValue=ex}handler.nextPromise._updateStatus(nextStatus,nextValue);if(Date.now()>=timeoutAt){break}}if(this.handlers.length>0){setTimeout(this.runHandlers.bind(this),0);return}this.running=false},addUnhandledRejection:function addUnhandledRejection(promise){this.unhandledRejections.push({promise:promise,time:Date.now()});this.scheduleRejectionCheck()},removeUnhandeledRejection:function removeUnhandeledRejection(promise){promise._unhandledRejection=false;for(var i=0;iREJECTION_TIMEOUT){var unhandled=this.unhandledRejections[i].promise._value;var msg="Unhandled rejection: "+unhandled;if(unhandled.stack){msg+="\n"+unhandled.stack}warn(msg);this.unhandledRejections.splice(i);i--}}if(this.unhandledRejections.length){this.scheduleRejectionCheck()}}.bind(this),REJECTION_TIMEOUT)}};function Promise(resolver){this._status=STATUS_PENDING;this._handlers=[];try{resolver.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(e){this._reject(e)}}Promise.all=function Promise_all(promises){var resolveAll,rejectAll;var deferred=new Promise(function(resolve,reject){resolveAll=resolve;rejectAll=reject});var unresolved=promises.length;var results=[];if(unresolved===0){resolveAll(results);return deferred}function reject(reason){if(deferred._status===STATUS_REJECTED){return}results=[];rejectAll(reason)}for(var i=0,ii=promises.length;ilongest){longest=name.length}}for(i=0,ii=times.length;i>2,d2=(b1&3)<<4|b2>>4;var d3=i+1>6:64;var d4=i+2=0){var next_line=out.indexOf("\n",idx+1);out=out.substring(next_line+1)}this.stack=out}}};util.inherits(assert.AssertionError,Error);function replacer(key,value){if(util.isUndefined(value)){return""+value}if(util.isNumber(value)&&!isFinite(value)){return value.toString()}if(util.isFunction(value)||util.isRegExp(value)){return value.toString()}return value}function truncate(s,n){if(util.isString(s)){return s.length=0;i--){if(ka[i]!=kb[i])return false}for(i=ka.length-1;i>=0;i--){key=ka[i];if(!_deepEqual(a[key],b[key]))return false}return true}assert.notDeepEqual=function notDeepEqual(actual,expected,message){if(_deepEqual(actual,expected)){fail(actual,expected,message,"notDeepEqual",assert.notDeepEqual)}};assert.strictEqual=function strictEqual(actual,expected,message){if(actual!==expected){fail(actual,expected,message,"===",assert.strictEqual)}};assert.notStrictEqual=function notStrictEqual(actual,expected,message){if(actual===expected){fail(actual,expected,message,"!==",assert.notStrictEqual)}};function expectedException(actual,expected){if(!actual||!expected){return false}if(Object.prototype.toString.call(expected)=="[object RegExp]"){return expected.test(actual)}else if(actual instanceof expected){return true}else if(expected.call({},actual)===true){return true}return false}function _throws(shouldThrow,block,expected,message){var actual;if(util.isString(expected)){message=expected;expected=null}try{block()}catch(e){actual=e}message=(expected&&expected.name?" ("+expected.name+").":".")+(message?" "+message:".");if(shouldThrow&&!actual){fail(actual,expected,"Missing expected exception"+message)}if(!shouldThrow&&expectedException(actual,expected)){fail(actual,expected,"Got unwanted exception"+message)}if(shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual){throw actual}}assert.throws=function(block,error,message){_throws.apply(this,[true].concat(pSlice.call(arguments)))};assert.doesNotThrow=function(block,message){_throws.apply(this,[false].concat(pSlice.call(arguments)))};assert.ifError=function(err){if(err){throw err}};var objectKeys=Object.keys||function(obj){var keys=[];for(var key in obj){if(hasOwn.call(obj,key))keys.push(key)}return keys}},{"util/":77}],4:[function(require,module,exports){},{}],5:[function(require,module,exports){"use strict";var TYPED_OK=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";exports.assign=function(obj){var sources=Array.prototype.slice.call(arguments,1);while(sources.length){var source=sources.shift();if(!source){continue}if(typeof source!=="object"){throw new TypeError(source+"must be non-object")}for(var p in source){if(source.hasOwnProperty(p)){obj[p]=source[p]}}}return obj};exports.shrinkBuf=function(buf,size){if(buf.length===size){return buf}if(buf.subarray){return buf.subarray(0,size)}buf.length=size;return buf};var fnTyped={arraySet:function(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return}for(var i=0;i>>16&65535|0,n=0;while(len!==0){n=len>2e3?2e3:len;len-=n;do{s1=s1+buf[pos++]|0;s2=s2+s1|0}while(--n);s1%=65521;s2%=65521}return s1|s2<<16|0}module.exports=adler32},{}],7:[function(require,module,exports){module.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}},{}],8:[function(require,module,exports){"use strict";function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++){c=c&1?3988292384^c>>>1:c>>>1}table[n]=c}return table}var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc=crc^-1;for(var i=pos;i>>8^t[(crc^buf[i])&255]}return crc^-1}module.exports=crc32},{}],9:[function(require,module,exports){"use strict";var utils=require("../utils/common");var trees=require("./trees");var adler32=require("./adler32");var crc32=require("./crc32");var msg=require("./messages");var Z_NO_FLUSH=0;var Z_PARTIAL_FLUSH=1;var Z_FULL_FLUSH=3;var Z_FINISH=4;var Z_BLOCK=5;var Z_OK=0;var Z_STREAM_END=1;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_BUF_ERROR=-5;var Z_DEFAULT_COMPRESSION=-1;var Z_FILTERED=1;var Z_HUFFMAN_ONLY=2;var Z_RLE=3;var Z_FIXED=4;var Z_DEFAULT_STRATEGY=0;var Z_UNKNOWN=2;var Z_DEFLATED=8;var MAX_MEM_LEVEL=9;var MAX_WBITS=15;var DEF_MEM_LEVEL=8;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=32;var INIT_STATE=42;var EXTRA_STATE=69;var NAME_STATE=73;var COMMENT_STATE=91;var HCRC_STATE=103;var BUSY_STATE=113;var FINISH_STATE=666;var BS_NEED_MORE=1;var BS_BLOCK_DONE=2;var BS_FINISH_STARTED=3;var BS_FINISH_DONE=4;var OS_CODE=3;function err(strm,errorCode){strm.msg=msg[errorCode];return errorCode}function rank(f){return(f<<1)-(f>4?9:0)}function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}function flush_pending(strm){var s=strm.state;var len=s.pending;if(len>strm.avail_out){len=strm.avail_out}if(len===0){return}utils.arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out);strm.next_out+=len;s.pending_out+=len;strm.total_out+=len;strm.avail_out-=len;s.pending-=len;if(s.pending===0){s.pending_out=0}}function flush_block_only(s,last){trees._tr_flush_block(s,s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last);s.block_start=s.strstart;flush_pending(s.strm)}function put_byte(s,b){s.pending_buf[s.pending++]=b}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255;s.pending_buf[s.pending++]=b&255}function read_buf(strm,buf,start,size){var len=strm.avail_in;if(len>size){len=size}if(len===0){return 0}strm.avail_in-=len;utils.arraySet(buf,strm.input,strm.next_in,len,start);if(strm.state.wrap===1){strm.adler=adler32(strm.adler,buf,len,start)}else if(strm.state.wrap===2){strm.adler=crc32(strm.adler,buf,len,start)}strm.next_in+=len;strm.total_in+=len;return len}function longest_match(s,cur_match){var chain_length=s.max_chain_length;var scan=s.strstart;var match;var len;var best_len=s.prev_length;var nice_match=s.nice_match;var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0;var _win=s.window;var wmask=s.w_mask;var prev=s.prev;var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+best_len];if(s.prev_length>=s.good_match){chain_length>>=2}if(nice_match>s.lookahead){nice_match=s.lookahead}do{match=cur_match;if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1]){continue}scan+=2;match++;do{}while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&scanbest_len){s.match_start=cur_match;best_len=len;if(len>=nice_match){break}scan_end1=_win[scan+best_len-1];scan_end=_win[scan+best_len]}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);if(best_len<=s.lookahead){return best_len}return s.lookahead}function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;do{more=s.window_size-s.lookahead-s.strstart;if(s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){utils.arraySet(s.window,s.window,_w_size,_w_size,0);s.match_start-=_w_size;s.strstart-=_w_size;s.block_start-=_w_size;n=s.hash_size;p=n;do{m=s.head[--p];s.head[p]=m>=_w_size?m-_w_size:0}while(--n);n=_w_size;p=n;do{m=s.prev[--p];s.prev[p]=m>=_w_size?m-_w_size:0}while(--n);more+=_w_size}if(s.strm.avail_in===0){break}n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];s.ins_h=(s.ins_h<s.pending_buf_size-5){max_block_size=s.pending_buf_size-5}for(;;){if(s.lookahead<=1){fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH){return BS_NEED_MORE}if(s.lookahead===0){break}}s.strstart+=s.lookahead;s.lookahead=0;var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){s.lookahead=s.strstart-max_start;s.strstart=max_start;flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.strstart>s.block_start){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_NEED_MORE}function deflate_fast(s,flush){var hash_head;var bflush;for(;;){if(s.lookahead=MIN_MATCH){s.ins_h=(s.ins_h<=MIN_MATCH){bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;if(s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do{s.strstart++;s.ins_h=(s.ins_h<=MIN_MATCH){s.ins_h=(s.ins_h<4096)){s.match_length=MIN_MATCH-1}}if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-MIN_MATCH);s.lookahead-=s.prev_length-1;s.prev_length-=2;do{if(++s.strstart<=max_insert){s.ins_h=(s.ins_h<=MIN_MATCH&&s.strstart>0){scan=s.strstart-1;prev=_win[scan];if(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]){strend=s.strstart+MAX_MATCH;do{}while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scans.lookahead){s.match_length=s.lookahead}}}if(s.match_length>=MIN_MATCH){bflush=trees._tr_tally(s,1,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;s.strstart+=s.match_length;s.match_length=0}else{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}function deflate_huff(s,flush){var bflush;for(;;){if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH){return BS_NEED_MORE}break}}s.match_length=0;bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}var Config=function(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length;this.max_lazy=max_lazy;this.nice_length=nice_length;this.max_chain=max_chain;this.func=func};var configuration_table;configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size;zero(s.head);s.max_lazy_match=configuration_table[s.level].max_lazy;s.good_match=configuration_table[s.level].good_length;s.nice_match=configuration_table[s.level].nice_length;s.max_chain_length=configuration_table[s.level].max_chain;s.strstart=0;s.block_start=0;s.lookahead=0;s.insert=0;s.match_length=s.prev_length=MIN_MATCH-1;s.match_available=0;s.ins_h=0}function DeflateState(){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_DEFLATED;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 utils.Buf16(HEAP_SIZE*2);this.dyn_dtree=new utils.Buf16((2*D_CODES+1)*2);this.bl_tree=new utils.Buf16((2*BL_CODES+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new utils.Buf16(MAX_BITS+1);this.heap=new utils.Buf16(2*L_CODES+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new utils.Buf16(2*L_CODES+1);zero(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 deflateResetKeep(strm){var s;if(!strm||!strm.state){return err(strm,Z_STREAM_ERROR)}strm.total_in=strm.total_out=0;strm.data_type=Z_UNKNOWN;s=strm.state;s.pending=0;s.pending_out=0;if(s.wrap<0){s.wrap=-s.wrap}s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0:1;s.last_flush=Z_NO_FLUSH;trees._tr_init(s);return Z_OK}function deflateReset(strm){var ret=deflateResetKeep(strm);if(ret===Z_OK){lm_init(strm.state)}return ret}function deflateSetHeader(strm,head){if(!strm||!strm.state){return Z_STREAM_ERROR}if(strm.state.wrap!==2){return Z_STREAM_ERROR}strm.state.gzhead=head;return Z_OK}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm){return Z_STREAM_ERROR}var wrap=1;if(level===Z_DEFAULT_COMPRESSION){level=6}if(windowBits<0){wrap=0;windowBits=-windowBits}else if(windowBits>15){wrap=2;windowBits-=16}if(memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED){return err(strm,Z_STREAM_ERROR)}if(windowBits===8){windowBits=9}var s=new DeflateState;strm.state=s;s.strm=strm;s.wrap=wrap;s.gzhead=null;s.w_bits=windowBits;s.w_size=1<>1;s.l_buf=(1+2)*s.lit_bufsize;s.level=level;s.strategy=strategy;s.method=method;return deflateReset(strm)}function deflateInit(strm,level){return deflateInit2(strm,level,Z_DEFLATED,MAX_WBITS,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY)}function deflate(strm,flush){var old_flush,s;var beg,val;if(!strm||!strm.state||flush>Z_BLOCK||flush<0){return strm?err(strm,Z_STREAM_ERROR):Z_STREAM_ERROR}s=strm.state;if(!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH){return err(strm,strm.avail_out===0?Z_BUF_ERROR:Z_STREAM_ERROR)}s.strm=strm;old_flush=s.last_flush;s.last_flush=flush;if(s.status===INIT_STATE){if(s.wrap===2){strm.adler=0;put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,OS_CODE);s.status=BUSY_STATE}else{put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(!s.gzhead.extra?0:4)+(!s.gzhead.name?0:8)+(!s.gzhead.comment?0:16));put_byte(s,s.gzhead.time&255);put_byte(s,s.gzhead.time>>8&255);put_byte(s,s.gzhead.time>>16&255);put_byte(s,s.gzhead.time>>24&255);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,s.gzhead.os&255);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&255);put_byte(s,s.gzhead.extra.length>>8&255)}if(s.gzhead.hcrc){strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0)}s.gzindex=0;s.status=EXTRA_STATE}}else{var header=Z_DEFLATED+(s.w_bits-8<<4)<<8;var level_flags=-1;if(s.strategy>=Z_HUFFMAN_ONLY||s.level<2){level_flags=0}else if(s.level<6){level_flags=1}else if(s.level===6){level_flags=2}else{level_flags=3}header|=level_flags<<6;if(s.strstart!==0){header|=PRESET_DICT}header+=31-header%31;s.status=BUSY_STATE;putShortMSB(s,header);if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}strm.adler=1}}if(s.status===EXTRA_STATE){if(s.gzhead.extra){beg=s.pending;while(s.gzindex<(s.gzhead.extra.length&65535)){if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){break}}put_byte(s,s.gzhead.extra[s.gzindex]&255);s.gzindex++}if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(s.gzindex===s.gzhead.extra.length){s.gzindex=0;s.status=NAME_STATE}}else{s.status=NAME_STATE}}if(s.status===NAME_STATE){if(s.gzhead.name){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.gzindex=0;s.status=COMMENT_STATE}}else{s.status=COMMENT_STATE}}if(s.status===COMMENT_STATE){if(s.gzhead.comment){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.status=HCRC_STATE}}else{s.status=HCRC_STATE}}if(s.status===HCRC_STATE){if(s.gzhead.hcrc){if(s.pending+2>s.pending_buf_size){flush_pending(strm)}if(s.pending+2<=s.pending_buf_size){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);strm.adler=0;s.status=BUSY_STATE}}else{s.status=BUSY_STATE}}if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH){return err(strm,Z_BUF_ERROR)}if(s.status===FINISH_STATE&&strm.avail_in!==0){return err(strm,Z_BUF_ERROR)}if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY?deflate_huff(s,flush):s.strategy===Z_RLE?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if(bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE){s.status=FINISH_STATE}if(bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED){if(strm.avail_out===0){s.last_flush=-1}return Z_OK}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH){trees._tr_align(s)}else if(flush!==Z_BLOCK){trees._tr_stored_block(s,0,0,false);if(flush===Z_FULL_FLUSH){zero(s.head);if(s.lookahead===0){s.strstart=0;s.block_start=0;s.insert=0}}}flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}}if(flush!==Z_FINISH){return Z_OK}if(s.wrap<=0){return Z_STREAM_END}if(s.wrap===2){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);put_byte(s,strm.adler>>16&255);put_byte(s,strm.adler>>24&255);put_byte(s,strm.total_in&255);put_byte(s,strm.total_in>>8&255);put_byte(s,strm.total_in>>16&255);put_byte(s,strm.total_in>>24&255)}else{putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}flush_pending(strm);if(s.wrap>0){s.wrap=-s.wrap}return s.pending!==0?Z_OK:Z_STREAM_END}function deflateEnd(strm){var status;if(!strm||!strm.state){return Z_STREAM_ERROR}status=strm.state.status;if(status!==INIT_STATE&&status!==EXTRA_STATE&&status!==NAME_STATE&&status!==COMMENT_STATE&&status!==HCRC_STATE&&status!==BUSY_STATE&&status!==FINISH_STATE){return err(strm,Z_STREAM_ERROR)}strm.state=null;return status===BUSY_STATE?err(strm,Z_DATA_ERROR):Z_OK; -}exports.deflateInit=deflateInit;exports.deflateInit2=deflateInit2;exports.deflateReset=deflateReset;exports.deflateResetKeep=deflateResetKeep;exports.deflateSetHeader=deflateSetHeader;exports.deflate=deflate;exports.deflateEnd=deflateEnd;exports.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":5,"./adler32":6,"./crc32":8,"./messages":13,"./trees":14}],10:[function(require,module,exports){"use strict";var BAD=30;var TYPE=12;module.exports=function inflate_fast(strm,start){var state;var _in;var last;var _out;var beg;var end;var dmax;var wsize;var whave;var wnext;var s_window;var hold;var bits;var lcode;var dcode;var lmask;var dmask;var here;var op;var len;var dist;var from;var from_source;var input,output;state=strm.state;_in=strm.next_in;input=strm.input;last=_in+(strm.avail_in-5);_out=strm.next_out;output=strm.output;beg=_out-(start-strm.avail_out);end=_out+(strm.avail_out-257);dmax=state.dmax;wsize=state.wsize;whave=state.whave;wnext=state.wnext;s_window=state.window;hold=state.hold;bits=state.bits;lcode=state.lencode;dcode=state.distcode;lmask=(1<>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op===0){output[_out++]=here&65535}else if(op&16){len=here&65535;op&=15;if(op){if(bits>>=op;bits-=op}if(bits<15){hold+=input[_in++]<>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op&16){dist=here&65535;op&=15;if(bitsdmax){strm.msg="invalid distance too far back";state.mode=BAD;break top}hold>>>=op;bits-=op;op=_out-beg;if(dist>op){op=dist-op;if(op>whave){if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break top}}from=0;from_source=s_window;if(wnext===0){from+=wsize-op;if(op2){output[_out++]=from_source[from++];output[_out++]=from_source[from++];output[_out++]=from_source[from++];len-=3}if(len){output[_out++]=from_source[from++];if(len>1){output[_out++]=from_source[from++]}}}else{from=_out-dist;do{output[_out++]=output[from++];output[_out++]=output[from++];output[_out++]=output[from++];len-=3}while(len>2);if(len){output[_out++]=output[from++];if(len>1){output[_out++]=output[from++]}}}}else if((op&64)===0){here=dcode[(here&65535)+(hold&(1<>3;_in-=len;bits-=len<<3;hold&=(1<>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;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 utils.Buf16(320);this.work=new utils.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;strm.total_in=strm.total_out=state.total=0;strm.msg="";if(state.wrap){strm.adler=state.wrap&1}state.mode=HEAD;state.last=0;state.havedict=0;state.dmax=32768;state.head=null;state.hold=0;state.bits=0;state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;return Z_OK}function inflateReset(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;state.wsize=0;state.whave=0;state.wnext=0;return inflateResetKeep(strm)}function inflateReset2(strm,windowBits){var wrap;var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;if(windowBits<0){wrap=0;windowBits=-windowBits}else{wrap=(windowBits>>4)+1;if(windowBits<48){windowBits&=15}}if(windowBits&&(windowBits<8||windowBits>15)){return Z_STREAM_ERROR}if(state.window!==null&&state.wbits!==windowBits){state.window=null}state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm)}function inflateInit2(strm,windowBits){var ret;var state;if(!strm){return Z_STREAM_ERROR}state=new InflateState;strm.state=state;state.window=null;ret=inflateReset2(strm,windowBits);if(ret!==Z_OK){strm.state=null}return ret}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=true;var lenfix,distfix;function fixedtables(state){if(virgin){var sym;lenfix=new utils.Buf32(512);distfix=new utils.Buf32(32);sym=0;while(sym<144){state.lens[sym++]=8}while(sym<256){state.lens[sym++]=9}while(sym<280){state.lens[sym++]=7}while(sym<288){state.lens[sym++]=8}inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9});sym=0;while(sym<32){state.lens[sym++]=5}inflate_table(DISTS,state.lens,0,32,distfix,0,state.work,{bits:5});virgin=false}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5}function updatewindow(strm,src,end,copy){var dist;var state=strm.state;if(state.window===null){state.wsize=1<=state.wsize){utils.arraySet(state.window,src,end-state.wsize,state.wsize,0);state.wnext=0;state.whave=state.wsize}else{dist=state.wsize-state.wnext;if(dist>copy){dist=copy}utils.arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(copy){utils.arraySet(state.window,src,end-copy,copy,0);state.wnext=copy;state.whave=state.wsize}else{state.wnext+=dist;if(state.wnext===state.wsize){state.wnext=0}if(state.whave>>8&255;state.check=crc32(state.check,hbuf,2,0);hold=0;bits=0;state.mode=FLAGS;break}state.flags=0;if(state.head){state.head.done=false}if(!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check";state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode=BAD;break}hold>>>=4;bits-=4;len=(hold&15)+8;if(state.wbits===0){state.wbits=len}else if(len>state.wbits){strm.msg="invalid window size";state.mode=BAD;break}state.dmax=1<>8&1}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=TIME;case TIME:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;hbuf[2]=hold>>>16&255;hbuf[3]=hold>>>24&255;state.check=crc32(state.check,hbuf,4,0)}hold=0;bits=0;state.mode=OS;case OS:while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>8}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=EXLEN;case EXLEN:if(state.flags&1024){while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0}else if(state.head){state.head.extra=null}state.mode=EXTRA;case EXTRA:if(state.flags&1024){copy=state.length;if(copy>have){copy=have}if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra){state.head.extra=new Array(state.head.extra_len)}utils.arraySet(state.head.extra,input,next,copy,len)}if(state.flags&512){state.check=crc32(state.check,input,copy,next)}have-=copy;next+=copy;state.length-=copy}if(state.length){break inf_leave}}state.length=0;state.mode=NAME;case NAME:if(state.flags&2048){if(have===0){break inf_leave}copy=0;do{len=input[next+copy++];if(state.head&&len&&state.length<65536){state.head.name+=String.fromCharCode(len)}}while(len&©>9&1;state.head.done=true}strm.adler=state.check=0;state.mode=TYPE;break;case DICTID:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=bits&7;bits-=bits&7;state.mode=CHECK;break}while(bits<3){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=1;bits-=1;switch(hold&3){case 0:state.mode=STORED;break;case 1:fixedtables(state);state.mode=LEN_;if(flush===Z_TREES){hold>>>=2;bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type";state.mode=BAD}hold>>>=2;bits-=2;break;case STORED:hold>>>=bits&7;bits-=bits&7;while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>16^65535)){strm.msg="invalid stored block lengths";state.mode=BAD;break}state.length=hold&65535;hold=0;bits=0;state.mode=COPY_;if(flush===Z_TREES){break inf_leave}case COPY_:state.mode=COPY;case COPY:copy=state.length;if(copy){if(copy>have){copy=have}if(copy>left){copy=left}if(copy===0){break inf_leave}utils.arraySet(output,input,next,copy,put);have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy;break}state.mode=TYPE;break;case TABLE:while(bits<14){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=5;bits-=5;state.ndist=(hold&31)+1;hold>>>=5;bits-=5;state.ncode=(hold&15)+4;hold>>>=4;bits-=4;if(state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols";state.mode=BAD;break}state.have=0;state.mode=LENLENS;case LENLENS:while(state.have>>=3;bits-=3}while(state.have<19){state.lens[order[state.have++]]=0}state.lencode=state.lendyn;state.lenbits=7;opts={bits:state.lenbits};ret=inflate_table(CODES,state.lens,0,19,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid code lengths set";state.mode=BAD;break}state.have=0;state.mode=CODELENS;case CODELENS:while(state.have>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=here_bits;bits-=here_bits;state.lens[state.have++]=here_val}else{if(here_val===16){n=here_bits+2;while(bits>>=here_bits;bits-=here_bits;if(state.have===0){strm.msg="invalid bit length repeat";state.mode=BAD;break}len=state.lens[state.have-1];copy=3+(hold&3);hold>>>=2;bits-=2}else if(here_val===17){n=here_bits+3;while(bits>>=here_bits;bits-=here_bits;len=0;copy=3+(hold&7);hold>>>=3;bits-=3}else{n=here_bits+7;while(bits>>=here_bits;bits-=here_bits;len=0;copy=11+(hold&127);hold>>>=7;bits-=7}if(state.have+copy>state.nlen+state.ndist){strm.msg="invalid bit length repeat";state.mode=BAD;break}while(copy--){state.lens[state.have++]=len}}}if(state.mode===BAD){break}if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block";state.mode=BAD;break}state.lenbits=9;opts={bits:state.lenbits};ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid literal/lengths set";state.mode=BAD;break}state.distbits=6;state.distcode=state.distdyn;opts={bits:state.distbits};ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts);state.distbits=opts.bits;if(ret){strm.msg="invalid distances set";state.mode=BAD;break}state.mode=LEN_;if(flush===Z_TREES){break inf_leave}case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){strm.next_out=put;strm.avail_out=left;strm.next_in=next;strm.avail_in=have;state.hold=hold;state.bits=bits;inflate_fast(strm,_out);put=strm.next_out;output=strm.output;left=strm.avail_out;next=strm.next_in;input=strm.input;have=strm.avail_in;hold=state.hold;bits=state.bits;if(state.mode===TYPE){state.back=-1}break}state.back=0;for(;;){here=state.lencode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;state.length=here_val;if(here_op===0){state.mode=LIT;break}if(here_op&32){state.back=-1;state.mode=TYPE;break}if(here_op&64){strm.msg="invalid literal/length code";state.mode=BAD;break}state.extra=here_op&15;state.mode=LENEXT;case LENEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}state.was=state.length;state.mode=DIST;case DIST:for(;;){here=state.distcode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;if(here_op&64){strm.msg="invalid distance code";state.mode=BAD;break}state.offset=here_val;state.extra=here_op&15;state.mode=DISTEXT;case DISTEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back";state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0){break inf_leave}copy=_out-left;if(state.offset>copy){copy=state.offset-copy;if(copy>state.whave){if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break}}if(copy>state.wnext){copy-=state.wnext;from=state.wsize-copy}else{from=state.wnext-copy}if(copy>state.length){copy=state.length}from_source=state.window}else{from_source=output;from=put-state.offset;copy=state.length}if(copy>left){copy=left}left-=copy;state.length-=copy;do{output[put++]=from_source[from++]}while(--copy);if(state.length===0){state.mode=LEN}break;case LIT:if(left===0){break inf_leave}output[put++]=state.length;left--;state.mode=LEN;break;case CHECK:if(state.wrap){while(bits<32){if(have===0){break inf_leave}have--;hold|=input[next++]<=1;max--){if(count[max]!==0){break}}if(root>max){root=max}if(max===0){table[table_index++]=1<<24|64<<16|0;table[table_index++]=1<<24|64<<16|0;opts.bits=1;return 0}for(min=1;min0&&(type===CODES||max!==1)){return-1}offs[1]=0;for(len=1;lenENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}var i=0;for(;;){i++;here_bits=len-drop;if(work[sym]end){here_op=extra[extra_index+work[sym]];here_val=base[base_index+work[sym]]}else{here_op=32+64;here_val=0}incr=1<>drop)+fill]=here_bits<<24|here_op<<16|here_val|0}while(fill!==0);incr=1<>=1}if(incr!==0){huff&=incr-1;huff+=incr}else{huff=0}sym++;if(--count[len]===0){if(len===max){break}len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){if(drop===0){drop=root}next+=min;curr=len-drop;left=1<ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}low=huff&mask;table[low]=root<<24|curr<<16|next-table_index|0}}if(huff!==0){table[next+huff]=len-drop<<24|64<<16|0}opts.bits=root;return 0}},{"../utils/common":5}],13:[function(require,module,exports){"use strict";module.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(require,module,exports){"use strict";var utils=require("../utils/common");var Z_FIXED=4;var Z_BINARY=0;var Z_TEXT=1;var Z_UNKNOWN=2;function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;var MIN_MATCH=3;var MAX_MATCH=258;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var Buf_size=16;var MAX_BL_BITS=7;var END_BLOCK=256;var REP_3_6=16;var REPZ_3_10=17;var REPZ_11_138=18;var extra_lbits=[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];var extra_dbits=[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];var extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var DIST_CODE_LEN=512;var static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES);zero(base_dist);var StaticTreeDesc=function(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;this.extra_bits=extra_bits;this.extra_base=extra_base;this.elems=elems;this.max_length=max_length;this.has_stree=static_tree&&static_tree.length};var static_l_desc;var static_d_desc;var static_bl_desc;var TreeDesc=function(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;this.max_code=0;this.stat_desc=stat_desc};function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+(dist>>>7)]}function put_short(s,w){s.pending_buf[s.pending++]=w&255;s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<>Buf_size-s.bi_valid;s.bi_valid+=length-Buf_size}else{s.bi_buf|=value<>>=1;res<<=1}while(--len>0);return res>>>1}function bi_flush(s){if(s.bi_valid===16){put_short(s,s.bi_buf);s.bi_buf=0;s.bi_valid=0}else if(s.bi_valid>=8){s.pending_buf[s.pending++]=s.bi_buf&255;s.bi_buf>>=8;s.bi_valid-=8}}function gen_bitlen(s,desc){var tree=desc.dyn_tree;var max_code=desc.max_code;var stree=desc.stat_desc.static_tree;var has_stree=desc.stat_desc.has_stree;var extra=desc.stat_desc.extra_bits;var base=desc.stat_desc.extra_base;var max_length=desc.stat_desc.max_length;var h;var n,m;var bits;var xbits;var f;var overflow=0;for(bits=0;bits<=MAX_BITS;bits++){s.bl_count[bits]=0}tree[s.heap[s.heap_max]*2+1]=0;for(h=s.heap_max+1;hmax_length){bits=max_length;overflow++}tree[n*2+1]=bits;if(n>max_code){continue}s.bl_count[bits]++;xbits=0;if(n>=base){xbits=extra[n-base]}f=tree[n*2];s.opt_len+=f*(bits+xbits);if(has_stree){s.static_len+=f*(stree[n*2+1]+xbits)}}if(overflow===0){return}do{bits=max_length-1;while(s.bl_count[bits]===0){bits--}s.bl_count[bits]--;s.bl_count[bits+1]+=2;s.bl_count[max_length]--;overflow-=2}while(overflow>0);for(bits=max_length;bits!==0;bits--){n=s.bl_count[bits];while(n!==0){m=s.heap[--h];if(m>max_code){continue}if(tree[m*2+1]!==bits){s.opt_len+=(bits-tree[m*2+1])*tree[m*2];tree[m*2+1]=bits}n--}}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1);var code=0;var bits;var n;for(bits=1;bits<=MAX_BITS;bits++){next_code[bits]=code=code+bl_count[bits-1]<<1}for(n=0;n<=max_code;n++){var len=tree[n*2+1];if(len===0){continue}tree[n*2]=bi_reverse(next_code[len]++,len)}}function tr_static_init(){var n;var bits;var length;var code;var dist;var bl_count=new Array(MAX_BITS+1);length=0;for(code=0;code>=7;for(;code8){put_short(s,s.bi_buf)}else if(s.bi_valid>0){s.pending_buf[s.pending++]=s.bi_buf}s.bi_buf=0;s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s);if(header){put_short(s,len);put_short(s,~len)}utils.arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]>1;n>=1;n--){pqdownheap(s,tree,n)}node=elems;do{n=s.heap[1];s.heap[1]=s.heap[s.heap_len--];pqdownheap(s,tree,1);m=s.heap[1];s.heap[--s.heap_max]=n;s.heap[--s.heap_max]=m;tree[node*2]=tree[n*2]+tree[m*2];s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]=tree[m*2+1]=node;s.heap[1]=node++;pqdownheap(s,tree,1)}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1];gen_bitlen(s,desc);gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}tree[(max_code+1)*2+1]=65535;for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];if(++count=3;max_blindex--){if(s.bl_tree[bl_order[max_blindex]*2+1]!==0){break}}s.opt_len+=3*(max_blindex+1)+5+5+4;return max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;send_bits(s,lcodes-257,5);send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);for(rank=0;rank>>=1){if(black_mask&1&&s.dyn_ltree[n*2]!==0){return Z_BINARY}}if(s.dyn_ltree[9*2]!==0||s.dyn_ltree[10*2]!==0||s.dyn_ltree[13*2]!==0){return Z_TEXT}for(n=32;n0){if(s.strm.data_type===Z_UNKNOWN){s.strm.data_type=detect_data_type(s)}build_tree(s,s.l_desc);build_tree(s,s.d_desc);max_blindex=build_bl_tree(s);opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;if(static_lenb<=opt_lenb){opt_lenb=static_lenb}}else{opt_lenb=static_lenb=stored_len+5}if(stored_len+4<=opt_lenb&&buf!==-1){_tr_stored_block(s,buf,stored_len,last)}else if(s.strategy===Z_FIXED||static_lenb===opt_lenb){send_bits(s,(STATIC_TREES<<1)+(last?1:0),3);compress_block(s,static_ltree,static_dtree)}else{send_bits(s,(DYN_TREES<<1)+(last?1:0),3);send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1);compress_block(s,s.dyn_ltree,s.dyn_dtree)}init_block(s);if(last){bi_windup(s)}}function _tr_tally(s,dist,lc){s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255;s.pending_buf[s.l_buf+s.last_lit]=lc&255;s.last_lit++;if(dist===0){s.dyn_ltree[lc*2]++}else{s.matches++;dist--;s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++;s.dyn_dtree[d_code(dist)*2]++}return s.last_lit===s.lit_bufsize-1}exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_flush_block=_tr_flush_block;exports._tr_tally=_tr_tally;exports._tr_align=_tr_align},{"../utils/common":5}],15:[function(require,module,exports){"use strict";function ZStream(){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}module.exports=ZStream},{}],16:[function(require,module,exports){(function(process,Buffer){var msg=require("pako/lib/zlib/messages");var zstream=require("pako/lib/zlib/zstream");var zlib_deflate=require("pako/lib/zlib/deflate.js");var zlib_inflate=require("pako/lib/zlib/inflate.js");var constants=require("pako/lib/zlib/constants");for(var key in constants){exports[key]=constants[key]}exports.NONE=0;exports.DEFLATE=1;exports.INFLATE=2;exports.GZIP=3;exports.GUNZIP=4;exports.DEFLATERAW=5;exports.INFLATERAW=6;exports.UNZIP=7;function Zlib(mode){if(modeexports.UNZIP)throw new TypeError("Bad argument");this.mode=mode;this.init_done=false;this.write_in_progress=false;this.pending_close=false;this.windowBits=0;this.level=0;this.memLevel=0;this.strategy=0;this.dictionary=null}Zlib.prototype.init=function(windowBits,level,memLevel,strategy,dictionary){this.windowBits=windowBits;this.level=level;this.memLevel=memLevel;this.strategy=strategy;if(this.mode===exports.GZIP||this.mode===exports.GUNZIP)this.windowBits+=16;if(this.mode===exports.UNZIP)this.windowBits+=32;if(this.mode===exports.DEFLATERAW||this.mode===exports.INFLATERAW)this.windowBits=-this.windowBits;this.strm=new zstream;switch(this.mode){case exports.DEFLATE:case exports.GZIP:case exports.DEFLATERAW:var status=zlib_deflate.deflateInit2(this.strm,this.level,exports.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case exports.INFLATE:case exports.GUNZIP:case exports.INFLATERAW:case exports.UNZIP:var status=zlib_inflate.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}if(status!==exports.Z_OK){this._error(status);return}this.write_in_progress=false;this.init_done=true};Zlib.prototype.params=function(){throw new Error("deflateParams Not supported")};Zlib.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(this.mode===exports.NONE)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")};Zlib.prototype.write=function(flush,input,in_off,in_len,out,out_off,out_len){this._writeCheck();this.write_in_progress=true;var self=this;process.nextTick(function(){self.write_in_progress=false;var res=self._write(flush,input,in_off,in_len,out,out_off,out_len);self.callback(res[0],res[1]);if(self.pending_close)self.close()});return this};function bufferSet(data,offset){for(var i=0;iexports.Z_MAX_CHUNK){throw new Error("Invalid chunk size: "+opts.chunkSize)}}if(opts.windowBits){if(opts.windowBitsexports.Z_MAX_WINDOWBITS){throw new Error("Invalid windowBits: "+opts.windowBits)}}if(opts.level){if(opts.levelexports.Z_MAX_LEVEL){throw new Error("Invalid compression level: "+opts.level)}}if(opts.memLevel){if(opts.memLevelexports.Z_MAX_MEMLEVEL){throw new Error("Invalid memLevel: "+opts.memLevel)}}if(opts.strategy){if(opts.strategy!=exports.Z_FILTERED&&opts.strategy!=exports.Z_HUFFMAN_ONLY&&opts.strategy!=exports.Z_RLE&&opts.strategy!=exports.Z_FIXED&&opts.strategy!=exports.Z_DEFAULT_STRATEGY){throw new Error("Invalid strategy: "+opts.strategy)}}if(opts.dictionary){if(!Buffer.isBuffer(opts.dictionary)){throw new Error("Invalid dictionary: it should be a Buffer instance")}}this._binding=new binding.Zlib(mode);var self=this;this._hadError=false;this._binding.onerror=function(message,errno){self._binding=null;self._hadError=true;var error=new Error(message);error.errno=errno;error.code=exports.codes[errno];self.emit("error",error)};var level=exports.Z_DEFAULT_COMPRESSION;if(typeof opts.level==="number")level=opts.level;var strategy=exports.Z_DEFAULT_STRATEGY;if(typeof opts.strategy==="number")strategy=opts.strategy;this._binding.init(opts.windowBits||exports.Z_DEFAULT_WINDOWBITS,level,opts.memLevel||exports.Z_DEFAULT_MEMLEVEL,strategy,opts.dictionary);this._buffer=new Buffer(this._chunkSize);this._offset=0;this._closed=false;this._level=level;this._strategy=strategy;this.once("end",this.close)}util.inherits(Zlib,Transform);Zlib.prototype.params=function(level,strategy,callback){if(levelexports.Z_MAX_LEVEL){throw new RangeError("Invalid compression level: "+level)}if(strategy!=exports.Z_FILTERED&&strategy!=exports.Z_HUFFMAN_ONLY&&strategy!=exports.Z_RLE&&strategy!=exports.Z_FIXED&&strategy!=exports.Z_DEFAULT_STRATEGY){throw new TypeError("Invalid strategy: "+strategy)}if(this._level!==level||this._strategy!==strategy){var self=this;this.flush(binding.Z_SYNC_FLUSH,function(){self._binding.params(level,strategy);if(!self._hadError){self._level=level;self._strategy=strategy;if(callback)callback()}})}else{process.nextTick(callback)}};Zlib.prototype.reset=function(){return this._binding.reset()};Zlib.prototype._flush=function(callback){this._transform(new Buffer(0),"",callback)};Zlib.prototype.flush=function(kind,callback){var ws=this._writableState;if(typeof kind==="function"||kind===void 0&&!callback){callback=kind;kind=binding.Z_FULL_FLUSH}if(ws.ended){if(callback)process.nextTick(callback)}else if(ws.ending){if(callback)this.once("end",callback)}else if(ws.needDrain){var self=this;this.once("drain",function(){self.flush(callback)})}else{this._flushFlag=kind;this.write(new Buffer(0),"",callback)}};Zlib.prototype.close=function(callback){if(callback)process.nextTick(callback);if(this._closed)return;this._closed=true;this._binding.close();var self=this;process.nextTick(function(){self.emit("close")})};Zlib.prototype._transform=function(chunk,encoding,cb){var flushFlag;var ws=this._writableState;var ending=ws.ending||ws.ended;var last=ending&&(!chunk||ws.length===chunk.length);if(!chunk===null&&!Buffer.isBuffer(chunk))return cb(new Error("invalid input"));if(last)flushFlag=binding.Z_FINISH;else{flushFlag=this._flushFlag;if(chunk.length>=ws.length){this._flushFlag=this._opts.flush||binding.Z_NO_FLUSH}}var self=this;this._processChunk(chunk,flushFlag,cb)};Zlib.prototype._processChunk=function(chunk,flushFlag,cb){var availInBefore=chunk&&chunk.length;var availOutBefore=this._chunkSize-this._offset;var inOff=0;var self=this;var async=typeof cb==="function";if(!async){var buffers=[];var nread=0;var error;this.on("error",function(er){error=er});do{var res=this._binding.writeSync(flushFlag,chunk,inOff,availInBefore,this._buffer,this._offset,availOutBefore)}while(!this._hadError&&callback(res[0],res[1]));if(this._hadError){throw error}var buf=Buffer.concat(buffers,nread);this.close();return buf}var req=this._binding.write(flushFlag,chunk,inOff,availInBefore,this._buffer,this._offset,availOutBefore);req.buffer=chunk;req.callback=callback;function callback(availInAfter,availOutAfter){if(self._hadError)return;var have=availOutBefore-availOutAfter;assert(have>=0,"have should not go down");if(have>0){var out=self._buffer.slice(self._offset,self._offset+have);self._offset+=have;if(async){self.push(out)}else{buffers.push(out);nread+=out.length}}if(availOutAfter===0||self._offset>=self._chunkSize){availOutBefore=self._chunkSize;self._offset=0;self._buffer=new Buffer(self._chunkSize)}if(availOutAfter===0){inOff+=availInBefore-availInAfter;availInBefore=availInAfter;if(!async)return true;var newReq=self._binding.write(flushFlag,chunk,inOff,availInBefore,self._buffer,self._offset,self._chunkSize);newReq.callback=callback;newReq.buffer=chunk;return}if(!async)return false;cb()}};util.inherits(Deflate,Zlib);util.inherits(Inflate,Zlib);util.inherits(Gzip,Zlib);util.inherits(Gunzip,Zlib);util.inherits(DeflateRaw,Zlib);util.inherits(InflateRaw,Zlib);util.inherits(Unzip,Zlib)}).call(this,require("_process"),require("buffer").Buffer)},{"./binding":16,_process:68,_stream_transform:73,assert:3,buffer:19,util:77}],18:[function(require,module,exports){"use strict";exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0){throw new Error("Invalid string. Length must be a multiple of 4")}placeHolders=b64[len-2]==="="?2:b64[len-1]==="="?1:0;arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len;var L=0;for(i=0,j=0;i>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},{}],19:[function(require,module,exports){(function(global){"use strict";var base64=require("base64-js");var ieee754=require("ieee754");var isArray=require("isarray");exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;Buffer.TYPED_ARRAY_SUPPORT=global.TYPED_ARRAY_SUPPORT!==undefined?global.TYPED_ARRAY_SUPPORT:typedArraySupport();exports.kMaxLength=kMaxLength();function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}};return arr.foo()===42&&typeof arr.subarray==="function"&&arr.subarray(1,1).byteLength===0}catch(e){return false}}function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(that,length){if(kMaxLength()=kMaxLength()){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+kMaxLength().toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(var i=0;i0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return""};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(!Buffer.isBuffer(target)){throw new TypeError("Argument must be a Buffer")}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart; -var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(isNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(Buffer.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;iarrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;jremaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new TypeError("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;iremaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"latin1":case"binary":return latin1Write(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(ilen)end=len;var out="";for(var i=start;ilen){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(endlength)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||valuebuf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var mul=1;var i=0;this[offset]=value&255;while(++i=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,255,0);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&255;return offset+1};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=65535+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=4294967295+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=0;this[offset]=value&255;while(++i>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e38,-3.4028234663852886e38)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157e308,-1.7976931348623157e308)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart=0;--i){target[i+targetStart]=this[i+start]}}else if(len<1e3||!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==="number"){for(i=start;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isnan(val){return val!==val}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"base64-js":18,ieee754:26,isarray:29}],20:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{var err=new Error('Uncaught, unspecified "error" event. ('+er+")");err.context=er;throw err}}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}}else if(isObject(handler)){args=Array.prototype.slice.call(arguments,1);listeners=handler.slice();len=listeners.length;for(i=0;i0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],21:[function(require,module,exports){(function(global){"use strict";var buffer=require("buffer");var Buffer=buffer.Buffer;var SlowBuffer=buffer.SlowBuffer;var MAX_LEN=buffer.kMaxLength||2147483647;exports.alloc=function alloc(size,fill,encoding){if(typeof Buffer.alloc==="function"){return Buffer.alloc(size,fill,encoding)}if(typeof encoding==="number"){throw new TypeError("encoding must not be number")}if(typeof size!=="number"){throw new TypeError("size must be a number")}if(size>MAX_LEN){throw new RangeError("size is too large")}var enc=encoding;var _fill=fill;if(_fill===undefined){enc=undefined;_fill=0}var buf=new Buffer(size);if(typeof _fill==="string"){var fillBuf=new Buffer(_fill,enc);var flen=fillBuf.length;var i=-1;while(++iMAX_LEN){throw new RangeError("size is too large")}return new Buffer(size)};exports.from=function from(value,encodingOrOffset,length){if(typeof Buffer.from==="function"&&(!global.Uint8Array||Uint8Array.from!==Buffer.from)){return Buffer.from(value,encodingOrOffset,length)}if(typeof value==="number"){throw new TypeError('"value" argument must not be a number')}if(typeof value==="string"){return new Buffer(value,encodingOrOffset)}if(typeof ArrayBuffer!=="undefined"&&value instanceof ArrayBuffer){var offset=encodingOrOffset;if(arguments.length===1){return new Buffer(value)}if(typeof offset==="undefined"){offset=0}var len=length;if(typeof len==="undefined"){len=value.byteLength-offset}if(offset>=value.byteLength){throw new RangeError("'offset' is out of bounds")}if(len>value.byteLength-offset){throw new RangeError("'length' is out of bounds")}return new Buffer(value.slice(offset,offset+len))}if(Buffer.isBuffer(value)){var out=new Buffer(value.length);value.copy(out,0,0,value.length);return out}if(value){if(Array.isArray(value)||typeof ArrayBuffer!=="undefined"&&value.buffer instanceof ArrayBuffer||"length"in value){return new Buffer(value)}if(value.type==="Buffer"&&Array.isArray(value.data)){return new Buffer(value.data)}}throw new TypeError("First argument must be a string, Buffer, "+"ArrayBuffer, Array, or array-like object.")};exports.allocUnsafeSlow=function allocUnsafeSlow(size){if(typeof Buffer.allocUnsafeSlow==="function"){return Buffer.allocUnsafeSlow(size)}if(typeof size!=="number"){throw new TypeError("size must be a number")}if(size>=MAX_LEN){throw new RangeError("size is too large")}return new SlowBuffer(size)}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{buffer:19}],22:[function(require,module,exports){"use strict";var FLOAT32_VIEW=new Float32Array(1);var UINT32_VIEW=new Uint32Array(FLOAT32_VIEW.buffer);var NINF=4286578688;UINT32_VIEW[0]=NINF;module.exports=FLOAT32_VIEW[0]},{}],23:[function(require,module,exports){"use strict";var FLOAT32_VIEW=new Float32Array(1);var UINT32_VIEW=new Uint32Array(FLOAT32_VIEW.buffer);var PINF=2139095040;UINT32_VIEW[0]=PINF;module.exports=FLOAT32_VIEW[0]},{}],24:[function(require,module,exports){(function(Buffer){function isArray(arg){if(Array.isArray){return Array.isArray(arg)}return objectToString(arg)==="[object Array]"}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return objectToString(e)==="[object Error]"||e instanceof Error}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"; -}exports.isPrimitive=isPrimitive;exports.isBuffer=Buffer.isBuffer;function objectToString(o){return Object.prototype.toString.call(o)}}).call(this,{isBuffer:require("../../is-buffer/index.js")})},{"../../is-buffer/index.js":28}],25:[function(require,module,exports){(function(Buffer){(function(root,factory){if(typeof module!=="undefined"&&module.exports){module.exports=factory()}else if(typeof define==="function"&&define.amd){define([],factory)}else{if(typeof cornerstone==="undefined"){dicomParser={};if(typeof Package!=="undefined"){root.dicomParser=dicomParser}}dicomParser=factory()}})(this,function(){var dicomParser=function(dicomParser){if(dicomParser===undefined){dicomParser={}}dicomParser.parseDicom=function(byteArray,options){if(byteArray===undefined){throw"dicomParser.parseDicom: missing required parameter 'byteArray'"}function readTransferSyntax(metaHeaderDataSet){if(metaHeaderDataSet.elements.x00020010===undefined){throw"dicomParser.parseDicom: missing required meta header attribute 0002,0010"}var transferSyntaxElement=metaHeaderDataSet.elements.x00020010;return dicomParser.readFixedString(byteArray,transferSyntaxElement.dataOffset,transferSyntaxElement.length)}function isExplicit(transferSyntax){if(transferSyntax==="1.2.840.10008.1.2"){return false}return true}function getDataSetByteStream(transferSyntax,position){if(transferSyntax==="1.2.840.10008.1.2.1.99"){if(options&&options.inflater){var fullByteArrayCallback=options.inflater(byteArray,position);return new dicomParser.ByteStream(dicomParser.littleEndianByteArrayParser,fullByteArrayCallback,0)}else if(typeof module!=="undefined"&&this.module!==module){var zlib=require("zlib");var deflatedBuffer=dicomParser.sharedCopy(byteArray,position,byteArray.length-position);var inflatedBuffer=zlib.inflateRawSync(deflatedBuffer);var fullByteArrayBuffer=dicomParser.alloc(byteArray,inflatedBuffer.length+position);byteArray.copy(fullByteArrayBuffer,0,0,position);inflatedBuffer.copy(fullByteArrayBuffer,position);return new dicomParser.ByteStream(dicomParser.littleEndianByteArrayParser,fullByteArrayBuffer,0)}else if(typeof pako!=="undefined"){var deflated=byteArray.slice(position);var inflated=pako.inflateRaw(deflated);var fullByteArray=dicomParser.alloc(byteArray,inflated.length+position);fullByteArray.set(byteArray.slice(0,position),0);fullByteArray.set(inflated,position);return new dicomParser.ByteStream(dicomParser.littleEndianByteArrayParser,fullByteArray,0)}else{throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax"}}if(transferSyntax==="1.2.840.10008.1.2.2"){return new dicomParser.ByteStream(dicomParser.bigEndianByteArrayParser,byteArray,position)}else{return new dicomParser.ByteStream(dicomParser.littleEndianByteArrayParser,byteArray,position)}}function mergeDataSets(metaHeaderDataSet,instanceDataSet){for(var propertyName in metaHeaderDataSet.elements){if(metaHeaderDataSet.elements.hasOwnProperty(propertyName)){instanceDataSet.elements[propertyName]=metaHeaderDataSet.elements[propertyName]}}if(metaHeaderDataSet.warnings!==undefined){instanceDataSet.warnings=metaHeaderDataSet.warnings.concat(instanceDataSet.warnings)}return instanceDataSet}function readDataSet(metaHeaderDataSet){var transferSyntax=readTransferSyntax(metaHeaderDataSet);var explicit=isExplicit(transferSyntax);var dataSetByteStream=getDataSetByteStream(transferSyntax,metaHeaderDataSet.position);var elements={};var dataSet=new dicomParser.DataSet(dataSetByteStream.byteArrayParser,dataSetByteStream.byteArray,elements);dataSet.warnings=dataSetByteStream.warnings;try{if(explicit){dicomParser.parseDicomDataSetExplicit(dataSet,dataSetByteStream,dataSetByteStream.byteArray.length,options)}else{dicomParser.parseDicomDataSetImplicit(dataSet,dataSetByteStream,dataSetByteStream.byteArray.length,options)}}catch(e){var ex={exception:e,dataSet:dataSet};throw ex}return dataSet}function parseTheByteStream(){var metaHeaderDataSet=dicomParser.readPart10Header(byteArray,options);var dataSet=readDataSet(metaHeaderDataSet);return mergeDataSets(metaHeaderDataSet,dataSet)}return parseTheByteStream()};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}function isEndOfImageMarker(dataSet,position){return dataSet.byteArray[position]===255&&dataSet.byteArray[position+1]===217}function isFragmentEndOfImage(dataSet,pixelDataElement,fragmentIndex){var fragment=pixelDataElement.fragments[fragmentIndex];if(isEndOfImageMarker(dataSet,fragment.position+fragment.length-2)||isEndOfImageMarker(dataSet,fragment.position+fragment.length-3)){return true}return false}function findLastImageFrameFragmentIndex(dataSet,pixelDataElement,startFragment){for(var fragmentIndex=startFragment;fragmentIndex0&&m<=12&&d>0&&d<=daysInMonth(m,y)}dicomParser.parseDA=function(date,validate){if(date&&date.length===8){var yyyy=parseInt(date.substring(0,4),10);var mm=parseInt(date.substring(4,6),10);var dd=parseInt(date.substring(6,8),10);if(validate){if(isValidDate(dd,mm,yyyy)!==true){throw"invalid DA '"+date+"'"}}return{year:yyyy,month:mm,day:dd}}if(validate){throw"invalid DA '"+date+"'"}return undefined};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.parseTM=function(time,validate){if(time.length>=2){var hh=parseInt(time.substring(0,2),10);var mm=time.length>=4?parseInt(time.substring(2,4),10):undefined;var ss=time.length>=6?parseInt(time.substring(4,6),10):undefined;var ffffff=time.length>=8?parseInt(time.substring(7,13),10):undefined;if(validate){if(isNaN(hh)||mm!==undefined&&isNaN(mm)||ss!==undefined&&isNaN(ss)||ffffff!==undefined&&isNaN(ffffff)||(hh<0||hh>23)||mm&&(mm<0||mm>59)||ss&&(ss<0||ss>59)||ffffff&&(ffffff<0||ffffff>999999)){throw"invalid TM '"+time+"'"}}return{hours:hh,minutes:mm,seconds:ss,fractionalSeconds:ffffff}}if(validate){throw"invalid TM '"+time+"'"}return undefined};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}var stringVrs={AE:true,AS:true,AT:false,CS:true,DA:true,DS:true,DT:true,FL:false,FD:false,IS:true,LO:true,LT:true,OB:false,OD:false,OF:false,OW:false,PN:true,SH:true,SL:false,SQ:false,SS:false,ST:true,TM:true,UI:true,UL:false,UN:undefined,UR:true,US:false,UT:true};dicomParser.isStringVr=function(vr){return stringVrs[vr]};dicomParser.isPrivateTag=function(tag){var lastGroupDigit=parseInt(tag[4]);var groupIsOdd=lastGroupDigit%2===1;return groupIsOdd};dicomParser.parsePN=function(personName){if(personName===undefined){return undefined}var stringValues=personName.split("^");return{familyName:stringValues[0],givenName:stringValues[1],middleName:stringValues[2],prefix:stringValues[3],suffix:stringValues[4]}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}var deprecatedNoticeLogged=false;dicomParser.readEncapsulatedPixelData=function(dataSet,pixelDataElement,frame){if(!deprecatedNoticeLogged){deprecatedNoticeLogged=true;if(console&&console.log){console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")}}if(dataSet===undefined){throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'"}if(pixelDataElement===undefined){throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'"}if(frame===undefined){throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'"}if(pixelDataElement.tag!=="x7fe00010"){throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010'"}if(pixelDataElement.encapsulatedPixelData!==true){throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data"}if(pixelDataElement.hadUndefinedLength!==true){throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data"}if(pixelDataElement.basicOffsetTable===undefined){throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data"}if(pixelDataElement.fragments===undefined){throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data"}if(frame<0){throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0"}if(pixelDataElement.basicOffsetTable.length!==0){return dicomParser.readEncapsulatedImageFrame(dataSet,pixelDataElement,frame)}else{return dicomParser.readEncapsulatedPixelDataFromFragments(dataSet,pixelDataElement,0,pixelDataElement.fragments.length)}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.alloc=function(byteArray,length){if(typeof Buffer!=="undefined"&&byteArray instanceof Buffer){return Buffer.alloc(length)}else if(byteArray instanceof Uint8Array){return new Uint8Array(length)}else{throw"dicomParser.alloc: unknown type for byteArray"}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.bigEndianByteArrayParser={readUint16:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readUint16: position cannot be less than 0"}if(position+2>byteArray.length){throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer"}return(byteArray[position]<<8)+byteArray[position+1]},readInt16:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0"}if(position+2>byteArray.length){throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer"}var int16=(byteArray[position]<<8)+byteArray[position+1];if(int16&32768){int16=int16-65535-1}return int16},readUint32:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0"}if(position+4>byteArray.length){throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer"}var uint32=256*(256*(256*byteArray[position]+byteArray[position+1])+byteArray[position+2])+byteArray[position+3];return uint32},readInt32:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0"}if(position+4>byteArray.length){throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer"}var int32=(byteArray[position]<<24)+(byteArray[position+1]<<16)+(byteArray[position+2]<<8)+byteArray[position+3];return int32},readFloat:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0"}if(position+4>byteArray.length){throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer"}var byteArrayForParsingFloat=new Uint8Array(4);byteArrayForParsingFloat[3]=byteArray[position];byteArrayForParsingFloat[2]=byteArray[position+1];byteArrayForParsingFloat[1]=byteArray[position+2];byteArrayForParsingFloat[0]=byteArray[position+3];var floatArray=new Float32Array(byteArrayForParsingFloat.buffer);return floatArray[0]},readDouble:function(byteArray,position){if(position<0){throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0"}if(position+8>byteArray.length){throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer"}var byteArrayForParsingFloat=new Uint8Array(8);byteArrayForParsingFloat[7]=byteArray[position];byteArrayForParsingFloat[6]=byteArray[position+1];byteArrayForParsingFloat[5]=byteArray[position+2];byteArrayForParsingFloat[4]=byteArray[position+3];byteArrayForParsingFloat[3]=byteArray[position+4];byteArrayForParsingFloat[2]=byteArray[position+5];byteArrayForParsingFloat[1]=byteArray[position+6];byteArrayForParsingFloat[0]=byteArray[position+7];var floatArray=new Float64Array(byteArrayForParsingFloat.buffer);return floatArray[0]}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.readFixedString=function(byteArray,position,length){if(length<0){throw"dicomParser.readFixedString - length cannot be less than 0"}if(position+length>byteArray.length){throw"dicomParser.readFixedString: attempt to read past end of buffer"}var result="";var byte;for(var i=0;i=byteArray.length){throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length"}this.byteArrayParser=byteArrayParser;this.byteArray=byteArray;this.position=position?position:0;this.warnings=[]};dicomParser.ByteStream.prototype.seek=function(offset){if(this.position+offset<0){throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0"}this.position+=offset};dicomParser.ByteStream.prototype.readByteStream=function(numBytes){if(this.position+numBytes>this.byteArray.length){throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread"}var byteArrayView=dicomParser.sharedCopy(this.byteArray,this.position,numBytes);this.position+=numBytes;return new dicomParser.ByteStream(this.byteArrayParser,byteArrayView)};dicomParser.ByteStream.prototype.readUint16=function(){var result=this.byteArrayParser.readUint16(this.byteArray,this.position);this.position+=2;return result};dicomParser.ByteStream.prototype.readUint32=function(){var result=this.byteArrayParser.readUint32(this.byteArray,this.position);this.position+=4;return result};dicomParser.ByteStream.prototype.readFixedString=function(length){var result=dicomParser.readFixedString(this.byteArray,this.position,length);this.position+=length;return result};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}function getByteArrayParser(element,defaultParser){return element.parser!==undefined?element.parser:defaultParser}dicomParser.DataSet=function(byteArrayParser,byteArray,elements){this.byteArrayParser=byteArrayParser;this.byteArray=byteArray;this.elements=elements};dicomParser.DataSet.prototype.uint16=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readUint16(this.byteArray,element.dataOffset+index*2)}return undefined};dicomParser.DataSet.prototype.int16=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readInt16(this.byteArray,element.dataOffset+index*2)}return undefined};dicomParser.DataSet.prototype.uint32=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readUint32(this.byteArray,element.dataOffset+index*4)}return undefined};dicomParser.DataSet.prototype.int32=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readInt32(this.byteArray,element.dataOffset+index*4)}return undefined};dicomParser.DataSet.prototype.float=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readFloat(this.byteArray,element.dataOffset+index*4)}return undefined};dicomParser.DataSet.prototype.double=function(tag,index){var element=this.elements[tag];index=index!==undefined?index:0;if(element&&element.length!==0){return getByteArrayParser(element,this.byteArrayParser).readDouble(this.byteArray,element.dataOffset+index*8)}return undefined};dicomParser.DataSet.prototype.numStringValues=function(tag){var element=this.elements[tag];if(element&&element.length>0){var fixedString=dicomParser.readFixedString(this.byteArray,element.dataOffset,element.length);var numMatching=fixedString.match(/\\/g);if(numMatching===null){return 1}return numMatching.length+1}return undefined};dicomParser.DataSet.prototype.string=function(tag,index){var element=this.elements[tag];if(element&&element.length>0){var fixedString=dicomParser.readFixedString(this.byteArray,element.dataOffset,element.length);if(index>=0){var values=fixedString.split("\\");return values[index].trim()}else{return fixedString.trim()}}return undefined};dicomParser.DataSet.prototype.text=function(tag,index){var element=this.elements[tag];if(element&&element.length>0){var fixedString=dicomParser.readFixedString(this.byteArray,element.dataOffset,element.length);if(index>=0){var values=fixedString.split("\\");return values[index].replace(/ +$/,"")}else{return fixedString.replace(/ +$/,"")}}return undefined};dicomParser.DataSet.prototype.floatString=function(tag,index){var element=this.elements[tag];if(element&&element.length>0){index=index!==undefined?index:0;var value=this.string(tag,index);if(value!==undefined){return parseFloat(value)}}return undefined};dicomParser.DataSet.prototype.intString=function(tag,index){var element=this.elements[tag];if(element&&element.length>0){index=index!==undefined?index:0;var value=this.string(tag,index);if(value!==undefined){return parseInt(value)}}return undefined};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.findAndSetUNElementLength=function(byteStream,element){if(byteStream===undefined){throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'"}var itemDelimitationItemLength=8;var maxPosition=byteStream.byteArray.length-itemDelimitationItemLength;while(byteStream.position<=maxPosition){var groupNumber;groupNumber=byteStream.readUint16();if(groupNumber===65534){var elementNumber;elementNumber=byteStream.readUint16();if(elementNumber===57565){var itemDelimiterLength;itemDelimiterLength=byteStream.readUint32();if(itemDelimiterLength!==0){byteStream.warnings("encountered non zero length following item delimiter at position"+byteStream.position-4+" while reading element of undefined length with tag ' + element.tag")}element.length=byteStream.position-element.dataOffset;return}}}element.length=byteStream.byteArray.length-element.dataOffset;byteStream.seek(byteStream.byteArray.length-byteStream.position)};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.findEndOfEncapsulatedElement=function(byteStream,element,warnings){if(byteStream===undefined){throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'byteStream'"}if(element===undefined){throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'element'"}element.encapsulatedPixelData=true;element.basicOffsetTable=[];element.fragments=[];var basicOffsetTableItemTag=dicomParser.readTag(byteStream);if(basicOffsetTableItemTag!=="xfffee000"){throw"dicomParser.findEndOfEncapsulatedElement: basic offset table not found"}var basicOffsetTableItemlength=byteStream.readUint32();var numFragments=basicOffsetTableItemlength/4;for(var i=0;ibyteStream.byteArray.length-byteStream.position){length=byteStream.byteArray.length-byteStream.position}element.fragments.push({offset:byteStream.position-baseOffset-8,position:byteStream.position,length:length});byteStream.seek(length);element.length=byteStream.position-element.dataOffset;return}byteStream.seek(length)}if(warnings){warnings.push("pixel data element "+element.tag+" missing sequence delimiter tag xfffee0dd")}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.findItemDelimitationItemAndSetElementLength=function(byteStream,element){if(byteStream===undefined){throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'"}var itemDelimitationItemLength=8;var maxPosition=byteStream.byteArray.length-itemDelimitationItemLength;while(byteStream.position<=maxPosition){var groupNumber=byteStream.readUint16();if(groupNumber===65534){var elementNumber=byteStream.readUint16();if(elementNumber===57357){var itemDelimiterLength=byteStream.readUint32();if(itemDelimiterLength!==0){byteStream.warnings("encountered non zero length following item delimiter at position"+byteStream.position-4+" while reading element of undefined length with tag ' + element.tag")}element.length=byteStream.position-element.dataOffset;return}}}element.length=byteStream.byteArray.length-element.dataOffset;byteStream.seek(byteStream.byteArray.length-byteStream.position)};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.littleEndianByteArrayParser={readUint16:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0"}if(position+2>byteArray.length){throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer"}return byteArray[position]+byteArray[position+1]*256},readInt16:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0"}if(position+2>byteArray.length){throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer"}var int16=byteArray[position]+(byteArray[position+1]<<8);if(int16&32768){int16=int16-65535-1}return int16},readUint32:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0"}if(position+4>byteArray.length){throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer"}var uint32=byteArray[position]+byteArray[position+1]*256+byteArray[position+2]*256*256+byteArray[position+3]*256*256*256;return uint32},readInt32:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0"}if(position+4>byteArray.length){throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer"}var int32=byteArray[position]+(byteArray[position+1]<<8)+(byteArray[position+2]<<16)+(byteArray[position+3]<<24);return int32},readFloat:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0"}if(position+4>byteArray.length){throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer"}var byteArrayForParsingFloat=new Uint8Array(4);byteArrayForParsingFloat[0]=byteArray[position];byteArrayForParsingFloat[1]=byteArray[position+1];byteArrayForParsingFloat[2]=byteArray[position+2];byteArrayForParsingFloat[3]=byteArray[position+3];var floatArray=new Float32Array(byteArrayForParsingFloat.buffer);return floatArray[0]},readDouble:function(byteArray,position){if(position<0){throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0"}if(position+8>byteArray.length){throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer"}var byteArrayForParsingFloat=new Uint8Array(8);byteArrayForParsingFloat[0]=byteArray[position];byteArrayForParsingFloat[1]=byteArray[position+1];byteArrayForParsingFloat[2]=byteArray[position+2];byteArrayForParsingFloat[3]=byteArray[position+3];byteArrayForParsingFloat[4]=byteArray[position+4];byteArrayForParsingFloat[5]=byteArray[position+5];byteArrayForParsingFloat[6]=byteArray[position+6];byteArrayForParsingFloat[7]=byteArray[position+7];var floatArray=new Float64Array(byteArrayForParsingFloat.buffer);return floatArray[0]}};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}dicomParser.parseDicomDataSetExplicit=function(dataSet,byteStream,maxPosition,options){maxPosition=maxPosition===undefined?byteStream.byteArray.length:maxPosition;options=options||{};if(byteStream===undefined){throw"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'"}if(maxPositionbyteStream.byteArray.length){throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxPosition'"}var elements=dataSet.elements;while(byteStream.positionmaxPosition){throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}};dicomParser.parseDicomDataSetImplicit=function(dataSet,byteStream,maxPosition,options){maxPosition=maxPosition===undefined?dataSet.byteArray.length:maxPosition;options=options||{};if(byteStream===undefined){throw"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'"}if(maxPositionbyteStream.byteArray.length){throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'"}var elements=dataSet.elements;while(byteStream.position= 0"}if(frameIndex>=basicOffsetTable.length){throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length"}var offset=basicOffsetTable[frameIndex];var startFragmentIndex=findFragmentIndexWithOffset(fragments,offset);if(startFragmentIndex===undefined){throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry"}var numFragments=calculateNumberOfFragmentsForFrame(frameIndex,basicOffsetTable,fragments,startFragmentIndex);return dicomParser.readEncapsulatedPixelDataFromFragments(dataSet,pixelDataElement,startFragmentIndex,numFragments,fragments)};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}function calculateBufferSize(fragments,startFragment,numFragments){var bufferSize=0;for(var i=startFragment;i= 0"}if(startFragmentIndex>=pixelDataElement.fragments.length){throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments"}if(numFragments<1){throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0"}if(startFragmentIndex+numFragments>pixelDataElement.fragments.length){throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments"}var byteStream=new dicomParser.ByteStream(dataSet.byteArrayParser,dataSet.byteArray,pixelDataElement.dataOffset);var basicOffsetTable=dicomParser.readSequenceItem(byteStream);if(basicOffsetTable.tag!=="xfffee000"){throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000"}byteStream.seek(basicOffsetTable.length);var fragmentZeroPosition=byteStream.position;var fragmentHeaderSize=8;if(numFragments===1){return dicomParser.sharedCopy(byteStream.byteArray,fragmentZeroPosition+fragments[startFragmentIndex].offset+fragmentHeaderSize,fragments[startFragmentIndex].length)}var bufferSize=calculateBufferSize(fragments,startFragmentIndex,numFragments);var pixelData=dicomParser.alloc(byteStream.byteArray,bufferSize);var pixelDataIndex=0;for(var i=startFragmentIndex;i"x0002ffff"){littleEndianByteStream.position=position;break}element.parser=dicomParser.littleEndianByteArrayParser;elements[element.tag]=element}var metaHeaderDataSet=new dicomParser.DataSet(littleEndianByteStream.byteArrayParser,littleEndianByteStream.byteArray,elements);metaHeaderDataSet.warnings=littleEndianByteStream.warnings;metaHeaderDataSet.position=littleEndianByteStream.position;return metaHeaderDataSet}return readTheHeader()};return dicomParser}(dicomParser);var dicomParser=function(dicomParser){"use strict";if(dicomParser===undefined){dicomParser={}}function readDicomDataSetExplicitUndefinedLength(byteStream,warnings){var elements={};while(byteStream.position>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],27:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],28:[function(require,module,exports){module.exports=function(obj){return!!(obj!=null&&(obj._isBuffer||obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)))}},{}],29:[function(require,module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},{}],30:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.ComponentSpec=jpeg.lossless.ComponentSpec||function(){this.hSamp=0;this.quantTableSel=0;this.vSamp=0};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.ComponentSpec}},{}],31:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.DataStream=jpeg.lossless.DataStream||function(data,offset,length){this.buffer=new DataView(data,offset,length);this.index=0};jpeg.lossless.DataStream.prototype.get16=function(){var value=this.buffer.getUint16(this.index,false);this.index+=2;return value};jpeg.lossless.DataStream.prototype.get8=function(){var value=this.buffer.getUint8(this.index);this.index+=1;return value};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.DataStream}},{}],32:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.DataStream=jpeg.lossless.DataStream||(typeof require!=="undefined"?require("./data-stream.js"):null);jpeg.lossless.HuffmanTable=jpeg.lossless.HuffmanTable||(typeof require!=="undefined"?require("./huffman-table.js"):null);jpeg.lossless.QuantizationTable=jpeg.lossless.QuantizationTable||(typeof require!=="undefined"?require("./quantization-table.js"):null);jpeg.lossless.ScanHeader=jpeg.lossless.ScanHeader||(typeof require!=="undefined"?require("./scan-header.js"):null);jpeg.lossless.FrameHeader=jpeg.lossless.FrameHeader||(typeof require!=="undefined"?require("./frame-header.js"):null);jpeg.lossless.Utils=jpeg.lossless.Utils||(typeof require!=="undefined"?require("./utils.js"):null);jpeg.lossless.Decoder=jpeg.lossless.Decoder||function(buffer,numBytes){this.buffer=buffer;this.frame=new jpeg.lossless.FrameHeader;this.huffTable=new jpeg.lossless.HuffmanTable;this.quantTable=new jpeg.lossless.QuantizationTable;this.scan=new jpeg.lossless.ScanHeader;this.DU=jpeg.lossless.Utils.createArray(10,4,64);this.HuffTab=jpeg.lossless.Utils.createArray(4,2,50*256);this.IDCT_Source=[];this.nBlock=[];this.acTab=jpeg.lossless.Utils.createArray(10,1);this.dcTab=jpeg.lossless.Utils.createArray(10,1);this.qTab=jpeg.lossless.Utils.createArray(10,1);this.marker=0;this.markerIndex=0;this.numComp=0;this.restartInterval=0;this.selection=0;this.xDim=0;this.yDim=0;this.xLoc=0;this.yLoc=0;this.numBytes=0;this.outputData=null;this.restarting=false;this.mask=0;if(typeof numBytes!=="undefined"){this.numBytes=numBytes}};jpeg.lossless.Decoder.IDCT_P=[0,5,40,16,45,2,7,42,21,56,8,61,18,47,1,4,41,23,58,13,32,24,37,10,63,17,44,3,6,43,20,57,15,34,29,48,53,26,39,9,60,19,46,22,59,12,33,31,50,55,25,36,11,62,14,35,28,49,52,27,38,30,51,54];jpeg.lossless.Decoder.TABLE=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63];jpeg.lossless.Decoder.MAX_HUFFMAN_SUBTREE=50;jpeg.lossless.Decoder.MSB=2147483648;jpeg.lossless.Decoder.RESTART_MARKER_BEGIN=65488;jpeg.lossless.Decoder.RESTART_MARKER_END=65495;jpeg.lossless.Decoder.prototype.decompress=function(buffer,offset,length){return this.decode(buffer,offset,length).buffer};jpeg.lossless.Decoder.prototype.decode=function(buffer,offset,length,numBytes){var current,scanNum=0,pred=[],i,compN,temp=[],index=[],mcuNum;if(typeof buffer!=="undefined"){this.buffer=buffer}if(typeof numBytes!=="undefined"){this.numBytes=numBytes}this.stream=new jpeg.lossless.DataStream(this.buffer,offset,length);this.buffer=null;this.xLoc=0;this.yLoc=0;current=this.stream.get16();if(current!==65496){throw new Error("Not a JPEG file")}current=this.stream.get16();while(current>>4!==4092||current===65476){switch(current){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,jpeg.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(current>>8!==255){throw new Error("ERROR: format throw new IOException! (decode)")}}current=this.stream.get16()}if(current<65472||current>65479){throw new Error("ERROR: could not handle arithmetic code!")}this.frame.read(this.stream);current=this.stream.get16();do{while(current!==65498){switch(current){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,jpeg.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(current>>8!==255){throw new Error("ERROR: format throw new IOException! (Parser.decode)")}}current=this.stream.get16()}this.precision=this.frame.precision;this.components=this.frame.components;if(!this.numBytes){this.numBytes=parseInt(Math.ceil(this.precision/8))}if(this.numBytes==1){this.mask=255}else{this.mask=65535}this.scan.read(this.stream);this.numComp=this.scan.numComp;this.selection=this.scan.selection;if(this.numBytes===1){if(this.numComp===3){this.getter=this.getValueRGB;this.setter=this.setValueRGB;this.output=this.outputRGB}else{this.getter=this.getValue8;this.setter=this.setValue8;this.output=this.outputSingle}}else{this.getter=this.getValue16;this.setter=this.setValue16;this.output=this.outputSingle}switch(this.selection){case 2:this.selector=this.select2;break;case 3:this.selector=this.select3;break;case 4:this.selector=this.select4;break;case 5:this.selector=this.select5;break;case 6:this.selector=this.select6;break;case 7:this.selector=this.select7;break;default:this.selector=this.select1;break}this.scanComps=this.scan.components;this.quantTables=this.quantTable.quantTables;for(i=0;i=jpeg.lossless.Decoder.RESTART_MARKER_BEGIN&¤t<=jpeg.lossless.Decoder.RESTART_MARKER_END)){break}}if(current===65500&&scanNum===1){this.readNumber();current=this.stream.get16()}}while(current!==65497&&(this.xLoc>1)};jpeg.lossless.Decoder.prototype.select6=function(compOffset){return this.getPreviousY(compOffset)+(this.getPreviousX(compOffset)-this.getPreviousXY(compOffset)>>1)};jpeg.lossless.Decoder.prototype.select7=function(compOffset){return(this.getPreviousX(compOffset)+this.getPreviousY(compOffset))/2};jpeg.lossless.Decoder.prototype.decodeRGB=function(prev,temp,index){var value,actab,dctab,qtab,ctrC,i,k,j;prev[0]=this.selector(0);prev[1]=this.selector(1);prev[2]=this.selector(2);for(ctrC=0;ctrC=65280){return value}prev[ctrC]=this.IDCT_Source[0]=prev[ctrC]+this.getn(index,value,temp,index);this.IDCT_Source[0]*=qtab[0];for(j=1;j<64;j+=1){value=this.getHuffmanValue(actab,temp,index);if(value>=65280){return value}j+=value>>4;if((value&15)===0){if(value>>4===0){break}}else{this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]]=this.getn(index,value&15,temp,index)*qtab[j]}}}}return 0};jpeg.lossless.Decoder.prototype.decodeSingle=function(prev,temp,index){var value,i,n,nRestart;if(this.restarting){this.restarting=false;prev[0]=1<=65280){return value}n=this.getn(prev,value,temp,index);nRestart=n>>8;if(nRestart>=jpeg.lossless.Decoder.RESTART_MARKER_BEGIN&&nRestart<=jpeg.lossless.Decoder.RESTART_MARKER_END){return nRestart}prev[0]+=n}return 0};jpeg.lossless.Decoder.prototype.getHuffmanValue=function(table,temp,index){var code,input,mask;mask=65535;if(index[0]<8){temp[0]<<=8;input=this.stream.get8();if(input===255){this.marker=this.stream.get8();if(this.marker!==0){this.markerIndex=9}}temp[0]|=input}else{index[0]-=8}code=table[temp[0]>>index[0]];if((code&jpeg.lossless.Decoder.MSB)!==0){if(this.markerIndex!==0){this.markerIndex=0;return 65280|this.marker}temp[0]&=mask>>16-index[0];temp[0]<<=8;input=this.stream.get8();if(input===255){this.marker=this.stream.get8();if(this.marker!==0){this.markerIndex=9}}temp[0]|=input;code=table[(code&255)*256+(temp[0]>>index[0])];index[0]+=8}index[0]+=8-(code>>8);if(index[0]<0){throw new Error("index="+index[0]+" temp="+temp[0]+" code="+code+" in HuffmanValue()")}if(index[0]>16-index[0];return code&255};jpeg.lossless.Decoder.prototype.getn=function(PRED,n,temp,index){var result,one,n_one,mask,input;one=1;n_one=-1;mask=65535;if(n===0){return 0}if(n===16){if(PRED[0]>=0){return-32768}else{return 32768}}index[0]-=n;if(index[0]>=0){if(index[0]>index[0];temp[0]&=mask>>16-index[0]}else{temp[0]<<=8;input=this.stream.get8();if(input===255){this.marker=this.stream.get8();if(this.marker!==0){this.markerIndex=9}}temp[0]|=input;index[0]+=8;if(index[0]<0){if(this.markerIndex!==0){this.markerIndex=0;return(65280|this.marker)<<8}temp[0]<<=8;input=this.stream.get8();if(input===255){this.marker=this.stream.get8();if(this.marker!==0){this.markerIndex=9}}temp[0]|=input;index[0]+=8}if(index[0]<0){throw new Error("index="+index[0]+" in getn()")}if(index[0]>index[0];temp[0]&=mask>>16-index[0]}if(result0){return this.getter(this.yLoc*this.xDim+this.xLoc-1,compOffset)}else if(this.yLoc>0){return this.getPreviousY(compOffset)}else{return 1<0&&this.yLoc>0){return this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,compOffset)}else{return this.getPreviousY(compOffset)}};jpeg.lossless.Decoder.prototype.getPreviousY=function(compOffset){ -if(this.yLoc>0){return this.getter((this.yLoc-1)*this.xDim+this.xLoc,compOffset)}else{return this.getPreviousX(compOffset)}};jpeg.lossless.Decoder.prototype.isLastPixel=function(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1};jpeg.lossless.Decoder.prototype.outputSingle=function(PRED){if(this.xLoc=this.xDim){this.yLoc+=1;this.xLoc=0}}};jpeg.lossless.Decoder.prototype.outputRGB=function(PRED){var offset=this.yLoc*this.xDim+this.xLoc;if(this.xLoc=this.xDim){this.yLoc+=1;this.xLoc=0}}};jpeg.lossless.Decoder.prototype.setValue16=function(index,val){this.outputData.setInt16(index*2,val,true)};jpeg.lossless.Decoder.prototype.getValue16=function(index){return this.outputData.getInt16(index*2,true)};jpeg.lossless.Decoder.prototype.setValue8=function(index,val){this.outputData.setInt8(index,val)};jpeg.lossless.Decoder.prototype.getValue8=function(index){return this.outputData.getInt8(index)};jpeg.lossless.Decoder.prototype.setValueRGB=function(index,val,compOffset){this.outputData.setUint8(index*3+compOffset,val)};jpeg.lossless.Decoder.prototype.getValueRGB=function(index,compOffset){return this.outputData.getUint8(index*3+compOffset)};jpeg.lossless.Decoder.prototype.readApp=function(){var count=0,length=this.stream.get16();count+=2;while(countlength){throw new Error("ERROR: frame format error")}c=data.get8();count+=1;if(count>=length){throw new Error("ERROR: frame format error [c>=Lf]")}temp=data.get8();count+=1;if(!this.components[c]){this.components[c]=new jpeg.lossless.ComponentSpec}this.components[c].hSamp=temp>>4;this.components[c].vSamp=temp&15;this.components[c].quantTableSel=data.get8();count+=1}if(count!==length){throw new Error("ERROR: frame format error [Lf!=count]")}return 1};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.FrameHeader}},{"./component-spec.js":30,"./data-stream.js":31}],34:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.DataStream=jpeg.lossless.DataStream||(typeof require!=="undefined"?require("./data-stream.js"):null);jpeg.lossless.Utils=jpeg.lossless.Utils||(typeof require!=="undefined"?require("./utils.js"):null);jpeg.lossless.HuffmanTable=jpeg.lossless.HuffmanTable||function(){this.l=jpeg.lossless.Utils.createArray(4,2,16);this.th=[];this.v=jpeg.lossless.Utils.createArray(4,2,16,200);this.tc=jpeg.lossless.Utils.createArray(4,2);this.tc[0][0]=0;this.tc[1][0]=0;this.tc[2][0]=0;this.tc[3][0]=0;this.tc[0][1]=0;this.tc[1][1]=0;this.tc[2][1]=0;this.tc[3][1]=0;this.th[0]=0;this.th[1]=0;this.th[2]=0;this.th[3]=0};jpeg.lossless.HuffmanTable.MSB=2147483648;jpeg.lossless.HuffmanTable.prototype.read=function(data,HuffTab){var count=0,length,temp,t,c,i,j;length=data.get16();count+=2;while(count3){throw new Error("ERROR: Huffman table ID > 3")}c=temp>>4;if(c>2){throw new Error("ERROR: Huffman table [Table class > 2 ]")}this.th[t]=1;this.tc[t][c]=1;for(i=0;i<16;i+=1){this.l[t][c][i]=data.get8();count+=1}for(i=0;i<16;i+=1){for(j=0;jlength){throw new Error("ERROR: Huffman table format error [count>Lh]")}this.v[t][c][i][j]=data.get8();count+=1}}}if(count!==length){throw new Error("ERROR: Huffman table format error [count!=Lf]")}for(i=0;i<4;i+=1){for(j=0;j<2;j+=1){if(this.tc[i][j]!==0){this.buildHuffTable(HuffTab[i][j],this.l[i][j],this.v[i][j])}}}return 1};jpeg.lossless.HuffmanTable.prototype.buildHuffTable=function(tab,L,V){var currentTable,temp,k,i,j,n;temp=256;k=0;for(i=0;i<8;i+=1){for(j=0;j>i+1;n+=1){tab[k]=V[i][j]|i+1<<8;k+=1}}}for(i=1;k<256;i+=1,k+=1){tab[k]=i|jpeg.lossless.HuffmanTable.MSB}currentTable=1;k=0;for(i=8;i<16;i+=1){for(j=0;j>i-7;n+=1){tab[currentTable*256+k]=V[i][j]|i+1<<8;k+=1}if(k>=256){if(k>256){throw new Error("ERROR: Huffman table error(1)!")}k=0;currentTable+=1}}}};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.HuffmanTable}},{"./data-stream.js":31,"./utils.js":39}],35:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.ComponentSpec=jpeg.lossless.ComponentSpec||(typeof require!=="undefined"?require("./component-spec.js"):null);jpeg.lossless.DataStream=jpeg.lossless.DataStream||(typeof require!=="undefined"?require("./data-stream.js"):null);jpeg.lossless.Decoder=jpeg.lossless.Decoder||(typeof require!=="undefined"?require("./decoder.js"):null);jpeg.lossless.FrameHeader=jpeg.lossless.FrameHeader||(typeof require!=="undefined"?require("./frame-header.js"):null);jpeg.lossless.HuffmanTable=jpeg.lossless.HuffmanTable||(typeof require!=="undefined"?require("./huffman-table.js"):null);jpeg.lossless.QuantizationTable=jpeg.lossless.QuantizationTable||(typeof require!=="undefined"?require("./quantization-table.js"):null);jpeg.lossless.ScanComponent=jpeg.lossless.ScanComponent||(typeof require!=="undefined"?require("./scan-component.js"):null);jpeg.lossless.ScanHeader=jpeg.lossless.ScanHeader||(typeof require!=="undefined"?require("./scan-header.js"):null);jpeg.lossless.Utils=jpeg.lossless.Utils||(typeof require!=="undefined"?require("./utils.js"):null);var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg}},{"./component-spec.js":30,"./data-stream.js":31,"./decoder.js":32,"./frame-header.js":33,"./huffman-table.js":34,"./quantization-table.js":36,"./scan-component.js":37,"./scan-header.js":38,"./utils.js":39}],36:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.DataStream=jpeg.lossless.DataStream||(typeof require!=="undefined"?require("./data-stream.js"):null);jpeg.lossless.Utils=jpeg.lossless.Utils||(typeof require!=="undefined"?require("./utils.js"):null);jpeg.lossless.QuantizationTable=jpeg.lossless.QuantizationTable||function(){this.precision=[];this.tq=[];this.quantTables=jpeg.lossless.Utils.createArray(4,64);this.tq[0]=0;this.tq[1]=0;this.tq[2]=0;this.tq[3]=0};jpeg.lossless.QuantizationTable.enhanceQuantizationTable=function(qtab,table){var i;for(i=0;i<8;i+=1){qtab[table[0*8+i]]*=90;qtab[table[4*8+i]]*=90;qtab[table[2*8+i]]*=118;qtab[table[6*8+i]]*=49;qtab[table[5*8+i]]*=71;qtab[table[1*8+i]]*=126;qtab[table[7*8+i]]*=25;qtab[table[3*8+i]]*=106}for(i=0;i<8;i+=1){qtab[table[0+8*i]]*=90;qtab[table[4+8*i]]*=90;qtab[table[2+8*i]]*=118;qtab[table[6+8*i]]*=49;qtab[table[5+8*i]]*=71;qtab[table[1+8*i]]*=126;qtab[table[7+8*i]]*=25;qtab[table[3+8*i]]*=106}for(i=0;i<64;i+=1){qtab[i]>>=6}};jpeg.lossless.QuantizationTable.prototype.read=function(data,table){var count=0,length,temp,t,i;length=data.get16();count+=2;while(count3){throw new Error("ERROR: Quantization table ID > 3")}this.precision[t]=temp>>4;if(this.precision[t]===0){this.precision[t]=8}else if(this.precision[t]===1){this.precision[t]=16}else{throw new Error("ERROR: Quantization table precision error")}this.tq[t]=1;if(this.precision[t]===8){for(i=0;i<64;i+=1){if(count>length){throw new Error("ERROR: Quantization table format error")}this.quantTables[t][i]=data.get8();count+=1}jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t],table)}else{for(i=0;i<64;i+=1){if(count>length){throw new Error("ERROR: Quantization table format error")}this.quantTables[t][i]=data.get16();count+=2}jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t],table)}}if(count!==length){throw new Error("ERROR: Quantization table error [count!=Lq]")}return 1};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.QuantizationTable}},{"./data-stream.js":31,"./utils.js":39}],37:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.ScanComponent=jpeg.lossless.ScanComponent||function(){this.acTabSel=0;this.dcTabSel=0;this.scanCompSel=0};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.ScanComponent}},{}],38:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.DataStream=jpeg.lossless.DataStream||(typeof require!=="undefined"?require("./data-stream.js"):null);jpeg.lossless.ScanComponent=jpeg.lossless.ScanComponent||(typeof require!=="undefined"?require("./scan-component.js"):null);jpeg.lossless.ScanHeader=jpeg.lossless.ScanHeader||function(){this.ah=0;this.al=0;this.numComp=0;this.selection=0;this.spectralEnd=0;this.components=[]};jpeg.lossless.ScanHeader.prototype.read=function(data){var count=0,length,i,temp;length=data.get16();count+=2;this.numComp=data.get8();count+=1;for(i=0;ilength){throw new Error("ERROR: scan header format error")}this.components[i].scanCompSel=data.get8();count+=1;temp=data.get8();count+=1;this.components[i].dcTabSel=temp>>4;this.components[i].acTabSel=temp&15}this.selection=data.get8();count+=1;this.spectralEnd=data.get8();count+=1;temp=data.get8();this.ah=temp>>4;this.al=temp&15;count+=1;if(count!==length){throw new Error("ERROR: scan header format error [count!=Ns]")}return 1};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.ScanHeader}},{"./data-stream.js":31,"./scan-component.js":37}],39:[function(require,module,exports){"use strict";var jpeg=jpeg||{};jpeg.lossless=jpeg.lossless||{};jpeg.lossless.Utils=jpeg.lossless.Utils||{};jpeg.lossless.Utils.createArray=function(length){var arr=new Array(length||0),i=length;if(arguments.length>1){var args=Array.prototype.slice.call(arguments,1);while(i--)arr[length-1-i]=jpeg.lossless.Utils.createArray.apply(this,args)}return arr};jpeg.lossless.Utils.makeCRCTable=function(){var c;var crcTable=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++){c=c&1?3988292384^c>>>1:c>>>1}crcTable[n]=c}return crcTable};jpeg.lossless.Utils.crc32=function(dataView){var crcTable=jpeg.lossless.Utils.crcTable||(jpeg.lossless.Utils.crcTable=jpeg.lossless.Utils.makeCRCTable());var crc=0^-1;for(var i=0;i>>8^crcTable[(crc^dataView.getUint8(i))&255]}return(crc^-1)>>>0};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=jpeg.lossless.Utils}},{}],40:[function(require,module,exports){"use strict";function abs(x){if(x<0){return-x}if(x===0){return 0}return x}module.exports=abs},{}],41:[function(require,module,exports){"use strict";module.exports=Math.ceil},{}],42:[function(require,module,exports){"use strict";var floor=require("math-floor");function div2(x){var str="";var y;while(x>0){y=x/2;x=floor(y);if(y===x){str="0"+str}else{str="1"+str}}return str}module.exports=div2},{"math-floor":45}],43:[function(require,module,exports){"use strict";var pinf=require("const-pinf-float32");var ninf=require("const-ninf-float32");var abs=require("math-abs");var floor=require("math-floor");var rpad=require("utils-right-pad-string");var lpad=require("utils-left-pad-string");var repeat=require("utils-repeat-string");var div2=require("./div2.js");var mult2=require("./mult2.js");var BIAS=127;function binaryString(x){var nbits;var sign;var str;var exp;var n;var f;var i;if(x<0||1/x===ninf){sign="1"}else{sign="0"}if(x===pinf||x===ninf){exp=repeat("1",8);str=repeat("0",23);return sign+exp+str}if(x!==x){exp=repeat("1",8);str="1"+repeat("0",22);return sign+exp+str}if(x===0){exp=repeat("0",8);str=repeat("0",23);return sign+exp+str}x=abs(x);n=floor(x);f=x-n;n=div2(n);f=mult2(f);if(n){exp=n.length-1}else{for(i=0;i=1){x=y-1;str+="1";if(j===MAX_ITER){j=i}}else{x=y;str+="0"}if(y===1||i-j>MAX_BITS){break}}return str}module.exports=mult2},{}],45:[function(require,module,exports){"use strict";module.exports=Math.floor},{}],46:[function(require,module,exports){"use strict";var nifti=nifti||{};nifti.NIFTI1=nifti.NIFTI1||(typeof require!=="undefined"?require("./nifti1.js"):null);nifti.NIFTI2=nifti.NIFTI2||(typeof require!=="undefined"?require("./nifti2.js"):null);nifti.Utils=nifti.Utils||(typeof require!=="undefined"?require("./utilities.js"):null);var pako=pako||(typeof require!=="undefined"?require("pako"):null);nifti.isNIFTI1=function(data){var buf,mag1,mag2,mag3;buf=new DataView(data);mag1=buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION);mag2=buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION+1);mag3=buf.getUint8(nifti.NIFTI1.MAGIC_NUMBER_LOCATION+2);return!!(mag1===nifti.NIFTI1.MAGIC_NUMBER[0]&&mag2===nifti.NIFTI1.MAGIC_NUMBER[1]&&mag3===nifti.NIFTI1.MAGIC_NUMBER[2])};nifti.isNIFTI2=function(data){var buf,mag1,mag2,mag3;buf=new DataView(data);mag1=buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION);mag2=buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION+1);mag3=buf.getUint8(nifti.NIFTI2.MAGIC_NUMBER_LOCATION+2);return!!(mag1===nifti.NIFTI2.MAGIC_NUMBER[0]&&mag2===nifti.NIFTI2.MAGIC_NUMBER[1]&&mag3===nifti.NIFTI2.MAGIC_NUMBER[2])};nifti.isNIFTI=function(data){return nifti.isNIFTI1(data)||nifti.isNIFTI2(data)};nifti.isCompressed=function(data){var buf,magicCookie1,magicCookie2;if(data){buf=new DataView(data);magicCookie1=buf.getUint8(0);magicCookie2=buf.getUint8(1);if(magicCookie1===nifti.Utils.GUNZIP_MAGIC_COOKIE1){return true}if(magicCookie2===nifti.Utils.GUNZIP_MAGIC_COOKIE2){return true}}return false};nifti.decompress=function(data){return pako.inflate(data).buffer};nifti.readHeader=function(data){var header=null;if(nifti.isCompressed(data)){data=nifti.decompress(data)}if(nifti.isNIFTI1(data)){header=new nifti.NIFTI1}else if(nifti.isNIFTI2(data)){header=new nifti.NIFTI2}if(header){header.readHeader(data)}else{console.error("That file does not appear to be NIFTI!")}return header};nifti.hasExtension=function(header){return header.extensionFlag[0]!=0};nifti.readImage=function(header,data){var imageOffset=header.vox_offset,timeDim=1,statDim=1;if(header.dims[4]){timeDim=header.dims[4]}if(header.dims[5]){statDim=header.dims[5]}var imageSize=header.dims[1]*header.dims[2]*header.dims[3]*timeDim*statDim*(header.numBitsPerVoxel/8);return data.slice(imageOffset,imageOffset+imageSize)};nifti.readExtension=function(header,data){var loc=header.getExtensionLocation(),size=header.extensionSize;return data.slice(loc,loc+size)};nifti.readExtensionData=function(header,data){var loc=header.getExtensionLocation(),size=header.extensionSize;return data.slice(loc+8,loc+size-8)};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=nifti}},{"./nifti1.js":47,"./nifti2.js":48,"./utilities.js":49,pako:51}],47:[function(require,module,exports){"use strict";var nifti=nifti||{};nifti.Utils=nifti.Utils||(typeof require!=="undefined"?require("./utilities.js"):null);nifti.NIFTI1=nifti.NIFTI1||function(){this.littleEndian=false;this.dim_info=0;this.dims=[];this.intent_p1=0;this.intent_p2=0;this.intent_p3=0;this.intent_code=0;this.datatypeCode=0;this.numBitsPerVoxel=0;this.slice_start=0;this.slice_end=0;this.slice_code=0;this.pixDims=[];this.vox_offset=0;this.scl_slope=1;this.scl_inter=0;this.xyzt_units=0;this.cal_max=0;this.cal_min=0;this.slice_duration=0;this.toffset=0;this.description="";this.aux_file="";this.intent_name="";this.qform_code=0;this.sform_code=0;this.quatern_b=0;this.quatern_c=0;this.quatern_d=0;this.qoffset_x=0;this.qoffset_y=0;this.qoffset_z=0;this.affine=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];this.magic=0;this.isHDR=false;this.extensionFlag=[0,0,0,0];this.extensionSize=0;this.extensionCode=0};nifti.NIFTI1.TYPE_NONE=0;nifti.NIFTI1.TYPE_BINARY=1;nifti.NIFTI1.TYPE_UINT8=2;nifti.NIFTI1.TYPE_INT16=4;nifti.NIFTI1.TYPE_INT32=8;nifti.NIFTI1.TYPE_FLOAT32=16;nifti.NIFTI1.TYPE_COMPLEX64=32;nifti.NIFTI1.TYPE_FLOAT64=64;nifti.NIFTI1.TYPE_RGB24=128;nifti.NIFTI1.TYPE_INT8=256;nifti.NIFTI1.TYPE_UINT16=512;nifti.NIFTI1.TYPE_UINT32=768;nifti.NIFTI1.TYPE_INT64=1024;nifti.NIFTI1.TYPE_UINT64=1280;nifti.NIFTI1.TYPE_FLOAT128=1536;nifti.NIFTI1.TYPE_COMPLEX128=1792;nifti.NIFTI1.TYPE_COMPLEX256=2048;nifti.NIFTI1.XFORM_UNKNOWN=0;nifti.NIFTI1.XFORM_SCANNER_ANAT=1;nifti.NIFTI1.XFORM_ALIGNED_ANAT=2;nifti.NIFTI1.XFORM_TALAIRACH=3;nifti.NIFTI1.XFORM_MNI_152=4;nifti.NIFTI1.SPATIAL_UNITS_MASK=7;nifti.NIFTI1.TEMPORAL_UNITS_MASK=56;nifti.NIFTI1.UNITS_UNKNOWN=0;nifti.NIFTI1.UNITS_METER=1;nifti.NIFTI1.UNITS_MM=2;nifti.NIFTI1.UNITS_MICRON=3;nifti.NIFTI1.UNITS_SEC=8;nifti.NIFTI1.UNITS_MSEC=16;nifti.NIFTI1.UNITS_USEC=24;nifti.NIFTI1.UNITS_HZ=32;nifti.NIFTI1.UNITS_PPM=40;nifti.NIFTI1.UNITS_RADS=48;nifti.NIFTI1.MAGIC_COOKIE=348;nifti.NIFTI1.MAGIC_NUMBER_LOCATION=344;nifti.NIFTI1.MAGIC_NUMBER=[110,43,49];nifti.NIFTI1.MAGIC_NUMBER2=[110,105,49];nifti.NIFTI1.EXTENSION_HEADER_SIZE=8;nifti.NIFTI1.prototype.readHeader=function(data){var rawData=new DataView(data),magicCookieVal=nifti.Utils.getIntAt(rawData,0,this.littleEndian),ctr,ctrOut,ctrIn,index;if(magicCookieVal!==nifti.NIFTI1.MAGIC_COOKIE){this.littleEndian=true;magicCookieVal=nifti.Utils.getIntAt(rawData,0,this.littleEndian)}if(magicCookieVal!==nifti.NIFTI1.MAGIC_COOKIE){throw new Error("This does not appear to be a NIFTI file!")}this.dim_info=nifti.Utils.getByteAt(rawData,39);for(ctr=0;ctr<8;ctr+=1){index=40+ctr*2;this.dims[ctr]=nifti.Utils.getShortAt(rawData,index,this.littleEndian)}this.intent_p1=nifti.Utils.getFloatAt(rawData,56,this.littleEndian);this.intent_p2=nifti.Utils.getFloatAt(rawData,60,this.littleEndian);this.intent_p3=nifti.Utils.getFloatAt(rawData,64,this.littleEndian);this.intent_code=nifti.Utils.getShortAt(rawData,68,this.littleEndian);this.datatypeCode=nifti.Utils.getShortAt(rawData,70,this.littleEndian);this.numBitsPerVoxel=nifti.Utils.getShortAt(rawData,72,this.littleEndian);this.slice_start=nifti.Utils.getShortAt(rawData,74,this.littleEndian);for(ctr=0;ctr<8;ctr+=1){index=76+ctr*4;this.pixDims[ctr]=nifti.Utils.getFloatAt(rawData,index,this.littleEndian)}this.vox_offset=nifti.Utils.getFloatAt(rawData,108,this.littleEndian);this.scl_slope=nifti.Utils.getFloatAt(rawData,112,this.littleEndian);this.scl_inter=nifti.Utils.getFloatAt(rawData,116,this.littleEndian);this.slice_end=nifti.Utils.getShortAt(rawData,120,this.littleEndian);this.slice_code=nifti.Utils.getByteAt(rawData,122);this.xyzt_units=nifti.Utils.getByteAt(rawData,123);this.cal_max=nifti.Utils.getFloatAt(rawData,124,this.littleEndian);this.cal_min=nifti.Utils.getFloatAt(rawData,128,this.littleEndian);this.slice_duration=nifti.Utils.getFloatAt(rawData,132,this.littleEndian);this.toffset=nifti.Utils.getFloatAt(rawData,136,this.littleEndian);this.description=nifti.Utils.getStringAt(rawData,148,228);this.aux_file=nifti.Utils.getStringAt(rawData,228,252);this.qform_code=nifti.Utils.getShortAt(rawData,252,this.littleEndian);this.sform_code=nifti.Utils.getShortAt(rawData,254,this.littleEndian);this.quatern_b=nifti.Utils.getFloatAt(rawData,256,this.littleEndian);this.quatern_c=nifti.Utils.getFloatAt(rawData,260,this.littleEndian);this.quatern_d=nifti.Utils.getFloatAt(rawData,264,this.littleEndian);this.qoffset_x=nifti.Utils.getFloatAt(rawData,268,this.littleEndian);this.qoffset_y=nifti.Utils.getFloatAt(rawData,272,this.littleEndian);this.qoffset_z=nifti.Utils.getFloatAt(rawData,276,this.littleEndian);for(ctrOut=0;ctrOut<3;ctrOut+=1){for(ctrIn=0;ctrIn<4;ctrIn+=1){index=280+(ctrOut*4+ctrIn)*4;this.affine[ctrOut][ctrIn]=nifti.Utils.getFloatAt(rawData,index,this.littleEndian)}}this.affine[3][0]=0;this.affine[3][1]=0;this.affine[3][2]=0;this.affine[3][3]=1;this.intent_name=nifti.Utils.getStringAt(rawData,328,344);this.magic=nifti.Utils.getStringAt(rawData,344,348);this.isHDR=this.magic===nifti.NIFTI1.MAGIC_NUMBER2;if(rawData.byteLength>nifti.NIFTI1.MAGIC_COOKIE){this.extensionFlag[0]=nifti.Utils.getByteAt(rawData,348);this.extensionFlag[1]=nifti.Utils.getByteAt(rawData,348+1);this.extensionFlag[2]=nifti.Utils.getByteAt(rawData,348+2);this.extensionFlag[3]=nifti.Utils.getByteAt(rawData,348+3);if(this.extensionFlag[0]){this.extensionSize=this.getExtensionSize(rawData);this.extensionCode=this.getExtensionCode(rawData)}}};nifti.NIFTI1.prototype.toFormattedString=function(){var fmt=nifti.Utils.formatNumber,string="";string+="Dim Info = "+this.dim_info+"\n";string+="Image Dimensions (1-8): "+this.dims[0]+", "+this.dims[1]+", "+this.dims[2]+", "+this.dims[3]+", "+this.dims[4]+", "+this.dims[5]+", "+this.dims[6]+", "+this.dims[7]+"\n";string+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+"\n";string+="Intent Code = "+this.intent_code+"\n";string+="Datatype = "+this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+")\n";string+="Bits Per Voxel = "+this.numBitsPerVoxel+"\n";string+="Slice Start = "+this.slice_start+"\n";string+="Voxel Dimensions (1-8): "+fmt(this.pixDims[0])+", "+fmt(this.pixDims[1])+", "+fmt(this.pixDims[2])+", "+fmt(this.pixDims[3])+", "+fmt(this.pixDims[4])+", "+fmt(this.pixDims[5])+", "+fmt(this.pixDims[6])+", "+fmt(this.pixDims[7])+"\n";string+="Image Offset = "+this.vox_offset+"\n";string+="Data Scale: Slope = "+fmt(this.scl_slope)+" Intercept = "+fmt(this.scl_inter)+"\n";string+="Slice End = "+this.slice_end+"\n";string+="Slice Code = "+this.slice_code+"\n";string+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(nifti.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(nifti.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+")\n";string+="Display Range: Max = "+fmt(this.cal_max)+" Min = "+fmt(this.cal_min)+"\n";string+="Slice Duration = "+this.slice_duration+"\n";string+="Time Axis Shift = "+this.toffset+"\n";string+='Description: "'+this.description+'"\n';string+='Auxiliary File: "'+this.aux_file+'"\n';string+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+")\n";string+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+")\n";string+="Quaternion Parameters: "+"b = "+fmt(this.quatern_b)+" "+"c = "+fmt(this.quatern_c)+" "+"d = "+fmt(this.quatern_d)+"\n";string+="Quaternion Offsets: "+"x = "+this.qoffset_x+" "+"y = "+this.qoffset_y+" "+"z = "+this.qoffset_z+"\n";string+="S-Form Parameters X: "+fmt(this.affine[0][0])+", "+fmt(this.affine[0][1])+", "+fmt(this.affine[0][2])+", "+fmt(this.affine[0][3])+"\n";string+="S-Form Parameters Y: "+fmt(this.affine[1][0])+", "+fmt(this.affine[1][1])+", "+fmt(this.affine[1][2])+", "+fmt(this.affine[1][3])+"\n";string+="S-Form Parameters Z: "+fmt(this.affine[2][0])+", "+fmt(this.affine[2][1])+", "+fmt(this.affine[2][2])+", "+fmt(this.affine[2][3])+"\n";string+='Intent Name: "'+this.intent_name+'"\n';if(this.extensionFlag[0]){string+="Extension: Size = "+this.extensionSize+" Code = "+this.extensionCode+"\n"}return string};nifti.NIFTI1.prototype.getDatatypeCodeString=function(code){if(code===nifti.NIFTI1.TYPE_UINT8){return"1-Byte Unsigned Integer"}else if(code===nifti.NIFTI1.TYPE_INT16){return"2-Byte Signed Integer"}else if(code===nifti.NIFTI1.TYPE_INT32){return"4-Byte Signed Integer"}else if(code===nifti.NIFTI1.TYPE_FLOAT32){return"4-Byte Float"}else if(code===nifti.NIFTI1.TYPE_FLOAT64){return"8-Byte Float"}else if(code===nifti.NIFTI1.TYPE_RGB24){return"RGB"}else if(code===nifti.NIFTI1.TYPE_INT8){return"1-Byte Signed Integer"}else if(code===nifti.NIFTI1.TYPE_UINT16){return"2-Byte Unsigned Integer"}else if(code===nifti.NIFTI1.TYPE_UINT32){return"4-Byte Unsigned Integer"}else if(code===nifti.NIFTI1.TYPE_INT64){return"8-Byte Signed Integer"}else if(code===nifti.NIFTI1.TYPE_UINT64){return"8-Byte Unsigned Integer"}else{return"Unknown"}};nifti.NIFTI1.prototype.getTransformCodeString=function(code){if(code===nifti.NIFTI1.XFORM_SCANNER_ANAT){return"Scanner"}else if(code===nifti.NIFTI1.XFORM_ALIGNED_ANAT){return"Aligned"}else if(code===nifti.NIFTI1.XFORM_TALAIRACH){return"Talairach"}else if(code===nifti.NIFTI1.XFORM_MNI_152){return"MNI"}else{return"Unknown"}};nifti.NIFTI1.prototype.getUnitsCodeString=function(code){if(code===nifti.NIFTI1.UNITS_METER){return"Meters"}else if(code===nifti.NIFTI1.UNITS_MM){return"Millimeters"}else if(code===nifti.NIFTI1.UNITS_MICRON){return"Microns"}else if(code===nifti.NIFTI1.UNITS_SEC){return"Seconds"}else if(code===nifti.NIFTI1.UNITS_MSEC){return"Milliseconds"}else if(code===nifti.NIFTI1.UNITS_USEC){return"Microseconds"}else if(code===nifti.NIFTI1.UNITS_HZ){return"Hz"}else if(code===nifti.NIFTI1.UNITS_PPM){return"PPM"}else if(code===nifti.NIFTI1.UNITS_RADS){return"Rads"}else{return"Unknown"}};nifti.NIFTI1.prototype.getQformMat=function(){return this.convertNiftiQFormToNiftiSForm(this.quatern_b,this.quatern_c,this.quatern_d,this.qoffset_x,this.qoffset_y,this.qoffset_z,this.pixDims[1],this.pixDims[2],this.pixDims[3],this.pixDims[0])};nifti.NIFTI1.prototype.convertNiftiQFormToNiftiSForm=function(qb,qc,qd,qx,qy,qz,dx,dy,dz,qfac){var R=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],a,b=qb,c=qc,d=qd,xd,yd,zd;R[3][0]=R[3][1]=R[3][2]=0;R[3][3]=1;a=1-(b*b+c*c+d*d);if(a<1e-7){a=1/Math.sqrt(b*b+c*c+d*d);b*=a;c*=a;d*=a;a=0}else{a=Math.sqrt(a)}xd=dx>0?dx:1;yd=dy>0?dy:1;zd=dz>0?dz:1;if(qfac<0){zd=-zd}R[0][0]=(a*a+b*b-c*c-d*d)*xd;R[0][1]=2*(b*c-a*d)*yd;R[0][2]=2*(b*d+a*c)*zd;R[1][0]=2*(b*c+a*d)*xd;R[1][1]=(a*a+c*c-b*b-d*d)*yd;R[1][2]=2*(c*d-a*b)*zd;R[2][0]=2*(b*d-a*c)*xd;R[2][1]=2*(c*d+a*b)*yd;R[2][2]=(a*a+d*d-c*c-b*b)*zd;R[0][3]=qx;R[1][3]=qy;R[2][3]=qz;return R};nifti.NIFTI1.prototype.convertNiftiSFormToNEMA=function(R){var xi,xj,xk,yi,yj,yk,zi,zj,zk,val,detQ,detP,i,j,k,p,q,r,ibest,jbest,kbest,pbest,qbest,rbest,M,vbest,Q,P,iChar,jChar,kChar,iSense,jSense,kSense;k=0;Q=[[0,0,0],[0,0,0],[0,0,0]];P=[[0,0,0],[0,0,0],[0,0,0]];xi=R[0][0];xj=R[0][1];xk=R[0][2];yi=R[1][0];yj=R[1][1];yk=R[1][2];zi=R[2][0];zj=R[2][1];zk=R[2][2];val=Math.sqrt(xi*xi+yi*yi+zi*zi);if(val===0){return null}xi/=val;yi/=val;zi/=val;val=Math.sqrt(xj*xj+yj*yj+zj*zj);if(val===0){return null}xj/=val;yj/=val;zj/=val;val=xi*xj+yi*yj+zi*zj;if(Math.abs(val)>1e-4){xj-=val*xi;yj-=val*yi;zj-=val*zi;val=Math.sqrt(xj*xj+yj*yj+zj*zj);if(val===0){return null}xj/=val;yj/=val;zj/=val}val=Math.sqrt(xk*xk+yk*yk+zk*zk);if(val===0){xk=yi*zj-zi*yj;yk=zi*xj-zj*xi;zk=xi*yj-yi*xj}else{xk/=val;yk/=val;zk/=val}val=xi*xk+yi*yk+zi*zk;if(Math.abs(val)>1e-4){xk-=val*xi;yk-=val*yi;zk-=val*zi;val=Math.sqrt(xk*xk+yk*yk+zk*zk);if(val===0){return null}xk/=val;yk/=val;zk/=val}val=xj*xk+yj*yk+zj*zk;if(Math.abs(val)>1e-4){xk-=val*xj;yk-=val*yj;zk-=val*zj;val=Math.sqrt(xk*xk+yk*yk+zk*zk);if(val===0){return null}xk/=val;yk/=val;zk/=val}Q[0][0]=xi;Q[0][1]=xj;Q[0][2]=xk;Q[1][0]=yi;Q[1][1]=yj;Q[1][2]=yk;Q[2][0]=zi;Q[2][1]=zj;Q[2][2]=zk;detQ=this.nifti_mat33_determ(Q);if(detQ===0){return null}vbest=-666;ibest=pbest=qbest=rbest=1;jbest=2;kbest=3;for(i=1;i<=3;i+=1){for(j=1;j<=3;j+=1){if(i!==j){for(k=1;k<=3;k+=1){if(!(i===k||j===k)){P[0][0]=P[0][1]=P[0][2]=P[1][0]=P[1][1]=P[1][2]=P[2][0]=P[2][1]=P[2][2]=0;for(p=-1;p<=1;p+=2){for(q=-1;q<=1;q+=2){for(r=-1;r<=1;r+=2){P[0][i-1]=p;P[1][j-1]=q;P[2][k-1]=r;detP=this.nifti_mat33_determ(P);if(detP*detQ>0){M=this.nifti_mat33_mul(P,Q);val=M[0][0]+M[1][1]+M[2][2];if(val>vbest){vbest=val;ibest=i;jbest=j;kbest=k;pbest=p;qbest=q;rbest=r}}}}}}}}}}iChar=jChar=kChar=iSense=jSense=kSense=0;switch(ibest*pbest){case 1:iChar="X";iSense="+";break;case-1:iChar="X";iSense="-";break;case 2:iChar="Y";iSense="+";break;case-2:iChar="Y";iSense="-";break;case 3:iChar="Z";iSense="+";break;case-3:iChar="Z";iSense="-";break}switch(jbest*qbest){case 1:jChar="X";jSense="+";break;case-1:jChar="X";jSense="-";break;case 2:jChar="Y";jSense="+";break;case-2:jChar="Y";jSense="-";break;case 3:jChar="Z";jSense="+";break;case-3:jChar="Z";jSense="-";break}switch(kbest*rbest){case 1:kChar="X";kSense="+";break;case-1:kChar="X";kSense="-";break;case 2:kChar="Y";kSense="+";break;case-2:kChar="Y";kSense="-";break;case 3:kChar="Z";kSense="+";break;case-3:kChar="Z";kSense="-";break}return iChar+jChar+kChar+iSense+jSense+kSense};nifti.NIFTI1.prototype.nifti_mat33_mul=function(A,B){var C=[[0,0,0],[0,0,0],[0,0,0]],i,j;for(i=0;i<3;i+=1){for(j=0;j<3;j+=1){C[i][j]=A[i][0]*B[0][j]+A[i][1]*B[1][j]+A[i][2]*B[2][j]}}return C};nifti.NIFTI1.prototype.nifti_mat33_determ=function(R){var r11,r12,r13,r21,r22,r23,r31,r32,r33;r11=R[0][0];r12=R[0][1];r13=R[0][2];r21=R[1][0];r22=R[1][1];r23=R[1][2];r31=R[2][0];r32=R[2][1];r33=R[2][2];return r11*r22*r33-r11*r32*r23-r21*r12*r33+r21*r32*r13+r31*r12*r23-r31*r22*r13};nifti.NIFTI1.prototype.getExtensionLocation=function(){return nifti.NIFTI1.MAGIC_COOKIE+4};nifti.NIFTI1.prototype.getExtensionSize=function(data){return nifti.Utils.getIntAt(data,this.getExtensionLocation(),this.littleEndian)};nifti.NIFTI1.prototype.getExtensionCode=function(data){return nifti.Utils.getIntAt(data,this.getExtensionLocation()+4,this.littleEndian)};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=nifti.NIFTI1}},{"./utilities.js":49}],48:[function(require,module,exports){"use strict";var nifti=nifti||{};nifti.Utils=nifti.Utils||(typeof require!=="undefined"?require("./utilities.js"):null);nifti.NIFTI1=nifti.NIFTI1||(typeof require!=="undefined"?require("./nifti1.js"):null);nifti.NIFTI2=nifti.NIFTI2||function(){this.littleEndian=false;this.dim_info=0;this.dims=[];this.intent_p1=0;this.intent_p2=0;this.intent_p3=0;this.intent_code=0;this.datatypeCode=0;this.numBitsPerVoxel=0;this.slice_start=0;this.slice_end=0;this.slice_code=0;this.pixDims=[];this.vox_offset=0;this.scl_slope=1;this.scl_inter=0;this.xyzt_units=0;this.cal_max=0;this.cal_min=0;this.slice_duration=0;this.toffset=0;this.description="";this.aux_file="";this.intent_name="";this.qform_code=0;this.sform_code=0;this.quatern_b=0;this.quatern_c=0;this.quatern_d=0;this.qoffset_x=0;this.qoffset_y=0;this.qoffset_z=0; -this.affine=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];this.magic=0;this.extensionFlag=[0,0,0,0]};nifti.NIFTI2.MAGIC_COOKIE=540;nifti.NIFTI2.MAGIC_NUMBER_LOCATION=4;nifti.NIFTI2.MAGIC_NUMBER=[110,43,50,0,13,10,26,10];nifti.NIFTI2.prototype.readHeader=function(data){var rawData=new DataView(data),magicCookieVal=nifti.Utils.getIntAt(rawData,0,this.littleEndian),ctr,ctrOut,ctrIn,index,array;if(magicCookieVal!==nifti.NIFTI2.MAGIC_COOKIE){this.littleEndian=true;magicCookieVal=nifti.Utils.getIntAt(rawData,0,this.littleEndian)}if(magicCookieVal!==nifti.NIFTI2.MAGIC_COOKIE){throw new Error("This does not appear to be a NIFTI file!")}this.datatypeCode=nifti.Utils.getShortAt(rawData,12,this.littleEndian);this.numBitsPerVoxel=nifti.Utils.getShortAt(rawData,14,this.littleEndian);for(ctr=0;ctr<8;ctr+=1){index=16+ctr*8;this.dims[ctr]=nifti.Utils.getLongAt(rawData,index,this.littleEndian)}this.intent_p1=nifti.Utils.getDoubleAt(rawData,80,this.littleEndian);this.intent_p2=nifti.Utils.getDoubleAt(rawData,88,this.littleEndian);this.intent_p3=nifti.Utils.getDoubleAt(rawData,96,this.littleEndian);for(ctr=0;ctr<8;ctr+=1){index=104+ctr*8;this.pixDims[ctr]=nifti.Utils.getDoubleAt(rawData,index,this.littleEndian)}this.vox_offset=nifti.Utils.getLongAt(rawData,168,this.littleEndian);this.scl_slope=nifti.Utils.getDoubleAt(rawData,176,this.littleEndian);this.scl_inter=nifti.Utils.getDoubleAt(rawData,184,this.littleEndian);this.cal_max=nifti.Utils.getDoubleAt(rawData,192,this.littleEndian);this.cal_min=nifti.Utils.getDoubleAt(rawData,200,this.littleEndian);this.slice_duration=nifti.Utils.getDoubleAt(rawData,208,this.littleEndian);this.toffset=nifti.Utils.getDoubleAt(rawData,216,this.littleEndian);this.slice_start=nifti.Utils.getLongAt(rawData,224,this.littleEndian);this.slice_end=nifti.Utils.getLongAt(rawData,232,this.littleEndian);this.description=nifti.Utils.getStringAt(rawData,240,240+80);this.aux_file=nifti.Utils.getStringAt(rawData,320,320+24);this.qform_code=nifti.Utils.getIntAt(rawData,344,this.littleEndian);this.sform_code=nifti.Utils.getIntAt(rawData,348,this.littleEndian);this.quatern_b=nifti.Utils.getDoubleAt(rawData,352,this.littleEndian);this.quatern_c=nifti.Utils.getDoubleAt(rawData,360,this.littleEndian);this.quatern_d=nifti.Utils.getDoubleAt(rawData,368,this.littleEndian);this.qoffset_x=nifti.Utils.getDoubleAt(rawData,376,this.littleEndian);this.qoffset_y=nifti.Utils.getDoubleAt(rawData,384,this.littleEndian);this.qoffset_z=nifti.Utils.getDoubleAt(rawData,392,this.littleEndian);for(ctrOut=0;ctrOut<3;ctrOut+=1){for(ctrIn=0;ctrIn<4;ctrIn+=1){index=400+(ctrOut*4+ctrIn)*8;this.affine[ctrOut][ctrIn]=nifti.Utils.getDoubleAt(rawData,index,this.littleEndian)}}this.affine[3][0]=0;this.affine[3][1]=0;this.affine[3][2]=0;this.affine[3][3]=1;this.slice_code=nifti.Utils.getIntAt(rawData,496,this.littleEndian);this.xyzt_units=nifti.Utils.getIntAt(rawData,500,this.littleEndian);this.intent_code=nifti.Utils.getIntAt(rawData,504,this.littleEndian);this.intent_name=nifti.Utils.getStringAt(rawData,508,508+16);this.dim_info=nifti.Utils.getByteAt(rawData,524);if(rawData.byteLength>nifti.NIFTI2.MAGIC_COOKIE){this.extensionFlag[0]=nifti.Utils.getByteAt(rawData,540);this.extensionFlag[1]=nifti.Utils.getByteAt(rawData,540+1);this.extensionFlag[2]=nifti.Utils.getByteAt(rawData,540+2);this.extensionFlag[3]=nifti.Utils.getByteAt(rawData,540+3);if(this.extensionFlag[0]){this.extensionSize=this.getExtensionSize(rawData);this.extensionCode=this.getExtensionCode(rawData)}}};nifti.NIFTI2.prototype.toFormattedString=function(){var fmt=nifti.Utils.formatNumber,string="";string+="Datatype = "+ +this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+")\n";string+="Bits Per Voxel = "+" = "+this.numBitsPerVoxel+"\n";string+="Image Dimensions"+" (1-8): "+this.dims[0]+", "+this.dims[1]+", "+this.dims[2]+", "+this.dims[3]+", "+this.dims[4]+", "+this.dims[5]+", "+this.dims[6]+", "+this.dims[7]+"\n";string+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+"\n";string+="Voxel Dimensions (1-8): "+fmt(this.pixDims[0])+", "+fmt(this.pixDims[1])+", "+fmt(this.pixDims[2])+", "+fmt(this.pixDims[3])+", "+fmt(this.pixDims[4])+", "+fmt(this.pixDims[5])+", "+fmt(this.pixDims[6])+", "+fmt(this.pixDims[7])+"\n";string+="Image Offset = "+this.vox_offset+"\n";string+="Data Scale: Slope = "+fmt(this.scl_slope)+" Intercept = "+fmt(this.scl_inter)+"\n";string+="Display Range: Max = "+fmt(this.cal_max)+" Min = "+fmt(this.cal_min)+"\n";string+="Slice Duration = "+this.slice_duration+"\n";string+="Time Axis Shift = "+this.toffset+"\n";string+="Slice Start = "+this.slice_start+"\n";string+="Slice End = "+this.slice_end+"\n";string+='Description: "'+this.description+'"\n';string+='Auxiliary File: "'+this.aux_file+'"\n';string+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+")\n";string+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+")\n";string+="Quaternion Parameters: "+"b = "+fmt(this.quatern_b)+" "+"c = "+fmt(this.quatern_c)+" "+"d = "+fmt(this.quatern_d)+"\n";string+="Quaternion Offsets: "+"x = "+this.qoffset_x+" "+"y = "+this.qoffset_y+" "+"z = "+this.qoffset_z+"\n";string+="S-Form Parameters X: "+fmt(this.affine[0][0])+", "+fmt(this.affine[0][1])+", "+fmt(this.affine[0][2])+", "+fmt(this.affine[0][3])+"\n";string+="S-Form Parameters Y: "+fmt(this.affine[1][0])+", "+fmt(this.affine[1][1])+", "+fmt(this.affine[1][2])+", "+fmt(this.affine[1][3])+"\n";string+="S-Form Parameters Z: "+fmt(this.affine[2][0])+", "+fmt(this.affine[2][1])+", "+fmt(this.affine[2][2])+", "+fmt(this.affine[2][3])+"\n";string+="Slice Code = "+this.slice_code+"\n";string+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(nifti.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(nifti.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+")\n";string+="Intent Code = "+this.intent_code+"\n";string+='Intent Name: "'+this.intent_name+'"\n';string+="Dim Info = "+this.dim_info+"\n";return string};nifti.NIFTI2.prototype.getExtensionLocation=function(){return nifti.NIFTI2.MAGIC_COOKIE+4};nifti.NIFTI2.prototype.getExtensionSize=nifti.NIFTI1.prototype.getExtensionSize;nifti.NIFTI2.prototype.getExtensionCode=nifti.NIFTI1.prototype.getExtensionCode;nifti.NIFTI2.prototype.getDatatypeCodeString=nifti.NIFTI1.prototype.getDatatypeCodeString;nifti.NIFTI2.prototype.getTransformCodeString=nifti.NIFTI1.prototype.getTransformCodeString;nifti.NIFTI2.prototype.getUnitsCodeString=nifti.NIFTI1.prototype.getUnitsCodeString;nifti.NIFTI2.prototype.getQformMat=nifti.NIFTI1.prototype.getQformMat;nifti.NIFTI2.prototype.convertNiftiQFormToNiftiSForm=nifti.NIFTI1.prototype.convertNiftiQFormToNiftiSForm;nifti.NIFTI2.prototype.convertNiftiSFormToNEMA=nifti.NIFTI1.prototype.convertNiftiSFormToNEMA;nifti.NIFTI2.prototype.nifti_mat33_mul=nifti.NIFTI1.prototype.nifti_mat33_mul;nifti.NIFTI2.prototype.nifti_mat33_determ=nifti.NIFTI1.prototype.nifti_mat33_determ;var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=nifti.NIFTI2}},{"./nifti1.js":47,"./utilities.js":49}],49:[function(require,module,exports){"use strict";var nifti=nifti||{};nifti.Utils=nifti.Utils||{};nifti.Utils.crcTable=null;nifti.Utils.GUNZIP_MAGIC_COOKIE1=31;nifti.Utils.GUNZIP_MAGIC_COOKIE2=139;nifti.Utils.getStringAt=function(data,start,end){var str="",ctr,ch;for(ctr=start;ctr=0;ctr--){value=value*256+array[ctr]}return value};nifti.Utils.toArrayBuffer=function(buffer){var ab,view,i;ab=new ArrayBuffer(buffer.length);view=new Uint8Array(ab);for(i=0;i>>1:c>>>1}crcTable[n]=c}return crcTable};nifti.Utils.crc32=function(dataView){var crcTable=nifti.Utils.crcTable||(nifti.Utils.crcTable=nifti.Utils.makeCRCTable());var crc=0^-1;for(var i=0;i>>8^crcTable[(crc^dataView.getUint8(i))&255]}return(crc^-1)>>>0};var moduleType=typeof module;if(moduleType!=="undefined"&&module.exports){module.exports=nifti.Utils}},{}],50:[function(require,module,exports){"use strict";var assert=require("assert");var lineSeparatorRE=/[ \f\t\v]*\r?\n/;var NRRDMagicRE=/^NRRD\d{4}$/;var lineRE=/^([^:]*)(:[ =])(.*)$/;var dataFileListRE=/^LIST(?: (\d+))?$/;module.exports.serialize=function(nrrdOrg){var i,buffer,arr,totalLen=1,nrrd={},prop,nativeType,nativeSize,bufferData,arrData,line,lines=[],header;for(prop in nrrdOrg){nrrd[prop]=nrrdOrg[prop]}if(nrrd.sizes===undefined){throw new Error("Sizes missing from NRRD file!")}else if(nrrd.dimension===undefined){nrrd.dimension=nrrd.sizes.length}if(nrrd.data instanceof Int8Array){nativeType="int8"}else if(nrrd.data instanceof Uint8Array){nativeType="uint8"}else if(nrrd.data instanceof Int16Array){nativeType="int16"}else if(nrrd.data instanceof Uint16Array){nativeType="uint16"}else if(nrrd.data instanceof Int32Array){nativeType="int32"}else if(nrrd.data instanceof Uint32Array){nativeType="uint32"}else if(nrrd.data instanceof Float32Array){nativeType="float"}else if(nrrd.data instanceof Float64Array){nativeType="double"}if(nrrd.type===undefined&&nativeType!==undefined){nrrd.type=nativeType}else if(nrrd.type===undefined){throw new Error("Type of data is not given and cannot be inferred!")}else if(typeof nrrd.type=="string"||nrrd.type instanceof String){nrrd.type=parseNRRDType(nrrd.type)}if(nrrd.encoding===undefined){nrrd.encoding="raw"}else if(typeof nrrd.encoding=="string"||nrrd.encoding instanceof String){nrrd.encoding=parseNRRDEncoding(nrrd.encoding)}if(nrrd.data&&nrrd.type!="block"&&nrrd.type!="int8"&&nrrd.type!="uint8"&&nrrd.encoding!="ascii"){nrrd.endian=systemEndianness}else if(nrrd.type=="block"||nrrd.type=="int8"||nrrd.type=="uint8"||nrrd.encoding=="ascii"){nrrd.endian=undefined}else if(typeof nrrd.endian=="string"||nrrd.endian instanceof String){nrrd.endian=parseNRRDEndian(nrrd.endian)}var spaceDimension=undefined;if(nrrd.spaceDimension!==undefined){spaceDimension=nrrd.spaceDimension}else if(nrrd.space!==undefined){switch(nrrd.space){case"right-anterior-superior":case"RAS":spaceDimension=3;break;case"left-anterior-superior":case"LAS":spaceDimension=3;break;case"left-posterior-superior":case"LPS":spaceDimension=3;break;case"right-anterior-superior-time":case"RAST":spaceDimension=4;break;case"left-anterior-superior-time":case"LAST":spaceDimension=4;break;case"left-posterior-superior-time":case"LPST":spaceDimension=4;break;case"scanner-xyz":spaceDimension=3;break;case"scanner-xyz-time":spaceDimension=4;break;case"3D-right-handed":spaceDimension=3;break;case"3D-left-handed":spaceDimension=3;break;case"3D-right-handed-time":spaceDimension=4;break;case"3D-left-handed-time":spaceDimension=4;break;default:console.warn("Unrecognized space: "+nrrd.space)}}checkNRRD(nrrd);for(i=0;i0) integers!");totalLen*=nrrd.sizes[i]}if(nrrd.data){if(nrrd.data.length=0)continue;line=serializeField(prop,nrrd[prop],nrrd.dimension,spaceDimension);if(line!==undefined)lines.push(line)}if(nrrd.keys)for(prop in nrrd.keys){if(prop.indexOf(":=")>=0)throw new Error("The combination ':=' is not allowed in an NRRD key!");lines.push(prop+":="+escapeValue(nrrd[prop]))}if(nrrd.dataFile&&nrrd.dataFile.length){lines.push("data file: LIST");Array.prototype.push.apply(lines,nrrd.dataFile)}else if(nrrd.dataFile&&nrrd.dataFile.files&&"subdim"in nrrd.dataFile){lines.push("data file: LIST "+nrrd.dataFile.subdim);Array.prototype.push.apply(lines,nrrd.dataFile.files)}if(bufferData&&!("dataFile"in nrrd)){lines.push("");lines.push("");header=lines.join("\n");buffer=new ArrayBuffer(header.length+bufferData.byteLength);arr=new Uint8Array(buffer);for(i=0;i0&&l[0]!="#"});if(!NRRDMagicRE.test(lines[0])){throw new Error("File is not an NRRD file!")}ret.version=parseInt(lines[0].substring(4,8),10);if(ret.version>5){console.warn("Reading an unsupported version of the NRRD format; things may go haywire.")}for(i=1;i=0)return NaN;if(str.indexOf("-inf")>=0)return-Infinity;if(str.indexOf("inf")>=0)return Infinity;var val=parseFloat(str);if(Number.isNaN(val))throw new Error("Malformed NRRD float: "+str);return val}function parseNRRDVector(str){if(str=="none")return null;if(str.length<2||str[0]!=="("||str[str.length-1]!==")")throw new Error("Malformed NRRD vector: "+str);return str.slice(1,-1).split(",").map(parseNRRDFloat)}function parseNRRDQuotedString(str){if(length<2||str[0]!='"'||str[str.length-1]!='"'){throw new Error("Invalid NRRD quoted string: "+str)}return str.slice(1,-1).replace('\\"','"')}function serializeNRRDQuotedString(str){return'"'+str.replace('"','\\"')+'"'}var whitespaceListSeparator=/[ \t]+/;function parseNRRDWhitespaceSeparatedList(str,parseElement){return str.split(whitespaceListSeparator).map(parseElement)}function parseNRRDType(descriptor){switch(descriptor.toLowerCase()){case"signed char":case"int8":case"int8_t":return"int8";case"uchar":case"unsigned char":case"uint8":case"uint8_t":return"uint8";case"short":case"short int":case"signed short":case"signed short int":case"int16":case"int16_t":return"int16";case"ushort":case"unsigned short":case"unsigned short int":case"uint16":case"uint16_t":return"uint16";case"int":case"signed int":case"int32":case"int32_t":return"int32";case"uint":case"unsigned int":case"uint32":case"uint32_t":return"uint32";case"longlong":case"long long":case"long long int":case"signed long long":case"signed long long int":case"int64":case"int64_t":return"int64";case"ulonglong":case"unsigned long long":case"unsigned long long int":case"uint64":case"uint64_t":return"uint64";case"float":return"float";case"double":return"double";case"block":return"block";default:console.warn("Unrecognized NRRD type: "+descriptor);return descriptor}}function parseNRRDEncoding(encoding){switch(encoding.toLowerCase()){case"raw":return"raw";case"txt":case"text":case"ascii":return"ascii";case"hex":return"hex";case"gz":case"gzip":return"gzip";case"bz2":case"bzip2":return"bzip2";default:console.warn("Unrecognized NRRD encoding: "+encoding);return encoding}}function parseNRRDSpace(space){switch(space.toLowerCase()){case"right-anterior-superior":case"ras":return"right-anterior-superior";case"left-anterior-superior":case"las":return"left-anterior-superior";case"left-posterior-superior":case"lps":return"left-posterior-superior";case"right-anterior-superior-time":case"rast":return"right-anterior-superior-time";case"left-anterior-superior-time":case"last":return"left-anterior-superior-time";case"left-posterior-superior-time":case"lpst":return"left-posterior-superior-time";case"scanner-xyz":return"scanner-xyz";case"scanner-xyz-time":return"scanner-xyz-time";case"3d-right-handed":return"3D-right-handed";case"3d-left-handed":return"3D-left-handed";case"3d-right-handed-time":return"3D-right-handed-time";case"3d-left-handed-time":return"3D-left-handed-time";default:console.warn("Unrecognized space: "+space);return space}}function parseNRRDEndian(endian){switch(endian.toLowerCase()){case"little":return"little";case"big":return"big";default:console.warn("Unrecognized NRRD endianness: "+endian);return endian}}var dataFileFormatRE=/ (-?\d+) (-?\d+) (-?\d+)(?: (\d+))?$/;function parseNRRDDataFile(dataFile){var match=dataFileFormatRE.exec(dataFile);if(match){if(match.length==5&&match[4]){return{format:dataFile.substring(0,match.index),min:parseNRRDInteger(match[1]),max:parseNRRDInteger(match[2]),step:parseNRRDInteger(match[3]),subdim:parseNRRDInteger(match[4])}}else{return{format:dataFile.substring(0,match.index),min:parseNRRDInteger(match[1]),max:parseNRRDInteger(match[2]),step:parseNRRDInteger(match[3])}}}else{return dataFile}}function serializeNRRDDataFile(dataFile){if(typeof dataFile=="string"||dataFile instanceof String){return dataFile}else if("format"in dataFile&&"min"in dataFile&&"max"in dataFile&&"step"in dataFile){if("subdim"in dataFile){return dataFile.format+" "+dataFile.min+" "+dataFile.max+" "+dataFile.step+" "+dataFile.subdim}else{return dataFile.format+" "+dataFile.min+" "+dataFile.max+" "+dataFile.step}}else{throw new Error("Unrecognized data file format!")}}function parseNRRDCenter(center){switch(center.toLowerCase()){case"cell":return"cell";case"node":return"node";case"???":case"none":return null;default:console.warn("Unrecognized NRRD center: "+center);return center}}var NRRDKinds={domain:"domain",space:"space",time:"time",list:"list",point:"point",vector:"vector","covariant-vector":"covariant-vector",normal:"normal",stub:"stub",scalar:"scalar",complex:"complex","2-vector":"2-vector","3-color":"3-color","rgb-color":"RGB-color","hsv-color":"HSV-color","xyz-color":"XYZ-color","4-color":"4-color","rgba-color":"RGBA-color","3-vector":"3-vector","3-gradient":"3-gradient","3-normal":"3-normal","4-vector":"4-vector",quaternion:"quaternion","2d-symmetric-matrix":"2D-symmetric-matrix","2d-masked-symmetric-matrix":"2D-masked-symmetric-matrix","2d-matrix":"2D-matrix","2d-masked-matrix":"2D-masked-matrix","3d-symmetric-matrix":"3D-symmetric-matrix","3d-masked-symmetric-matrix":"3D-masked-symmetric-matrix","3d-matrix":"3D-matrix","3d-masked-matrix":"3D-masked-matrix","???":null,none:null};function parseNRRDKind(kind){var kindLC=kind.toLowerCase();if(kindLC in NRRDKinds)return NRRDKinds[kindLC];console.warn("Unrecognized NRRD kind: "+kind);return kind}function serializeNRRDOptional(a){return a===null?"???":a}var systemEndianness=function(){var buf=new ArrayBuffer(4),intArr=new Uint32Array(buf),byteArr=new Uint8Array(buf);intArr[0]=16909060;if(byteArr[0]==1&&byteArr[1]==2&&byteArr[2]==3&&byteArr[3]==4){return"big"}else if(byteArr[0]==4&&byteArr[1]==3&&byteArr[2]==2&&byteArr[3]==1){return"little"}console.warn("Unrecognized system endianness!");return undefined}();function parseNRRDRawData(buffer,type,sizes,options){var i,arr,view,totalLen=1,endianFlag;for(i=0;i0) integers!");totalLen*=sizes[i]}if(type=="block"){return buffer.slice(0,totalLen*options.blockSize)}else if(type=="int8"||type=="uint8"||options.endian==systemEndianness){switch(type){case"int8":checkSize(1);return new Int8Array(buffer.slice(0,totalLen));case"uint8":checkSize(1);return new Uint8Array(buffer.slice(0,totalLen));case"int16":checkSize(2);return new Int16Array(buffer.slice(0,totalLen*2));case"uint16":checkSize(2);return new Uint16Array(buffer.slice(0,totalLen*2));case"int32":checkSize(4);return new Int32Array(buffer.slice(0,totalLen*4));case"uint32":checkSize(4);return new Uint32Array(buffer.slice(0,totalLen*4));case"float":checkSize(4);return new Float32Array(buffer.slice(0,totalLen*4));case"double":checkSize(8);return new Float64Array(buffer.slice(0,totalLen*8));default:console.warn("Unsupported NRRD type: "+type+", returning raw buffer.");return undefined}}else{switch(options.endian){case"big":endianFlag=false;break;case"little":endianFlag=true;break;default:console.warn("Unsupported endianness in NRRD file: "+options.endian);return undefined}view=new DataView(buffer);switch(type){case"int8":arr=new Int8Array(totalLen);for(i=0;i0) integers!"); -totalLen*=sizes[i]}buf8=new Uint8Array(buffer);str=String.fromCharCode.apply(null,buf8);strList=str.split(whitespaceDataValueListSeparatorRE);if(strList.lengthtotalLen){if(strList[0]==="")strList=strList.slice(1);strList=strList.slice(0,totalLen)}switch(type){case"int8":return new Int8Array(strList.map(parseNRRDInteger));case"uint8":return new Uint8Array(strList.map(parseNRRDInteger));case"int16":return new Int16Array(strList.map(parseNRRDInteger));case"uint16":return new Uint16Array(strList.map(parseNRRDInteger));case"int32":return new Int32Array(strList.map(parseNRRDInteger));case"uint32":return new Uint32Array(strList.map(parseNRRDInteger));case"float":return new Float32Array(strList.map(parseNRRDFloat));case"double":return new Float64Array(strList.map(parseNRRDFloat));default:console.warn("Unsupported NRRD type: "+type+".");return undefined}}function getNRRDTypeSize(type){switch(type){case"int8":return 1;case"uint8":return 1;case"int16":return 2;case"uint16":return 2;case"int32":return 4;case"uint32":return 4;case"int64":return 8;case"uint64":return 8;case"float":return 4;case"double":return 8;default:throw new Error("Do not know the size of NRRD type: "+type)}}function checkNRRD(ret){if(ret.dimension===undefined){throw new Error("Dimension missing from NRRD file!")}else if(ret.type===undefined){throw new Error("Type missing from NRRD file!")}else if(ret.encoding===undefined){throw new Error("Encoding missing from NRRD file!")}else if(ret.sizes===undefined){throw new Error("Sizes missing from NRRD file!")}if(ret.type!="block"&&ret.type!="int8"&&ret.type!="uint8"&&ret.encoding!="ascii"&&ret.endian===undefined){throw new Error("Endianness missing from NRRD file!")}else if(ret.type=="block"&&ret.blockSize===undefined){throw new Error("Missing block size in NRRD file!")}if(ret.dimension===0){throw new Error("Zero-dimensional NRRD file?")}else if(ret.dimension!=ret.sizes.length){throw new Error("Length of 'sizes' is different from 'dimension' in an NRRD file!")}else if(ret.spacings&&ret.dimension!=ret.spacings.length){throw new Error("Length of 'spacings' is different from 'dimension' in an NRRD file!")}else if(ret.thicknesses&&ret.dimension!=ret.thicknesses.length){throw new Error("Length of 'thicknesses' is different from 'dimension' in an NRRD file!")}else if(ret.axisMins&&ret.dimension!=ret.axisMins.length){throw new Error("Length of 'axis mins' is different from 'dimension' in an NRRD file!")}else if(ret.axisMaxs&&ret.dimension!=ret.axisMaxs.length){throw new Error("Length of 'axis maxs' is different from 'dimension' in an NRRD file!")}else if(ret.centers&&ret.dimension!=ret.centers.length){throw new Error("Length of 'centers' is different from 'dimension' in an NRRD file!")}else if(ret.labels&&ret.dimension!=ret.labels.length){throw new Error("Length of 'labels' is different from 'dimension' in an NRRD file!")}else if(ret.units&&ret.dimension!=ret.units.length){throw new Error("Length of 'units' is different from 'dimension' in an NRRD file!")}else if(ret.kinds&&ret.dimension!=ret.kinds.length){throw new Error("Length of 'kinds' is different from 'dimension' in an NRRD file!")}if((ret.data===undefined||ret.data.length===0)&&(ret.buffer===undefined||ret.buffer.byteLength===0)&&ret.dataFile===undefined){throw new Error("NRRD file has neither inline or external data!")}}function castTypedArray(data,type){switch(type){case"int8":return new Int8Array(data);case"uint8":return new Uint8Array(data);case"int16":return new Int16Array(data);case"uint16":return new Uint16Array(data);case"int32":return new Int32Array(data);case"uint32":return new Uint32Array(data);case"float":return new Float32Array(data);case"double":return new Float64Array(data);default:throw new Error("Cannot cast to NRRD type: "+type)}}function serializeToBuffer(data,type,endian){var i,endianFlag,view,nativeSize=getNRRDTypeSize(type),buffer=new ArrayBuffer(data.length*nativeSize);switch(endian){case"big":endianFlag=false;break;case"little":endianFlag=true;break;default:console.warn("Unsupported endianness in NRRD file: "+endian);return undefined}view=new DataView(buffer);switch(type){case"int8":for(i=0;i0){opt.windowBits=-opt.windowBits}else if(opt.gzip&&opt.windowBits>0&&opt.windowBits<16){opt.windowBits+=16}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new ZStream;this.strm.avail_out=0;var status=zlib_deflate.deflateInit2(this.strm,opt.level,opt.method,opt.windowBits,opt.memLevel,opt.strategy);if(status!==Z_OK){throw new Error(msg[status])}if(opt.header){zlib_deflate.deflateSetHeader(this.strm,opt.header)}if(opt.dictionary){var dict;if(typeof opt.dictionary==="string"){dict=strings.string2buf(opt.dictionary)}else if(toString.call(opt.dictionary)==="[object ArrayBuffer]"){dict=new Uint8Array(opt.dictionary)}else{dict=opt.dictionary}status=zlib_deflate.deflateSetDictionary(this.strm,dict);if(status!==Z_OK){throw new Error(msg[status])}this._dict_set=true}}Deflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;if(this.ended){return false}_mode=mode===~~mode?mode:mode===true?Z_FINISH:Z_NO_FLUSH;if(typeof data==="string"){strm.input=strings.string2buf(data)}else if(toString.call(data)==="[object ArrayBuffer]"){strm.input=new Uint8Array(data)}else{strm.input=data}strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status=zlib_deflate.deflate(strm,_mode);if(status!==Z_STREAM_END&&status!==Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.avail_out===0||strm.avail_in===0&&(_mode===Z_FINISH||_mode===Z_SYNC_FLUSH)){if(this.options.to==="string"){this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output,strm.next_out)))}else{this.onData(utils.shrinkBuf(strm.output,strm.next_out))}}}while((strm.avail_in>0||strm.avail_out===0)&&status!==Z_STREAM_END);if(_mode===Z_FINISH){status=zlib_deflate.deflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===Z_OK}if(_mode===Z_SYNC_FLUSH){this.onEnd(Z_OK);strm.avail_out=0;return true}return true};Deflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Deflate.prototype.onEnd=function(status){if(status===Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=utils.flattenChunks(this.chunks)}}this.chunks=[];this.err=status;this.msg=this.strm.msg};function deflate(input,options){var deflator=new Deflate(options);deflator.push(input,true);if(deflator.err){throw deflator.msg}return deflator.result}function deflateRaw(input,options){options=options||{};options.raw=true;return deflate(input,options)}function gzip(input,options){options=options||{};options.gzip=true;return deflate(input,options)}exports.Deflate=Deflate;exports.deflate=deflate;exports.deflateRaw=deflateRaw;exports.gzip=gzip},{"./utils/common":54,"./utils/strings":55,"./zlib/deflate":59,"./zlib/messages":64,"./zlib/zstream":66}],53:[function(require,module,exports){"use strict";var zlib_inflate=require("./zlib/inflate");var utils=require("./utils/common");var strings=require("./utils/strings");var c=require("./zlib/constants");var msg=require("./zlib/messages");var ZStream=require("./zlib/zstream");var GZheader=require("./zlib/gzheader");var toString=Object.prototype.toString;function Inflate(options){if(!(this instanceof Inflate))return new Inflate(options);this.options=utils.assign({chunkSize:16384,windowBits:0,to:""},options||{});var opt=this.options;if(opt.raw&&opt.windowBits>=0&&opt.windowBits<16){opt.windowBits=-opt.windowBits;if(opt.windowBits===0){opt.windowBits=-15}}if(opt.windowBits>=0&&opt.windowBits<16&&!(options&&options.windowBits)){opt.windowBits+=32}if(opt.windowBits>15&&opt.windowBits<48){if((opt.windowBits&15)===0){opt.windowBits|=15}}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new ZStream;this.strm.avail_out=0;var status=zlib_inflate.inflateInit2(this.strm,opt.windowBits);if(status!==c.Z_OK){throw new Error(msg[status])}this.header=new GZheader;zlib_inflate.inflateGetHeader(this.strm,this.header)}Inflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var dictionary=this.options.dictionary;var status,_mode;var next_out_utf8,tail,utf8str;var dict;var allowBufError=false;if(this.ended){return false}_mode=mode===~~mode?mode:mode===true?c.Z_FINISH:c.Z_NO_FLUSH;if(typeof data==="string"){strm.input=strings.binstring2buf(data)}else if(toString.call(data)==="[object ArrayBuffer]"){strm.input=new Uint8Array(data)}else{strm.input=data}strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status=zlib_inflate.inflate(strm,c.Z_NO_FLUSH);if(status===c.Z_NEED_DICT&&dictionary){if(typeof dictionary==="string"){dict=strings.string2buf(dictionary)}else if(toString.call(dictionary)==="[object ArrayBuffer]"){dict=new Uint8Array(dictionary)}else{dict=dictionary}status=zlib_inflate.inflateSetDictionary(this.strm,dict)}if(status===c.Z_BUF_ERROR&&allowBufError===true){status=c.Z_OK;allowBufError=false}if(status!==c.Z_STREAM_END&&status!==c.Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.next_out){if(strm.avail_out===0||status===c.Z_STREAM_END||strm.avail_in===0&&(_mode===c.Z_FINISH||_mode===c.Z_SYNC_FLUSH)){if(this.options.to==="string"){next_out_utf8=strings.utf8border(strm.output,strm.next_out);tail=strm.next_out-next_out_utf8;utf8str=strings.buf2string(strm.output,next_out_utf8);strm.next_out=tail;strm.avail_out=chunkSize-tail;if(tail){utils.arraySet(strm.output,strm.output,next_out_utf8,tail,0)}this.onData(utf8str)}else{this.onData(utils.shrinkBuf(strm.output,strm.next_out))}}}if(strm.avail_in===0&&strm.avail_out===0){allowBufError=true}}while((strm.avail_in>0||strm.avail_out===0)&&status!==c.Z_STREAM_END);if(status===c.Z_STREAM_END){_mode=c.Z_FINISH}if(_mode===c.Z_FINISH){status=zlib_inflate.inflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===c.Z_OK}if(_mode===c.Z_SYNC_FLUSH){this.onEnd(c.Z_OK);strm.avail_out=0;return true}return true};Inflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Inflate.prototype.onEnd=function(status){if(status===c.Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=utils.flattenChunks(this.chunks)}}this.chunks=[];this.err=status;this.msg=this.strm.msg};function inflate(input,options){var inflator=new Inflate(options);inflator.push(input,true);if(inflator.err){throw inflator.msg}return inflator.result}function inflateRaw(input,options){options=options||{};options.raw=true;return inflate(input,options)}exports.Inflate=Inflate;exports.inflate=inflate;exports.inflateRaw=inflateRaw;exports.ungzip=inflate},{"./utils/common":54,"./utils/strings":55,"./zlib/constants":57,"./zlib/gzheader":60,"./zlib/inflate":62,"./zlib/messages":64,"./zlib/zstream":66}],54:[function(require,module,exports){"use strict";var TYPED_OK=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";exports.assign=function(obj){var sources=Array.prototype.slice.call(arguments,1);while(sources.length){var source=sources.shift();if(!source){continue}if(typeof source!=="object"){throw new TypeError(source+"must be non-object")}for(var p in source){if(source.hasOwnProperty(p)){obj[p]=source[p]}}}return obj};exports.shrinkBuf=function(buf,size){if(buf.length===size){return buf}if(buf.subarray){return buf.subarray(0,size)}buf.length=size;return buf};var fnTyped={arraySet:function(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return}for(var i=0;i=252?6:q>=248?5:q>=240?4:q>=224?3:q>=192?2:1}_utf8len[254]=_utf8len[254]=1;exports.string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};function buf2binstring(buf,len){if(len<65537){if(buf.subarray&&STR_APPLY_UIA_OK||!buf.subarray&&STR_APPLY_OK){return String.fromCharCode.apply(null,utils.shrinkBuf(buf,len))}}var result="";for(var i=0;i4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i1){utf16buf[out++]=65533;continue}if(c<65536){utf16buf[out++]=c}else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}return buf2binstring(utf16buf,out)};exports.utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length){max=buf.length}pos=max-1;while(pos>=0&&(buf[pos]&192)===128){pos--}if(pos<0){return max}if(pos===0){return max}return pos+_utf8len[buf[pos]]>max?pos:max}},{"./common":54}],56:[function(require,module,exports){arguments[4][6][0].apply(exports,arguments)},{dup:6}],57:[function(require,module,exports){"use strict";module.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}},{}],58:[function(require,module,exports){"use strict";function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++){c=c&1?3988292384^c>>>1:c>>>1}table[n]=c}return table}var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc^=-1;for(var i=pos;i>>8^t[(crc^buf[i])&255]}return crc^-1}module.exports=crc32},{}],59:[function(require,module,exports){"use strict";var utils=require("../utils/common");var trees=require("./trees");var adler32=require("./adler32");var crc32=require("./crc32");var msg=require("./messages");var Z_NO_FLUSH=0;var Z_PARTIAL_FLUSH=1;var Z_FULL_FLUSH=3;var Z_FINISH=4;var Z_BLOCK=5;var Z_OK=0;var Z_STREAM_END=1;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_BUF_ERROR=-5;var Z_DEFAULT_COMPRESSION=-1;var Z_FILTERED=1;var Z_HUFFMAN_ONLY=2;var Z_RLE=3;var Z_FIXED=4;var Z_DEFAULT_STRATEGY=0;var Z_UNKNOWN=2;var Z_DEFLATED=8;var MAX_MEM_LEVEL=9;var MAX_WBITS=15;var DEF_MEM_LEVEL=8;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=32;var INIT_STATE=42;var EXTRA_STATE=69;var NAME_STATE=73;var COMMENT_STATE=91;var HCRC_STATE=103;var BUSY_STATE=113;var FINISH_STATE=666;var BS_NEED_MORE=1;var BS_BLOCK_DONE=2;var BS_FINISH_STARTED=3;var BS_FINISH_DONE=4;var OS_CODE=3;function err(strm,errorCode){strm.msg=msg[errorCode];return errorCode}function rank(f){return(f<<1)-(f>4?9:0)}function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}function flush_pending(strm){var s=strm.state;var len=s.pending;if(len>strm.avail_out){len=strm.avail_out}if(len===0){return}utils.arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out);strm.next_out+=len;s.pending_out+=len;strm.total_out+=len;strm.avail_out-=len;s.pending-=len;if(s.pending===0){s.pending_out=0}}function flush_block_only(s,last){trees._tr_flush_block(s,s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last);s.block_start=s.strstart;flush_pending(s.strm)}function put_byte(s,b){s.pending_buf[s.pending++]=b}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255;s.pending_buf[s.pending++]=b&255}function read_buf(strm,buf,start,size){var len=strm.avail_in;if(len>size){len=size}if(len===0){return 0}strm.avail_in-=len;utils.arraySet(buf,strm.input,strm.next_in,len,start);if(strm.state.wrap===1){strm.adler=adler32(strm.adler,buf,len,start)}else if(strm.state.wrap===2){strm.adler=crc32(strm.adler,buf,len,start)}strm.next_in+=len;strm.total_in+=len;return len}function longest_match(s,cur_match){var chain_length=s.max_chain_length;var scan=s.strstart;var match;var len;var best_len=s.prev_length;var nice_match=s.nice_match;var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0;var _win=s.window;var wmask=s.w_mask;var prev=s.prev;var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+best_len];if(s.prev_length>=s.good_match){chain_length>>=2}if(nice_match>s.lookahead){nice_match=s.lookahead}do{match=cur_match;if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1]){continue}scan+=2;match++;do{}while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&scanbest_len){s.match_start=cur_match;best_len=len;if(len>=nice_match){break}scan_end1=_win[scan+best_len-1];scan_end=_win[scan+best_len]}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);if(best_len<=s.lookahead){return best_len}return s.lookahead}function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;do{more=s.window_size-s.lookahead-s.strstart;if(s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){utils.arraySet(s.window,s.window,_w_size,_w_size,0);s.match_start-=_w_size;s.strstart-=_w_size;s.block_start-=_w_size;n=s.hash_size;p=n;do{m=s.head[--p];s.head[p]=m>=_w_size?m-_w_size:0}while(--n);n=_w_size;p=n;do{m=s.prev[--p];s.prev[p]=m>=_w_size?m-_w_size:0}while(--n);more+=_w_size}if(s.strm.avail_in===0){break}n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];s.ins_h=(s.ins_h<s.pending_buf_size-5){max_block_size=s.pending_buf_size-5}for(;;){if(s.lookahead<=1){fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH){return BS_NEED_MORE}if(s.lookahead===0){break}}s.strstart+=s.lookahead;s.lookahead=0;var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){s.lookahead=s.strstart-max_start;s.strstart=max_start;flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.strstart>s.block_start){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_NEED_MORE}function deflate_fast(s,flush){var hash_head;var bflush;for(;;){if(s.lookahead=MIN_MATCH){s.ins_h=(s.ins_h<=MIN_MATCH){bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;if(s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do{s.strstart++;s.ins_h=(s.ins_h<=MIN_MATCH){s.ins_h=(s.ins_h<4096)){s.match_length=MIN_MATCH-1}}if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-MIN_MATCH);s.lookahead-=s.prev_length-1;s.prev_length-=2;do{if(++s.strstart<=max_insert){s.ins_h=(s.ins_h<=MIN_MATCH&&s.strstart>0){scan=s.strstart-1;prev=_win[scan];if(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]){strend=s.strstart+MAX_MATCH;do{}while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scans.lookahead){s.match_length=s.lookahead}}}if(s.match_length>=MIN_MATCH){bflush=trees._tr_tally(s,1,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;s.strstart+=s.match_length;s.match_length=0}else{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}function deflate_huff(s,flush){var bflush;for(;;){if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH){return BS_NEED_MORE}break}}s.match_length=0;bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}function Config(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length;this.max_lazy=max_lazy;this.nice_length=nice_length;this.max_chain=max_chain;this.func=func}var configuration_table;configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size;zero(s.head);s.max_lazy_match=configuration_table[s.level].max_lazy;s.good_match=configuration_table[s.level].good_length;s.nice_match=configuration_table[s.level].nice_length;s.max_chain_length=configuration_table[s.level].max_chain;s.strstart=0;s.block_start=0;s.lookahead=0;s.insert=0;s.match_length=s.prev_length=MIN_MATCH-1;s.match_available=0;s.ins_h=0}function DeflateState(){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_DEFLATED;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 utils.Buf16(HEAP_SIZE*2);this.dyn_dtree=new utils.Buf16((2*D_CODES+1)*2);this.bl_tree=new utils.Buf16((2*BL_CODES+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new utils.Buf16(MAX_BITS+1);this.heap=new utils.Buf16(2*L_CODES+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new utils.Buf16(2*L_CODES+1);zero(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 deflateResetKeep(strm){var s;if(!strm||!strm.state){return err(strm,Z_STREAM_ERROR)}strm.total_in=strm.total_out=0;strm.data_type=Z_UNKNOWN;s=strm.state;s.pending=0;s.pending_out=0;if(s.wrap<0){s.wrap=-s.wrap}s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0:1;s.last_flush=Z_NO_FLUSH;trees._tr_init(s);return Z_OK}function deflateReset(strm){var ret=deflateResetKeep(strm);if(ret===Z_OK){lm_init(strm.state)}return ret}function deflateSetHeader(strm,head){if(!strm||!strm.state){return Z_STREAM_ERROR}if(strm.state.wrap!==2){return Z_STREAM_ERROR}strm.state.gzhead=head;return Z_OK}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm){return Z_STREAM_ERROR}var wrap=1;if(level===Z_DEFAULT_COMPRESSION){level=6}if(windowBits<0){wrap=0;windowBits=-windowBits}else if(windowBits>15){wrap=2;windowBits-=16}if(memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED){ -return err(strm,Z_STREAM_ERROR)}if(windowBits===8){windowBits=9}var s=new DeflateState;strm.state=s;s.strm=strm;s.wrap=wrap;s.gzhead=null;s.w_bits=windowBits;s.w_size=1<>1;s.l_buf=(1+2)*s.lit_bufsize;s.level=level;s.strategy=strategy;s.method=method;return deflateReset(strm)}function deflateInit(strm,level){return deflateInit2(strm,level,Z_DEFLATED,MAX_WBITS,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY)}function deflate(strm,flush){var old_flush,s;var beg,val;if(!strm||!strm.state||flush>Z_BLOCK||flush<0){return strm?err(strm,Z_STREAM_ERROR):Z_STREAM_ERROR}s=strm.state;if(!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH){return err(strm,strm.avail_out===0?Z_BUF_ERROR:Z_STREAM_ERROR)}s.strm=strm;old_flush=s.last_flush;s.last_flush=flush;if(s.status===INIT_STATE){if(s.wrap===2){strm.adler=0;put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,OS_CODE);s.status=BUSY_STATE}else{put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(!s.gzhead.extra?0:4)+(!s.gzhead.name?0:8)+(!s.gzhead.comment?0:16));put_byte(s,s.gzhead.time&255);put_byte(s,s.gzhead.time>>8&255);put_byte(s,s.gzhead.time>>16&255);put_byte(s,s.gzhead.time>>24&255);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,s.gzhead.os&255);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&255);put_byte(s,s.gzhead.extra.length>>8&255)}if(s.gzhead.hcrc){strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0)}s.gzindex=0;s.status=EXTRA_STATE}}else{var header=Z_DEFLATED+(s.w_bits-8<<4)<<8;var level_flags=-1;if(s.strategy>=Z_HUFFMAN_ONLY||s.level<2){level_flags=0}else if(s.level<6){level_flags=1}else if(s.level===6){level_flags=2}else{level_flags=3}header|=level_flags<<6;if(s.strstart!==0){header|=PRESET_DICT}header+=31-header%31;s.status=BUSY_STATE;putShortMSB(s,header);if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}strm.adler=1}}if(s.status===EXTRA_STATE){if(s.gzhead.extra){beg=s.pending;while(s.gzindex<(s.gzhead.extra.length&65535)){if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){break}}put_byte(s,s.gzhead.extra[s.gzindex]&255);s.gzindex++}if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(s.gzindex===s.gzhead.extra.length){s.gzindex=0;s.status=NAME_STATE}}else{s.status=NAME_STATE}}if(s.status===NAME_STATE){if(s.gzhead.name){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.gzindex=0;s.status=COMMENT_STATE}}else{s.status=COMMENT_STATE}}if(s.status===COMMENT_STATE){if(s.gzhead.comment){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.status=HCRC_STATE}}else{s.status=HCRC_STATE}}if(s.status===HCRC_STATE){if(s.gzhead.hcrc){if(s.pending+2>s.pending_buf_size){flush_pending(strm)}if(s.pending+2<=s.pending_buf_size){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);strm.adler=0;s.status=BUSY_STATE}}else{s.status=BUSY_STATE}}if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH){return err(strm,Z_BUF_ERROR)}if(s.status===FINISH_STATE&&strm.avail_in!==0){return err(strm,Z_BUF_ERROR)}if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY?deflate_huff(s,flush):s.strategy===Z_RLE?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if(bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE){s.status=FINISH_STATE}if(bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED){if(strm.avail_out===0){s.last_flush=-1}return Z_OK}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH){trees._tr_align(s)}else if(flush!==Z_BLOCK){trees._tr_stored_block(s,0,0,false);if(flush===Z_FULL_FLUSH){zero(s.head);if(s.lookahead===0){s.strstart=0;s.block_start=0;s.insert=0}}}flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}}if(flush!==Z_FINISH){return Z_OK}if(s.wrap<=0){return Z_STREAM_END}if(s.wrap===2){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);put_byte(s,strm.adler>>16&255);put_byte(s,strm.adler>>24&255);put_byte(s,strm.total_in&255);put_byte(s,strm.total_in>>8&255);put_byte(s,strm.total_in>>16&255);put_byte(s,strm.total_in>>24&255)}else{putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}flush_pending(strm);if(s.wrap>0){s.wrap=-s.wrap}return s.pending!==0?Z_OK:Z_STREAM_END}function deflateEnd(strm){var status;if(!strm||!strm.state){return Z_STREAM_ERROR}status=strm.state.status;if(status!==INIT_STATE&&status!==EXTRA_STATE&&status!==NAME_STATE&&status!==COMMENT_STATE&&status!==HCRC_STATE&&status!==BUSY_STATE&&status!==FINISH_STATE){return err(strm,Z_STREAM_ERROR)}strm.state=null;return status===BUSY_STATE?err(strm,Z_DATA_ERROR):Z_OK}function deflateSetDictionary(strm,dictionary){var dictLength=dictionary.length;var s;var str,n;var wrap;var avail;var next;var input;var tmpDict;if(!strm||!strm.state){return Z_STREAM_ERROR}s=strm.state;wrap=s.wrap;if(wrap===2||wrap===1&&s.status!==INIT_STATE||s.lookahead){return Z_STREAM_ERROR}if(wrap===1){strm.adler=adler32(strm.adler,dictionary,dictLength,0)}s.wrap=0;if(dictLength>=s.w_size){if(wrap===0){zero(s.head);s.strstart=0;s.block_start=0;s.insert=0}tmpDict=new utils.Buf8(s.w_size);utils.arraySet(tmpDict,dictionary,dictLength-s.w_size,s.w_size,0);dictionary=tmpDict;dictLength=s.w_size}avail=strm.avail_in;next=strm.next_in;input=strm.input;strm.avail_in=dictLength;strm.next_in=0;strm.input=dictionary;fill_window(s);while(s.lookahead>=MIN_MATCH){str=s.strstart;n=s.lookahead-(MIN_MATCH-1);do{s.ins_h=(s.ins_h<>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;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 utils.Buf16(320);this.work=new utils.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;strm.total_in=strm.total_out=state.total=0;strm.msg="";if(state.wrap){strm.adler=state.wrap&1}state.mode=HEAD;state.last=0;state.havedict=0;state.dmax=32768;state.head=null;state.hold=0;state.bits=0;state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;return Z_OK}function inflateReset(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;state.wsize=0;state.whave=0;state.wnext=0;return inflateResetKeep(strm)}function inflateReset2(strm,windowBits){var wrap;var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;if(windowBits<0){wrap=0;windowBits=-windowBits}else{wrap=(windowBits>>4)+1;if(windowBits<48){windowBits&=15}}if(windowBits&&(windowBits<8||windowBits>15)){return Z_STREAM_ERROR}if(state.window!==null&&state.wbits!==windowBits){state.window=null}state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm)}function inflateInit2(strm,windowBits){var ret;var state;if(!strm){return Z_STREAM_ERROR}state=new InflateState;strm.state=state;state.window=null;ret=inflateReset2(strm,windowBits);if(ret!==Z_OK){strm.state=null}return ret}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=true;var lenfix,distfix;function fixedtables(state){if(virgin){var sym;lenfix=new utils.Buf32(512);distfix=new utils.Buf32(32);sym=0;while(sym<144){state.lens[sym++]=8}while(sym<256){state.lens[sym++]=9}while(sym<280){state.lens[sym++]=7}while(sym<288){state.lens[sym++]=8}inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9});sym=0;while(sym<32){state.lens[sym++]=5}inflate_table(DISTS,state.lens,0,32,distfix,0,state.work,{bits:5});virgin=false}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5}function updatewindow(strm,src,end,copy){var dist;var state=strm.state;if(state.window===null){state.wsize=1<=state.wsize){utils.arraySet(state.window,src,end-state.wsize,state.wsize,0);state.wnext=0;state.whave=state.wsize}else{dist=state.wsize-state.wnext;if(dist>copy){dist=copy}utils.arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(copy){utils.arraySet(state.window,src,end-copy,copy,0);state.wnext=copy;state.whave=state.wsize}else{state.wnext+=dist;if(state.wnext===state.wsize){state.wnext=0}if(state.whave>>8&255;state.check=crc32(state.check,hbuf,2,0);hold=0;bits=0;state.mode=FLAGS;break}state.flags=0;if(state.head){state.head.done=false}if(!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check";state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode=BAD;break}hold>>>=4;bits-=4;len=(hold&15)+8;if(state.wbits===0){state.wbits=len}else if(len>state.wbits){strm.msg="invalid window size";state.mode=BAD;break}state.dmax=1<>8&1}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=TIME;case TIME:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;hbuf[2]=hold>>>16&255;hbuf[3]=hold>>>24&255;state.check=crc32(state.check,hbuf,4,0)}hold=0;bits=0;state.mode=OS;case OS:while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>8}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=EXLEN;case EXLEN:if(state.flags&1024){while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0}else if(state.head){state.head.extra=null}state.mode=EXTRA;case EXTRA:if(state.flags&1024){copy=state.length;if(copy>have){copy=have}if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra){state.head.extra=new Array(state.head.extra_len)}utils.arraySet(state.head.extra,input,next,copy,len)}if(state.flags&512){state.check=crc32(state.check,input,copy,next)}have-=copy;next+=copy;state.length-=copy}if(state.length){break inf_leave}}state.length=0;state.mode=NAME;case NAME:if(state.flags&2048){if(have===0){break inf_leave}copy=0;do{len=input[next+copy++];if(state.head&&len&&state.length<65536){state.head.name+=String.fromCharCode(len)}}while(len&©>9&1;state.head.done=true}strm.adler=state.check=0;state.mode=TYPE;break;case DICTID:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=bits&7;bits-=bits&7;state.mode=CHECK;break}while(bits<3){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=1;bits-=1;switch(hold&3){case 0:state.mode=STORED;break;case 1:fixedtables(state);state.mode=LEN_;if(flush===Z_TREES){hold>>>=2;bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type";state.mode=BAD}hold>>>=2;bits-=2;break;case STORED:hold>>>=bits&7;bits-=bits&7;while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>16^65535)){strm.msg="invalid stored block lengths";state.mode=BAD;break}state.length=hold&65535;hold=0;bits=0;state.mode=COPY_;if(flush===Z_TREES){break inf_leave}case COPY_:state.mode=COPY;case COPY:copy=state.length;if(copy){if(copy>have){copy=have}if(copy>left){copy=left}if(copy===0){break inf_leave}utils.arraySet(output,input,next,copy,put);have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy;break}state.mode=TYPE;break;case TABLE:while(bits<14){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=5;bits-=5;state.ndist=(hold&31)+1;hold>>>=5;bits-=5;state.ncode=(hold&15)+4;hold>>>=4;bits-=4;if(state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols";state.mode=BAD;break}state.have=0;state.mode=LENLENS;case LENLENS:while(state.have>>=3;bits-=3}while(state.have<19){state.lens[order[state.have++]]=0}state.lencode=state.lendyn;state.lenbits=7;opts={bits:state.lenbits};ret=inflate_table(CODES,state.lens,0,19,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid code lengths set";state.mode=BAD;break}state.have=0;state.mode=CODELENS;case CODELENS:while(state.have>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=here_bits;bits-=here_bits;state.lens[state.have++]=here_val}else{if(here_val===16){n=here_bits+2;while(bits>>=here_bits;bits-=here_bits;if(state.have===0){strm.msg="invalid bit length repeat";state.mode=BAD;break}len=state.lens[state.have-1];copy=3+(hold&3);hold>>>=2;bits-=2}else if(here_val===17){n=here_bits+3;while(bits>>=here_bits;bits-=here_bits;len=0;copy=3+(hold&7);hold>>>=3;bits-=3}else{n=here_bits+7;while(bits>>=here_bits;bits-=here_bits;len=0;copy=11+(hold&127);hold>>>=7;bits-=7}if(state.have+copy>state.nlen+state.ndist){strm.msg="invalid bit length repeat";state.mode=BAD;break}while(copy--){state.lens[state.have++]=len}}}if(state.mode===BAD){break}if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block";state.mode=BAD;break}state.lenbits=9;opts={bits:state.lenbits};ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid literal/lengths set";state.mode=BAD;break}state.distbits=6;state.distcode=state.distdyn;opts={bits:state.distbits};ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts);state.distbits=opts.bits;if(ret){strm.msg="invalid distances set";state.mode=BAD;break}state.mode=LEN_;if(flush===Z_TREES){break inf_leave}case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){strm.next_out=put;strm.avail_out=left;strm.next_in=next;strm.avail_in=have;state.hold=hold;state.bits=bits;inflate_fast(strm,_out);put=strm.next_out;output=strm.output;left=strm.avail_out;next=strm.next_in;input=strm.input;have=strm.avail_in;hold=state.hold;bits=state.bits;if(state.mode===TYPE){state.back=-1}break}state.back=0;for(;;){here=state.lencode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;state.length=here_val;if(here_op===0){state.mode=LIT;break}if(here_op&32){state.back=-1;state.mode=TYPE;break}if(here_op&64){strm.msg="invalid literal/length code";state.mode=BAD;break}state.extra=here_op&15;state.mode=LENEXT;case LENEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}state.was=state.length;state.mode=DIST;case DIST:for(;;){here=state.distcode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;if(here_op&64){strm.msg="invalid distance code";state.mode=BAD;break}state.offset=here_val;state.extra=here_op&15;state.mode=DISTEXT;case DISTEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back";state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0){break inf_leave}copy=_out-left;if(state.offset>copy){copy=state.offset-copy;if(copy>state.whave){if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break}}if(copy>state.wnext){copy-=state.wnext;from=state.wsize-copy}else{from=state.wnext-copy}if(copy>state.length){copy=state.length}from_source=state.window}else{from_source=output;from=put-state.offset;copy=state.length}if(copy>left){copy=left}left-=copy;state.length-=copy;do{output[put++]=from_source[from++]}while(--copy);if(state.length===0){state.mode=LEN}break;case LIT:if(left===0){break inf_leave}output[put++]=state.length;left--;state.mode=LEN;break;case CHECK:if(state.wrap){while(bits<32){if(have===0){break inf_leave}have--;hold|=input[next++]<=1;max--){if(count[max]!==0){break}}if(root>max){root=max}if(max===0){table[table_index++]=1<<24|64<<16|0;table[table_index++]=1<<24|64<<16|0;opts.bits=1;return 0}for(min=1;min0&&(type===CODES||max!==1)){return-1}offs[1]=0;for(len=1;lenENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}var i=0;for(;;){i++;here_bits=len-drop;if(work[sym]end){here_op=extra[extra_index+work[sym]];here_val=base[base_index+work[sym]]}else{here_op=32+64;here_val=0}incr=1<>drop)+fill]=here_bits<<24|here_op<<16|here_val|0}while(fill!==0);incr=1<>=1}if(incr!==0){huff&=incr-1;huff+=incr}else{huff=0}sym++;if(--count[len]===0){if(len===max){break}len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){if(drop===0){drop=root}next+=min;curr=len-drop;left=1<ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}low=huff&mask;table[low]=root<<24|curr<<16|next-table_index|0}}if(huff!==0){table[next+huff]=len-drop<<24|64<<16|0}opts.bits=root;return 0}},{"../utils/common":54}],64:[function(require,module,exports){"use strict";module.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"}},{}],65:[function(require,module,exports){"use strict";var utils=require("../utils/common");var Z_FIXED=4;var Z_BINARY=0;var Z_TEXT=1;var Z_UNKNOWN=2;function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;var MIN_MATCH=3;var MAX_MATCH=258;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var Buf_size=16;var MAX_BL_BITS=7;var END_BLOCK=256;var REP_3_6=16;var REPZ_3_10=17;var REPZ_11_138=18;var extra_lbits=[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];var extra_dbits=[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];var extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var DIST_CODE_LEN=512;var static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES);zero(base_dist);function StaticTreeDesc(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;this.extra_bits=extra_bits;this.extra_base=extra_base;this.elems=elems;this.max_length=max_length;this.has_stree=static_tree&&static_tree.length}var static_l_desc;var static_d_desc;var static_bl_desc;function TreeDesc(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;this.max_code=0;this.stat_desc=stat_desc}function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+(dist>>>7)]; -}function put_short(s,w){s.pending_buf[s.pending++]=w&255;s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<>Buf_size-s.bi_valid;s.bi_valid+=length-Buf_size}else{s.bi_buf|=value<>>=1;res<<=1}while(--len>0);return res>>>1}function bi_flush(s){if(s.bi_valid===16){put_short(s,s.bi_buf);s.bi_buf=0;s.bi_valid=0}else if(s.bi_valid>=8){s.pending_buf[s.pending++]=s.bi_buf&255;s.bi_buf>>=8;s.bi_valid-=8}}function gen_bitlen(s,desc){var tree=desc.dyn_tree;var max_code=desc.max_code;var stree=desc.stat_desc.static_tree;var has_stree=desc.stat_desc.has_stree;var extra=desc.stat_desc.extra_bits;var base=desc.stat_desc.extra_base;var max_length=desc.stat_desc.max_length;var h;var n,m;var bits;var xbits;var f;var overflow=0;for(bits=0;bits<=MAX_BITS;bits++){s.bl_count[bits]=0}tree[s.heap[s.heap_max]*2+1]=0;for(h=s.heap_max+1;hmax_length){bits=max_length;overflow++}tree[n*2+1]=bits;if(n>max_code){continue}s.bl_count[bits]++;xbits=0;if(n>=base){xbits=extra[n-base]}f=tree[n*2];s.opt_len+=f*(bits+xbits);if(has_stree){s.static_len+=f*(stree[n*2+1]+xbits)}}if(overflow===0){return}do{bits=max_length-1;while(s.bl_count[bits]===0){bits--}s.bl_count[bits]--;s.bl_count[bits+1]+=2;s.bl_count[max_length]--;overflow-=2}while(overflow>0);for(bits=max_length;bits!==0;bits--){n=s.bl_count[bits];while(n!==0){m=s.heap[--h];if(m>max_code){continue}if(tree[m*2+1]!==bits){s.opt_len+=(bits-tree[m*2+1])*tree[m*2];tree[m*2+1]=bits}n--}}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1);var code=0;var bits;var n;for(bits=1;bits<=MAX_BITS;bits++){next_code[bits]=code=code+bl_count[bits-1]<<1}for(n=0;n<=max_code;n++){var len=tree[n*2+1];if(len===0){continue}tree[n*2]=bi_reverse(next_code[len]++,len)}}function tr_static_init(){var n;var bits;var length;var code;var dist;var bl_count=new Array(MAX_BITS+1);length=0;for(code=0;code>=7;for(;code8){put_short(s,s.bi_buf)}else if(s.bi_valid>0){s.pending_buf[s.pending++]=s.bi_buf}s.bi_buf=0;s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s);if(header){put_short(s,len);put_short(s,~len)}utils.arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]>1;n>=1;n--){pqdownheap(s,tree,n)}node=elems;do{n=s.heap[1];s.heap[1]=s.heap[s.heap_len--];pqdownheap(s,tree,1);m=s.heap[1];s.heap[--s.heap_max]=n;s.heap[--s.heap_max]=m;tree[node*2]=tree[n*2]+tree[m*2];s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]=tree[m*2+1]=node;s.heap[1]=node++;pqdownheap(s,tree,1)}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1];gen_bitlen(s,desc);gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}tree[(max_code+1)*2+1]=65535;for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];if(++count=3;max_blindex--){if(s.bl_tree[bl_order[max_blindex]*2+1]!==0){break}}s.opt_len+=3*(max_blindex+1)+5+5+4;return max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;send_bits(s,lcodes-257,5);send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);for(rank=0;rank>>=1){if(black_mask&1&&s.dyn_ltree[n*2]!==0){return Z_BINARY}}if(s.dyn_ltree[9*2]!==0||s.dyn_ltree[10*2]!==0||s.dyn_ltree[13*2]!==0){return Z_TEXT}for(n=32;n0){if(s.strm.data_type===Z_UNKNOWN){s.strm.data_type=detect_data_type(s)}build_tree(s,s.l_desc);build_tree(s,s.d_desc);max_blindex=build_bl_tree(s);opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;if(static_lenb<=opt_lenb){opt_lenb=static_lenb}}else{opt_lenb=static_lenb=stored_len+5}if(stored_len+4<=opt_lenb&&buf!==-1){_tr_stored_block(s,buf,stored_len,last)}else if(s.strategy===Z_FIXED||static_lenb===opt_lenb){send_bits(s,(STATIC_TREES<<1)+(last?1:0),3);compress_block(s,static_ltree,static_dtree)}else{send_bits(s,(DYN_TREES<<1)+(last?1:0),3);send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1);compress_block(s,s.dyn_ltree,s.dyn_dtree)}init_block(s);if(last){bi_windup(s)}}function _tr_tally(s,dist,lc){s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255;s.pending_buf[s.l_buf+s.last_lit]=lc&255;s.last_lit++;if(dist===0){s.dyn_ltree[lc*2]++}else{s.matches++;dist--;s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++;s.dyn_dtree[d_code(dist)*2]++}return s.last_lit===s.lit_bufsize-1}exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_flush_block=_tr_flush_block;exports._tr_tally=_tr_tally;exports._tr_align=_tr_align},{"../utils/common":54}],66:[function(require,module,exports){arguments[4][15][0].apply(exports,arguments)},{dup:15}],67:[function(require,module,exports){(function(process){"use strict";if(!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){module.exports=nextTick}else{module.exports=process.nextTick}function nextTick(fn,arg1,arg2,arg3){if(typeof fn!=="function"){throw new TypeError('"callback" argument must be a function')}var len=arguments.length;var args,i;switch(len){case 0:case 1:return process.nextTick(fn);case 2:return process.nextTick(function afterTickOne(){fn.call(null,arg1)});case 3:return process.nextTick(function afterTickTwo(){fn.call(null,arg1,arg2)});case 4:return process.nextTick(function afterTickThree(){fn.call(null,arg1,arg2,arg3)});default:args=new Array(len-1);i=0;while(i1){for(var i=1;i0){if(state.ended&&!addToFront){var e=new Error("stream.push() after EOF");stream.emit("error",e)}else if(state.endEmitted&&addToFront){var _e=new Error("stream.unshift() after end event");stream.emit("error",_e)}else{var skipAdd;if(state.decoder&&!addToFront&&!encoding){chunk=state.decoder.write(chunk);skipAdd=!state.objectMode&&chunk.length===0}if(!addToFront)state.reading=false;if(!skipAdd){if(state.flowing&&state.length===0&&!state.sync){stream.emit("data",chunk);stream.read(0)}else{state.length+=state.objectMode?1:chunk.length;if(addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if(state.needReadable)emitReadable(stream)}}maybeReadMore(stream,state)}}else if(!addToFront){state.reading=false}return needMoreData(state)}function needMoreData(state){return!state.ended&&(state.needReadable||state.length=MAX_HWM){n=MAX_HWM}else{n--;n|=n>>>1;n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;n++}return n}function howMuchToRead(n,state){if(state.length===0&&state.ended)return 0;if(state.objectMode)return n===0?0:1;if(n===null||isNaN(n)){if(state.flowing&&state.buffer.length)return state.buffer[0].length;else return state.length}if(n<=0)return 0;if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n>state.length){if(!state.ended){state.needReadable=true;return 0}else{return state.length}}return n}Readable.prototype.read=function(n){debug("read",n);var state=this._readableState;var nOrig=n;if(typeof n!=="number"||n>0)state.emittedReadable=false;if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){debug("read: emitReadable",state.length,state.ended);if(state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null}n=howMuchToRead(n,state);if(n===0&&state.ended){if(state.length===0)endReadable(this);return null}var doRead=state.needReadable;debug("need readable",doRead);if(state.length===0||state.length-n0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0}state.length-=n;if(state.length===0&&!state.ended)state.needReadable=true;if(nOrig!==n&&state.ended&&state.length===0)endReadable(this);if(ret!==null)this.emit("data",ret);return ret};function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}return er}function onEofChunk(stream,state){if(state.ended)return;if(state.decoder){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length}}state.ended=true;emitReadable(stream)}function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(!state.emittedReadable){debug("emitReadable",state.flowing);state.emittedReadable=true;if(state.sync)processNextTick(emitReadable_,stream);else emitReadable_(stream)}}function emitReadable_(stream){debug("emit readable");stream.emit("readable");flow(stream)}function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;processNextTick(maybeReadMore_,stream,state)}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length1&&indexOf(state.pipes,dest)!==-1)&&!cleanedUp){debug("false write response, pause",src._readableState.awaitDrain);src._readableState.awaitDrain++}src.pause()}}function onerror(er){debug("onerror",er);unpipe();dest.removeListener("error",onerror);if(EElistenerCount(dest,"error")===0)dest.emit("error",er)}prependListener(dest,"error",onerror);function onclose(){dest.removeListener("finish",onfinish);unpipe()}dest.once("close",onclose);function onfinish(){debug("onfinish");dest.removeListener("close",onclose);unpipe()}dest.once("finish",onfinish);function unpipe(){debug("unpipe");src.unpipe(dest)}dest.emit("pipe",src);if(!state.flowing){debug("pipe resume");src.resume()}return dest};function pipeOnDrain(src){return function(){var state=src._readableState;debug("pipeOnDrain",state.awaitDrain);if(state.awaitDrain)state.awaitDrain--;if(state.awaitDrain===0&&EElistenerCount(src,"data")){state.flowing=true;flow(src)}}}Readable.prototype.unpipe=function(dest){var state=this._readableState;if(state.pipesCount===0)return this;if(state.pipesCount===1){if(dest&&dest!==state.pipes)return this;if(!dest)dest=state.pipes;state.pipes=null;state.pipesCount=0;state.flowing=false;if(dest)dest.emit("unpipe",this);return this}if(!dest){var dests=state.pipes;var len=state.pipesCount;state.pipes=null;state.pipesCount=0;state.flowing=false;for(var _i=0;_i=length){if(stringMode)ret=list.join("");else if(list.length===1)ret=list[0];else ret=Buffer.concat(list,length);list.length=0}else{if(n0)throw new Error('"endReadable()" called on non-empty stream');if(!state.endEmitted){state.ended=true;processNextTick(endReadableNT,state,stream)}}function endReadableNT(state,stream){if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit("end")}}function forEach(xs,f){for(var i=0,l=xs.length;i-1?setImmediate:processNextTick;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var internalUtil={deprecate:require("util-deprecate")};var Stream;(function(){try{Stream=require("st"+"ream")}catch(_){}finally{if(!Stream)Stream=require("events").EventEmitter}})();var Buffer=require("buffer").Buffer;var bufferShim=require("buffer-shims");util.inherits(Writable,Stream);function nop(){}function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=encoding;this.callback=cb;this.next=null}var Duplex;function WritableState(options,stream){Duplex=Duplex||require("./_stream_duplex");options=options||{};this.objectMode=!!options.objectMode;if(stream instanceof Duplex)this.objectMode=this.objectMode||!!options.writableObjectMode;var hwm=options.highWaterMark;var defaultHwm=this.objectMode?16:16*1024;this.highWaterMark=hwm||hwm===0?hwm:defaultHwm;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var noDecode=options.decodeStrings===false; -this.decodeStrings=!noDecode;this.defaultEncoding=options.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(er){onwrite(stream,er)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function writableStateGetBuffer(){var current=this.bufferedRequest;var out=[];while(current){out.push(current);current=current.next}return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.")})}catch(_){}})();var Duplex;function Writable(options){Duplex=Duplex||require("./_stream_duplex");if(!(this instanceof Writable)&&!(this instanceof Duplex))return new Writable(options);this._writableState=new WritableState(options,this);this.writable=true;if(options){if(typeof options.write==="function")this._write=options.write;if(typeof options.writev==="function")this._writev=options.writev}Stream.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(stream,cb){var er=new Error("write after end");stream.emit("error",er);processNextTick(cb,er)}function validChunk(stream,state,chunk,cb){var valid=true;var er=false;if(chunk===null){er=new TypeError("May not write null values to stream")}else if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}if(er){stream.emit("error",er);processNextTick(cb,er);valid=false}return valid}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState;var ret=false;if(typeof encoding==="function"){cb=encoding;encoding=null}if(Buffer.isBuffer(chunk))encoding="buffer";else if(!encoding)encoding=state.defaultEncoding;if(typeof cb!=="function")cb=nop;if(state.ended)writeAfterEnd(this,cb);else if(validChunk(this,state,chunk,cb)){state.pendingcb++;ret=writeOrBuffer(this,state,chunk,encoding,cb)}return ret};Writable.prototype.cork=function(){var state=this._writableState;state.corked++};Writable.prototype.uncork=function(){var state=this._writableState;if(state.corked){state.corked--;if(!state.writing&&!state.corked&&!state.finished&&!state.bufferProcessing&&state.bufferedRequest)clearBuffer(this,state)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(encoding){if(typeof encoding==="string")encoding=encoding.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((encoding+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+encoding);this._writableState.defaultEncoding=encoding;return this};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==="string"){chunk=bufferShim.from(chunk,encoding)}return chunk}function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);if(Buffer.isBuffer(chunk))encoding="buffer";var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;buffer.copy(this.charBuffer,this.charReceived,0,available);this.charReceived+=available;if(this.charReceived=55296&&charCode<=56319){this.charLength+=this.surrogateSize;charStr="";continue}this.charReceived=this.charLength=0;if(buffer.length===0){return charStr}break}this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){buffer.copy(this.charBuffer,0,buffer.length-this.charReceived,end);end-=this.charReceived}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);if(charCode>=55296&&charCode<=56319){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);buffer.copy(this.charBuffer,0,0,size);return charStr.substring(0,end)}return charStr};StringDecoder.prototype.detectIncompleteChar=function(buffer){var i=buffer.length>=3?3:buffer.length;for(;i>0;i--){var c=buffer[buffer.length-i];if(i==1&&c>>5==6){this.charLength=2;break}if(i<=2&&c>>4==14){this.charLength=3;break}if(i<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=i};StringDecoder.prototype.end=function(buffer){var res="";if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc)}return res};function passThroughWrite(buffer){return buffer.toString(this.encoding)}function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.length%2;this.charLength=this.charReceived?2:0}function base64DetectIncompleteChar(buffer){this.charReceived=buffer.length%3;this.charLength=this.charReceived?3:0}},{buffer:19}],75:[function(require,module,exports){(function(global){module.exports=deprecate;function deprecate(fn,msg){if(config("noDeprecation")){return fn}var warned=false;function deprecated(){if(!warned){if(config("throwDeprecation")){throw new Error(msg)}else if(config("traceDeprecation")){console.trace(msg)}else{console.warn(msg)}warned=true}return fn.apply(this,arguments)}return deprecated}function config(name){try{if(!global.localStorage)return false}catch(_){return false}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==="true"}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],76:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],77:[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":76,_process:68,inherits:27}],78:[function(require,module,exports){"use strict";var isString=require("validate.io-string-primitive");var isNonNegativeInteger=require("validate.io-nonnegative-integer");var ceil=require("math-ceil");var repeat=require("utils-repeat-string");var MAX_SAFE_INTEGER=9007199254740991;function lpad(str,len,pad){var n;var p;if(!isString(str)){throw new TypeError("invalid input argument. First argument must be a string. Value: `"+str+"`.")}if(!isNonNegativeInteger(len)){throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+len+"`.")}if(arguments.length>2){p=pad;if(!isString(p)){throw new TypeError("invalid input argument. Third argument must be a string. Value: `"+p+"`.")}if(p.length===0){throw new RangeError("invalid input argument. Pad string must not be an empty string.")}}else{p=" "}if(len>MAX_SAFE_INTEGER){throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.")}n=(len-str.length)/p.length;if(n<=0){return str}n=ceil(n);return repeat(p,n)+str}module.exports=lpad},{"math-ceil":41,"utils-repeat-string":79,"validate.io-nonnegative-integer":82,"validate.io-string-primitive":84}],79:[function(require,module,exports){"use strict";var isString=require("validate.io-string-primitive");var isNonNegativeInteger=require("validate.io-nonnegative-integer");var MAX_SAFE_INTEGER=9007199254740991;function repeat(str,n){var rpt;var cnt;if(!isString(str)){throw new TypeError("invalid input argument. First argument must be a string. Value: `"+str+"`.")}if(!isNonNegativeInteger(n)){throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+n+"`.")}if(str.length===0||n===0){return""}if(str.length*n>MAX_SAFE_INTEGER){throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.")}rpt="";cnt=n;for(;;){if((cnt&1)===1){rpt+=str}cnt>>>=1;if(cnt===0){break}str+=str}return rpt}module.exports=repeat},{"validate.io-nonnegative-integer":82,"validate.io-string-primitive":84}],80:[function(require,module,exports){"use strict";var isString=require("validate.io-string-primitive");var isNonNegativeInteger=require("validate.io-nonnegative-integer");var ceil=require("math-ceil");var repeat=require("utils-repeat-string");var MAX_SAFE_INTEGER=9007199254740991;function rpad(str,len,pad){var n;var p;if(!isString(str)){throw new TypeError("invalid input argument. First argument must be a string. Value: `"+str+"`.")}if(!isNonNegativeInteger(len)){throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+len+"`.")}if(arguments.length>2){p=pad;if(!isString(p)){throw new TypeError("invalid input argument. Third argument must be a string. Value: `"+p+"`.")}if(p.length===0){throw new RangeError("invalid input argument. Pad string must not be an empty string.")}}else{p=" "}if(len>MAX_SAFE_INTEGER){throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.")}n=(len-str.length)/p.length;if(n<=0){return str}n=ceil(n);return str+repeat(p,n)}module.exports=rpad},{"math-ceil":41,"utils-repeat-string":79,"validate.io-nonnegative-integer":82,"validate.io-string-primitive":84}],81:[function(require,module,exports){"use strict";var isNumber=require("validate.io-number");function isInteger(value){return isNumber(value)&&value%1===0}module.exports=isInteger},{"validate.io-number":83}],82:[function(require,module,exports){"use strict";var isInteger=require("validate.io-integer");function isNonNegativeInteger(value){return isInteger(value)&&value>=0}module.exports=isNonNegativeInteger},{"validate.io-integer":81}],83:[function(require,module,exports){"use strict";function isNumber(value){return(typeof value==="number"||Object.prototype.toString.call(value)==="[object Number]")&&value.valueOf()===value.valueOf()}module.exports=isNumber},{}],84:[function(require,module,exports){"use strict";function isString(value){return typeof value==="string"}module.exports=isString},{}],85:[function(require,module,exports){module.exports={name:"ami.js",version:"v0.0.12",main:"src/ami.js",keywords:["ami","ami.js","three.js","webgl","dicom","nifti","awesome","medical","imaging","xtk","nrrd","vtk","stl","trk"],author:{name:"Nicolas Rannou",email:"nicolas@eunate.ch",url:"https://eunate.ch"},license:"Apache-2.0",repository:{type:"git",url:"https://fnndsc.github.io/ami"},config:{threeVersion:"r81",amiCDN:"https://cdnjs.cloudflare.com/ajax/libs/ami.js/",gaKey:"UA-39303022-3",transforms:"-t [babelify --presets [ es2015 ] ]"},dependencies:{"dicom-parser":"1.7.3","image-JPEG2000":"OHIF/image-JPEG2000#master","jpeg-lossless-decoder-js":"1.2.3","math-float32-to-binary-string":"^1.0.0","nrrd-js":"^0.2.1","nifti-reader-js":"v0.5.3",pako:"1.0.1"},scripts:{"dist:prepare":"node ./scripts/$npm_package_config_mode.js --dist","dist:watchAmi":"watchify -d src/ami $npm_package_config_transforms --standalone AMI -o dist/build/ami.js -v","dist:watch":"watchify $npm_package_config_target -d $npm_package_config_transforms -o dist/$npm_package_config_target -v",dist:"npm run dist:prepare --ami.js:mode=$npm_package_config_mode && (live-server dist --open=$npm_package_config_open & npm run dist:watch --ami.js:target=$npm_package_config_target)",example:"npm run clean && node ./scripts/router.js examples ",lesson:"npm run clean && mkdir dist/build && touch dist/build/ami.js && node ./scripts/router.js lessons ",demo:"node ./scripts/lessons.js --demo",lint:"eslint **/*.js --quiet","build:examples":"npm run dist:prepare --ami.js:mode=examples && find examples -name '*.js' -print0 | xargs -0 -n1 -I{} bash -c \"echo Building {}; browserify {} -d -v $npm_package_config_transforms > dist/{} \"","build:ami":"browserify src/ami.js -d -v $npm_package_config_transforms --standalone AMI > build/ami.js && uglifyjs build/ami.js -o build/ami.min.js",build:"npm run clean && cp index.html dist/index.html && npm run build:examples && npm run doc",clean:"rm -rf dist/*",test:"karma start",doc:"jsdoc -p -r -R README.md -c jsdoc.conf -d dist/doc src",ami:"npm run lint && npm run demo && npm run build:ami && npm run test",deploy:"npm run build && gh-pages -d dist"},devDependencies:{browserify:"^13.1.0","uglify-js":"^2.7.3","live-server":"^1.1.0","babel-cli":"latest",shelljs:"latest","gh-pages":"latest",eslint:"latest","babel-polyfill":"^6.13.0","babel-preset-es2015":"^6.13.2",babelify:"7.3.0",glslify:"5.1.0",jsdoc:"jsdoc3/jsdoc#master",karma:"latest",phantomjs:"latest","karma-browserify":"latest","karma-jasmine":"latest","karma-phantomjs-launcher":"latest","karma-spec-reporter":"latest","jasmine-core":"latest",watchify:"3.7.0"},engines:{node:">=6.9.0"},browserify:{transform:["babelify"]}}},{}],86:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _cameras=require("./cameras/cameras");var _cameras2=_interopRequireDefault(_cameras);var _controls=require("./controls/controls");var _controls2=_interopRequireDefault(_controls);var _core=require("./core/core");var _core2=_interopRequireDefault(_core);var _geometries=require("./geometries/geometries");var _geometries2=_interopRequireDefault(_geometries);var _helpers=require("./helpers/helpers");var _helpers2=_interopRequireDefault(_helpers);var _loaders=require("./loaders/loaders");var _loaders2=_interopRequireDefault(_loaders);var _models=require("./models/models");var _models2=_interopRequireDefault(_models);var _parsers=require("./parsers/parsers");var _parsers2=_interopRequireDefault(_parsers);var _shaders=require("./shaders/shaders");var _shaders2=_interopRequireDefault(_shaders);var _widgets=require("./widgets/widgets");var _widgets2=_interopRequireDefault(_widgets);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var pckg=require("../package.json");exports.default={Cameras:_cameras2.default,Controls:_controls2.default,Core:_core2.default,Geometries:_geometries2.default,Helpers:_helpers2.default,Loaders:_loaders2.default,Models:_models2.default,Parsers:_parsers2.default,Shaders:_shaders2.default,Widgets:_widgets2.default};window.console.log("AMI "+pckg.version+" ( ThreeJS "+pckg.config.threeVersion+")")},{"../package.json":85,"./cameras/cameras":87,"./controls/controls":89,"./core/core":94,"./geometries/geometries":98,"./helpers/helpers":103,"./loaders/loaders":112,"./models/models":116,"./parsers/parsers":121,"./shaders/shaders":135,"./widgets/widgets":144}],87:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _cameras=require("./cameras.orthographic");var _cameras2=_interopRequireDefault(_cameras);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Orthographic:_cameras2.default}},{"./cameras.orthographic":88}],88:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0){posteriorDirection.negate()}if(superiorDirection.z<0){superiorDirection.negate()}this._right=leftDirection;this._up=posteriorDirection;this._direction=superiorDirection;break;case"coronal":if(superiorDirection.z<0){superiorDirection.negate()}if(posteriorDirection.y<0){posteriorDirection.negate()}this._right=leftDirection;this._up=superiorDirection;this._direction=posteriorDirection;break;case"sagittal":if(superiorDirection.z<0){superiorDirection.negate()}if(leftDirection.x>0){leftDirection.negate()}this._right=posteriorDirection;this._up=superiorDirection;this._direction=leftDirection;break;default:console.warn('"'+this._orientation+'" orientation is not valid. (choices: axial, coronal, sagittal)');break}}else if(this._convention==="neuro"){switch(this._orientation){case"axial":if(posteriorDirection.y>0){posteriorDirection.negate()}if(superiorDirection.z>0){superiorDirection.negate()}this._right=leftDirection;this._up=posteriorDirection;this._direction=superiorDirection;break;case"coronal":if(superiorDirection.z<0){superiorDirection.negate()}if(posteriorDirection.y>0){posteriorDirection.negate()}this._right=leftDirection;this._up=superiorDirection;this._direction=posteriorDirection;break;case"sagittal":if(superiorDirection.z<0){superiorDirection.negate()}if(leftDirection.x>0){leftDirection.negate()}this._right=posteriorDirection;this._up=superiorDirection;this._direction=leftDirection;break;default:console.warn('"'+this._orientation+'" orientation is not valid. (choices: axial, coronal, sagittal)');break}}else{console.warn(this._convention+" is not valid (choices: radio, neuro)")}}var ray={position:this._box.center,direction:this._direction};var intersections=this._orderIntersections(_core2.default.rayBox(ray,this._box),this._direction);this._front=intersections[0];this._back=intersections[1];this.up.set(this._up.x,this._up.y,this._up.z);this._updateCanvas();this._updatePositionAndTarget(this._front,this._back);this._updateMatrices()}},{key:"leftDirection",value:function leftDirection(){return this._findMaxIndex(this._directions,0)}},{key:"posteriorDirection",value:function posteriorDirection(){return this._findMaxIndex(this._directions,1)}},{key:"superiorDirection",value:function superiorDirection(){return this._findMaxIndex(this._directions,2)}},{key:"invertRows",value:function invertRows(){console.log("invert rows ");this.up.multiplyScalar(-1);this.invertColumns()}},{key:"invertColumns",value:function invertColumns(){console.log("invert columns ");this.center();var oppositePosition=this._oppositePosition(this.position);this._updatePositionAndTarget(oppositePosition,this.position.clone());this._updateMatrices();this._fromFront=!this._fromFront;var clockwise=1;if(!this._fromFront){clockwise=-1}this._angle%=360;this._angle=360-this._angle}},{key:"center",value:function center(){if(this._fromFront){this._updatePositionAndTarget(this._front,this._back)}else{this._updatePositionAndTarget(this._back,this._front)}this._updateMatrices()}},{key:"rotate",value:function rotate(){var angle=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;this.center();var computedAngle=90;var clockwise=1;if(!this._fromFront){clockwise=-1}if(angle===null){computedAngle*=-clockwise;this._angle+=90}else{computedAngle=360-clockwise*(angle-this._angle);this._angle=angle}this._angle%=360;var rotation=(new THREE.Matrix4).makeRotationAxis(this._direction,computedAngle*Math.PI/180);this.up.applyMatrix4(rotation);this._updateMatrices()}},{key:"fitBox",value:function fitBox(){var direction=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var factor=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1.5;var zoom=1;switch(direction){case 0:zoom=factor*this._computeZoom(this._canvas.width,this._right);break;case 1:zoom=factor*this._computeZoom(this._canvas.height,this._up);break;case 2:zoom=factor*Math.min(this._computeZoom(this._canvas.width,this._right),this._computeZoom(this._canvas.height,this._up));break;default:break}if(!zoom){return false}this.zoom=zoom;this.center()}},{key:"_adjustTopDirection",value:function _adjustTopDirection(horizontalDirection,verticalDirection){var hMaxIndex=this._getMaxIndex(horizontalDirection);var vMaxIndex=this._getMaxIndex(verticalDirection);if(vMaxIndex===2&&verticalDirection.getComponent(vMaxIndex)<0||vMaxIndex===1&&verticalDirection.getComponent(vMaxIndex)>0||vMaxIndex===0&&verticalDirection.getComponent(vMaxIndex)>0){verticalDirection.negate()}return verticalDirection}},{key:"_getMaxIndex",value:function _getMaxIndex(vector){if(Math.abs(Math.round(vector.x))===1){return 0}else if(Math.abs(Math.round(vector.y))===1){return 1}else if(Math.abs(Math.round(vector.z))===1){return 2}}},{key:"_findMaxIndex",value:function _findMaxIndex(directions,target){var maxIndices=this._getMaxIndices(directions);for(var i=0;i0)){window.console.log("Invalid dimension provided.");window.console.log(dimension);return false}var ray={position:this._box.center.clone(),direction:direction};var intersections=_core2.default.rayBox(ray,this._box);if(intersections.length<2){window.console.log("Can not adjust the camera ( < 2 intersections).");window.console.log(ray);window.console.log(this._box);return false}return dimension/intersections[0].distanceTo(intersections[1])}},{key:"_updatePositionAndTarget",value:function _updatePositionAndTarget(position,target){this.position.set(position.x,position.y,position.z);this.lookAt(target.x,target.y,target.z);this._controls.target.set(target.x,target.y,target.z)}},{key:"_updateMatrices",value:function _updateMatrices(){this._controls.update();this.updateProjectionMatrix();this.updateMatrixWorld()}},{key:"controls",set:function set(controls){this._controls=controls},get:function get(){return this._controls}},{key:"box",set:function set(box){this._box=box},get:function get(){return this._box}},{key:"canvas",set:function set(canvas){this._canvas=canvas;this._updateCanvas()},get:function get(){return this._canvas}},{key:"angle",set:function set(angle){this.rotate(angle)},get:function get(){return this._angle}},{key:"directions",set:function set(directions){this._directions=directions},get:function get(){return this._directions}},{key:"convention",set:function set(convention){this._convention=convention},get:function get(){return this._convention}},{key:"orientation",set:function set(orientation){this._orientation=orientation},get:function get(){return this._orientation}},{key:"stackOrientation",set:function set(stackOrientation){this._stackOrientation=stackOrientation;if(this._stackOrientation===0){this._orientation="default"}else{var maxIndex=this._getMaxIndex(this._directions[(this._stackOrientation+2)%3]);if(maxIndex===0){this._orientation="sagittal"}else if(maxIndex===1){this._orientation="coronal"}else if(maxIndex===2){this._orientation="axial"}}},get:function get(){if(this._orientation==="default"){this._stackOrientation=0}else{var maxIndex=this._getMaxIndex(this._direction);if(maxIndex===this._getMaxIndex(this._directions[2])){this._stackOrientation=0}else if(maxIndex===this._getMaxIndex(this._directions[0])){this._stackOrientation=1}else if(maxIndex===this._getMaxIndex(this._directions[1])){this._stackOrientation=2}}return this._stackOrientation}}]);return CamerasOrthographic}(THREE.OrthographicCamera);exports.default=CamerasOrthographic},{"../core/core.intersections":93,"../core/core.validators":97}],89:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _controls=require("./controls.trackball");var _controls2=_interopRequireDefault(_controls);var _controls3=require("./controls.trackballortho");var _controls4=_interopRequireDefault(_controls3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Trackball:_controls2.default,TrackballOrtho:_controls4.default}},{"./controls.trackball":90,"./controls.trackballortho":91}],90:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&((typeof call==="undefined"?"undefined":_typeof(call))==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+(typeof superClass==="undefined"?"undefined":_typeof(superClass)))}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Trackball=function(_THREE$EventDispatche){_inherits(Trackball,_THREE$EventDispatche);function Trackball(object,domElement){_classCallCheck(this,Trackball);var _this2=_possibleConstructorReturn(this,(Trackball.__proto__||Object.getPrototypeOf(Trackball)).call(this));var _this=_this2;var STATE={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,CUSTOM:99};_this2.object=object;_this2.domElement=domElement!==undefined?domElement:document;_this2.enabled=true;_this2.screen={left:0,top:0,width:0,height:0};_this2.rotateSpeed=1;_this2.zoomSpeed=1.2;_this2.panSpeed=.3;_this2.noRotate=false;_this2.noZoom=false;_this2.noPan=false;_this2.noCustom=false;_this2.forceState=-1;_this2.staticMoving=false;_this2.dynamicDampingFactor=.2;_this2.minDistance=0;_this2.maxDistance=Infinity;_this2.keys=[65,83,68];_this2.target=new THREE.Vector3;var EPS=1e-6;var lastPosition=new THREE.Vector3;var _state=STATE.NONE,_prevState=STATE.NONE,_eye=new THREE.Vector3,_movePrev=new THREE.Vector2,_moveCurr=new THREE.Vector2,_lastAxis=new THREE.Vector3,_lastAngle=0,_zoomStart=new THREE.Vector2,_zoomEnd=new THREE.Vector2,_touchZoomDistanceStart=0,_touchZoomDistanceEnd=0,_panStart=new THREE.Vector2,_panEnd=new THREE.Vector2,_customStart=new THREE.Vector2,_customEnd=new THREE.Vector2;_this2.target0=_this2.target.clone();_this2.position0=_this2.object.position.clone();_this2.up0=_this2.object.up.clone();var changeEvent={type:"change"};var startEvent={type:"start"};var endEvent={type:"end"};_this2.handleResize=function(){if(this.domElement===document){this.screen.left=0;this.screen.top=0;this.screen.width=window.innerWidth;this.screen.height=window.innerHeight}else{var box=this.domElement.getBoundingClientRect();var d=this.domElement.ownerDocument.documentElement;this.screen.left=box.left+window.pageXOffset-d.clientLeft;this.screen.top=box.top+window.pageYOffset-d.clientTop;this.screen.width=box.width;this.screen.height=box.height}};_this2.handleEvent=function(event){if(typeof this[event.type]=="function"){this[event.type](event)}};var getMouseOnScreen=function(){var vector=new THREE.Vector2;return function(pageX,pageY){vector.set((pageX-_this.screen.left)/_this.screen.width,(pageY-_this.screen.top)/_this.screen.height);return vector}}();var getMouseOnCircle=function(){var vector=new THREE.Vector2;return function(pageX,pageY){vector.set((pageX-_this.screen.width*.5-_this.screen.left)/(_this.screen.width*.5),(_this.screen.height+2*(_this.screen.top-pageY))/_this.screen.width);return vector}}();_this2.rotateCamera=function(){var axis=new THREE.Vector3,quaternion=new THREE.Quaternion,eyeDirection=new THREE.Vector3,objectUpDirection=new THREE.Vector3,objectSidewaysDirection=new THREE.Vector3,moveDirection=new THREE.Vector3,angle;return function(){moveDirection.set(_moveCurr.x-_movePrev.x,_moveCurr.y-_movePrev.y,0);angle=moveDirection.length();if(angle){_eye.copy(_this.object.position).sub(_this.target);eyeDirection.copy(_eye).normalize();objectUpDirection.copy(_this.object.up).normalize();objectSidewaysDirection.crossVectors(objectUpDirection,eyeDirection).normalize();objectUpDirection.setLength(_moveCurr.y-_movePrev.y);objectSidewaysDirection.setLength(_moveCurr.x-_movePrev.x);moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));axis.crossVectors(moveDirection,_eye).normalize();angle*=_this.rotateSpeed;quaternion.setFromAxisAngle(axis,angle);_eye.applyQuaternion(quaternion);_this.object.up.applyQuaternion(quaternion);_lastAxis.copy(axis);_lastAngle=angle}else if(!_this.staticMoving&&_lastAngle){_lastAngle*=Math.sqrt(1-_this.dynamicDampingFactor);_eye.copy(_this.object.position).sub(_this.target);quaternion.setFromAxisAngle(_lastAxis,_lastAngle);_eye.applyQuaternion(quaternion);_this.object.up.applyQuaternion(quaternion)}_movePrev.copy(_moveCurr)}}();_this2.zoomCamera=function(){var factor;if(_state===STATE.TOUCH_ZOOM){factor=_touchZoomDistanceStart/_touchZoomDistanceEnd;_touchZoomDistanceStart=_touchZoomDistanceEnd;_eye.multiplyScalar(factor)}else{factor=1+(_zoomEnd.y-_zoomStart.y)*_this.zoomSpeed;if(factor!==1&&factor>0){_eye.multiplyScalar(factor);if(_this.staticMoving){_zoomStart.copy(_zoomEnd)}else{_zoomStart.y+=(_zoomEnd.y-_zoomStart.y)*this.dynamicDampingFactor}}}};_this2.panCamera=function(){var mouseChange=new THREE.Vector2,objectUp=new THREE.Vector3,pan=new THREE.Vector3;return function(){mouseChange.copy(_panEnd).sub(_panStart);if(mouseChange.lengthSq()){mouseChange.multiplyScalar(_eye.length()*_this.panSpeed);pan.copy(_eye).cross(_this.object.up).setLength(mouseChange.x);pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));_this.object.position.add(pan);_this.target.add(pan);if(_this.staticMoving){_panStart.copy(_panEnd)}else{_panStart.add(mouseChange.subVectors(_panEnd,_panStart).multiplyScalar(_this.dynamicDampingFactor))}}}}();_this2.checkDistances=function(){if(!_this.noZoom||!_this.noPan){if(_eye.lengthSq()>_this.maxDistance*_this.maxDistance){_this.object.position.addVectors(_this.target,_eye.setLength(_this.maxDistance))}if(_eye.lengthSq()<_this.minDistance*_this.minDistance){_this.object.position.addVectors(_this.target,_eye.setLength(_this.minDistance))}}};_this2.update=function(){_eye.subVectors(_this.object.position,_this.target);if(!_this.noRotate){_this.rotateCamera()}if(!_this.noZoom){_this.zoomCamera()}if(!_this.noPan){_this.panCamera()}if(!_this.noCustom){_this.custom(_customStart,_customEnd)}_this.object.position.addVectors(_this.target,_eye);_this.checkDistances();_this.object.lookAt(_this.target);if(lastPosition.distanceToSquared(_this.object.position)>EPS){_this.dispatchEvent(changeEvent);lastPosition.copy(_this.object.position)}};_this2.reset=function(){_state=STATE.NONE;_prevState=STATE.NONE;_this.target.copy(_this.target0);_this.object.position.copy(_this.position0);_this.object.up.copy(_this.up0);_eye.subVectors(_this.object.position,_this.target);_this.object.lookAt(_this.target);_this.dispatchEvent(changeEvent);lastPosition.copy(_this.object.position)};_this2.setState=function(targetState){_this.forceState=targetState;_prevState=targetState;_state=targetState};_this2.custom=function(customStart,customEnd){};function keydown(event){if(_this.enabled===false)return;window.removeEventListener("keydown",keydown);_prevState=_state;if(_state!==STATE.NONE){return}else if(event.keyCode===_this.keys[STATE.ROTATE]&&!_this.noRotate){_state=STATE.ROTATE}else if(event.keyCode===_this.keys[STATE.ZOOM]&&!_this.noZoom){_state=STATE.ZOOM}else if(event.keyCode===_this.keys[STATE.PAN]&&!_this.noPan){_state=STATE.PAN}}function keyup(event){if(_this.enabled===false)return;_state=_prevState;window.addEventListener("keydown",keydown,false)}function mousedown(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.NONE){_state=event.button}if(_state===STATE.ROTATE&&!_this.noRotate){_moveCurr.copy(getMouseOnCircle(event.pageX,event.pageY));_movePrev.copy(_moveCurr)}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomStart.copy(getMouseOnScreen(event.pageX,event.pageY));_zoomEnd.copy(_zoomStart)}else if(_state===STATE.PAN&&!_this.noPan){_panStart.copy(getMouseOnScreen(event.pageX,event.pageY));_panEnd.copy(_panStart)}else if(_state===STATE.CUSTOM&&!_this.noCustom){_customStart.copy(getMouseOnScreen(event.pageX,event.pageY));_customEnd.copy(_panStart)}document.addEventListener("mousemove",mousemove,false);document.addEventListener("mouseup",mouseup,false);_this.dispatchEvent(startEvent)}function mousemove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.ROTATE&&!_this.noRotate){_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.pageX,event.pageY))}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomEnd.copy(getMouseOnScreen(event.pageX,event.pageY))}else if(_state===STATE.PAN&&!_this.noPan){_panEnd.copy(getMouseOnScreen(event.pageX,event.pageY))}else if(_state===STATE.CUSTOM&&!_this.noCustom){_customEnd.copy(getMouseOnScreen(event.pageX,event.pageY))}}function mouseup(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_this.forceState===-1){_state=STATE.NONE}document.removeEventListener("mousemove",mousemove);document.removeEventListener("mouseup",mouseup);_this.dispatchEvent(endEvent)}function mousewheel(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();var delta=0;if(event.wheelDelta){delta=event.wheelDelta/40}else if(event.detail){delta=-event.detail/3}if(_state!==STATE.CUSTOM){_zoomStart.y+=delta*.01}else if(_state===STATE.CUSTOM){_customStart.y+=delta*.01}_this.dispatchEvent(startEvent);_this.dispatchEvent(endEvent)}function touchstart(event){if(_this.enabled===false)return;if(_this.forceState===-1){switch(event.touches.length){case 1:_state=STATE.TOUCH_ROTATE;_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));_movePrev.copy(_moveCurr);break;case 2:_state=STATE.TOUCH_ZOOM;var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=_touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panStart.copy(getMouseOnScreen(x,y));_panEnd.copy(_panStart);break;default:_state=STATE.NONE}}else{switch(_state){case 0:_state=STATE.TOUCH_ROTATE;_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));_movePrev.copy(_moveCurr);break;case 1:case 4:if(event.touches.length>=2){_state=STATE.TOUCH_ZOOM;var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=_touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy)}else{_state=STATE.ZOOM;_zoomStart.copy(getMouseOnScreen(event.touches[0].pageX,event.touches[0].pageY));_zoomEnd.copy(_zoomStart)}break;case 2:case 5:if(event.touches.length>=2){_state=STATE.TOUCH_PAN;var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panStart.copy(getMouseOnScreen(x,y));_panEnd.copy(_panStart)}else{_state=STATE.PAN;_panStart.copy(getMouseOnScreen(event.touches[0].pageX,event.touches[0].pageY));_panEnd.copy(_panStart)}break;case 99:_state=STATE.CUSTOM;var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_customStart.copy(getMouseOnScreen(x,y));_customEnd.copy(_customStart);break;default:_state=STATE.NONE}}_this.dispatchEvent(startEvent)}function touchmove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_this.forceState===-1){switch(event.touches.length){case 1:_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;case 2:var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));break;default:_state=STATE.NONE}}else{switch(_state){case 0:_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;case 1:_zoomEnd.copy(getMouseOnScreen(event.touches[0].pageX,event.touches[0].pageY));break;case 2:_panEnd.copy(getMouseOnScreen(event.touches[0].pageX,event.touches[0].pageY));break;case 4:var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy);break;case 5:var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));break;case 99:var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_customEnd.copy(getMouseOnScreen(x,y));break;default:_state=STATE.NONE}}}function touchend(event){if(_this.enabled===false)return;if(_this.forceState===-1){switch(event.touches.length){case 1:_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;case 2:_touchZoomDistanceStart=_touchZoomDistanceEnd=0;var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));_panStart.copy(_panEnd);break}_state=STATE.NONE}else{switch(_state){case 0:_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;case 1:case 2:break;case 4:_touchZoomDistanceStart=_touchZoomDistanceEnd=0;_state=STATE.ZOOM;break;case 5:if(event.touches.length>=2){var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));_panStart.copy(_panEnd)}_state=STATE.PAN;break;case 99:var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_customEnd.copy(getMouseOnScreen(x,y));_customStart.copy(_customEnd);break;default:_state=STATE.NONE}}_this.dispatchEvent(endEvent)}_this2.domElement.addEventListener("contextmenu",function(event){event.preventDefault()},false);_this2.domElement.addEventListener("mousedown",mousedown,false);_this2.domElement.addEventListener("mousewheel",mousewheel,false);_this2.domElement.addEventListener("DOMMouseScroll",mousewheel,false);_this2.domElement.addEventListener("touchstart",touchstart,false);_this2.domElement.addEventListener("touchend",touchend,false);_this2.domElement.addEventListener("touchmove",touchmove,false);window.addEventListener("keydown",keydown,false);window.addEventListener("keyup",keyup,false);_this2.handleResize();_this2.update();return _this2}return Trackball}(THREE.EventDispatcher);exports.default=Trackball},{}],91:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&((typeof call==="undefined"?"undefined":_typeof(call))==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+(typeof superClass==="undefined"?"undefined":_typeof(superClass)))}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Trackballortho=function(_THREE$EventDispatche){_inherits(Trackballortho,_THREE$EventDispatche);function Trackballortho(object,domElement){var state=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{NONE:-1,ROTATE:1,ZOOM:2,PAN:0,SCROLL:4,TOUCH_ROTATE:4,TOUCH_ZOOM_PAN:5};_classCallCheck(this,Trackballortho);var _this2=_possibleConstructorReturn(this,(Trackballortho.__proto__||Object.getPrototypeOf(Trackballortho)).call(this));var _this=_this2;var STATE=state;_this2.object=object;_this2.domElement=domElement!==undefined?domElement:document;_this2.enabled=true;_this2.screen={left:0,top:0,width:0,height:0};_this2.radius=0;_this2.zoomSpeed=1.2;_this2.noZoom=false;_this2.noPan=false;_this2.staticMoving=false;_this2.dynamicDampingFactor=.2;_this2.keys=[65,83,68];_this2.target=new THREE.Vector3;var EPS=1e-6;var _changed=true;var _state=STATE.NONE,_prevState=STATE.NONE,_eye=new THREE.Vector3,_zoomStart=new THREE.Vector2,_zoomEnd=new THREE.Vector2,_touchZoomDistanceStart=0,_touchZoomDistanceEnd=0,_panStart=new THREE.Vector2,_panEnd=new THREE.Vector2;_this2.target0=_this2.target.clone();_this2.position0=_this2.object.position.clone();_this2.up0=_this2.object.up.clone();_this2.left0=_this2.object.left;_this2.right0=_this2.object.right;_this2.top0=_this2.object.top;_this2.bottom0=_this2.object.bottom;var changeEvent={type:"change"};var startEvent={type:"start"};var endEvent={type:"end"};_this2.handleResize=function(){if(this.domElement===document){this.screen.left=0;this.screen.top=0;this.screen.width=window.innerWidth;this.screen.height=window.innerHeight}else{var box=this.domElement.getBoundingClientRect();var d=this.domElement.ownerDocument.documentElement;this.screen.left=box.left+window.pageXOffset-d.clientLeft;this.screen.top=box.top+window.pageYOffset-d.clientTop;this.screen.width=box.width;this.screen.height=box.height}this.radius=.5*Math.min(this.screen.width,this.screen.height);this.left0=this.object.left;this.right0=this.object.right;this.top0=this.object.top;this.bottom0=this.object.bottom};_this2.handleEvent=function(event){if(typeof this[event.type]=="function"){this[event.type](event)}};var getMouseOnScreen=function(){var vector=new THREE.Vector2;return function getMouseOnScreen(pageX,pageY){vector.set((pageX-_this.screen.left)/_this.screen.width,(pageY-_this.screen.top)/_this.screen.height);return vector}}();_this2.zoomCamera=function(){if(_state===STATE.TOUCH_ZOOM_PAN){var factor=_touchZoomDistanceEnd/_touchZoomDistanceStart;_touchZoomDistanceStart=_touchZoomDistanceEnd;_this.object.zoom*=factor;_changed=true}else{var factor=1+(_zoomEnd.y-_zoomStart.y)*_this.zoomSpeed;if(Math.abs(factor-1)>EPS&&factor>0){_this.object.zoom/=factor;if(_this.staticMoving){_zoomStart.copy(_zoomEnd)}else{_zoomStart.y+=(_zoomEnd.y-_zoomStart.y)*this.dynamicDampingFactor}_changed=true}}};_this2.panCamera=function(){var mouseChange=new THREE.Vector2,objectUp=new THREE.Vector3,pan=new THREE.Vector3;return function panCamera(){mouseChange.copy(_panEnd).sub(_panStart);if(mouseChange.lengthSq()){var scale_x=(_this.object.right-_this.object.left)/_this.object.zoom;var scale_y=(_this.object.top-_this.object.bottom)/_this.object.zoom;mouseChange.x*=scale_x;mouseChange.y*=scale_y;pan.copy(_eye).cross(_this.object.up).setLength(mouseChange.x);pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));_this.object.position.add(pan);_this.target.add(pan);if(_this.staticMoving){_panStart.copy(_panEnd)}else{_panStart.add(mouseChange.subVectors(_panEnd,_panStart).multiplyScalar(_this.dynamicDampingFactor))}_changed=true}}}();_this2.update=function(){_eye.subVectors(_this.object.position,_this.target);if(!_this.noZoom){_this.zoomCamera();if(_changed){_this.object.updateProjectionMatrix()}}if(!_this.noPan){_this.panCamera()}_this.object.position.addVectors(_this.target,_eye);_this.object.lookAt(_this.target);if(_changed){_this.dispatchEvent(changeEvent);_changed=false}};_this2.reset=function(){_state=STATE.NONE;_prevState=STATE.NONE;_this.target.copy(_this.target0);_this.object.position.copy(_this.position0);_this.object.up.copy(_this.up0);_eye.subVectors(_this.object.position,_this.target);_this.object.left=_this.left0;_this.object.right=_this.right0;_this.object.top=_this.top0;_this.object.bottom=_this.bottom0;_this.object.lookAt(_this.target);_this.dispatchEvent(changeEvent);_changed=false};function keydown(event){ -if(_this.enabled===false)return;window.removeEventListener("keydown",keydown);_prevState=_state;if(_state!==STATE.NONE){return}else if(event.keyCode===_this.keys[STATE.ROTATE]&&!_this.noRotate){_state=STATE.ROTATE}else if(event.keyCode===_this.keys[STATE.ZOOM]&&!_this.noZoom){_state=STATE.ZOOM}else if(event.keyCode===_this.keys[STATE.PAN]&&!_this.noPan){_state=STATE.PAN}}function keyup(event){if(_this.enabled===false)return;_state=_prevState;window.addEventListener("keydown",keydown,false)}function mousedown(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.NONE){_state=event.button}if(_state===STATE.ROTATE&&!_this.noRotate){}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomStart.copy(getMouseOnScreen(event.pageX,event.pageY));_zoomEnd.copy(_zoomStart)}else if(_state===STATE.PAN&&!_this.noPan){_panStart.copy(getMouseOnScreen(event.pageX,event.pageY));_panEnd.copy(_panStart)}document.addEventListener("mousemove",mousemove,false);document.addEventListener("mouseup",mouseup,false);_this.dispatchEvent(startEvent)}function mousemove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.ROTATE&&!_this.noRotate){}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomEnd.copy(getMouseOnScreen(event.pageX,event.pageY))}else if(_state===STATE.PAN&&!_this.noPan){_panEnd.copy(getMouseOnScreen(event.pageX,event.pageY))}}function mouseup(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();_state=STATE.NONE;document.removeEventListener("mousemove",mousemove);document.removeEventListener("mouseup",mouseup);_this.dispatchEvent(endEvent)}function mousewheel(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();var delta=0;if(event.wheelDelta){delta=event.wheelDelta/40}else if(event.detail){delta=-event.detail/3}_this.dispatchEvent({type:"OnScroll",delta:delta});_this.dispatchEvent(startEvent);_this.dispatchEvent(endEvent)}function touchstart(event){if(_this.enabled===false)return;switch(event.touches.length){case 1:_state=STATE.TOUCH_ROTATE;break;case 2:_state=STATE.TOUCH_ZOOM_PAN;var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=_touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panStart.copy(getMouseOnScreen(x,y));_panEnd.copy(_panStart);break;default:_state=STATE.NONE}_this.dispatchEvent(startEvent)}function touchmove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();switch(event.touches.length){case 1:break;case 2:var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));break;default:_state=STATE.NONE}}function touchend(event){if(_this.enabled===false)return;switch(event.touches.length){case 1:break;case 2:_touchZoomDistanceStart=_touchZoomDistanceEnd=0;var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));_panStart.copy(_panEnd);break}_state=STATE.NONE;_this.dispatchEvent(endEvent)}function contextmenu(event){event.preventDefault()}_this2.dispose=function(){this.domElement.removeEventListener("contextmenu",contextmenu,false);this.domElement.removeEventListener("mousedown",mousedown,false);this.domElement.removeEventListener("mousewheel",mousewheel,false);this.domElement.removeEventListener("MozMousePixelScroll",mousewheel,false);this.domElement.removeEventListener("touchstart",touchstart,false);this.domElement.removeEventListener("touchend",touchend,false);this.domElement.removeEventListener("touchmove",touchmove,false);document.removeEventListener("mousemove",mousemove,false);document.removeEventListener("mouseup",mouseup,false);window.removeEventListener("keydown",keydown,false);window.removeEventListener("keyup",keyup,false)};_this2.domElement.addEventListener("contextmenu",contextmenu,false);_this2.domElement.addEventListener("mousedown",mousedown,false);_this2.domElement.addEventListener("mousewheel",mousewheel,false);_this2.domElement.addEventListener("MozMousePixelScroll",mousewheel,false);_this2.domElement.addEventListener("touchstart",touchstart,false);_this2.domElement.addEventListener("touchend",touchend,false);_this2.domElement.addEventListener("touchmove",touchmove,false);window.addEventListener("keydown",keydown,false);window.addEventListener("keyup",keyup,false);_this2.handleResize();_this2.update();return _this2}return Trackballortho}(THREE.EventDispatcher);exports.default=Trackballortho},{}],92:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i.008856){y=Math.pow(y,3)}else{y=(y-16/116)/7.787}if(Math.pow(x,3)>.008856){x=Math.pow(x,3)}else{x=(x-16/116)/7.787}if(Math.pow(z,3)>.008856){z=Math.pow(z,3)}else{z=(z-16/116)/7.787}return[refX*x,refY*y,refZ*z]}},{key:"xyz2RGB",value:function xyz2RGB(x,y,z){x/=100;y/=100;z/=100;var r=x*3.2406+y*-1.5372+z*-.4986;var g=x*-.9689+y*1.8758+z*.0415;var b=x*.0557+y*-.204+z*1.057;if(r>.0031308){r=1.055*Math.pow(r,1/2.4)-.055}else{r=12.92*r}if(g>.0031308){g=1.055*Math.pow(g,1/2.4)-.055}else{g=12.92*g}if(b>.0031308){b=1.055*Math.pow(b,1/2.4)-.055}else{b=12.92*b}r=r*255;g=g*255;b=b*255;return[r,g,b]}},{key:"cielab2RGB",value:function cielab2RGB(){var l=arguments.length>0&&arguments[0]!==undefined?arguments[0]:50;var a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var b=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;if(!(l>=0&&l<=100)){return null}var xyz=this.cielab2XYZ(l,a,b);return this.xyz2RGB.apply(this,_toConsumableArray(xyz))}}]);return Colors}();exports.default=Colors},{}],93:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i=bbox.min.x-epsilon&&point.y>=bbox.min.y-epsilon&&point.z>=bbox.min.z-epsilon&&point.x<=bbox.max.x+epsilon&&point.y<=bbox.max.y+epsilon&&point.z<=bbox.max.z+epsilon){return true}return false}},{key:"posdir",value:function posdir(position,direction){return{position:position,direction:direction}}},{key:"validatePlane",value:function validatePlane(plane){if(plane===null){window.console.log("Invalid plane.");window.console.log(plane);return false}if(!_core4.default.vector3(plane.position)){window.console.log("Invalid plane.position.");window.console.log(plane.position);return false}if(!_core4.default.vector3(plane.direction)){window.console.log("Invalid plane.direction.");window.console.log(plane.direction);return false}return true}},{key:"validateAabb",value:function validateAabb(aabb){if(aabb===null){window.console.log("Invalid aabb.");window.console.log(aabb);return false}if(!_core4.default.matrix4(aabb.toAABB)){window.console.log("Invalid aabb.toAABB: ");window.console.log(aabb.toAABB);return false}if(!_core4.default.vector3(aabb.center)){window.console.log("Invalid aabb.center.");window.console.log(aabb.center);return false}if(!(_core4.default.vector3(aabb.halfDimensions)&&aabb.halfDimensions.x>=0&&aabb.halfDimensions.y>=0&&aabb.halfDimensions.z>=0)){window.console.log("Invalid aabb.halfDimensions.");window.console.log(aabb.halfDimensions);return false}return true}}]);return Intersections}();exports.default=Intersections},{"./core.utils":96,"./core.validators":97}],94:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _core=require("./core.colors");var _core2=_interopRequireDefault(_core);var _core3=require("./core.intersections");var _core4=_interopRequireDefault(_core3);var _core5=require("./core.pack");var _core6=_interopRequireDefault(_core5);var _core7=require("./core.validators");var _core8=_interopRequireDefault(_core7);var _core9=require("./core.utils");var _core10=_interopRequireDefault(_core9);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Colors:_core2.default,Intersections:_core4.default,Utils:_core10.default,Validators:_core8.default}},{"./core.colors":92,"./core.intersections":93,"./core.pack":95,"./core.utils":96,"./core.validators":97}],95:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Pack=function Pack(){_classCallCheck(this,Pack)};exports.default=Pack},{}],96:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i=0&&halfDimensions.y>=0&&halfDimensions.z>=0)){window.console.log("halfDimensions must be >= 0.");window.console.log(halfDimensions);return false}var min=center.clone().sub(halfDimensions);var max=center.clone().add(halfDimensions);return{min:min,max:max}}},{key:"minMaxPixelData",value:function minMaxPixelData(){var pixelData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var minMax=[65535,-32768];var numPixels=pixelData.length;for(var index=0;index=0&&objectToTest.halfDimensions.y>=0&&objectToTest.halfDimensions.z>=0)){return false}return true}},{key:"ray",value:function ray(objectToTest){if(!(objectToTest!==null&&typeof objectToTest!=="undefined"&&objectToTest.hasOwnProperty("position")&&this.vector3(objectToTest.position)&&objectToTest.hasOwnProperty("direction")&&this.vector3(objectToTest.direction))){return false}return true}}]);return Validators}();exports.default=Validators},{}],98:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _geometries=require("./geometries.slice");var _geometries2=_interopRequireDefault(_geometries);var _geometries3=require("./geometries.voxel");var _geometries4=_interopRequireDefault(_geometries3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Slice:_geometries2.default,Voxel:_geometries4.default}},{"./geometries.slice":99,"./geometries.voxel":100}],99:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i4&&arguments[4]!==undefined?arguments[4]:new THREE.Matrix4;_classCallCheck(this,GeometriesSlice);var aabb={halfDimensions:halfDimensions,center:center,toAABB:toAABB};var plane={position:position,direction:direction};var intersections=_core2.default.aabbPlane(aabb,plane);if(intersections.length<3){window.console.log("WARNING: Less than 3 intersections between AABB and Plane.");window.console.log("AABB");window.console.log(aabb);window.console.log("Plane");window.console.log(plane);window.console.log("exiting...");throw"geometries.slice has less than 3 intersections, can not create a valid geometry."}var orderedIntersections=GeometriesSlice.orderIntersections(intersections,direction);var sliceShape=GeometriesSlice.shape(orderedIntersections);var _this=_possibleConstructorReturn(this,(GeometriesSlice.__proto__||Object.getPrototypeOf(GeometriesSlice)).call(this,sliceShape));_this.type="SliceGeometry";_this.vertices=orderedIntersections;_this.verticesNeedUpdate=true;return _this}_createClass(GeometriesSlice,null,[{key:"shape",value:function shape(points){var shape=new THREE.Shape;shape.moveTo(points[0].xy.x,points[0].xy.y);for(var l=1;l1&&arguments[1]!==undefined?arguments[1]:"default";var lutO=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"linear";var color=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[[0,0,0,0],[1,1,1,1]];var opacity=arguments.length>4&&arguments[4]!==undefined?arguments[4]:[[0,0],[1,1]];var discrete=arguments.length>5&&arguments[5]!==undefined?arguments[5]:false;_classCallCheck(this,HelpersLut);this._containerID=containerID;this._discrete=discrete;this._color=color;this._lut=lut;this._luts=_defineProperty({},lut,color);this._opacity=opacity;this._lutO=lutO;this._lutsO=_defineProperty({},lutO,opacity);this.initCanvas();this.paintCanvas()}_createClass(HelpersLut,[{key:"initCanvas",value:function initCanvas(){this._canvasContainer=this.initCanvasContainer(this._containerID);this._canvasBg=this.createCanvas();this._canvasContainer.appendChild(this._canvasBg);this._canvas=this.createCanvas();this._canvasContainer.appendChild(this._canvas)}},{key:"initCanvasContainer",value:function initCanvasContainer(canvasContainerId){var canvasContainer=document.getElementById(canvasContainerId);canvasContainer.style.width="256 px";canvasContainer.style.height="128 px";canvasContainer.style.border="1px solid #F9F9F9";return canvasContainer}},{key:"createCanvas",value:function createCanvas(){var canvas=document.createElement("canvas");canvas.height=16;canvas.width=256;return canvas}},{key:"paintCanvas",value:function paintCanvas(){var ctx=this._canvas.getContext("2d");ctx.clearRect(0,0,this._canvas.width,this._canvas.height);ctx.globalCompositeOperation="source-over";if(!this._discrete){var color=ctx.createLinearGradient(0,0,this._canvas.width,this._canvas.height);for(var i=0;i0){previousPos=this._color[_i-1][0]}var from=previousPos+(currentPos-previousPos)/2;var to=currentPos+(nextPos-currentPos)/2;var _color=this._color[_i];var opacity=this._opacity[_i]?this._opacity[_i][1]:1;ctx.beginPath();ctx.strokeStyle="rgba( "+Math.round(_color[1]*255)+", "+Math.round(_color[2]*255)+", "+Math.round(_color[3]*255)+", "+opacity+")";ctx.moveTo(from*this._canvas.width,0);ctx.lineTo(to*this._canvas.width,0);ctx.stroke();ctx.closePath()}}if(!this._discrete){ctx.globalCompositeOperation="destination-in";var _opacity=ctx.createLinearGradient(0,0,this._canvas.width,this._canvas.height);for(var _i2=0;_i20&&arguments[0]!==undefined?arguments[0]:"color";var available=[];var luts=this._luts;if(type!=="color"){luts=this._lutsO}for(var i in luts){available.push(i)}return available}},{key:"texture",get:function get(){var texture=new THREE.Texture(this._canvas);texture.mapping=THREE.UVMapping;texture.wrapS=texture.wrapT=THREE.ClampToEdgeWrapping;texture.magFilter=texture.minFilter=THREE.NearestFilter;texture.premultiplyAlpha=true;texture.needsUpdate=true;return texture}},{key:"lut",set:function set(targetLUT){this._color=this._luts[targetLUT];this._lut=targetLUT;this.paintCanvas()},get:function get(){return this._lut}},{key:"luts",set:function set(newLuts){this._luts=newLuts},get:function get(){return this._luts}},{key:"lutO",set:function set(targetLUTO){this._opacity=this._lutsO[targetLUTO];this._lutO=targetLUTO;this.paintCanvas()},get:function get(){return this._lutO}},{key:"lutsO",set:function set(newLutsO){this._lutsO=newLutsO},get:function get(){return this._lutsO}},{key:"discrete",set:function set(discrete){this._discrete=discrete;this.paintCanvas()},get:function get(){return this._discrete}}],[{key:"presetLuts",value:function presetLuts(){return{default:[[0,0,0,0],[1,1,1,1]],spectrum:[[0,0,0,0],[.1,0,0,1],[.33,0,1,1],[.5,0,1,0],[.66,1,1,0],[.9,1,0,0],[1,1,1,1]],hot_and_cold:[[0,0,0,1],[.15,0,1,1],[.3,0,1,0],[.45,0,0,0],[.5,0,0,0],[.55,0,0,0],[.7,1,1,0],[.85,1,0,0],[1,1,1,1]],gold:[[0,0,0,0],[.13,.19,.03,0],[.25,.39,.12,0],[.38,.59,.26,0],[.5,.8,.46,.08],[.63,.99,.71,.21],[.75,.99,.88,.34],[.88,.99,.99,.48],[1,.9,.95,.61]],red:[[0,.75,0,0],[.5,1,.5,0],[.95,1,1,0],[1,1,1,1]],green:[[0,0,.75,0],[.5,.5,1,0],[.95,1,1,0],[1,1,1,1]],blue:[[0,0,0,1],[.5,0,.5,1],[.95,0,1,1],[1,1,1,1]],walking_dead:[[0,.1,1,1],[1,1,1,1]],random:[[0,0,0,0],[.27,.18,.18,.18],[.41,1,1,1],[.7,1,0,0],[1,1,1,1]]}}},{key:"presetLutsO",value:function presetLutsO(){return{linear:[[0,0],[1,1]],lowpass:[[0,.8],[.2,.6],[.3,.1],[1,0]],bandpass:[[0,0],[.4,.8],[.6,.8],[1,0]],highpass:[[0,0],[.7,.1],[.8,.6],[1,.8]],flat:[[0,.7],[1,1]],random:[[0,0],[.38,0],[.55,1],[.72,1],[1,.05]]}}}]);return HelpersLut}();exports.default=HelpersLut},{}],105:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0){progressContainers[0].parentNode.removeChild(progressContainers[0])}progressContainers=null;window.cancelAnimationFrame(this.requestAnimationFrameID)}},{key:"init",value:function init(){var progressContainer=this._domContainer();for(var mode in this._modes){if(this._modes.hasOwnProperty(mode)){var bar=this._domBar(this._modes[mode]);progressContainer.appendChild(bar);bar=null}}this._container.appendChild(progressContainer);progressContainer=null;this.updateUI()}},{key:"update",value:function update(value,total,mode){this._mode=mode;this._value=value;if(total===0){this._total=value;this._value=Math.random()*value}else{this._total=total}}},{key:"updateUI",value:function updateUI(){var _this=this;this.requestAnimationFrameID=requestAnimationFrame(function(){_this.updateUI()});if(!(this._modes.hasOwnProperty(this._mode)&&this._modes[this._mode].hasOwnProperty("name")&&this._modes[this._mode].hasOwnProperty("color"))){return false}var message="";var progress=Math.round(this._value/this._total*100);var color=this._modes[this._mode].color;var progressBar=this._container.getElementsByClassName("progress "+this._modes[this._mode].name);if(progressBar.length>0){progressBar[0].style.borderColor=color;progressBar[0].style.width=progress+"%"}progressBar=null}},{key:"_domContainer",value:function _domContainer(){var container=document.createElement("div");container.classList.add("progress");container.classList.add("container");container.style.width="100%";container.style.height="8px";container.style.position="absolute";container.style.backgroundColor="rgba(158, 158, 158, 0.5)";container.style.top="0";container.style.zIndex="1";return container}},{key:"_domBar",value:function _domBar(mode){if(!(mode.hasOwnProperty("name")&&mode.hasOwnProperty("color"))){window.console.log("Invalid mode provided.");window.console.log(mode);return false}var bar=document.createElement("div");bar.classList.add(mode.name);bar.classList.add("progress");bar.style.border="2px solid "+mode.color;bar.style.width="0%";return bar}}]);return HelpersProgressBar}();exports.default=HelpersProgressBar},{}],107:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:0;var position=arguments.length>2&&arguments[2]!==undefined?arguments[2]:new THREE.Vector3(0,0,0);var direction=arguments.length>3&&arguments[3]!==undefined?arguments[3]:new THREE.Vector3(0,0,1);var aabbSpace=arguments.length>4&&arguments[4]!==undefined?arguments[4]:"IJK";_classCallCheck(this,HelpersSlice);var _this=_possibleConstructorReturn(this,(HelpersSlice.__proto__||Object.getPrototypeOf(HelpersSlice)).call(this));_this._stack=stack;_this._invert=_this._stack.invert;_this._lut="none";_this._lutTexture=null;_this._intensityAuto=true;_this._interpolation=1;_this._index=index;_this._windowWidth=null;_this._windowCenter=null;_this._rescaleSlope=null;_this._rescaleIntercept=null;_this._planePosition=position;_this._planeDirection=direction;_this._aaBBspace=aabbSpace;_this._material=null;_this._textures=[];_this._shadersFragment=_shadersData6.default;_this._shadersVertex=_shadersData4.default;_this._uniforms=_shadersData2.default.uniforms();_this._geometry=null;_this._mesh=null;_this._visible=true;_this._init();_this._create();return _this}_createClass(HelpersSlice,[{key:"_init",value:function _init(){if(!this._stack||!this._stack._prepared||!this._stack._packed){return}if(this._aaBBspace==="IJK"){this._halfDimensions=this._stack.halfDimensionsIJK;this._center=new THREE.Vector3(this._stack.halfDimensionsIJK.x-.5,this._stack.halfDimensionsIJK.y-.5,this._stack.halfDimensionsIJK.z-.5);this._toAABB=new THREE.Matrix4}else{var aaBBox=this._stack.AABBox();this._halfDimensions=aaBBox.clone().multiplyScalar(.5);this._center=this._stack.centerAABBox();this._toAABB=this._stack.lps2AABB}}},{key:"_create",value:function _create(){if(!this._stack||!this._stack.prepared||!this._stack.packed){return}try{this._geometry=new _geometries2.default(this._halfDimensions,this._center,this._planePosition,this._planeDirection,this._toAABB)}catch(e){window.console.log(e);window.console.log("invalid slice geometry - exiting...");return}if(!this._geometry.vertices){return}if(!this._material){this._uniforms.uTextureSize.value=this._stack.textureSize;this._uniforms.uDataDimensions.value=[this._stack.dimensionsIJK.x,this._stack.dimensionsIJK.y,this._stack.dimensionsIJK.z];this._uniforms.uWorldToData.value=this._stack.lps2IJK;this._uniforms.uNumberOfChannels.value=this._stack.numberOfChannels;this._uniforms.uPixelType.value=this._stack.pixelType;this._uniforms.uBitsAllocated.value=this._stack.bitsAllocated;this._uniforms.uPackedPerPixel.value=this._stack.packedPerPixel;this._prepareTexture();this._uniforms.uTextureContainer.value=this._textures;this._createMaterial({side:THREE.DoubleSide})}this.updateIntensitySettings();this.updateIntensitySettingsUniforms();this._mesh=new THREE.Mesh(this._geometry,this._material);if(this._aaBBspace==="IJK"){this._mesh.applyMatrix(this._stack.ijk2LPS)}this._mesh.visible=this._visible;this.add(this._mesh)}},{key:"updateIntensitySettings",value:function updateIntensitySettings(){if(this._intensityAuto){this.updateIntensitySetting("windowCenter");this.updateIntensitySetting("windowWidth");this.updateIntensitySetting("rescaleSlope");this.updateIntensitySetting("rescaleIntercept")}else{if(this._windowCenter===null){this._windowCenter=this._stack.windowCenter}if(this.__windowWidth===null){this._windowWidth=this._stack.windowWidth}if(this._rescaleSlope===null){this._rescaleSlope=this._stack.rescaleSlope}if(this._rescaleIntercept===null){this._rescaleIntercept=this._stack.rescaleIntercept}}}},{key:"updateIntensitySettingsUniforms",value:function updateIntensitySettingsUniforms(){this._uniforms.uRescaleSlopeIntercept.value=[this._rescaleSlope,this._rescaleIntercept];this._uniforms.uWindowCenterWidth.value=[this._windowCenter,this._windowWidth];this._uniforms.uInvert.value=this._invert===true?1:0;this._uniforms.uInterpolation.value=this._interpolation;if(this._lut==="none"){this._uniforms.uLut.value=0}else{this._uniforms.uLut.value=1;this._uniforms.uTextureLUT.value=this._lutTexture}}},{key:"updateIntensitySetting",value:function updateIntensitySetting(setting){if(this._stack.frame[this._index]&&this._stack.frame[this._index][setting]){this["_"+setting]=this._stack.frame[this._index][setting]}else{this["_"+setting]=this._stack[setting]}}},{key:"_update",value:function _update(){if(this._mesh){this.remove(this._mesh);this._mesh.geometry.dispose();this._mesh.geometry=null;this._mesh=null}this._create()}},{key:"stack",get:function get(){return this._stack},set:function set(stack){this._stack=stack}},{key:"windowWidth",get:function get(){return this._windowWidth},set:function set(windowWidth){this._windowWidth=windowWidth;this.updateIntensitySettingsUniforms()}},{key:"windowCenter",get:function get(){return this._windowCenter},set:function set(windowCenter){this._windowCenter=windowCenter;this.updateIntensitySettingsUniforms()}},{key:"rescaleSlope",get:function get(){return this._rescaleSlope},set:function set(rescaleSlope){this._rescaleSlope=rescaleSlope;this.updateIntensitySettingsUniforms()}},{key:"rescaleIntercept",get:function get(){return this._rescaleIntercept},set:function set(rescaleIntercept){this._rescaleIntercept=rescaleIntercept;this.updateIntensitySettingsUniforms()}},{key:"invert",get:function get(){return this._invert},set:function set(invert){this._invert=invert;this.updateIntensitySettingsUniforms()}},{key:"lut",get:function get(){return this._lut},set:function set(lut){this._lut=lut}},{key:"lutTexture",get:function get(){return this._lutTexture},set:function set(lutTexture){this._lutTexture=lutTexture;this.updateIntensitySettingsUniforms()}},{key:"intensityAuto",get:function get(){return this._intensityAuto},set:function set(intensityAuto){this._intensityAuto=intensityAuto;this.updateIntensitySettings();this.updateIntensitySettingsUniforms()}},{key:"interpolation",get:function get(){return this._interpolation},set:function set(interpolation){this._interpolation=interpolation;this.updateIntensitySettingsUniforms();this._updateMaterial()}},{key:"index",get:function get(){return this._index},set:function set(index){this._index=index;this._update()}},{key:"planePosition",set:function set(position){this._planePosition=position;this._update()},get:function get(){return this._planePosition}},{key:"planeDirection",set:function set(direction){this._planeDirection=direction;this._update()},get:function get(){return this._planeDirection}},{key:"halfDimensions",set:function set(halfDimensions){this._halfDimensions=halfDimensions},get:function get(){return this._halfDimensions}},{key:"center",set:function set(center){this._center=center},get:function get(){return this._center}},{key:"aabbSpace",set:function set(aabbSpace){this._aaBBspace=aabbSpace;this._init()},get:function get(){return this._aaBBspace}},{key:"mesh",set:function set(mesh){this._mesh=mesh},get:function get(){return this._mesh}},{key:"geometry",set:function set(geometry){this._geometry=geometry},get:function get(){return this._geometry}}]);return HelpersSlice}((0,_helpersMaterial2.default)(THREE.Object3D));exports.default=HelpersSlice},{"../../src/geometries/geometries.slice":99,"../../src/helpers/helpers.material.mixin":105,"../../src/shaders/shaders.data.fragment":132,"../../src/shaders/shaders.data.uniform":133,"../../src/shaders/shaders.data.vertex":134}],108:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i=dimensions||this._index<0){this._outOfBounds=true}else{this._outOfBounds=false}}},{key:"_prepareStack",value:function _prepareStack(){if(!this._stack.prepared){this._stack.prepare()}if(!this._stack.packed){this._stack.pack()}}},{key:"_prepareBBox",value:function _prepareBBox(){this._bBox=new _helpers4.default(this._stack);this.add(this._bBox)}},{key:"_prepareBorder",value:function _prepareBorder(){this._border=new _helpers2.default(this._slice);this.add(this._border)}},{key:"_prepareSlice",value:function _prepareSlice(){var halfDimensionsIJK=this._stack.halfDimensionsIJK;this._index=this._prepareSliceIndex(halfDimensionsIJK);var position=this._prepareSlicePosition(halfDimensionsIJK,this._index);var direction=this._prepareDirection(this._orientation);this._slice=new _helpers6.default(this._stack,this._index,position,direction);this.add(this._slice)}},{key:"_prepareSliceIndex",value:function _prepareSliceIndex(indices){var index=0;switch(this._orientation){case 0:index=Math.floor(indices.z);break;case 1:index=Math.floor(indices.x);break;case 2:index=Math.floor(indices.y);break;default:break}return index}},{key:"_prepareSlicePosition",value:function _prepareSlicePosition(rPosition,index){var position=new THREE.Vector3(0,0,0);switch(this._orientation){case 0:position=new THREE.Vector3(Math.floor(rPosition.x),Math.floor(rPosition.y),index);break;case 1:position=new THREE.Vector3(index,Math.floor(rPosition.y),Math.floor(rPosition.z));break;case 2:position=new THREE.Vector3(Math.floor(rPosition.x),index,Math.floor(rPosition.z));break;default:break}return position}},{key:"_prepareDirection",value:function _prepareDirection(orientation){var direction=new THREE.Vector3(0,0,1);switch(orientation){case 0:direction=new THREE.Vector3(0,0,1);break;case 1:direction=new THREE.Vector3(1,0,0);break;case 2:direction=new THREE.Vector3(0,1,0);break;default:break}return direction}},{key:"stack",get:function get(){return this._stack}},{key:"bbox",get:function get(){return this._bBox}},{key:"slice",get:function get(){ -return this._slice}},{key:"border",get:function get(){return this._border}},{key:"index",get:function get(){return this._index},set:function set(index){this._index=index;this._slice.index=index;var halfDimensions=this._stack.halfDimensionsIJK;this._slice.planePosition=this._prepareSlicePosition(halfDimensions,this._index);this._border.helpersSlice=this._slice;this._isIndexOutOfBounds()}},{key:"orientation",set:function set(orientation){this._orientation=orientation;this._slice.planeDirection=this._prepareDirection(this._orientation);this._border.helpersSlice=this._slice},get:function get(){return this._orientation}},{key:"outOfBounds",set:function set(outOfBounds){this._outOfBounds=outOfBounds},get:function get(){return this._outOfBounds}}]);return HelpersStack}(THREE.Object3D);exports.default=HelpersStack},{"../../src/helpers/helpers.border":101,"../../src/helpers/helpers.boundingbox":102,"../../src/helpers/helpers.slice":107}],109:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:null;var stack=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;_classCallCheck(this,HelpersVoxel);var _this=_possibleConstructorReturn(this,(HelpersVoxel.__proto__||Object.getPrototypeOf(HelpersVoxel)).call(this));_this._stack=stack;_this._worldCoordinates=worldCoordinates;_this._voxel=new _models4.default;_this._voxel.id=_this.id;_this._voxel.worldCoordinates=_this._worldCoordinates;if(_this._stack&&_this._stack.prepared&&_this._worldCoordinates){_this.updateVoxel(_this._worldCoordinates)}_this._mesh=null;_this._geometry=null;_this._material=null;_this._selected=false;_this._active=false;_this._hover=false;_this._distance=null;_this._showVoxel=true;_this._showDomSVG=true;_this._showDomMeasurements=true;_this._color="#00B0FF";_this._svgPointer=' ';_this.createMesh();return _this}_createClass(HelpersVoxel,[{key:"updateVoxel",value:function updateVoxel(worldCoordinates){this._voxel.worldCoordinates=worldCoordinates;this._voxel.dataCoordinates=_models2.default.worldToData(this._stack,this._voxel.worldCoordinates);var value=_models2.default.value(this._stack,this._voxel.dataCoordinates);this._voxel.value=_models2.default.valueRescaleSlopeIntercept(value,this._stack.rescaleSlope,this._stack.rescaleIntercept)}},{key:"updateVoxelScreenCoordinates",value:function updateVoxelScreenCoordinates(camera,container){this._voxel.screenCoordinates=HelpersVoxel.worldToScreen(this._worldCoordinates,camera,container)}},{key:"createMesh",value:function createMesh(){var dataCoordinates=_models2.default.worldToData(this._stack,this._worldCoordinates);this._geometry=new _geometries2.default(dataCoordinates);this._material=new THREE.MeshBasicMaterial({wireframe:true,wireframeLinewidth:2});this._material.color.set(this._color);this._mesh=new THREE.Mesh(this._geometry,this._material);this._mesh.applyMatrix(this._stack.ijk2LPS);this._mesh.visible=this._showVoxel;this.add(this._mesh)}},{key:"createDom",value:function createDom(){var measurementsContainer=this._createDiv("VJSVoxelMeasurements",this.id,"VJSVoxelMeasurements");var rasContainer=this._createDiv("VJSVoxelProbeWorld",this.id,"VJSVoxelProbeWorld");measurementsContainer.appendChild(rasContainer);var ijkContainer=this._createDiv("VJSVoxelProbeData",this.id,"VJSVoxelProbeData");measurementsContainer.appendChild(ijkContainer);var valueContainer=this._createDiv("VJSVoxelProbeValue",this.id,"VJSVoxelProbeValue");measurementsContainer.appendChild(valueContainer);var svgContainer=this._createDiv("VJSVoxelProbeSVG",this.id,"VJSVoxelProbeSVG");svgContainer.innerHTML=this._svgPointer;var domElement=this._createDiv("VJSWidgetVoxelProbe",this.id,"VJSWidgetVoxelProbe");domElement.appendChild(svgContainer);domElement.appendChild(measurementsContainer);return domElement}},{key:"updateDom",value:function updateDom(container){if(document.getElementById("VJSVoxelProbeWorld"+this.id)===null){container.appendChild(this.createDom())}var rasContainer=document.getElementById("VJSVoxelProbeWorld"+this.id);var rasContent=this._voxel.worldCoordinates.x.toFixed(2)+" : "+this._voxel.worldCoordinates.y.toFixed(2)+" : "+this._voxel.worldCoordinates.z.toFixed(2);rasContainer.innerHTML="LPS: "+rasContent;var ijkContainer=document.getElementById("VJSVoxelProbeData"+this.id);var ijkContent=this._voxel.dataCoordinates.x+" : "+this._voxel.dataCoordinates.y+" : "+this._voxel.dataCoordinates.z;ijkContainer.innerHTML="IJK: "+ijkContent;var valueContainer=document.getElementById("VJSVoxelProbeValue"+this.id);var valueContent=this._voxel.value;valueContainer.innerHTML="Value: "+valueContent;var selectedElement=document.getElementById("VJSWidgetVoxelProbe"+this.id);selectedElement.style.top=this._voxel.screenCoordinates.y;selectedElement.style.left=this._voxel.screenCoordinates.x;this.updateDomClass(selectedElement)}},{key:"updateDomClass",value:function updateDomClass(){var element=document.getElementById("VJSWidgetVoxelProbe"+this.id);if(this._active===true){element.classList.add("VJSVoxelProbeActive")}else{element.classList.remove("VJSVoxelProbeActive")}if(this._hover===true){element.classList.add("VJSVoxelProbeHover")}else{element.classList.remove("VJSVoxelProbeHover")}if(this._selected===true){element.classList.add("VJSVoxelProbeSelect")}else{element.classList.remove("VJSVoxelProbeSelect")}this.updateDomElementDisplay("VJSVoxelMeasurements"+this.id,this._showDomMeasurements);this.updateDomElementDisplay("VJSVoxelProbeSVG"+this.id,this._showDomSVG)}},{key:"updateDomElementDisplay",value:function updateDomElementDisplay(id,show){if(show){document.getElementById(id).style.display="block"}else{document.getElementById(id).style.display="none"}}},{key:"removeTest",value:function removeTest(){var node=document.getElementById("VJSWidgetVoxelProbe"+this.id);if(node.parentNode){node.parentNode.removeChild(node)}this.remove(this._mesh);this._mesh.geometry.dispose();this._mesh.material.dispose();this._mesh=null}},{key:"_createDiv",value:function _createDiv(idPrefix,idSuffix,className){var divContainer=document.createElement("div");divContainer.setAttribute("id",idPrefix+idSuffix);divContainer.setAttribute("class",className);return divContainer}},{key:"color",set:function set(color){this._color=color;if(this._material){this._material.color.set(this._color)}var selectedElement=document.getElementById("VJSVoxelMeasurements"+this.id);if(selectedElement){selectedElement.style.borderColor=this._color.replace("0x","#")}selectedElement=document.querySelector("#VJSVoxelProbeSVG"+this.id+"> svg > path");if(selectedElement){selectedElement.style.stroke=this._color.replace("0x","#")}},get:function get(){return this._color}},{key:"worldCoordinates",set:function set(worldCoordinates){this._worldCoordinates=worldCoordinates;this._voxel._worldCoordinates=worldCoordinates;this.updateVoxel(this._worldCoordinates);if(this._mesh&&this._mesh.geometry){this._mesh.geometry.location=this._voxel.dataCoordinates}},get:function get(){return this._worldCoordinates}},{key:"voxel",get:function get(){return this._voxel},set:function set(voxel){this._voxel=voxel}},{key:"showVoxel",set:function set(showVoxel){this._showVoxel=showVoxel;if(this._mesh){this._mesh.visible=this._showVoxel}},get:function get(){return this._showVoxel}},{key:"showDomSVG",set:function set(showDomSVG){this._showDomSVG=showDomSVG;this.updateDomClass()},get:function get(){return this._showDomSVG}},{key:"showDomMeasurements",set:function set(showDomMeasurements){this._showDomMeasurements=showDomMeasurements;this.updateDomClass()},get:function get(){return this._showDomMeasurements}},{key:"distance",set:function set(distance){this._distance=distance},get:function get(){return this._distance}},{key:"selected",set:function set(selected){this._selected=selected},get:function get(){return this._selected}},{key:"hover",set:function set(hover){this._hover=hover},get:function get(){return this._hover}},{key:"active",set:function set(active){this._active=active},get:function get(){return this._active}}],[{key:"worldToScreen",value:function worldToScreen(worldCoordinate,camera,canvas){var screenCoordinates=worldCoordinate.clone();screenCoordinates.project(camera);screenCoordinates.x=Math.round((screenCoordinates.x+1)*canvas.offsetWidth/2);screenCoordinates.y=Math.round((-screenCoordinates.y+1)*canvas.offsetHeight/2);screenCoordinates.z=0;return screenCoordinates}}]);return HelpersVoxel}(THREE.Object3D);exports.default=HelpersVoxel},{"../../src/geometries/geometries.voxel":100,"../../src/models/models.stack":118,"../../src/models/models.voxel":119}],111:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:document.body;var helpersProgress=arguments.length>1&&arguments[1]!==undefined?arguments[1]:_helpers2.default;_classCallCheck(this,LoadersBase);this._loaded=-1;this._totalLoaded=-1;this._parsed=-1;this._totalParsed=-1;this._container=container;this._helpersProgressBar=helpersProgress;this._progressBar=null;if(this._container&&this._helpersProgressBar){this._progressBar=new helpersProgress(this._container)}}_createClass(LoadersBase,[{key:"free",value:function free(){this._container=null;this._helpersProgressBar=null;if(this._progressBar){this._progressBar.free();this._progressBar=null}}},{key:"fetch",value:function fetch(url){var _this=this;return new Promise(function(resolve,reject){var request=new XMLHttpRequest;request.open("GET",url);request.crossOrigin=true;request.responseType="arraybuffer";request.onload=function(event){if(request.status===200){_this._loaded=event.loaded;_this._totalLoaded=event.total;if(_this._progressBar){_this._progressBar.update(_this._loaded,_this._totalLoaded,"load")}var buffer=request.response;var response={url:url,buffer:buffer};resolve(response)}else{reject(request.statusText)}};request.onerror=function(){reject(request.statusText)};request.onprogress=function(event){_this._loaded=event.loaded;_this._totalLoaded=event.total;if(_this._progressBar){_this._progressBar.update(_this._loaded,_this._totalLoaded,"load")}};request.send()})}}]);return LoadersBase}();exports.default=LoadersBase},{"../../src/helpers/helpers.progressbar":106,"../../src/models/models.frame":115,"../../src/models/models.series":117,"../../src/models/models.stack":118}],112:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _loaders=require("./loaders.volume");var _loaders2=_interopRequireDefault(_loaders);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Volume:_loaders2.default}},{"./loaders.volume":113}],113:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&yCos.length()>0){cosines[0]=xCos;cosines[1]=yCos;cosines[2]=new THREE.Vector3(0,0,0).crossVectors(cosines[0],cosines[1]).normalize()}}else{window.console.log("No valid image orientation for frame");window.console.log(this);window.console.log("Returning default orientation.")}if(!this._rightHanded){cosines[2].negate()}return cosines}},{key:"spacingXY",value:function spacingXY(){var spacingXY=[1,1];if(this.pixelSpacing){spacingXY[0]=this.pixelSpacing[0];spacingXY[1]=this.pixelSpacing[1]}else if(this.pixelAspectRatio){spacingXY[0]=1;spacingXY[1]=1*this.pixelAspectRatio[1]/this.pixelAspectRatio[0]}return spacingXY}},{key:"value",value:function value(column,row){return this.pixelData[column+this._columns*row]}},{key:"_compareArrays",value:function _compareArrays(reference,target){if(reference===target){return true}if(reference&&target&&reference.join()===target.join()){return true}return false}},{key:"rows",get:function get(){return this._rows},set:function set(rows){this._rows=rows}},{key:"columns",get:function get(){return this._columns},set:function set(columns){this._columns=columns}},{key:"spacingBetweenSlices",get:function get(){return this._spacingBetweenSlices},set:function set(spacingBetweenSlices){this._spacingBetweenSlices=spacingBetweenSlices}},{key:"sliceThickness",get:function get(){return this._sliceThickness},set:function set(sliceThickness){this._sliceThickness=sliceThickness}},{key:"imagePosition",get:function get(){return this._imagePosition},set:function set(imagePosition){this._imagePosition=imagePosition}},{key:"imageOrientation",get:function get(){return this._imageOrientation},set:function set(imageOrientation){this._imageOrientation=imageOrientation}},{key:"windowWidth",get:function get(){return this._windowWidth},set:function set(windowWidth){this._windowWidth=windowWidth}},{key:"windowCenter",get:function get(){return this._windowCenter},set:function set(windowCenter){this._windowCenter=windowCenter}},{key:"rescaleSlope",get:function get(){return this._rescaleSlope},set:function set(rescaleSlope){this._rescaleSlope=rescaleSlope}},{key:"rescaleIntercept",get:function get(){return this._rescaleIntercept},set:function set(rescaleIntercept){this._rescaleIntercept=rescaleIntercept}},{key:"bitsAllocated",get:function get(){return this._bitsAllocated},set:function set(bitsAllocated){this._bitsAllocated=bitsAllocated}},{key:"dist",get:function get(){return this._dist},set:function set(dist){this._dist=dist}},{key:"pixelSpacing",get:function get(){return this._pixelSpacing},set:function set(pixelSpacing){this._pixelSpacing=pixelSpacing}},{key:"pixelAspectRatio",get:function get(){return this._pixelAspectRatio},set:function set(pixelAspectRatio){this._pixelAspectRatio=pixelAspectRatio}},{key:"minMax",get:function get(){return this._minMax},set:function set(minMax){this._minMax=minMax}},{key:"dimensionIndexValues",get:function get(){return this._dimensionIndexValues},set:function set(dimensionIndexValues){this._dimensionIndexValues=dimensionIndexValues}},{key:"instanceNumber",get:function get(){return this._instanceNumber},set:function set(instanceNumber){this._instanceNumber=instanceNumber}},{key:"pixelData",get:function get(){return this._pixelData},set:function set(pixelData){this._pixelData=pixelData}},{key:"sopInstanceUID",set:function set(sopInstanceUID){this._sopInstanceUID=sopInstanceUID},get:function get(){return this._sopInstanceUID}},{key:"pixelType",get:function get(){return this._pixelType},set:function set(pixelType){this._pixelType=pixelType}},{key:"url",get:function get(){return this._url},set:function set(url){this._url=url}},{key:"referencedSegmentNumber",get:function get(){return this._referencedSegmentNumber},set:function set(referencedSegmentNumber){this._referencedSegmentNumber=referencedSegmentNumber}},{key:"rightHanded",get:function get(){return this._rightHanded},set:function set(rightHanded){this._rightHanded=rightHanded}}]);return ModelsFrame}(_models2.default);exports.default=ModelsFrame},{"../../src/models/models.base":114}],116:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _models=require("./models.frame");var _models2=_interopRequireDefault(_models);var _models3=require("./models.stack");var _models4=_interopRequireDefault(_models3);var _models5=require("./models.series");var _models6=_interopRequireDefault(_models5);var _models7=require("./models.voxel");var _models8=_interopRequireDefault(_models7);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Frame:_models2.default,Stack:_models4.default,Series:_models6.default,Voxel:_models8.default}},{"./models.frame":115,"./models.series":117,"./models.stack":118,"./models.voxel":119}],117:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0){this._numberOfFrames=this._frame.length}else{window.console.log("_frame doesn't contain anything....");window.console.log(this._frame);return false}this._rows=this._frame[0].rows;this._columns=this._frame[0].columns;this._dimensionsIJK=new THREE.Vector3(this._columns,this._rows,this._numberOfFrames);this._halfDimensionsIJK=new THREE.Vector3(this._dimensionsIJK.x/2,this._dimensionsIJK.y/2,this._dimensionsIJK.z/2);this._spacingBetweenSlices=this._frame[0].spacingBetweenSlices;this._sliceThickness=this._frame[0].sliceThickness;this.computeCosines();this.orderFrames();this.computeSpacing();if(!this._frame[0].imagePosition){this._frame[0].imagePosition=[0,0,0]}if(!this._frame[0].imageOrientation){this._frame[0].imageOrientation=[1,0,0,0,1,0]}this._origin=this._vector3FromArray(this._frame[0].imagePosition,0);this.computeIJK2LPS();this.computeLPS2AABB();this._rescaleSlope=this._frame[0].rescaleSlope||1;this._rescaleIntercept=this._frame[0].rescaleIntercept||0;this.computeMinMaxIntensities();this._minMax[0]=ModelsStack.valueRescaleSlopeIntercept(this._minMax[0],this._rescaleSlope,this._rescaleIntercept);this._minMax[1]=ModelsStack.valueRescaleSlopeIntercept(this._minMax[1],this._rescaleSlope,this._rescaleIntercept);var width=this._frame[0].windowWidth||this._minMax[1]-this._minMax[0];this._windowWidth=this._rescaleSlope*width+this._rescaleIntercept;var center=this._frame[0].windowCenter||this._minMax[0]+width/2;this._windowCenter=this._rescaleSlope*center+this._rescaleIntercept;this._bitsAllocated=this._frame[0].bitsAllocated;this._prepared=true}},{key:"packEchos",value:function packEchos(){var echos=4;var packedEcho=[];for(var i=0;i1){if(this._spacingBetweenSlices){this._spacing.z=this._spacingBetweenSlices}else if(this._frame[0].pixelSpacing&&this._frame[0].pixelSpacing[2]){this._spacing.z=this._frame[0].pixelSpacing[2]}else{this._frame.map(this._computeDistanceArrayMap.bind(null,this._zCosine));this._frame.sort(this._sortDistanceArraySort);this._spacing.z=this._frame[1].dist-this._frame[0].dist}}if(this._spacing.z===0){this._spacing.z=1}}},{key:"xySpacing",value:function xySpacing(){if(this._frame&&this._frame[0]){var spacingXY=this._frame[0].spacingXY();this._spacing.x=spacingXY[0];this._spacing.y=spacingXY[1]}}},{key:"computeMinMaxIntensities",value:function computeMinMaxIntensities(){for(var i=0;inbVoxels){voxelIndexStop=nbVoxels}for(var ii=0;iinbVoxels){voxelIndexStop=nbVoxels}}this._packed=true}},{key:"_packTo8Bits",value:function _packTo8Bits(bits,pixelType,channels,frame,textureSize,startVoxel,stopVoxel){var packed={textureType:null,data:null};var packIndex=0;var frameIndex=0;var inFrameIndex=0;var frameDimension=frame[0].rows*frame[0].columns;var data=null;if(bits===8&&channels===1||bits===1){var _data=new Uint8Array(textureSize*textureSize*1);for(var i=startVoxel;i>>8&255;packIndex++;coordinate=Math.floor(packIndex/2);channelOffset=packIndex%2}packed.textureType=THREE.RGBAFormat;packed.data=_data2}else if(bits===32&&channels===1&&pixelType===0){var _data3=new Uint8Array(textureSize*textureSize*4);for(var _i4=startVoxel;_i4>>8&255;_data3[4*packIndex+2]=_raw>>>8&255;_data3[4*packIndex+3]=_raw>>>8&255;packIndex++}packed.textureType=THREE.RGBAFormat;packed.data=_data3}else if(bits===32&&channels===1&&pixelType===1){var _data4=new Uint8Array(textureSize*textureSize*4);for(var _i5=startVoxel;_i5parseInt(b.dimensionIndexValues[i],10)){return 1}if(parseInt(a.dimensionIndexValues[i],10)=0&&ijkCoordinate.z=0&&index.y>=0&&index.z>=0&&index.x0){segmentationCodeDesignator=element.items[0].dataSet.string("x00080102");segmentationCodeValue=element.items[0].dataSet.string("x00080100");segmentationCodeMeaning=element.items[0].dataSet.string("x00080104")}return{segmentationCodeDesignator:segmentationCodeDesignator,segmentationCodeValue:segmentationCodeValue,segmentationCodeMeaning:segmentationCodeMeaning}}},{key:"_recommendedDisplayCIELab",value:function _recommendedDisplayCIELab(segment){if(!segment.dataSet.elements.x0062000d){return null}var offset=segment.dataSet.elements.x0062000d.dataOffset;var length=segment.dataSet.elements.x0062000d.length;var byteArray=segment.dataSet.byteArray.slice(offset,offset+length);var CIELabScaled=new Uint16Array(length/2);for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:0;var sopInstanceUID=this._findStringEverywhere("x2005140f","x00080018",frameIndex);return sopInstanceUID}},{key:"transferSyntaxUID",value:function transferSyntaxUID(){return this._dataSet.string("x00020010")}},{key:"photometricInterpretation",value:function photometricInterpretation(){return this._dataSet.string("x00280004")}},{key:"planarConfiguration",value:function planarConfiguration(){var planarConfiguration=this._dataSet.uint16("x00280006");if(typeof planarConfiguration==="undefined"){planarConfiguration=null}return planarConfiguration}},{key:"samplesPerPixel",value:function samplesPerPixel(){return this._dataSet.uint16("x00280002")}},{key:"numberOfFrames",value:function numberOfFrames(){var numberOfFrames=this._dataSet.intString("x00280008");if(typeof numberOfFrames==="undefined"){numberOfFrames=null}return numberOfFrames}},{key:"numberOfChannels",value:function numberOfChannels(){var numberOfChannels=1;var photometricInterpretation=this.photometricInterpretation();if(!(photometricInterpretation!=="RGB"&&photometricInterpretation!=="PALETTE COLOR"&&photometricInterpretation!=="YBR_FULL"&&photometricInterpretation!=="YBR_FULL_422"&&photometricInterpretation!=="YBR_PARTIAL_422"&&photometricInterpretation!=="YBR_PARTIAL_420"&&photometricInterpretation!=="YBR_RCT")){numberOfChannels=3}return numberOfChannels}},{key:"invert",value:function invert(){var photometricInterpretation=this.photometricInterpretation();return photometricInterpretation==="MONOCHROME1"?true:false}},{key:"imageOrientation",value:function imageOrientation(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var imageOrientation=this._findStringEverywhere("x00209116","x00200037",frameIndex);if(imageOrientation){imageOrientation=imageOrientation.split("\\").map(Number)}return imageOrientation}},{key:"referencedSegmentNumber",value:function referencedSegmentNumber(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var referencedSegmentNumber=-1;var referencedSegmentNumberElement=this._findInGroupSequence("x52009230","x0062000a",frameIndex);if(referencedSegmentNumberElement!==null){referencedSegmentNumber=referencedSegmentNumberElement.uint16("x0062000b")}return referencedSegmentNumber}},{key:"pixelAspectRatio",value:function pixelAspectRatio(){var pixelAspectRatio=[this._dataSet.intString("x00280034",0),this._dataSet.intString("x00280034",1)];if(typeof pixelAspectRatio[0]==="undefined"){pixelAspectRatio=null}return pixelAspectRatio}},{key:"imagePosition",value:function imagePosition(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var imagePosition=this._findStringEverywhere("x00209113","x00200032",frameIndex);if(imagePosition){imagePosition=imagePosition.split("\\").map(Number)}return imagePosition}},{key:"instanceNumber",value:function instanceNumber(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var instanceNumber=null;var perFrameFunctionnalGroupSequence=this._dataSet.elements.x52009230;if(typeof perFrameFunctionnalGroupSequence!=="undefined"){if(perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x2005140f){var planeOrientationSequence=perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x2005140f.items[0].dataSet;instanceNumber=planeOrientationSequence.intString("x00200013")}else{instanceNumber=this._dataSet.intString("x00200013");if(typeof instanceNumber==="undefined"){instanceNumber=null}}}else{instanceNumber=this._dataSet.intString("x00200013");if(typeof instanceNumber==="undefined"){instanceNumber=null}}return instanceNumber}},{key:"pixelSpacing",value:function pixelSpacing(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var pixelSpacing=this._findStringEverywhere("x00289110","x00280030",frameIndex);if(pixelSpacing){pixelSpacing=pixelSpacing.split("\\").map(Number)}return pixelSpacing}},{key:"rows",value:function rows(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var rows=this._dataSet.uint16("x00280010");if(typeof rows==="undefined"){rows=null}return rows}},{key:"columns",value:function columns(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var columns=this._dataSet.uint16("x00280011");if(typeof columns==="undefined"){columns=null}return columns}},{key:"pixelType",value:function pixelType(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return 0}},{key:"pixelRepresentation",value:function pixelRepresentation(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var pixelRepresentation=this._dataSet.uint16("x00280103");return pixelRepresentation}},{key:"bitsAllocated",value:function bitsAllocated(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var bitsAllocated=this._dataSet.uint16("x00280100");return bitsAllocated}},{key:"highBit",value:function highBit(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var highBit=this._dataSet.uint16("x00280102");return highBit}},{key:"rescaleIntercept",value:function rescaleIntercept(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289145","x00281052",frameIndex)}},{key:"rescaleSlope",value:function rescaleSlope(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289145","x00281053",frameIndex)}},{key:"windowCenter",value:function windowCenter(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289132","x00281050",frameIndex)}},{key:"windowWidth",value:function windowWidth(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289132","x00281051",frameIndex)}},{key:"sliceThickness",value:function sliceThickness(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289110","x00180050",frameIndex)}},{key:"dimensionIndexValues",value:function dimensionIndexValues(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var dimensionIndexValues=[];var perFrameFunctionnalGroupSequence=this._dataSet.elements.x52009230;if(typeof perFrameFunctionnalGroupSequence!=="undefined"){var philipsPrivateSequence=perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111.items[0].dataSet;var element=philipsPrivateSequence.elements.x00209157;var nbValues=element.length/4;for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:0;var inStackPositionNumber=null;var perFrameFunctionnalGroupSequence=this._dataSet.elements.x52009230;if(typeof perFrameFunctionnalGroupSequence!=="undefined"){var philipsPrivateSequence=perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111.items[0].dataSet;inStackPositionNumber=philipsPrivateSequence.uint32("x00209057")}else{inStackPositionNumber=null}console.log("instack position "+inStackPositionNumber);return inStackPositionNumber}},{key:"stackID",value:function stackID(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var stackID=null;var perFrameFunctionnalGroupSequence=this._dataSet.elements.x52009230;if(typeof perFrameFunctionnalGroupSequence!=="undefined"){var philipsPrivateSequence=perFrameFunctionnalGroupSequence.items[frameIndex].dataSet.elements.x00209111.items[0].dataSet;stackID=philipsPrivateSequence.intString("x00209056")}else{stackID=null}return stackID}},{key:"extractPixelData",value:function extractPixelData(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var decompressedData=this._decodePixelData(frameIndex);var numberOfChannels=this.numberOfChannels();if(numberOfChannels>1){return this._convertColorSpace(decompressedData)}else{return decompressedData}}},{key:"minMaxPixelData",value:function minMaxPixelData(){var pixelData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var minMax=[65535,-32768];var numPixels=pixelData.length;for(var index=0;index0&&arguments[0]!==undefined?arguments[0]:0;var transferSyntaxUID=this.transferSyntaxUID();if(transferSyntaxUID==="1.2.840.10008.1.2.4.90"||transferSyntaxUID==="1.2.840.10008.1.2.4.91"){return this._decodeJ2K(frameIndex)}else if(transferSyntaxUID==="1.2.840.10008.1.2.4.57"||transferSyntaxUID==="1.2.840.10008.1.2.4.70"){return this._decodeJPEGLossless(frameIndex)}else if(transferSyntaxUID==="1.2.840.10008.1.2.4.50"||transferSyntaxUID==="1.2.840.10008.1.2.4.51"){return this._decodeJPEGBaseline(frameIndex)}else if(transferSyntaxUID==="1.2.840.10008.1.2"||transferSyntaxUID==="1.2.840.10008.1.2.1"){return this._decodeUncompressed(frameIndex)}else if(transferSyntaxUID==="1.2.840.10008.1.2.2"){var frame=this._decodeUncompressed(frameIndex);return this._swapFrame(frame)}else{throw"no decoder for transfer syntax "+transferSyntaxUID}}},{key:"_decodeJ2K",value:function _decodeJ2K(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var encodedPixelData=DicomParser.readEncapsulatedPixelData(this._dataSet,this._dataSet.elements.x7fe00010,frameIndex);var jpxImage=new Jpx;jpxImage.parse(encodedPixelData);var componentsCount=jpxImage.componentsCount;if(componentsCount!==1){throw"JPEG2000 decoder returned a componentCount of ${componentsCount}, when 1 is expected"}var tileCount=jpxImage.tiles.length;if(tileCount!==1){throw"JPEG2000 decoder returned a tileCount of ${tileCount}, when 1 is expected"}var tileComponents=jpxImage.tiles[0];var pixelData=tileComponents.items;return pixelData}},{key:"_decodeJPEGLossless",value:function _decodeJPEGLossless(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var encodedPixelData=DicomParser.readEncapsulatedPixelData(this._dataSet,this._dataSet.elements.x7fe00010,frameIndex);var pixelRepresentation=this.pixelRepresentation(frameIndex);var bitsAllocated=this.bitsAllocated(frameIndex);var byteOutput=bitsAllocated<=8?1:2;var decoder=new Jpeg.lossless.Decoder;var decompressedData=decoder.decode(encodedPixelData.buffer,encodedPixelData.byteOffset,encodedPixelData.length,byteOutput);if(pixelRepresentation===0){if(byteOutput===2){return new Uint16Array(decompressedData.buffer)}else{return new Uint8Array(decompressedData.buffer)}}else{return new Int16Array(decompressedData.buffer)}}},{key:"_decodeJPEGBaseline",value:function _decodeJPEGBaseline(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var encodedPixelData=DicomParser.readEncapsulatedPixelData(this._dataSet,this._dataSet.elements.x7fe00010,frameIndex);var rows=this.rows(frameIndex);var columns=this.columns(frameIndex);var bitsAllocated=this.bitsAllocated(frameIndex);var jpegBaseline=new JpegBaseline;jpegBaseline.parse(encodedPixelData);if(bitsAllocated===8){return jpegBaseline.getData(columns,rows)}else if(bitsAllocated===16){return jpegBaseline.getData16(columns,rows)}}},{key:"_decodeUncompressed",value:function _decodeUncompressed(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var pixelRepresentation=this.pixelRepresentation(frameIndex);var bitsAllocated=this.bitsAllocated(frameIndex);var pixelDataElement=this._dataSet.elements.x7fe00010;var pixelDataOffset=pixelDataElement.dataOffset;var numberOfChannels=this.numberOfChannels();var numPixels=this.rows(frameIndex)*this.columns(frameIndex)*numberOfChannels;var frameOffset=0;var buffer=this._dataSet.byteArray.buffer;if(pixelRepresentation===0&&bitsAllocated===8){frameOffset=pixelDataOffset+frameIndex*numPixels;return new Uint8Array(buffer,frameOffset,numPixels)}else if(pixelRepresentation===0&&bitsAllocated===16){frameOffset=pixelDataOffset+frameIndex*numPixels*2;return new Uint16Array(buffer,frameOffset,numPixels)}else if(pixelRepresentation===1&&bitsAllocated===16){frameOffset=pixelDataOffset+frameIndex*numPixels*2;return new Int16Array(buffer,frameOffset,numPixels)}else if(pixelRepresentation===0&&bitsAllocated===32){frameOffset=pixelDataOffset+frameIndex*numPixels*4;return new Uint32Array(buffer,frameOffset,numPixels)}else if(pixelRepresentation===0&&bitsAllocated===1){var newBuffer=new ArrayBuffer(numPixels);var newArray=new Uint8Array(newBuffer);frameOffset=pixelDataOffset+frameIndex*numPixels;var index=0;var bitStart=frameIndex*numPixels;var bitEnd=frameIndex*numPixels+numPixels;var byteStart=Math.floor(bitStart/8);var bitStartOffset=bitStart-byteStart*8;var byteEnd=Math.ceil(bitEnd/8);var targetBuffer=new Uint8Array(buffer,pixelDataOffset);for(var i=byteStart;i<=byteEnd;i++){while(bitStartOffset<8){switch(bitStartOffset){case 0:newArray[index]=targetBuffer[i]&1;break;case 1:newArray[index]=targetBuffer[i]>>>1&1;break;case 2:newArray[index]=targetBuffer[i]>>>2&1;break;case 3:newArray[index]=targetBuffer[i]>>>3&1;break;case 4:newArray[index]=targetBuffer[i]>>>4&1;break;case 5:newArray[index]=targetBuffer[i]>>>5&1;break;case 6:newArray[index]=targetBuffer[i]>>>6&1;break;case 7:newArray[index]=targetBuffer[i]>>>7&1;break;default:break}bitStartOffset++;index++;if(index>=numPixels){return newArray}}bitStartOffset=0}}}},{key:"_convertColorSpace",value:function _convertColorSpace(uncompressedData){var rgbData=null;var photometricInterpretation=this.photometricInterpretation();var planarConfiguration=this.planarConfiguration();if(photometricInterpretation==="RGB"&&planarConfiguration===0){rgbData=uncompressedData}else if(photometricInterpretation==="RGB"&&planarConfiguration===1){if(uncompressedData instanceof Int8Array){rgbData=new Int8Array(uncompressedData.length)}else if(uncompressedData instanceof Uint8Array){rgbData=new Uint8Array(uncompressedData.length)}else if(uncompressedData instanceof Int16Array){rgbData=new Int16Array(uncompressedData.length)}else if(uncompressedData instanceof Uint16Array){rgbData=new Uint16Array(uncompressedData.length)}else{throw"unsuported typed array: ${uncompressedData}"}var numPixels=uncompressedData.length/3;var rgbaIndex=0;var rIndex=0;var gIndex=numPixels;var bIndex=numPixels*2;for(var i=0;i=5){numberOfChannels=this._dataSet.dims[5];this._ordered=false}else if(this._dataSet.datatypeCode===128){numberOfChannels=3}else if(this._dataSet.datatypeCode===2304){numberOfChannels=4}return numberOfChannels}},{key:"sopInstanceUID",value:function sopInstanceUID(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return frameIndex}},{key:"rows",value:function rows(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.dims[2]}},{key:"columns",value:function columns(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.dims[1]}},{key:"pixelType",value:function pixelType(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var pixelType=0;if(this._dataSet.datatypeCode===16||this._dataSet.datatypeCode===64||this._dataSet.datatypeCode===1536){pixelType=1}return pixelType}},{key:"bitsAllocated",value:function bitsAllocated(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.numBitsPerVoxel}},{key:"pixelSpacing",value:function pixelSpacing(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return[this._dataSet.pixDims[1],this._dataSet.pixDims[2],this._dataSet.pixDims[3]]}},{key:"sliceThickness",value:function sliceThickness(){return null}},{key:"imageOrientation",value:function imageOrientation(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;if(this._dataSet.qform_code>0){var a=0,b=this._dataSet.quatern_b,c=this._dataSet.quatern_c,d=this._dataSet.quatern_d;a=1-(b*b+c*c+d*d);if(a<1e-7){a=1/Math.sqrt(b*b+c*c+d*d);b*=a;c*=a;d*=a;a=0}else{a=Math.sqrt(a)}if(this._dataSet.pixDims[0]<0){this._rightHanded=false}return[-(a*a+b*b-c*c-d*d),-2*(b*c+a*d),2*(b*d-a*c),-2*(b*c-a*d),-(a*a+c*c-b*b-d*d),2*(c*d+a*b)]}else if(this._dataSet.sform_code>0){console.log("sform > 0");var sx=this._dataSet.srow_x,sy=this._dataSet.srow_y,sz=this._dataSet.srow_z}else if(this._dataSet.qform_code===0){console.log("qform === 0")}return[1,0,0,0,1,0]}},{key:"imagePosition",value:function imagePosition(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return[-this._dataSet.qoffset_x,-this._dataSet.qoffset_y,this._dataSet.qoffset_z]}},{key:"dimensionIndexValues",value:function dimensionIndexValues(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"instanceNumber",value:function instanceNumber(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return frameIndex}},{key:"windowCenter",value:function windowCenter(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"windowWidth",value:function windowWidth(){ -var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"rescaleSlope",value:function rescaleSlope(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.scl_slope}},{key:"rescaleIntercept",value:function rescaleIntercept(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.scl_intercept}},{key:"minMaxPixelData",value:function minMaxPixelData(){var pixelData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var minMax=[65535,-32768];var numPixels=pixelData.length;for(var index=0;index0&&arguments[0]!==undefined?arguments[0]:0;return this._decompressUncompressed(frameIndex)}},{key:"_decompressUncompressed",value:function _decompressUncompressed(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var numberOfChannels=this.numberOfChannels();var numPixels=this.rows(frameIndex)*this.columns(frameIndex)*numberOfChannels;var frameOffset=frameIndex*numPixels;var buffer=this._niftiImage;if(!this._ordered&&this._orderedData===null){this._reorderData()}if(this._orderedData!==null){return this._orderedData.slice(frameOffset,frameOffset+numPixels)}else if(this._dataSet.datatypeCode===2){return new Uint8Array(buffer,frameOffset,numPixels)}else if(this._dataSet.datatypeCode===256){return new Int8Array(buffer,frameOffset,numPixels)}else if(this._dataSet.datatypeCode===512){frameOffset=frameOffset*2;return new Uint16Array(buffer,frameOffset,numPixels)}else if(this._dataSet.datatypeCode===4){frameOffset=frameOffset*2;return new Int16Array(buffer,frameOffset,numPixels)}else if(this._dataSet.datatypeCode===16){frameOffset=frameOffset*4;return new Float32Array(buffer,frameOffset,numPixels)}}},{key:"_reorderData",value:function _reorderData(){window.console.log("re-order");var numberOfChannels=this.numberOfChannels();var numPixels=this.rows()*this.columns()*numberOfChannels;var buffer=this._niftiImage;var totalNumPixels=numPixels*this.numberOfFrames();var tmp=null;this._orderedData=null;if(this._dataSet.datatypeCode===2){tmp=new Uint8Array(buffer,0,totalNumPixels);this._orderedData=new Uint8Array(tmp.length)}else if(this._dataSet.datatypeCode===256){tmp=new Int8Array(buffer,0,totalNumPixels);this._orderedData=new Int8Array(tmp.length)}else if(this._dataSet.datatypeCode===512){tmp=new Uint16Array(buffer,0,totalNumPixels);this._orderedData=new Uint16Array(tmp.length)}else if(this._dataSet.datatypeCode===4){tmp=new Int16Array(buffer,0,totalNumPixels);this._orderedData=new Int16Array(tmp.length)}else if(this._dataSet.datatypeCode===16){tmp=new Float32Array(buffer,0,totalNumPixels);this._orderedData=new Float32Array(tmp.length)}var numPixels2=tmp.length/3;var rgbaIndex=0;var rIndex=0;var gIndex=numPixels2;var bIndex=numPixels2*2;for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:0;return frameIndex}},{key:"rows",value:function rows(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.sizes[1]}},{key:"columns",value:function columns(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return this._dataSet.sizes[0]}},{key:"pixelType",value:function pixelType(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var pixelType=0;if(this._dataSet.type==="float"){pixelType=1}return pixelType}},{key:"bitsAllocated",value:function bitsAllocated(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var bitsAllocated=1;if(this._dataSet.type==="int8"||this._dataSet.type==="uint8"||this._dataSet.type==="char"){bitsAllocated=8}else if(this._dataSet.type==="int16"||this._dataSet.type==="uint16"||this._dataSet.type==="short"){bitsAllocated=16}else if(this._dataSet.type==="int32"||this._dataSet.type==="uint32"||this._dataSet.type==="float"){bitsAllocated=32}return bitsAllocated}},{key:"pixelSpacing",value:function pixelSpacing(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var x=new THREE.Vector3(this._dataSet.spaceDirections[0][0],this._dataSet.spaceDirections[0][1],this._dataSet.spaceDirections[0][2]);var y=new THREE.Vector3(this._dataSet.spaceDirections[1][0],this._dataSet.spaceDirections[1][1],this._dataSet.spaceDirections[1][2]);var z=new THREE.Vector3(this._dataSet.spaceDirections[2][0],this._dataSet.spaceDirections[2][1],this._dataSet.spaceDirections[2][2]);return[x.length(),y.length(),z.length()]}},{key:"sliceThickness",value:function sliceThickness(){return null}},{key:"imageOrientation",value:function imageOrientation(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var invertX=this._dataSet.space.match(/right/)?-1:1;var invertY=this._dataSet.space.match(/anterior/)?-1:1;var x=new THREE.Vector3(this._dataSet.spaceDirections[0][0]*invertX,this._dataSet.spaceDirections[0][1]*invertY,this._dataSet.spaceDirections[0][2]);x.normalize();var y=new THREE.Vector3(this._dataSet.spaceDirections[1][0]*invertX,this._dataSet.spaceDirections[1][1]*invertY,this._dataSet.spaceDirections[1][2]);y.normalize();return[x.x,x.y,x.z,y.x,y.y,y.z]}},{key:"imagePosition",value:function imagePosition(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return[this._dataSet.spaceOrigin[0],this._dataSet.spaceOrigin[1],this._dataSet.spaceOrigin[2]]}},{key:"dimensionIndexValues",value:function dimensionIndexValues(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"instanceNumber",value:function instanceNumber(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return frameIndex}},{key:"windowCenter",value:function windowCenter(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"windowWidth",value:function windowWidth(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return null}},{key:"rescaleSlope",value:function rescaleSlope(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return 1}},{key:"rescaleIntercept",value:function rescaleIntercept(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return 0}},{key:"minMaxPixelData",value:function minMaxPixelData(){var pixelData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var minMax=[65535,-32768];var numPixels=pixelData.length;for(var index=0;index0&&arguments[0]!==undefined?arguments[0]:0;return this._decompressUncompressed(frameIndex)}},{key:"_decompressUncompressed",value:function _decompressUncompressed(){var frameIndex=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var buffer=this._dataSet.buffer;var numberOfChannels=this.numberOfChannels();var numPixels=this.rows(frameIndex)*this.columns(frameIndex)*numberOfChannels;if(!this.rightHanded()){frameIndex=this.numberOfFrames()-1-frameIndex}var frameOffset=frameIndex*numPixels;if(this._unpackedData===null&&this._dataSet.encoding==="gzip"){var unpackedData=pako.inflate(this._dataSet.buffer);this._unpackedData=unpackedData.buffer;buffer=this._unpackedData}else if(this._dataSet.encoding==="gzip"){buffer=this._unpackedData}if(this._dataSet.type==="int8"||this._dataSet.type==="char"){frameOffset=frameOffset;return new Int8Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="uint8"){frameOffset=frameOffset;return new Uint8Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="int16"||this._dataSet.type==="short"){frameOffset=frameOffset*2;return new Int16Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="uint16"){frameOffset=frameOffset*2;return new Uint16Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="int32"){frameOffset=frameOffset*4;return new Int32Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="uint32"){frameOffset=frameOffset*4;return new Uint32Array(buffer,frameOffset,numPixels)}else if(this._dataSet.type==="float"){frameOffset=frameOffset*4;return new Float32Array(buffer,frameOffset,numPixels)}}}]);return ParsersNifti}(_parsers2.default);exports.default=ParsersNifti},{"./parsers.volume":124,"nrrd-js":50,pako:51}],124:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i>8&255}},{key:"_swap32",value:function _swap32(val){return(val&255)<<24|(val&65280)<<8|val>>8&65280|val>>24&255}},{key:"invert",value:function invert(){return false}}]);return ParsersVolume}();exports.default=ParsersVolume},{}],125:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:this._base;var rayOrigin=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._rayOrigin;var rayDirection=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._rayDirection;var aabbMin=arguments.length>3&&arguments[3]!==undefined?arguments[3]:this._aabbMin;var aabbMax=arguments.length>4&&arguments[4]!==undefined?arguments[4]:this._aabbMax;var tNear=arguments.length>5&&arguments[5]!==undefined?arguments[5]:this._tNear;var tFar=arguments.length>6&&arguments[6]!==undefined?arguments[6]:this._tFar;var intersect=arguments.length>7&&arguments[7]!==undefined?arguments[7]:this._intersect;this._base=baseFragment;return this.compute(rayOrigin,rayDirection,aabbMin,aabbMax,tNear,tFar,intersect)}},{key:"compute",value:function compute(rayOrigin,rayDirection,aabbMin,aabbMax,tNear,tFar,intersect){this.computeDefinition();this._base._functions[this._name]=this._definition;return this._name+"("+rayOrigin+", "+rayDirection+", "+aabbMin+", "+aabbMax+", "+tNear+", "+tFar+", "+intersect+");"}},{key:"computeDefinition",value:function computeDefinition(){this._definition="\nvoid "+this._name+"(vec3 rayOrigin, vec3 rayDirection, vec3 boxMin, vec3 boxMax, out float tNear, out float tFar, out bool intersect){\n // compute intersection of ray with all six bbox planes\n vec3 invRay = vec3(1.) / rayDirection;\n vec3 tBot = invRay * (boxMin - rayOrigin);\n vec3 tTop = invRay * (boxMax - rayOrigin);\n // re-order intersections to find smallest and largest on each axis\n vec3 tMin = min(tTop, tBot);\n vec3 tMax = max(tTop, tBot);\n // find the largest tMin and the smallest tMax\n float largest_tMin = max(max(tMin.x, tMin.y), max(tMin.x, tMin.z));\n float smallest_tMax = min(min(tMax.x, tMax.y), min(tMax.x, tMax.z));\n tNear = largest_tMin;\n tFar = smallest_tMax;\n intersect = smallest_tMax > largest_tMin;\n}\n\n "}}]);return IntersectBox}(_shaders2.default);exports.default=new IntersectBox},{"../shaders.base":131}],126:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:this._base;var dataCoordinates=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._dataCoordinates;var dataValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._dataValue;var offset=arguments.length>3&&arguments[3]!==undefined?arguments[3]:this._offset;this._base=baseFragment;return this.compute(dataCoordinates,dataValue,offset)}},{key:"compute",value:function compute(dataCoordinates,dataValue,offset){this.computeDefinition();this._base._functions[this._name]=this._definition;return this._name+"("+dataCoordinates+", "+dataValue+", "+offset+");"}},{key:"computeDefinition",value:function computeDefinition(){this._definition="\nvoid "+this._name+"(in ivec3 dataCoordinates, out vec4 dataValue, out int offset){\n \n int index = dataCoordinates.x\n + dataCoordinates.y * uDataDimensions.x\n + dataCoordinates.z * uDataDimensions.y * uDataDimensions.x;\n int indexP = int(index/uPackedPerPixel);\n offset = index - 2*indexP;\n\n // Map data index to right sampler2D texture\n int voxelsPerTexture = uTextureSize*uTextureSize;\n int textureIndex = int(floor(float(indexP) / float(voxelsPerTexture)));\n // modulo seems incorrect sometimes...\n // int inTextureIndex = int(mod(float(index), float(textureSize*textureSize)));\n int inTextureIndex = indexP - voxelsPerTexture*textureIndex;\n\n // Get row and column in the texture\n int colIndex = int(mod(float(inTextureIndex), float(uTextureSize)));\n int rowIndex = int(floor(float(inTextureIndex)/float(uTextureSize)));\n\n // Map row and column to uv\n vec2 uv = vec2(0,0);\n uv.x = (0.5 + float(colIndex)) / float(uTextureSize);\n uv.y = 1. - (0.5 + float(rowIndex)) / float(uTextureSize);\n\n //\n if(textureIndex == 0){ dataValue = texture2D(uTextureContainer[0], uv); }\n else if(textureIndex == 1){dataValue = texture2D(uTextureContainer[1], uv);}\n else if(textureIndex == 2){ dataValue = texture2D(uTextureContainer[2], uv); }\n else if(textureIndex == 3){ dataValue = texture2D(uTextureContainer[3], uv); }\n else if(textureIndex == 4){ dataValue = texture2D(uTextureContainer[4], uv); }\n else if(textureIndex == 5){ dataValue = texture2D(uTextureContainer[5], uv); }\n else if(textureIndex == 6){ dataValue = texture2D(uTextureContainer[6], uv); }\n\n}\n "}}]);return Texture3d}(_shaders2.default);exports.default=new Texture3d},{"../shaders.base":131}],127:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:this._base;var packedData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._packedData;var offset=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._offset;var unpackedData=arguments.length>3&&arguments[3]!==undefined?arguments[3]:this._unpackedData;this._base=baseFragment;return this.compute(packedData,offset,unpackedData)}},{key:"compute",value:function compute(packedData,offset,unpackedData){this.computeDefinition();this._base._functions[this._name]=this._definition;return this._name+"("+packedData+", "+offset+", "+unpackedData+");"}},{key:"computeDefinition",value:function computeDefinition(){var content="";if(this._base._uniforms.uNumberOfChannels.value===1){switch(this._base._uniforms.uBitsAllocated.value){case 1:case 8:content=this.upack8();break;case 16:content=this.upack16();break;case 32:content=this.upack32();break;default:content=this.upackDefault();break}}else{content=this.upackIdentity()}this._definition="\nvoid "+this._name+"(in vec4 packedData, in int offset, out vec4 unpackedData){\n\n"+content+"\n\n} \n "}},{key:"upack8",value:function upack8(){this._base._functions["uInt8"]=this.uInt8();return"\nuInt8(\n packedData.r,\n unpackedData.x);\n "}},{key:"upack16",value:function upack16(){this._base._functions["uInt16"]=this.uInt16();return"\nuInt16(\n packedData.r * float( 1 - offset) + packedData.b * float(offset),\n packedData.g * float( 1 - offset) + packedData.a * float(offset),\n unpackedData.x);\n "}},{key:"upack32",value:function upack32(){if(this._base._uniforms.uPixelType.value===0){this._base._functions["uInt32"]=this.uInt32();return"\nuInt32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n "}else{this._base._functions["uFloat32"]=this.uFloat32();return"\nuFloat32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n "}}},{key:"upackIdentity",value:function upackIdentity(){return"\n\nunpackedData = packedData;\n\n "}},{key:"uInt8",value:function uInt8(){return"\nvoid uInt8(in float r, out float value){\n value = r * 256.;\n}\n "}},{key:"uInt16",value:function uInt16(){return"\nvoid uInt16(in float r, in float a, out float value){\n value = r * 256. + a * 65536.;\n}\n "}},{key:"uInt32",value:function uInt32(){return"\nvoid uInt32(in float r, in float g, in float b, in float a, out float value){\n value = r * 256. + g * 65536. + b * 16777216. + a * 4294967296.;\n}\n "}},{key:"uFloat32",value:function uFloat32(){return"\nvoid uFloat32(in float r, in float g, in float b, in float a, out float value){\n\n // create arrays containing bits for rgba values\n // value between 0 and 255\n value = r * 255.;\n int bytemeR[8];\n bytemeR[0] = int(floor(value / 128.));\n value -= float(bytemeR[0] * 128);\n bytemeR[1] = int(floor(value / 64.));\n value -= float(bytemeR[1] * 64);\n bytemeR[2] = int(floor(value / 32.));\n value -= float(bytemeR[2] * 32);\n bytemeR[3] = int(floor(value / 16.));\n value -= float(bytemeR[3] * 16);\n bytemeR[4] = int(floor(value / 8.));\n value -= float(bytemeR[4] * 8);\n bytemeR[5] = int(floor(value / 4.));\n value -= float(bytemeR[5] * 4);\n bytemeR[6] = int(floor(value / 2.));\n value -= float(bytemeR[6] * 2);\n bytemeR[7] = int(floor(value));\n\n value = g * 255.;\n int bytemeG[8];\n bytemeG[0] = int(floor(value / 128.));\n value -= float(bytemeG[0] * 128);\n bytemeG[1] = int(floor(value / 64.));\n value -= float(bytemeG[1] * 64);\n bytemeG[2] = int(floor(value / 32.));\n value -= float(bytemeG[2] * 32);\n bytemeG[3] = int(floor(value / 16.));\n value -= float(bytemeG[3] * 16);\n bytemeG[4] = int(floor(value / 8.));\n value -= float(bytemeG[4] * 8);\n bytemeG[5] = int(floor(value / 4.));\n value -= float(bytemeG[5] * 4);\n bytemeG[6] = int(floor(value / 2.));\n value -= float(bytemeG[6] * 2);\n bytemeG[7] = int(floor(value));\n\n value = b * 255.;\n int bytemeB[8];\n bytemeB[0] = int(floor(value / 128.));\n value -= float(bytemeB[0] * 128);\n bytemeB[1] = int(floor(value / 64.));\n value -= float(bytemeB[1] * 64);\n bytemeB[2] = int(floor(value / 32.));\n value -= float(bytemeB[2] * 32);\n bytemeB[3] = int(floor(value / 16.));\n value -= float(bytemeB[3] * 16);\n bytemeB[4] = int(floor(value / 8.));\n value -= float(bytemeB[4] * 8);\n bytemeB[5] = int(floor(value / 4.));\n value -= float(bytemeB[5] * 4);\n bytemeB[6] = int(floor(value / 2.));\n value -= float(bytemeB[6] * 2);\n bytemeB[7] = int(floor(value));\n\n value = a * 255.;\n int bytemeA[8];\n bytemeA[0] = int(floor(value / 128.));\n value -= float(bytemeA[0] * 128);\n bytemeA[1] = int(floor(value / 64.));\n value -= float(bytemeA[1] * 64);\n bytemeA[2] = int(floor(value / 32.));\n value -= float(bytemeA[2] * 32);\n bytemeA[3] = int(floor(value / 16.));\n value -= float(bytemeA[3] * 16);\n bytemeA[4] = int(floor(value / 8.));\n value -= float(bytemeA[4] * 8);\n bytemeA[5] = int(floor(value / 4.));\n value -= float(bytemeA[5] * 4);\n bytemeA[6] = int(floor(value / 2.));\n value -= float(bytemeA[6] * 2);\n bytemeA[7] = int(floor(value));\n\n // compute float32 value from bit arrays\n\n // sign\n int issigned = 1 - 2 * bytemeR[0];\n // issigned = int(pow(-1., float(bytemeR[0])));\n\n // exponent\n int exponent = 0;\n\n exponent += bytemeR[1] * int(pow(2., 7.));\n exponent += bytemeR[2] * int(pow(2., 6.));\n exponent += bytemeR[3] * int(pow(2., 5.));\n exponent += bytemeR[4] * int(pow(2., 4.));\n exponent += bytemeR[5] * int(pow(2., 3.));\n exponent += bytemeR[6] * int(pow(2., 2.));\n exponent += bytemeR[7] * int(pow(2., 1.));\n\n exponent += bytemeG[0];\n\n\n // fraction\n float fraction = 0.;\n\n fraction = float(bytemeG[1]) * pow(2., -1.);\n fraction += float(bytemeG[2]) * pow(2., -2.);\n fraction += float(bytemeG[3]) * pow(2., -3.);\n fraction += float(bytemeG[4]) * pow(2., -4.);\n fraction += float(bytemeG[5]) * pow(2., -5.);\n fraction += float(bytemeG[6]) * pow(2., -6.);\n fraction += float(bytemeG[7]) * pow(2., -7.);\n\n fraction += float(bytemeB[0]) * pow(2., -8.);\n fraction += float(bytemeB[1]) * pow(2., -9.);\n fraction += float(bytemeB[2]) * pow(2., -10.);\n fraction += float(bytemeB[3]) * pow(2., -11.);\n fraction += float(bytemeB[4]) * pow(2., -12.);\n fraction += float(bytemeB[5]) * pow(2., -13.);\n fraction += float(bytemeB[6]) * pow(2., -14.);\n fraction += float(bytemeB[7]) * pow(2., -15.);\n\n fraction += float(bytemeA[0]) * pow(2., -16.);\n fraction += float(bytemeA[1]) * pow(2., -17.);\n fraction += float(bytemeA[2]) * pow(2., -18.);\n fraction += float(bytemeA[3]) * pow(2., -19.);\n fraction += float(bytemeA[4]) * pow(2., -20.);\n fraction += float(bytemeA[5]) * pow(2., -21.);\n fraction += float(bytemeA[6]) * pow(2., -22.);\n fraction += float(bytemeA[7]) * pow(2., -23.);\n\n value = float(issigned) * pow( 2., float(exponent - 127)) * (1. + fraction);\n}\n "; -}}]);return Unpack}(_shaders2.default);exports.default=new Unpack},{"../shaders.base":131}],128:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:this._base;var currentVoxel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._currentVoxel;var dataValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._dataValue;this._base=baseFragment;return this.compute(currentVoxel,dataValue)}},{key:"compute",value:function compute(currentVoxel,dataValue){this.computeDefinition();this._base._functions[this._name]=this._definition;return this._name+"("+currentVoxel+", "+dataValue+");"}},{key:"computeDefinition",value:function computeDefinition(){this._definition="\nvoid "+this._name+"(in vec3 currentVoxel, out vec4 dataValue){\n // lower bound\n vec3 rcurrentVoxel = vec3(floor(currentVoxel.x + 0.5 ), floor(currentVoxel.y + 0.5 ), floor(currentVoxel.z + 0.5 ));\n ivec3 voxel = ivec3(int(rcurrentVoxel.x), int(rcurrentVoxel.y), int(rcurrentVoxel.z));\n\n vec4 tmp = vec4(0., 0., 0., 0.);\n int offset = 0;\n\n "+_shadersHelpers4.default.api(this._base,"voxel","tmp","offset")+"\n "+_shadersHelpers2.default.api(this._base,"tmp","offset","dataValue")+"\n}\n "}}]);return InterpolationIdentity}(_shaders2.default);exports.default=new InterpolationIdentity},{"../helpers/shaders.helpers.texture3d":126,"../helpers/shaders.helpers.unpack":127,"../shaders.base":131}],129:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _shadersInterpolation=require("./shaders.interpolation.identity");var _shadersInterpolation2=_interopRequireDefault(_shadersInterpolation);var _shadersInterpolation3=require("./shaders.interpolation.trilinear");var _shadersInterpolation4=_interopRequireDefault(_shadersInterpolation3);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function shadersInterpolation(baseFragment,currentVoxel,dataValue,gradient){switch(baseFragment._uniforms.uInterpolation.value){case 0:return _shadersInterpolation2.default.api(baseFragment,currentVoxel,dataValue);case 1:return _shadersInterpolation4.default.api(baseFragment,currentVoxel,dataValue,gradient);default:return _shadersInterpolation2.default.api(baseFragment,currentVoxel,dataValue)}}exports.default=shadersInterpolation},{"./shaders.interpolation.identity":128,"./shaders.interpolation.trilinear":130}],130:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:this._base;var currentVoxel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._currentVoxel;var dataValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._dataValue;var gradient=arguments.length>3&&arguments[3]!==undefined?arguments[3]:this._gradient;this._base=baseFragment;return this.compute(currentVoxel,dataValue,gradient)}},{key:"compute",value:function compute(currentVoxel,dataValue,gradient){this.computeDefinition();this._base._functions[this._name]=this._definition;return this._name+"("+currentVoxel+", "+dataValue+", "+gradient+");"}},{key:"computeDefinition",value:function computeDefinition(){this._definition="\nvoid "+this._name+"(in vec3 currentVoxel, out vec4 dataValue, out vec3 gradient){\n\n // https://en.wikipedia.org/wiki/Trilinear_interpolation\n vec3 lower_bound = vec3(floor(currentVoxel.x), floor(currentVoxel.y), floor(currentVoxel.z));\n vec3 higher_bound = lower_bound + vec3(1);\n\n float xd = ( currentVoxel.x - lower_bound.x ) / ( higher_bound.x - lower_bound.x );\n float yd = ( currentVoxel.y - lower_bound.y ) / ( higher_bound.y - lower_bound.y );\n float zd = ( currentVoxel.z - lower_bound.z ) / ( higher_bound.z - lower_bound.z );\n\n //\n // c00\n //\n\n //\n\n vec4 v000 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c000 = vec3(lower_bound.x, lower_bound.y, lower_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c000","v000")+"\n vec3 g000 = v000.r * vec3(-1., -1., -1.);\n\n //\n\n vec4 v100 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c100 = vec3(higher_bound.x, lower_bound.y, lower_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c100","v100")+"\n vec3 g100 = v100.r * vec3(1., -1., -1.);\n\n vec4 c00 = v000 * ( 1.0 - xd ) + v100 * xd;\n\n //\n // c01\n //\n vec4 v001 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c001 = vec3(lower_bound.x, lower_bound.y, higher_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c001","v001")+"\n vec3 g001 = v001.r * vec3(-1., -1., 1.);\n\n vec4 v101 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c101 = vec3(higher_bound.x, lower_bound.y, higher_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c101","v101")+"\n vec3 g101 = v101.r * vec3(1., -1., 1.);\n\n vec4 c01 = v001 * ( 1.0 - xd ) + v101 * xd;\n\n //\n // c10\n //\n vec4 v010 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c010 = vec3(lower_bound.x, higher_bound.y, lower_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c010","v010")+"\n vec3 g010 = v010.r * vec3(-1., 1., -1.);\n\n vec4 v110 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c110 = vec3(higher_bound.x, higher_bound.y, lower_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c110","v110")+"\n vec3 g110 = v110.r * vec3(1., 1., -1.);\n\n vec4 c10 = v010 * ( 1.0 - xd ) + v110 * xd;\n\n //\n // c11\n //\n vec4 v011 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c011 = vec3(lower_bound.x, higher_bound.y, higher_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c011","v011")+"\n vec3 g011 = v011.r * vec3(-1., 1., 1.);\n\n vec4 v111 = vec4(0.0, 0.0, 0.0, 0.0);\n vec3 c111 = vec3(higher_bound.x, higher_bound.y, higher_bound.z);\n "+_shadersInterpolation2.default.api(this._base,"c111","v111")+"\n vec3 g111 = v111.r * vec3(1., 1., 1.);\n\n vec4 c11 = v011 * ( 1.0 - xd ) + v111 * xd;\n\n // c0 and c1\n vec4 c0 = c00 * ( 1.0 - yd) + c10 * yd;\n vec4 c1 = c01 * ( 1.0 - yd) + c11 * yd;\n\n // c\n vec4 c = c0 * ( 1.0 - zd) + c1 * zd;\n dataValue = c;\n\n // compute gradient\n gradient = g000 + g100 + g010 + g110 + g011 + g111 + g110 + g011;\n // gradientMagnitude = length(gradient);\n // // https://en.wikipedia.org/wiki/Normal_(geometry)#Transforming_normals\n // vec3 localNormal = (-1. / gradientMagnitude) * gradient;\n // normal = normalize(normalPixelToPatient"+this.id+" * localNormal);\n //normal = gradient;\n\n}\n "}}]);return InterpolationTrilinear}(_shaders2.default);exports.default=new InterpolationTrilinear},{"../shaders.base":131,"./shaders.interpolation.identity":128}],131:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i tFar || accumulatedAlpha >= 1.0 ) break;\n }\n\n gl_FragColor = vec4(accumulatedColor.xyz, accumulatedAlpha);\n}\n "}},{key:"compute",value:function compute(){var shaderInterpolation="";return"\n// uniforms\n"+this.uniforms()+"\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vPos;\n\n// tailored functions\n"+this.functions()+"\n\n// main loop\n"+this._main+"\n "}}]);return ShadersFragment}();exports.default=ShadersFragment},{"./helpers/shaders.helpers.intersectBox":125,"./interpolation/shaders.interpolation":129}],140:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0){this._offset.copy(intersectsTarget[0].point).sub(this._mesh.position)}}else{var intersection=_core2.default.rayPlane(this._raycaster.ray,this._plane);if(intersection!==null){this._offset.copy(intersection).sub(this._plane.position)}}this.update()}}},{key:"onEnd",value:function onEnd(evt){evt.preventDefault();if(this._tracking===true){return}if(!this._dragged&&this._active){this._selected=!this._selected}this._active=false;this._dragged=false;this._controls.enabled=true;this.update()}},{key:"onMove",value:function onMove(evt){evt.preventDefault();this._mouse.set(event.clientX/this._container.offsetWidth*2-1,-(event.clientY/this._container.offsetHeight)*2+1);this._screenPosition=this.worldToScreen(this._worldPosition,this._camera,this._container);this._raycaster.setFromCamera(this._mouse,this._camera);this._raycaster.ray.position=this._raycaster.ray.origin;if(this._active){this._dragged=true;if(this._targetMesh!==null){var intersectsTarget=this._raycaster.intersectObject(this._targetMesh);if(intersectsTarget.length>0){this._worldPosition.copy(intersectsTarget[0].point.sub(this._offset))}}else{if(this._plane.direction.length()===0){this._plane.position.copy(this._worldPosition);this._plane.direction.copy(this._camera.getWorldDirection())}var intersection=_core2.default.rayPlane(this._raycaster.ray,this._plane);if(intersection!==null){this._worldPosition.copy(intersection.sub(this._offset))}}}else{this.onHover(null);if(this._targetMesh===null){this._plane.position.copy(this._worldPosition);this._plane.direction.copy(this._camera.getWorldDirection())}}this.update()}},{key:"onHover",value:function onHover(evt){if(evt){evt.preventDefault();this.hoverDom(evt)}this.hoverMesh();this._hovered=this._meshHovered||this._domHovered;this._container.style.cursor=this._hovered?"pointer":"default"}},{key:"update",value:function update(){this.updateColor();this.updateMeshColor();this.updateMeshPosition();this.updateDOMColor();this.updateDOMPosition()}},{key:"updateMeshColor",value:function updateMeshColor(){if(this._material){this._material.color.set(this._color)}}},{key:"updateMeshPosition",value:function updateMeshPosition(){if(this._mesh){this._mesh.position.x=this._worldPosition.x;this._mesh.position.y=this._worldPosition.y;this._mesh.position.z=this._worldPosition.z}}},{key:"hoverMesh",value:function hoverMesh(){var intersectsHandle=this._raycaster.intersectObject(this._mesh);this._meshHovered=intersectsHandle.length>0}},{key:"hoverDom",value:function hoverDom(evt){this._domHovered=evt.type==="mouseenter"}},{key:"worldToScreen",value:function worldToScreen(worldCoordinate,camera,canvas){var screenCoordinates=worldCoordinate.clone();screenCoordinates.project(camera);screenCoordinates.x=Math.round((screenCoordinates.x+1)*canvas.offsetWidth/2);screenCoordinates.y=Math.round((-screenCoordinates.y+1)*canvas.offsetHeight/2);screenCoordinates.z=0;return screenCoordinates}},{key:"createMesh",value:function createMesh(){this._geometry=new THREE.SphereGeometry(2,32,32);this._material=new THREE.MeshBasicMaterial({wireframe:true,wireframeLinewidth:2});this._mesh=new THREE.Mesh(this._geometry,this._material);this._mesh.position.x=this._worldPosition.x;this._mesh.position.y=this._worldPosition.y;this._mesh.position.z=this._worldPosition.z;this._mesh.visible=true;this.updateMeshColor();this.add(this._mesh)}},{key:"createDOM",value:function createDOM(){this._dom=document.createElement("div");this._dom.setAttribute("id",this.uuid);this._dom.setAttribute("class","widgets handle");this._dom.style.border="2px solid";this._dom.style.backgroundColor="#F9F9F9";this._dom.style.color="#F9F9F9";this._dom.style.position="absolute";this._dom.style.width="12px";this._dom.style.height="12px";this._dom.style.margin="-6px";this._dom.style.borderRadius="50%";this._dom.style.transformOrigin="0 100%";var posY=this._screenPosition.y-this._container.offsetHeight;this._dom.style.transform="translate3D("+this._screenPosition.x+"px, "+posY+"px, 0)";this.updateDOMColor();this._container.appendChild(this._dom)}},{key:"updateDOMPosition",value:function updateDOMPosition(){if(this._dom){var posY=this._screenPosition.y-this._container.offsetHeight;this._dom.style.transform="translate3D("+this._screenPosition.x+"px, "+posY+"px, 0)"}}},{key:"updateDOMColor",value:function updateDOMColor(){this._dom.style.borderColor=""+this._color}},{key:"free",value:function free(){this.removeEventListeners()}},{key:"worldPosition",set:function set(worldPosition){this._worldPosition.copy(worldPosition);this._screenPosition=this.worldToScreen(this._worldPosition,this._camera,this._container);this.update()},get:function get(){return this._worldPosition}},{key:"screenPosition",set:function set(screenPosition){this._screenPosition=screenPosition},get:function get(){return this._screenPosition}},{key:"active",get:function get(){return this._active},set:function set(active){this._active=active;this._controls.enabled=!this._active;this.update()}},{key:"tracking",get:function get(){return this._tracking},set:function set(tracking){this._tracking=tracking;this.update()}}]);return WidgetsHandle}(_widgets2.default);exports.default=WidgetsHandle},{"../../src/core/core.intersections":93,"../../src/widgets/widgets.base":142}],144:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _widgets=require("./widgets.handle");var _widgets2=_interopRequireDefault(_widgets);var _widgets3=require("./widgets.voxelProbe");var _widgets4=_interopRequireDefault(_widgets3);var _widgets5=require("./widgets.ruler");var _widgets6=_interopRequireDefault(_widgets5);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default={Handle:_widgets2.default,VoxelProbe:_widgets4.default,Ruler:_widgets6.default}},{"./widgets.handle":143,"./widgets.ruler":145,"./widgets.voxelProbe":146}],145:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i=0){this.activateVoxel()}}}},{key:"updateRaycaster",value:function updateRaycaster(raycaster,event,container){this._mouse={x:event.clientX/container.offsetWidth*2-1,y:-(event.clientY/container.offsetHeight)*2+1,screenX:event.clientX,screenY:event.clientY};raycaster.setFromCamera(this._mouse,this._camera)}},{key:"updateColor",value:function updateColor(voxel){if(voxel._active){voxel.color=this._activeColor}else if(voxel.hover){voxel.color=this._hoverColor}else if(voxel.selected){voxel.color=this._selectedColor}else{voxel.color=this._defaultColor}}},{key:"deleteAllSelected",value:function deleteAllSelected(){var i=this._voxels.length;while(i--){var match=this._selected.indexOf(i);if(match>=0){if(this._active===i){this._active=-1}this.remove(this._voxels[i]);this._voxels[i].removeTest();this._voxels.splice(i,1)}}this._selected=[];this._closest=null}},{key:"selectVoxel",value:function selectVoxel(){var selIndex=this._selected.indexOf(this._active);if(selIndex===-1){this._selected.push(this._active);this._voxels[this._active].selected=true;this.updateColor(this._voxels[this._active])}else{this._selected.splice(selIndex,1);this._voxels[this._active].selected=false}}},{key:"activateVoxel",value:function activateVoxel(){if(this._active===-1){var intersects=this._raycaster.intersectObject(this._targetMesh);if(intersects.length>0){if(this._hover>=0||this._closest!==null&&this._voxels[this._closest].distance<10){var index=Math.max(this._hover,this._closest);this._voxels[index]._active=true;this.updateColor(this._voxels[index]);this._active=index;this._controls.enabled=false}}}else{this._voxels[this._active].active=false;this._active=-1;this._controls.enabled=true}}},{key:"createVoxel",value:function createVoxel(){if(this._hover>=0){return}var intersects=this._raycaster.intersectObject(this._targetMesh);if(intersects.length>0){var helpersVoxel=new _helpers2.default(intersects[0].point,this._stack);this.add(helpersVoxel);this._voxels.push(helpersVoxel);helpersVoxel.updateVoxelScreenCoordinates(this._camera,this._container);this.hoverVoxel(helpersVoxel,this._mouse,this._current.voxel.dataCoordinates);this.updateColor(helpersVoxel);helpersVoxel.updateDom(this._container);helpersVoxel.showVoxel=this._showVoxel;helpersVoxel.showDomSVG=this._showDomSVG;helpersVoxel.showDomMeasurements=this._showDomMeasurements}}},{key:"update",value:function update(){if(!this._targetMesh){return}var intersects=this._raycaster.intersectObject(this._targetMesh);if(intersects.length>0){this._current.worldCoordinates=intersects[0].point;this._current.updateVoxelScreenCoordinates(this._camera,this._container);this.updateColor(this._current);this._current.updateDom(this._container);this._current.showVoxel=this._showVoxel;this._current.showDomSVG=this._showDomSVG;this._current.showDomMeasurements=this._showDomMeasurements;if(this._active>=0){this._voxels[this._active].worldCoordinates=intersects[0].point}}this.updateVoxels()}},{key:"updateVoxels",value:function updateVoxels(){var hover=-1;var closest=null;for(var i=0;i=0&&distance<10){helpersVoxel.hover=true}else{helpersVoxel.hover=false}}}},{key:"showOfIntersectsFrame",value:function showOfIntersectsFrame(voxelHelper,frameIndex){if(frameIndex===voxelHelper.voxel.dataCoordinates.z||frameIndex===-1){voxelHelper._showDomSVG=true;voxelHelper._showDomMeasurements=true}else{voxelHelper._showDomSVG=false;voxelHelper._showDomMeasurements=false}}},{key:"defaultColor",set:function set(defaultColor){this._defaultColor=defaultColor;this.update()},get:function get(){return this._defaultColor}},{key:"activeColor",set:function set(activeColor){this._activeColor=activeColor;this.update()},get:function get(){return this._activeColor}},{key:"hoverColor",set:function set(hoverColor){this._hoverColor=hoverColor;this.update()},get:function get(){return this._hoverColor}},{key:"selectedColor",set:function set(selectedColor){this._selectedColor=selectedColor;this.update()},get:function get(){return this._selectedColor}},{key:"showVoxel",set:function set(showVoxel){this._showVoxel=showVoxel;this.update()},get:function get(){return this._showVoxel}},{key:"showDomSVG",set:function set(showDomSVG){this._showDomSVG=showDomSVG;this.update()},get:function get(){return this._showDomSVG}},{key:"showDomMeasurements",set:function set(showDomMeasurements){this._showDomMeasurements=showDomMeasurements;this.update()},get:function get(){return this._showDomMeasurements}}]);return WidgetsVoxelProbe}(THREE.Object3D);exports.default=WidgetsVoxelProbe},{"../../src/helpers/helpers.voxel":110}]},{},[86])(86)}); \ No newline at end of file diff --git a/bower.json b/bower.json index f8d30b1..7cd7573 100644 --- a/bower.json +++ b/bower.json @@ -2,10 +2,11 @@ "name": "ami-import", "description": "AMI JS Import for Polymer - no goodies, no bundles, nothing else. Just ami.js. (and Three JS of course)", "main": "ami-import.html", - "version": "0.0.12", + "version": "0.0.13", "dependencies": { "polymer": "Polymer/polymer#^1.7.0", - "three-import": "NicolasRannou/three-import#r82" + "threejs": "r82", + "ami.js": "0.0.12" }, "devDependencies": { "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",