diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dedbd86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,108 @@ +# Dependency directories +node_modules/ +jspm_packages/ +three/ +.DS_Store +src/example04 + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port diff --git a/README.md b/README.md index 8e6ee72..5ea5baf 100644 --- a/README.md +++ b/README.md @@ -1 +1,77 @@ -# threejs-modules \ No newline at end of file +# threejs-modules + +## How to use: + +cd THREEJS-MODULES +npm install +npm run serve + +## The basic library useage: + +![avatar](/public/images/1.png) + +## ABI_ThreeModule + +- This folder is js library + It includes index.js, and below is the files structure image. + +![avatar](/public/images/2.png) + +index.js: +initThreeD(): +@Paras: a dom element +Return: {Scene, Camera} +export:{initThreeD, loadObjFile, loadMTLFile, loadGLTFFile} + +basefn.js: +createCamera(): +@Paras: type, aspect, fov = 75, near = 1, far = 1000, s = 100 (The type is a bool, ture means PerspectiveCamera, false means OrthographicCamera) +Return Camera + +createLight(): +@Paras: color, intensity +Return {pointLight, ambientLight} + +loadInmage(): +@Paras: imageUrl, container, scene (the container is a dom element is same as initThreeD() parameter) + +export { createCamera, createLight, loadImage } + +gui.js: +buildGUI(): +@Paras: - gui (the lil-GUI obj) - controlers (the objects while will be controled) - controler_flag (flags for different controlers) +export { buildGUI } + +loadModules.js: +getMaterial(): +@Paras: null +Return: material + +loadObjFile(): +@Paras: url(the .Obj file path/url), scene, camera, material=null + +loadMTLFile(): +@Paras: + +- url_mtl: .mtl file url +- url_obj: .obj file url +- scene: the basic scene object +- camera: the camera object +- progressBar: the loading bar dom + +loadGLTFFile(): +@Paras: + +- url: .gltf/.glb file url +- scene: the basic scene object +- camera: the camera object +- progressBar: the loading bar dom + export { loadObjFile, loadMTLFile, loadGLTFFile } + +## App folder + + This folder store the examples for how to use our library + +- How to use example: + npm install -g live-server + liver-server diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..30adc51 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,7 @@ +module.exports = { + presets: ["@babel/preset-env"], + plugins: [ + "@babel/plugin-transform-runtime", + "@babel/plugin-proposal-class-properties", + ], +}; diff --git a/build/ABIThree.js b/build/ABIThree.js new file mode 100644 index 0000000..ee7479b --- /dev/null +++ b/build/ABIThree.js @@ -0,0 +1,2 @@ +/*! For license information please see ABIThree.js.LICENSE.txt */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ABITHREE=t():e.ABITHREE=t()}(self,(function(){return(()=>{var e={757:(e,t,n)=>{e.exports=n(666)},875:e=>{var t;window,t=function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}({"./external/scripts/jpeg.js":function(e,t){var n={Unkown:0,Grayscale:1,AdobeRGB:2,RGB:3,CYMK:4},i=function(){"use strict";var e=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),t=4017,i=799,r=3406,o=2276,a=1567,s=3784,l=5793,c=2896;function h(){}function u(e,t){for(var n,i,r=0,o=[],a=16;a>0&&!e[a-1];)a--;o.push({children:[],index:0});var s,l=o[0];for(n=0;n0;)l=o.pop();for(l.index++,o.push(l);o.length<=n;)o.push(s={children:[],index:0}),l.children[l.index]=s.children,l=s;r++}n+10)return m--,p>>m&1;if(255==(p=t[n++])){var e=t[n++];if(e)throw"unexpected marker: "+(p<<8|e).toString(16)}return m=7,p>>>7}function _(e){for(var t,n=e;null!==(t=g());){if("number"==typeof(n=n[t]))return n;if("object"!=typeof n)throw"invalid huffman sequence"}return null}function y(e){for(var t=0;e>0;){var n=g();if(null===n)return;t=t<<1|n,e--}return t}function v(e){var t=y(e);return t>=1<0)w--;else for(var i=a,r=s;i<=r;){var o=_(t.huffmanTableAC),l=15&o,h=o>>4;if(0!==l){var u=e[i+=h];t.blockData[n+u]=v(l)*(1<>4,0===u)o<15?(w=y(o)+(1<>4;if(0!==s){var c=e[o+=l];t.blockData[n+c]=v(s),o++}else{if(l<15)break;o+=16}}};var L,R,B,D,O=0;for(R=1==P?r[0].blocksPerLine*r[0].blocksPerColumn:h*i.mcusPerColumn,o||(o=R);O=65488&&L<=65495))break;n+=2}return n-f}function p(e,n,h){var u,d,f,p,m,g,_,y,v,b,w=e.quantizationTable;for(b=0;b<64;b++)h[b]=e.blockData[n+b]*w[b];for(b=0;b<8;++b){var x=8*b;0!==h[1+x]||0!==h[2+x]||0!==h[3+x]||0!==h[4+x]||0!==h[5+x]||0!==h[6+x]||0!==h[7+x]?(u=l*h[0+x]+128>>8,d=l*h[4+x]+128>>8,f=h[2+x],p=h[6+x],m=c*(h[1+x]-h[7+x])+128>>8,y=c*(h[1+x]+h[7+x])+128>>8,g=h[3+x]<<4,_=h[5+x]<<4,v=u-d+1>>1,u=u+d+1>>1,d=v,v=f*s+p*a+128>>8,f=f*a-p*s+128>>8,p=v,v=m-_+1>>1,m=m+_+1>>1,_=v,v=y+g+1>>1,g=y-g+1>>1,y=v,v=u-p+1>>1,u=u+p+1>>1,p=v,v=d-f+1>>1,d=d+f+1>>1,f=v,v=m*o+y*r+2048>>12,m=m*r-y*o+2048>>12,y=v,v=g*i+_*t+2048>>12,g=g*t-_*i+2048>>12,_=v,h[0+x]=u+y,h[7+x]=u-y,h[1+x]=d+_,h[6+x]=d-_,h[2+x]=f+g,h[5+x]=f-g,h[3+x]=p+m,h[4+x]=p-m):(v=l*h[0+x]+512>>10,h[0+x]=v,h[1+x]=v,h[2+x]=v,h[3+x]=v,h[4+x]=v,h[5+x]=v,h[6+x]=v,h[7+x]=v)}for(b=0;b<8;++b){var A=b;0!==h[8+A]||0!==h[16+A]||0!==h[24+A]||0!==h[32+A]||0!==h[40+A]||0!==h[48+A]||0!==h[56+A]?(u=l*h[0+A]+2048>>12,d=l*h[32+A]+2048>>12,f=h[16+A],p=h[48+A],m=c*(h[8+A]-h[56+A])+2048>>12,y=c*(h[8+A]+h[56+A])+2048>>12,g=h[24+A],_=h[40+A],v=u-d+1>>1,u=u+d+1>>1,d=v,v=f*s+p*a+2048>>12,f=f*a-p*s+2048>>12,p=v,v=m-_+1>>1,m=m+_+1>>1,_=v,v=y+g+1>>1,g=y-g+1>>1,y=v,v=u-p+1>>1,u=u+p+1>>1,p=v,v=d-f+1>>1,d=d+f+1>>1,f=v,v=m*o+y*r+2048>>12,m=m*r-y*o+2048>>12,y=v,v=g*i+_*t+2048>>12,g=g*t-_*i+2048>>12,_=v,h[0+A]=u+y,h[56+A]=u-y,h[8+A]=d+_,h[48+A]=d-_,h[16+A]=f+g,h[40+A]=f-g,h[24+A]=p+m,h[32+A]=p-m):(v=l*h[b+0]+8192>>14,h[0+A]=v,h[8+A]=v,h[16+A]=v,h[24+A]=v,h[32+A]=v,h[40+A]=v,h[48+A]=v,h[56+A]=v)}for(b=0;b<64;++b){var S=n+b,M=h[b];M=M<=-2056/e.bitConversion?0:M>=2024/e.bitConversion?255/e.bitConversion:M+2056/e.bitConversion>>4,e.blockData[S]=M}}function m(e,t){for(var n=t.blocksPerLine,i=t.blocksPerColumn,r=new Int32Array(64),o=0;o=255?255:0|e}return h.prototype={load:function(e){var t=function(e){this.parse(e),this.onload&&this.onload()}.bind(this);if(e.indexOf("data:")>-1){for(var n=e.indexOf("base64,")+7,i=atob(e.substring(n)),r=new Uint8Array(i.length),o=i.length-1;o>=0;o--)r[o]=i.charCodeAt(o);t(i)}else{var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){var e=new Uint8Array(a.response);t(e)}.bind(this),a.send(null)}},parse:function(t){function i(){var e=t[l]<<8|t[l+1];return l+=2,e}function r(){var e=i(),n=t.subarray(l,l+e-2);return l+=n.length,n}function o(e){for(var t=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV),i=0;i>4==0)for(y=0;y<64;y++)A[e[y]]=t[l++];else{if(x>>4!=1)throw"DQT: invalid table spec";for(y=0;y<64;y++)A[e[y]]=i()}d[15&x]=A}break;case 65472:case 65473:case 65474:if(a)throw"Only single frame JPEGs supported";i(),(a={}).extended=65473===_,a.progressive=65474===_,a.precision=t[l++],a.scanLines=i(),a.samplesPerLine=i(),a.components=[],a.componentIds={};var S,M=t[l++],E=0,T=0;for(V=0;V>4,I=15&t[l+1];E>4==0?g:p)[15&L]=u(R,D)}break;case 65501:i(),s=i();break;case 65498:i();var O=t[l++],F=[];for(V=0;V>4],W.huffmanTableAC=p[15&N],F.push(W)}var j=t[l++],H=t[l++],z=t[l++],U=f(t,l,a,F,s,j,H,z>>4,15&z);l+=U;break;default:if(255==t[l-3]&&t[l-2]>=192&&t[l-2]<=254){l-=3;break}throw"unknown JPEG marker "+_.toString(16)}_=i()}switch(this.width=a.samplesPerLine,this.height=a.scanLines,this.jfif=c,this.adobe=h,this.components=[],a.components.length){case 1:this.colorspace=n.Grayscale;break;case 3:this.adobe?this.colorspace=n.AdobeRGB:this.colorspace=n.RGB;break;case 4:this.colorspace=n.CYMK;break;default:this.colorspace=n.Unknown}for(var V=0;V0?Math.min(i.xcb,r.PPx-1):Math.min(i.xcb,r.PPx),r.ycb_=n>0?Math.min(i.ycb,r.PPy-1):Math.min(i.ycb,r.PPy),r}function a(e,t,n){var i=1<t.trx0?Math.ceil(t.trx1/i)-Math.floor(t.trx0/i):0,c=t.try1>t.try0?Math.ceil(t.try1/r)-Math.floor(t.try0/r):0,h=l*c;t.precinctParameters={precinctWidth:i,precinctHeight:r,numprecinctswide:l,numprecinctshigh:c,numprecincts:h,precinctWidthInSubband:a,precinctHeightInSubband:s}}function l(e,t,n){var i,r,o,a,s=n.xcb_,l=n.ycb_,c=1<>s,d=t.tby0>>l,f=t.tbx1+c-1>>s,p=t.tby1+h-1>>l,m=t.resolution.precinctParameters,g=[],_=[];for(r=d;ry.cbxMax&&(y.cbxMax=i),ry.cbyMax&&(y.cbyMax=r)):_[a]=y={cbxMin:i,cbyMin:r,cbxMax:i,cbyMax:r},o.precinct=y}t.codeblockParameters={codeblockWidth:s,codeblockHeight:l,numcodeblockwide:f-u+1,numcodeblockhigh:p-d+1},t.codeblocks=g,t.precincts=_}function c(e,t,n){for(var i=[],r=e.subbands,o=0,a=r.length;oe.codingStyleParameters.decompositionLevelsCount)){for(var t=e.resolutions[h],n=t.precinctParameters.numprecincts;de.codingStyleParameters.decompositionLevelsCount)){for(var t=e.resolutions[l],n=t.precinctParameters.numprecincts;de.codingStyleParameters.decompositionLevelsCount)){var o=e.resolutions[n],a=o.precinctParameters.numprecincts;if(!(r>=a)){for(;t=0;--g){var _=l.resolutions[g],y=m*_.precinctParameters.precinctWidth,v=m*_.precinctParameters.precinctHeight;u=Math.min(u,y),d=Math.min(d,v),f=Math.max(f,_.precinctParameters.numprecinctswide),p=Math.max(p,_.precinctParameters.numprecinctshigh),h[g]={width:y,height:v},m<<=1}n=Math.min(n,u),i=Math.min(i,d),r=Math.max(r,f),o=Math.max(o,p),a[s]={resolutions:h,minWidth:u,minHeight:d,maxNumWide:f,maxNumHigh:p}}return{components:a,minWidth:n,minHeight:i,maxNumWide:r,maxNumHigh:o}}function b(e){for(var t=e.SIZ,n=e.currentTile.index,i=e.tiles[n],o=t.Csiz,s=0;s=t.length)throw new Error("Unexpected EOF");var i=t[n+o];o++,s?(r=r<<7|i,a+=7,s=!1):(r=r<<8|i,a+=8),255===i&&(s=!0)}return r>>>(a-=e)&(1<=t.length)return;if(L.isAboveThreshold())break;if(L.isKnown())L.nextLevel();else if(l(1)){if(L.setKnown(),L.isLeaf()){b.included=!0,C=P=!0;break}L.nextLevel()}else L.incrementValue()}}if(C){if(P){for((R=T.zeroBitPlanesTree).reset(k,I);;){if(o>=t.length)return;if(l(1)){if(!R.nextLevel())break}else R.incrementValue()}b.zeroBitPlanes=R.value}for(var O=d();l(1);)b.Lblock++;var F=p(O),G=l((O<1<0;){var N=x.shift();void 0===(b=N.codeblock).data&&(b.data=[]),b.data.push({data:t,start:n+o,end:n+o+N.dataLength,codingpasses:N.codingpasses}),o+=N.dataLength}}catch(e){return}return o}function x(e,t,n,i,r,a,s,l){for(var c=i.tbx0,h=i.tby0,u=i.tbx1-i.tbx0,d=i.codeblocks,f="H"===i.type.charAt(0)?1:0,p="H"===i.type.charAt(1)?t:0,m=0,g=d.length;m=a?B:B*(1<0?1-_:0));var T=y.subbands[A],k=e[T.type];x(w,v,0,T,f?1:Math.pow(2,d+k-E)*(1+M/2048),h+E-1,f,u)}m.push({width:v,height:b,items:w})}var P=p.calculate(m,r.tcx0,r.tcy0);return{left:r.tcx0,top:r.tcy0,width:P.width,height:P.height,items:P.items}}function S(e,t){for(var n=e.SIZ.Csiz,i=e.tiles[t],r=0;r=PDFJS.VERBOSITY_LEVELS.infos&&console.log("Info: ICC profile not supported"));break;case 1785737827:this.parseCodestream(e,t,t+a);break;case 1783636e3:218793738!==g(e,t)&&s("Invalid JP2 signature");break;case 1783634458:case 1718909296:case 1920099697:case 1919251232:case 1768449138:break;default:s("Unsupported header type "+o+" ("+String.fromCharCode(o>>24&255,o>>16&255,o>>8&255,255&o)+")")}l&&(t+=a)}else this.parseCodestream(e,0,e.length)},parseImageProperties:function(e){for(var t=e.getByte();t>=0;)if(65361==(t<<8|(t=e.getByte()))){e.skip(4);var n=e.getInt32()>>>0,i=e.getInt32()>>>0,r=e.getInt32()>>>0,o=e.getInt32()>>>0;e.skip(16);var a=e.getUint16();return this.width=n-r,this.height=i-o,this.componentsCount=a,void(this.bitsPerComponent=8)}throw new Error("JPX Error: No size marker found in JPX stream")},parseCodestream:function(e,t,r){var o={};try{for(var a=!1,l=t;l+1>5,d=[];h>3,I.mu=0):(I.epsilon=e[h]>>3,I.mu=(7&e[h])<<8|e[h+1],h+=2),d.push(I)}k.SPqcds=d,o.mainHeader?o.QCD=k:(o.currentTile.QCD=k,o.currentTile.QCC=[]);break;case 65373:y=m(e,l);var C,P={};switch(h=l+2,o.SIZ.Csiz<257?C=e[h++]:(C=m(e,h),h+=2),31&(u=e[h++])){case 0:f=8,p=!0;break;case 1:f=16,p=!1;break;case 2:f=16,p=!0;break;default:throw new Error("JPX Error: Invalid SQcd value "+u)}for(P.noQuantization=8===f,P.scalarExpounded=p,P.guardBits=u>>5,d=[];h>3,I.mu=0):(I.epsilon=e[h]>>3,I.mu=(7&e[h])<<8|e[h+1],h+=2),d.push(I);P.SPqcds=d,o.mainHeader?o.QCC[C]=P:o.currentTile.QCC[C]=P;break;case 65362:y=m(e,l);var L={};h=l+2;var R=e[h++];L.entropyCoderWithCustomPrecincts=!!(1&R),L.sopMarkerUsed=!!(2&R),L.ephMarkerUsed=!!(4&R),L.progressionOrder=e[h++],L.layersCount=m(e,h),h+=2,L.multipleComponentTransform=e[h++],L.decompositionLevelsCount=e[h++],L.xcb=2+(15&e[h++]),L.ycb=2+(15&e[h++]);var B=e[h++];if(L.selectiveArithmeticCodingBypass=!!(1&B),L.resetContextProbabilities=!!(2&B),L.terminationOnEachCodingPass=!!(4&B),L.verticalyStripe=!!(8&B),L.predictableTermination=!!(16&B),L.segmentationSymbolUsed=!!(32&B),L.reversibleTransformation=e[h++],L.entropyCoderWithCustomPrecincts){for(var D=[];h>4})}L.precinctsSizes=D}var F=[];if(L.selectiveArithmeticCodingBypass&&F.push("selectiveArithmeticCodingBypass"),L.resetContextProbabilities&&F.push("resetContextProbabilities"),L.terminationOnEachCodingPass&&F.push("terminationOnEachCodingPass"),L.verticalyStripe&&F.push("verticalyStripe"),L.predictableTermination&&F.push("predictableTermination"),F.length>0)throw a=!0,new Error("JPX Error: Unsupported COD options ("+F.join(", ")+")");o.mainHeader?o.COD=L:(o.currentTile.COD=L,o.currentTile.COC=[]);break;case 65424:y=m(e,l),(_={}).index=m(e,l+2),_.length=g(e,l+4),_.dataEnd=_.length+l-2,_.partIndex=e[l+8],_.partsCount=e[l+9],o.mainHeader=!1,0===_.partIndex&&(_.COD=o.COD,_.COC=o.COC.slice(0),_.QCD=o.QCD,_.QCC=o.QCC.slice(0)),o.currentTile=_;break;case 65427:0===(_=o.currentTile).partIndex&&(S(o,_.index),b(o)),w(o,e,l,y=_.dataEnd-l);break;case 65365:case 65367:case 65368:case 65380:y=m(e,l);break;case 65363:throw new Error("JPX Error: Codestream code 0xFF53 (COC) is not implemented");default:throw new Error("JPX Error: Unknown codestream code: "+c.toString(16))}l+=y}}catch(e){if(a||this.failOnCorruptedImage)throw e;s("Trying to recover from "+e.message)}this.tiles=function(e){for(var t=e.SIZ,n=e.components,i=t.Csiz,r=[],o=0,a=e.tiles.length;o>2))+w,M=S+b,u[I++]=x<=0?0:x>=p?255:x>>d,u[I++]=S<=0?0:S>=p?255:S>>d,u[I++]=M<=0?0:M>=p?255:M>>d;else for(_=0;_=p?255:x>>d,u[I++]=S<=0?0:S>=p?255:S>>d,u[I++]=M<=0?0:M>=p?255:M>>d;if(C)for(_=0,I=3;_=g?255:E+f>>d}else for(s=0;s=p?255:T+f>>d,I+=i}else{var G=n[s].isSigned;if(F=c[s].items,G)for(I=s,_=0,y=F.length;_>=1,t>>=1,i++}i--,(n=this.levels[i]).items[n.index]=r,this.currentLevel=i,delete this.value},incrementValue:function(){var e=this.levels[this.currentLevel];e.items[e.index]++},nextLevel:function(){var e=this.currentLevel,t=this.levels[e],n=t.items[t.index];return--e<0?(this.value=n,!1):(this.currentLevel=e,(t=this.levels[e]).items[t.index]=n,!0)}},e}(),E=function(){function e(e,t){var n=p(Math.max(e,t))+1;this.levels=[];for(var i=0;i>=1,t>>=1,i++}this.currentLevel=this.levels.length-1,this.minValue=this.levels[this.currentLevel].items[0]},incrementValue:function(){var e=this.levels[this.currentLevel];e.items[e.index]=e.items[e.index]+1,e.items[e.index]>this.minValue&&(this.minValue=e.items[e.index])},nextLevel:function(){var e=this.currentLevel;if(--e<0)return!1;this.currentLevel=e;var t=this.levels[e];return t.items[t.index]this.minValue&&(this.minValue=t.items[t.index]),!0},isLeaf:function(){return 0===this.currentLevel},isAboveThreshold:function(){var e=this.currentLevel,t=this.levels[e];return t.items[t.index]>this.currentStopValue},isKnown:function(){var e=this.currentLevel,t=this.levels[e];return t.status[t.index]>0},setKnown:function(){var e=this.currentLevel,t=this.levels[e];t.status[t.index]=1}},e}(),T=function(){var e=17,t=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]),n=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]),i=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 r(e,r,o,a,s){this.width=e,this.height=r,this.contextLabelTable="HH"===o?i:"HL"===o?n:t;var l=e*r;this.neighborsSignificance=new Uint8Array(l),this.coefficentsSign=new Uint8Array(l),this.coefficentsMagnitude=s>14?new Uint32Array(l):s>6?new Uint16Array(l):new Uint8Array(l),this.processingFlags=new Uint8Array(l);var c=new Uint8Array(l);if(0!==a)for(var h=0;h0,l=t+10&&(i=n-o,s&&(r[i-1]+=16),l&&(r[i+1]+=16),r[i]+=4),e+1=n)break;if(a[d]&=-2,!i[d]&&o[d]){var m=l[o[d]];if(e.readBit(s,m)){var g=this.decodeSignBit(p,u,d);r[d]=g,i[d]=1,this.setNeighborsSignificance(p,u,d),a[d]|=2}c[d]++,a[d]|=1}}},decodeSignBit:function(e,t,n){var i,r,o,a,s,l,c=this.width,h=this.height,u=this.coefficentsMagnitude,d=this.coefficentsSign;a=t>0&&0!==u[n-1],t+10&&0!==u[n-c],e+1=0?(s=9+i,l=this.decoder.readBit(this.contexts,s)):(s=9-i,l=1^this.decoder.readBit(this.contexts,s)),l},runMagnitudeRefinementPass:function(){for(var e,t=this.decoder,n=this.width,i=this.height,r=this.coefficentsMagnitude,o=this.neighborsSignificance,a=this.contexts,s=this.bitsDecoded,l=this.processingFlags,c=n*i,h=4*n,u=0;u>1,l=-1.586134342059924,c=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;for(i=(t|=0)-3,r=s+4;r--;i+=2)e[i]*=.8128930661159609;for(o=u*e[(i=t-2)-1],r=s+3;r--&&(a=u*e[i+1],e[i]=d*e[i]-o-a,r--);i+=2)o=u*e[(i+=2)+1],e[i]=d*e[i]-o-a;for(o=h*e[(i=t-1)-1],r=s+2;r--&&(a=h*e[i+1],e[i]-=o+a,r--);i+=2)o=h*e[(i+=2)+1],e[i]-=o+a;for(o=c*e[(i=t)-1],r=s+1;r--&&(a=c*e[i+1],e[i]-=o+a,r--);i+=2)o=c*e[(i+=2)+1],e[i]-=o+a;if(0!==s)for(o=l*e[(i=t+1)-1],r=s;r--&&(a=l*e[i+1],e[i]-=o+a,r--);i+=2)o=l*e[(i+=2)+1],e[i]-=o+a},e}(),C=function(){function e(){k.call(this)}return e.prototype=Object.create(k.prototype),e.prototype.filter=function(e,t,n){var i,r,o=n>>1;for(i=t|=0,r=o+1;r--;i+=2)e[i]-=e[i-1]+e[i+1]+2>>2;for(i=t+1,r=o;r--;i+=2)e[i]+=e[i-1]+e[i+1]>>1},e}();return t}(),o=function(){var e=[{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 t(e,t,n){this.data=e,this.bp=t,this.dataEnd=n,this.chigh=e[t],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}return t.prototype={byteIn:function(){var e=this.data,t=this.bp;255===e[t]?e[t+1]>143?(this.clow+=65280,this.ct=8):(t++,this.clow+=e[t]<<9,this.ct=7,this.bp=t):(t++,this.clow+=t65535&&(this.chigh+=this.clow>>16,this.clow&=65535)},readBit:function(t,n){var i,r=t[n]>>1,o=1&t[n],a=e[r],s=a.qe,l=this.a-s;if(this.chigh>15&1,this.clow=this.clow<<1&65535,this.ct--}while(0==(32768&l));return this.a=l,t[n]=r<<1|o,i}},t}(),a="undefined"==typeof window?this:window;function s(e){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.warnings&&console.log("Warning: "+e)}function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!1}),n}a.PDFJS||(a.PDFJS={}),a.PDFJS.pdfBug=!1,PDFJS.VERBOSITY_LEVELS={errors:0,warnings:1,infos:5},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},PDFJS.UNSUPPORTED_FEATURES={unknown:"unknown",forms:"forms",javaScript:"javaScript",smask:"smask",shadingPattern:"shadingPattern",font:"font"},PDFJS.UnsupportedManager=(i=[],{listen:function(e){i.push(e)},notify:function(e){s('Unsupported feature "'+e+'"');for(var t=0,n=i.length;tt;)t<<=1,n++;return n}function m(e,t){return e[t]<<8|e[t+1]}function g(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}PDFJS.UnexpectedResponseException=f,function(){function e(e){this.message=e}e.prototype=new Error,e.prototype.name="NotImplementedException",e.constructor=e}(),function(){function e(e,t){this.begin=e,this.end=t,this.message="Missing data ["+e+", "+t+")"}e.prototype=new Error,e.prototype.name="MissingDataException",e.constructor=e}(),function(){function e(e){this.message=e}e.prototype=new Error,e.prototype.name="XRefParseException",e.constructor=e}(),Object.defineProperty(PDFJS,"isLittleEndian",{configurable:!0,get:function(){return l(PDFJS,"isLittleEndian",((e=new Uint8Array(2))[0]=1,1===new Uint16Array(e.buffer)[0]));var e}}),Object.defineProperty(PDFJS,"hasCanvasTypedArrays",{configurable:!0,get:function(){return l(PDFJS,"hasCanvasTypedArrays",((e=document.createElement("canvas")).width=e.height=1,void 0!==e.getContext("2d").createImageData(1,1).data.buffer));var e}}),Object.create(null);var _,y=PDFJS.Util=function(){function e(){}var t=["rgb(",0,",",0,",",0,")"];return e.makeCssRgb=function(e,n,i){return t[1]=e,t[3]=n,t[5]=i,t.join("")},e.transform=function(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]},e.applyTransform=function(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]},e.applyInverseTransform=function(e,t){var n=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/n,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/n]},e.getAxialAlignedBoundingBox=function(t,n){var i=e.applyTransform(t,n),r=e.applyTransform(t.slice(2,4),n),o=e.applyTransform([t[0],t[3]],n),a=e.applyTransform([t[2],t[1]],n);return[Math.min(i[0],r[0],o[0],a[0]),Math.min(i[1],r[1],o[1],a[1]),Math.max(i[0],r[0],o[0],a[0]),Math.max(i[1],r[1],o[1],a[1])]},e.inverseTransform=function(e){var t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]},e.apply3dTransform=function(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2],e[3]*t[0]+e[4]*t[1]+e[5]*t[2],e[6]*t[0]+e[7]*t[1]+e[8]*t[2]]},e.singularValueDecompose2dScale=function(e){var t=[e[0],e[2],e[1],e[3]],n=e[0]*t[0]+e[1]*t[2],i=e[0]*t[1]+e[1]*t[3],r=e[2]*t[0]+e[3]*t[2],o=e[2]*t[1]+e[3]*t[3],a=(n+o)/2,s=Math.sqrt((n+o)*(n+o)-4*(n*o-r*i))/2,l=a+s||1,c=a-s||1;return[Math.sqrt(l),Math.sqrt(c)]},e.normalizeRect=function(e){var t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t},e.intersect=function(t,n){function i(e,t){return e-t}var r=[t[0],t[2],n[0],n[2]].sort(i),o=[t[1],t[3],n[1],n[3]].sort(i),a=[];return t=e.normalizeRect(t),n=e.normalizeRect(n),(r[0]===t[0]&&r[1]===n[0]||r[0]===n[0]&&r[1]===t[0])&&(a[0]=r[1],a[2]=r[2],(o[0]===t[1]&&o[1]===n[1]||o[0]===n[1]&&o[1]===t[1])&&(a[1]=o[1],a[3]=o[2],a))},e.sign=function(e){return e<0?-1:1},e.appendToArray=function(e,t){Array.prototype.push.apply(e,t)},e.prependToArray=function(e,t){Array.prototype.unshift.apply(e,t)},e.extendObj=function(e,t){for(var n in t)e[n]=t[n]},e.getInheritableProperty=function(e,t){for(;e&&!e.has(t);)e=e.get("Parent");return e?e.get(t):null},e.inherit=function(e,t,n){for(var i in e.prototype=Object.create(t.prototype),e.prototype.constructor=e,n)e.prototype[i]=n[i]},e.loadScript=function(e,t){var n=document.createElement("script"),i=!1;n.setAttribute("src",e),t&&(n.onload=function(){i||t(),i=!0}),document.getElementsByTagName("head")[0].appendChild(n)},e}();PDFJS.PageViewport=function(){function e(e,t,n,i,r,o){this.viewBox=e,this.scale=t,this.rotation=n,this.offsetX=i,this.offsetY=r;var a,s,l,c,h,u,d,f,p=(e[2]+e[0])/2,m=(e[3]+e[1])/2;switch(n=(n%=360)<0?n+360:n){case 180:a=-1,s=0,l=0,c=1;break;case 90:a=0,s=1,l=1,c=0;break;case 270:a=0,s=-1,l=-1,c=0;break;default:a=1,s=0,l=0,c=-1}o&&(l=-l,c=-c),0===a?(h=Math.abs(m-e[1])*t+i,u=Math.abs(p-e[0])*t+r,d=Math.abs(e[3]-e[1])*t,f=Math.abs(e[2]-e[0])*t):(h=Math.abs(p-e[0])*t+i,u=Math.abs(m-e[1])*t+r,d=Math.abs(e[2]-e[0])*t,f=Math.abs(e[3]-e[1])*t),this.transform=[a*t,s*t,l*t,c*t,h-a*t*p-l*t*m,u-s*t*p-c*t*m],this.width=d,this.height=f,this.fontScale=t}return e.prototype={clone:function(t){var n="scale"in(t=t||{})?t.scale:this.scale,i="rotation"in t?t.rotation:this.rotation;return new e(this.viewBox.slice(),n,i,this.offsetX,this.offsetY,t.dontFlip)},convertToViewportPoint:function(e,t){return y.applyTransform([e,t],this.transform)},convertToViewportRectangle:function(e){var t=y.applyTransform([e[0],e[1]],this.transform),n=y.applyTransform([e[2],e[3]],this.transform);return[t[0],t[1],n[0],n[1]]},convertToPdfPoint:function(e,t){return y.applyInverseTransform([e,t],this.transform)}},e}(),PDFJS.createPromiseCapability=function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e},function(){if(a.Promise)return"function"!=typeof a.Promise.all&&(a.Promise.all=function(e){var t,n,i=0,r=[],o=new a.Promise((function(e,i){t=e,n=i}));return e.forEach((function(e,o){i++,e.then((function(e){r[o]=e,0==--i&&t(r)}),n)})),0===i&&t(r),o}),"function"!=typeof a.Promise.resolve&&(a.Promise.resolve=function(e){return new a.Promise((function(t){t(e)}))}),"function"!=typeof a.Promise.reject&&(a.Promise.reject=function(e){return new a.Promise((function(t,n){n(e)}))}),void("function"!=typeof a.Promise.prototype.catch&&(a.Promise.prototype.catch=function(e){return a.Promise.prototype.then(void 0,e)}));var e={handlers:[],running:!1,unhandledRejections:[],pendingRejectionCheck:!1,scheduleHandlers:function(e){0!==e._status&&(this.handlers=this.handlers.concat(e._handlers),e._handlers=[],this.running||(this.running=!0,setTimeout(this.runHandlers.bind(this),0)))},runHandlers:function(){for(var e=Date.now()+1;this.handlers.length>0;){var t=this.handlers.shift(),n=t.thisPromise._status,i=t.thisPromise._value;try{1===n?"function"==typeof t.onResolve&&(i=t.onResolve(i)):"function"==typeof t.onReject&&(i=t.onReject(i),n=1,t.thisPromise._unhandledRejection&&this.removeUnhandeledRejection(t.thisPromise))}catch(e){n=2,i=e}if(t.nextPromise._updateStatus(n,i),Date.now()>=e)break}this.handlers.length>0?setTimeout(this.runHandlers.bind(this),0):this.running=!1},addUnhandledRejection:function(e){this.unhandledRejections.push({promise:e,time:Date.now()}),this.scheduleRejectionCheck()},removeUnhandeledRejection:function(e){e._unhandledRejection=!1;for(var t=0;t500){var n=this.unhandledRejections[t].promise._value,i="Unhandled rejection: "+n;n.stack&&(i+="\n"+n.stack),s(i),this.unhandledRejections.splice(t),t--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),500))}};function t(e){this._status=0,this._handlers=[];try{e.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(e){this._reject(e)}}t.all=function(e){var n,i,r=new t((function(e,t){n=e,i=t})),o=e.length,a=[];if(0===o)return n(a),r;function s(e){2!==r._status&&(a=[],i(e))}for(var l=0,c=e.length;l>2]+_[(3&a)<<4|s>>4]+_[r+1>6:64]+_[r+21&&(o.thisProgram=t.argv[1].replace(/\\/g,"/")),o.arguments=t.argv.slice(2),t.on("uncaughtException",(function(e){if(!(e instanceof Pt))throw e})),t.on("unhandledRejection",(function(e,n){t.exit(1)})),o.inspect=function(){return"[Emscripten Module object]"}):d?("undefined"!=typeof read&&(o.read=function(e){var t=ot(e);return t?nt(t):read(e)}),o.readBinary=function(e){var t;return(t=ot(e))?t:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(b("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?o.arguments=scriptArgs:void 0!==arguments&&(o.arguments=arguments),"function"==typeof quit&&(o.quit=function(e,t){quit(e)})):(c||h)&&(o.read=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText}catch(t){var n=ot(e);if(n)return nt(n);throw t}},h&&(o.readBinary=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}catch(t){var n=ot(e);if(n)return n;throw t}}),o.readAsync=function(e,t,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){if(200==i.status||0==i.status&&i.response)t(i.response);else{var r=ot(e);r?t(r.buffer):n()}},i.onerror=n,i.send(null)},void 0!==arguments&&(o.arguments=arguments),o.setWindowTitle=function(e){document.title=e}),o.print="undefined"!=typeof console?console.log.bind(console):"undefined"!=typeof print?print:null,o.printErr="undefined"!=typeof printErr?printErr:"undefined"!=typeof console&&console.warn.bind(console)||o.print,o.print=o.print,o.printErr=o.printErr,a)a.hasOwnProperty(r)&&(o[r]=a[r]);a=void 0;var f=16;function p(e){b(!V);var t=U;return U=U+e+15&-16,t}function m(e){b(J);var t=j[J>>2],n=t+e+15&-16;return j[J>>2]=n,n>=ae&&!re()?(j[J>>2]=t,0):t}function g(e,t){return t||(t=f),Math.ceil(e/t)*t}function _(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if("*"===e[e.length-1])return 4;if("i"===e[0]){var t=parseInt(e.substr(1));return b(t%8==0),t/8}return 0}}new Array(0);var y=8,v=0;function b(e,t){e||Bt("Assertion failed: "+t)}function w(e){var t=o["_"+e];return b(t,"Cannot call unknown function "+e+", make sure it is exported"),t}var x={stackSave:function(){Mt()},stackRestore:function(){St()},arrayToC:function(e){var t=At(e.length);return xe(e,t),t},stringToC:function(e){var t=0;if(null!=e&&0!==e){var n=1+(e.length<<2);D(e,t=At(n),n)}return t}},A={string:x.stringToC,array:x.arrayToC};function S(e,t,n,i,r){var o=w(e),a=[],s=0;if(i)for(var l=0;l>0]=t;break;case"i16":N[e>>1]=t;break;case"i32":j[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Ae(tempDouble)>=1?tempDouble>0?(0|Te(+Me(tempDouble/4294967296),4294967295))>>>0:~~+Se((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],j[e>>2]=tempI64[0],j[e+4>>2]=tempI64[1];break;case"float":H[e>>2]=t;break;case"double":z[e>>3]=t;break;default:Bt("invalid type for setValue: "+n)}}function E(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return F[e>>0];case"i16":return N[e>>1];case"i32":case"i64":return j[e>>2];case"float":return H[e>>2];case"double":return z[e>>3];default:Bt("invalid type for getValue: "+t)}return null}var T=2,k=4;function I(e,t,n,i){var r,o;"number"==typeof e?(r=!0,o=e):(r=!1,o=e.length);var a,s="string"==typeof t?t:null;if(a=n==k?i:["function"==typeof xt?xt:p,At,p,m][void 0===n?T:n](Math.max(o,s?1:t.length)),r){var l;for(i=a,b(0==(3&a)),l=a+(-4&o);i>2]=0;for(l=a+o;i>0]=0;return a}if("i8"===s)return e.subarray||e.slice?G.set(e,a):G.set(new Uint8Array(e),a),a;for(var c,h,u,d=0;d>0],(0!=n||t)&&(r++,!t||r!=t););t||(t=r);var o="";if(i<128){for(var a,s=1024;t>0;)a=String.fromCharCode.apply(String,G.subarray(e,e+Math.min(t,s))),o=o?o+a:a,e+=s,t-=s;return o}return R(e)}var P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function L(e,t){for(var n=t;e[n];)++n;if(n-t>16&&e.subarray&&P)return P.decode(e.subarray(t,n));for(var i,r,o,a,s,l="";;){if(!(i=e[t++]))return l;if(128&i)if(r=63&e[t++],192!=(224&i))if(o=63&e[t++],224==(240&i)?i=(15&i)<<12|r<<6|o:(a=63&e[t++],240==(248&i)?i=(7&i)<<18|r<<12|o<<6|a:(s=63&e[t++],i=248==(252&i)?(3&i)<<24|r<<18|o<<12|a<<6|s:(1&i)<<30|r<<24|o<<18|a<<12|s<<6|63&e[t++])),i<65536)l+=String.fromCharCode(i);else{var c=i-65536;l+=String.fromCharCode(55296|c>>10,56320|1023&c)}else l+=String.fromCharCode((31&i)<<6|r);else l+=String.fromCharCode(i)}}function R(e){return L(G,e)}function B(e,t,n,i){if(!(i>0))return 0;for(var r=n,o=n+i-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(n>=o)break;t[n++]=s}else if(s<=2047){if(n+1>=o)break;t[n++]=192|s>>6,t[n++]=128|63&s}else if(s<=65535){if(n+2>=o)break;t[n++]=224|s>>12,t[n++]=128|s>>6&63,t[n++]=128|63&s}else if(s<=2097151){if(n+3>=o)break;t[n++]=240|s>>18,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}else if(s<=67108863){if(n+4>=o)break;t[n++]=248|s>>24,t[n++]=128|s>>18&63,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}else{if(n+5>=o)break;t[n++]=252|s>>30,t[n++]=128|s>>24&63,t[n++]=128|s>>18&63,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}}return t[n]=0,n-r}function D(e,t,n){return B(e,G,t,n)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var O,F,G,N,j,H,z,U,V,W,Z,Y,X,J,q,Q=65536,K=16777216,$=16777216;function ee(e,t){return e%t>0&&(e+=t-e%t),e}function te(e){o.buffer=O=e}function ne(){o.HEAP8=F=new Int8Array(O),o.HEAP16=N=new Int16Array(O),o.HEAP32=j=new Int32Array(O),o.HEAPU8=G=new Uint8Array(O),o.HEAPU16=new Uint16Array(O),o.HEAPU32=new Uint32Array(O),o.HEAPF32=H=new Float32Array(O),o.HEAPF64=z=new Float64Array(O)}function ie(){Bt("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+ae+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function re(){var e=o.usingWasm?Q:K,t=2147483648-e;if(j[J>>2]>t)return!1;var n=ae;for(ae=Math.max(ae,$);ae>2];)ae=ae<=536870912?ee(2*ae,e):Math.min(ee((3*ae+2147483648)/4,e),t);var i=o.reallocBuffer(ae);return i&&i.byteLength==ae?(te(i),ne(),!0):(ae=n,!1)}U=W=Z=Y=X=J=0,V=!1,o.reallocBuffer||(o.reallocBuffer=function(e){var t;try{if(ArrayBuffer.transfer)t=ArrayBuffer.transfer(O,e);else{var n=F;t=new ArrayBuffer(e),new Int8Array(t).set(n)}}catch(e){return!1}return!!wt(t)&&t});try{(q=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch(e){q=function(e){return e.byteLength}}var oe=o.TOTAL_STACK||5242880,ae=o.TOTAL_MEMORY||16777216;function se(){return ae}if(ae0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?o.dynCall_v(n):o.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t()}}var ce=[],he=[],ue=[],de=[],fe=[],pe=!1;function me(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)be(o.preRun.shift());le(ce)}function ge(){pe||(pe=!0,le(he))}function _e(){le(ue)}function ye(){le(de)}function ve(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)we(o.postRun.shift());le(fe)}function be(e){ce.unshift(e)}function we(e){fe.unshift(e)}function xe(e,t){F.set(e,t)}var Ae=Math.abs,Se=(Math.cos,Math.sin,Math.tan,Math.acos,Math.asin,Math.atan,Math.atan2,Math.exp,Math.log,Math.sqrt,Math.ceil),Me=Math.floor,Ee=Math.pow,Te=(Math.imul,Math.fround,Math.round,Math.min),ke=(Math.max,Math.clz32,Math.trunc,0),Ie=null,Ce=null;function Pe(e){ke++,o.monitorRunDependencies&&o.monitorRunDependencies(ke)}function Le(e){if(ke--,o.monitorRunDependencies&&o.monitorRunDependencies(ke),0==ke&&(null!==Ie&&(clearInterval(Ie),Ie=null),Ce)){var t=Ce;Ce=null,t()}}o.preloadedImages={},o.preloadedAudios={};var Re=null,Be="data:application/octet-stream;base64,";function De(e){return String.prototype.startsWith?e.startsWith(Be):0===e.indexOf(Be)}U=y+26352,he.push(),Re="data:application/octet-stream;base64,g8DKoUW2+z9/+zpwzojqP3/7OnDOiOo/g8DKoUW2+z/hehSuR+H8P166SQwCK/k/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAAZAAAAAAACAFUBcj8L1KFwlQNejcD0KVzVA9ihcj8JVRUCF61G4HlVVQGZmZmZmVmVAzczMzMxUdUDP91PjpZvwP0a28/3UePk/JzEIrBxaB0AdWmQ7388WQClcj8L1qCZApHA9CtejNkAAAAAAAKBGQB+F61G4nlZAzczMzMycZkAAAAAAAAAAAM/3U+Olm/A/Rrbz/dR4+T8nMQisHFoHQB1aZDvfzxZAKVyPwvWoJkCkcD0K16M2QAAAAAAAoEZAH4XrUbieVkDNzMzMzJxmQAAAAAAAAAAArfpcbcX+5j9Wfa62Yn/tP8dLN4lBYPk/8tJNYhBYCED6fmq8dBMYQIXrUbgeBShAAAAAAAAAOEBcj8L1KPxHQOxRuB6F+1dAAAAAAAAAAAAAAAAAAADwP3E9CtejcP8/aJHtfD+1EEB1kxgEVs4gQGZmZmZm5jBA7FG4HoXrQEBcj8L1KOxQQJqZmZmZ6WBAmpmZmZnpcEAzMzMzM+eAQJMYBFYOLQBAtvP91HjpD0D2KFyPwrUgQArXo3A9CjFAw/UoXI8iQUC4HoXrUShRQJqZmZmZKWFAmpmZmZkpcUAAAAAAACiBQAAAAAAAAAAAkxgEVg4tAEC28/3UeOkPQPYoXI/CtSBACtejcD0KMUDD9ShcjyJBQLgehetRKFFAmpmZmZkpYUCamZmZmSlxQAAAAAAAKIFAAAAAAAAAAACkcD0K16MAQOxRuB6F6w5Ad76fGi+dIECuR+F6FC4xQHsUrkfhWkFA9ihcj8JlUUCamZmZmWlhQJqZmZmZaXFAmpmZmZlpgUAAAAAAAAAAAAQAAABDUFJMAAAAAAAAAABMUkNQAAAAAAMAAABQQ1JMAAAAAAEAAABSTENQAAAAAAIAAABSUENMAAAAAP////8AAAAAAAAAAAEAAAACAAAAAwAAAAQAAACQ/wAADAAAAAEAAABS/wAAFAAAAAIAAABT/wAAFAAAAAMAAABe/wAAFAAAAAQAAABc/wAAFAAAAAUAAABd/wAAFAAAAAYAAABf/wAAFAAAAAcAAABR/wAAAgAAAAgAAABV/wAABAAAAAkAAABX/wAABAAAAAoAAABY/wAAEAAAAAsAAABg/wAABAAAAAwAAABh/wAAEAAAAA0AAACR/wAAAAAAAAAAAABj/wAABAAAAA4AAABk/wAAFAAAAA8AAAB0/wAAFAAAABAAAAB4/wAABAAAABEAAAB1/wAAFAAAABIAAAB3/wAAFAAAABMAAAAAAAAAFAAAAAAAAAACAAAABAAAAAQAAAAIAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAAgIFBqFAAAAHB5dGYVAAAAaDJwahYAAAByZGhpFwAAAHJsb2MYAAAAY2NwYhkAAABybGNwGgAAAHBhbWMbAAAAZmVkYxwAAAABVgAAAAAAAKQEAAC0BAAAAVYAAAEAAAC0BAAApAQAAAE0AAAAAAAAxAQAAEQFAAABNAAAAQAAANQEAABUBQAAARgAAAAAAADkBAAApAUAAAEYAAABAAAA9AQAALQFAADBCgAAAAAAAAQFAAAEBgAAwQoAAAEAAAAUBQAAFAYAACEFAAAAAAAAJAUAACQIAAAhBQAAAQAAADQFAAA0CAAAIQIAAAAAAABECQAApAgAACECAAABAAAAVAkAALQIAAABVgAAAAAAAGQFAABUBQAAAVYAAAEAAAB0BQAARAUAAAFUAAAAAAAAhAUAAEQGAAABVAAAAQAAAJQFAABUBgAAAUgAAAAAAACkBQAARAYAAAFIAAABAAAAtAUAAFQGAAABOAAAAAAAAMQFAABEBgAAATgAAAEAAADUBQAAVAYAAAEwAAAAAAAA5AUAAKQGAAABMAAAAQAAAPQFAAC0BgAAASQAAAAAAAAEBgAAxAYAAAEkAAABAAAAFAYAANQGAAABHAAAAAAAACQGAAAEBwAAARwAAAEAAAA0BgAAFAcAAAEWAAAAAAAAJAgAACQHAAABFgAAAQAAADQIAAA0BwAAAVYAAAAAAABkBgAAVAYAAAFWAAABAAAAdAYAAEQGAAABVAAAAAAAAIQGAABEBgAAAVQAAAEAAACUBgAAVAYAAAFRAAAAAAAApAYAAGQGAAABUQAAAQAAALQGAAB0BgAAAUgAAAAAAADEBgAAhAYAAAFIAAABAAAA1AYAAJQGAAABOAAAAAAAAOQGAACkBgAAATgAAAEAAAD0BgAAtAYAAAE0AAAAAAAABAcAAMQGAAABNAAAAQAAABQHAADUBgAAATAAAAAAAAAkBwAA5AYAAAEwAAABAAAANAcAAPQGAAABKAAAAAAAAEQHAADkBgAAASgAAAEAAABUBwAA9AYAAAEkAAAAAAAAZAcAAAQHAAABJAAAAQAAAHQHAAAUBwAAASIAAAAAAACEBwAAJAcAAAEiAAABAAAAlAcAADQHAAABHAAAAAAAAKQHAABEBwAAARwAAAEAAAC0BwAAVAcAAAEYAAAAAAAAxAcAAGQHAAABGAAAAQAAANQHAAB0BwAAARYAAAAAAADkBwAAhAcAAAEWAAABAAAA9AcAAJQHAAABFAAAAAAAAAQIAACkBwAAARQAAAEAAAAUCAAAtAcAAAESAAAAAAAAJAgAAMQHAAABEgAAAQAAADQIAADUBwAAAREAAAAAAABECAAA5AcAAAERAAABAAAAVAgAAPQHAADBCgAAAAAAAGQIAAAECAAAwQoAAAEAAAB0CAAAFAgAAMEJAAAAAAAAhAgAACQIAADBCQAAAQAAAJQIAAA0CAAAoQgAAAAAAACkCAAARAgAAKEIAAABAAAAtAgAAFQIAAAhBQAAAAAAAMQIAABkCAAAIQUAAAEAAADUCAAAdAgAAEEEAAAAAAAA5AgAAIQIAABBBAAAAQAAAPQIAACUCAAAoQIAAAAAAAAECQAApAgAAKECAAABAAAAFAkAALQIAAAhAgAAAAAAACQJAADECAAAIQIAAAEAAAA0CQAA1AgAAEEBAAAAAAAARAkAAOQIAABBAQAAAQAAAFQJAAD0CAAAEQEAAAAAAABkCQAABAkAABEBAAABAAAAdAkAABQJAACFAAAAAAAAAIQJAAAkCQAAhQAAAAEAAACUCQAANAkAAEkAAAAAAAAApAkAAEQJAABJAAAAAQAAALQJAABUCQAAJQAAAAAAAADECQAAZAkAACUAAAABAAAA1AkAAHQJAAAVAAAAAAAAAOQJAACECQAAFQAAAAEAAAD0CQAAlAkAAAkAAAAAAAAABAoAAKQJAAAJAAAAAQAAABQKAAC0CQAABQAAAAAAAAAkCgAAxAkAAAUAAAABAAAANAoAANQJAAABAAAAAAAAACQKAADkCQAAAQAAAAEAAAA0CgAA9AkAAAFWAAAAAAAARAoAAEQKAAABVgAAAQAAAFQKAABUCgAAaAoAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAA6GIAAAAEAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAr/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4YgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAEIAAgAoAAgAgQABABAAAAAAAAAAAAAAAAgACAAIAAgAAAAQABAAGAAYABAAIAAoACgAIAAwADgAMABAAEgAQABYAFgAUABoAGAAeABwAIgAgACYAJAAqACoALAAyADAANAA6ADgAPABCAEIARABIAE4ATgBQAFQAWABeAF4AYgBmAGgAbABwAHQAeAB8AIAAhACIAIwAkACWAJoAngCiAKQArACwALYAugC8AMQAygDOANAA2ADeAOAA6ADuAPAA+gD+AQABCgEMARYBGAEiASQBLgEwAToBPgFEAU4BUAFYAWIBZAFsAXYBegGAAYgBkgGWAZwBpAGsAbYBugHCAcoB0AHYAeAB6AHwAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAA4AEAAaABwAJgAoADIANAA+AEAASgBMAFYAWABiAGQAbgBwAHoAfACGAIgAkgCUAJ4AoACqAKwAtgC4AMIAxADOANAA2gDcAOYA6ADyAPQA/gEAAQoBDAEWARgBIgEkAS4BMAE6ATwBRgFIAVIBVAFeAWABagFsAXYBeAGCAYQBjgGQAZoBnAGmAagBsgG0Ab4BwAHKAcwB1gHYAIAAfAB4AHQAcABuAGoAZgBiAFwAXABYAFYAUgBMAEwASgBGAEAAQAA+ADgAOAA2ADAAMgAuACgAKgAkACYAIAAiABwAHgAYABoAFgAUABYAEAAQABIADAAMAA4ACgAIAAgACgAGAAQABAAEAAYAAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAAAEAAQABgAGAAQACAAKAAoACAAMAA4ADAAQABIAEAAWABYAFAAaABgAHgAcACIAIAAmACQAKgAqACwAMgAwADQAOgA4ADwAQgBCAEQASABOAE4AUABUAFgAXgBeAGIAZgBoAGwAcAB0AHgAfABiAFwAXgBYAFoAVABWAFAAUgBMAE4ASABKAEQARgBAAEIAPAA+ADgAOgA0ADYAMAAyACwALgAoACoAJAAmACAAIgAcAB4AGAAaABQAFgAQABIADAAOAAgACgAEAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYABAAKAAgADgAMABIAEAAWABQAGgAYAB4AHAAiACAAJgAkACoAKAAuACwAMgAwADYANAA6ADgAPgA8AEIAQABGAEQASgBIAE4ATABSAFAAVgBUAFoAWABeAF1tFUlJPUl0gJXMAW0VSUk9SXSBvcGpfZGVjb21wcmVzczogZmFpbGVkIHRvIHNldHVwIHRoZSBkZWNvZGVyAFtFUlJPUl0gb3BqX2RlY29tcHJlc3M6IGZhaWxlZCB0byByZWFkIHRoZSBoZWFkZXIAW0VSUk9SXSBvcGpfZGVjb21wcmVzczogZmFpbGVkIHRvIGRlY29kZSB0aWxlIQBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoAU3RyZWFtIGVycm9yIQoAMi4xLjEAd2IAcmIAQ29kZWMgcHJvdmlkZWQgdG8gdGhlIG9wal9zZXR1cF9kZWNvZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoAQ29kZWMgcHJvdmlkZWQgdG8gdGhlIG9wal9yZWFkX2hlYWRlciBmdW5jdGlvbiBpcyBub3QgYSBkZWNvbXByZXNzb3IgaGFuZGxlci4KAEludmFsaWQgbnVtYmVyIG9mIHJlc29sdXRpb25zIDogJWQgbm90IGluIHJhbmdlIFsxLCVkXQoARGVwcmVjYXRlZCBmaWVsZHMgY3BfY2luZW1hIG9yIGNwX3JzaXogYXJlIHVzZWQKUGxlYXNlIGNvbnNpZGVyIHVzaW5nIG9ubHkgdGhlIHJzaXogZmllbGQKU2VlIG9wZW5qcGVnLmggZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzCgBUaGUgZGVzaXJlZCBtYXhpbXVtIGNvZGVzdHJlYW0gc2l6ZSBoYXMgbGltaXRlZAphdCBsZWFzdCBvbmUgb2YgdGhlIGRlc2lyZWQgcXVhbGl0eSBsYXllcnMKAEpQRUcgMjAwMCBTY2FsYWJsZSBEaWdpdGFsIENpbmVtYSBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6CjEgc2luZ2xlIHF1YWxpdHkgbGF5ZXItPiBOdW1iZXIgb2YgbGF5ZXJzIGZvcmNlZCB0byAxIChyYXRoZXIgdGhhbiAlZCkKLT4gUmF0ZSBvZiB0aGUgbGFzdCBsYXllciAoJTMuMWYpIHdpbGwgYmUgdXNlZABKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzIDw9IDUKLT4gTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzIGZvcmNlZCB0byA1IChyYXRoZXIgdGhhbiAlZCkKAEpQRUcgMjAwMCBQcm9maWxlLTQgKDRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpOdW1iZXIgb2YgZGVjb21wb3NpdGlvbiBsZXZlbHMgPj0gMSAmJiA8PSA2Ci0+IE51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyBmb3JjZWQgdG8gMSAocmF0aGVyIHRoYW4gJWQpCgBKUEVHIDIwMDAgUHJvZmlsZS00ICg0ayBkYyBwcm9maWxlKSByZXF1aXJlczoKTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzID49IDEgJiYgPD0gNgotPiBOdW1iZXIgb2YgZGVjb21wb3NpdGlvbiBsZXZlbHMgZm9yY2VkIHRvIDYgKHJhdGhlciB0aGFuICVkKQoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6Ck1heGltdW0gMTMwMjA4MyBjb21wcmVzc2VkIGJ5dGVzIEAgMjRmcHMKQXMgbm8gcmF0ZSBoYXMgYmVlbiBnaXZlbiwgdGhpcyBsaW1pdCB3aWxsIGJlIHVzZWQuCgBKUEVHIDIwMDAgUHJvZmlsZS0zIGFuZCA0ICgyay80ayBkYyBwcm9maWxlKSByZXF1aXJlczoKTWF4aW11bSAxMzAyMDgzIGNvbXByZXNzZWQgYnl0ZXMgQCAyNGZwcwotPiBTcGVjaWZpZWQgcmF0ZSBleGNlZWRzIHRoaXMgbGltaXQuIFJhdGUgd2lsbCBiZSBmb3JjZWQgdG8gMTMwMjA4MyBieXRlcy4KAEpQRUcgMjAwMCBQcm9maWxlLTMgYW5kIDQgKDJrLzRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpNYXhpbXVtIDEwNDE2NjYgY29tcHJlc3NlZCBieXRlcyBAIDI0ZnBzCkFzIG5vIHJhdGUgaGFzIGJlZW4gZ2l2ZW4sIHRoaXMgbGltaXQgd2lsbCBiZSB1c2VkLgoASlBFRyAyMDAwIFByb2ZpbGUtMyBhbmQgNCAoMmsvNGsgZGMgcHJvZmlsZSkgcmVxdWlyZXM6Ck1heGltdW0gMTA0MTY2NiBjb21wcmVzc2VkIGJ5dGVzIEAgMjRmcHMKLT4gU3BlY2lmaWVkIHJhdGUgZXhjZWVkcyB0aGlzIGxpbWl0LiBSYXRlIHdpbGwgYmUgZm9yY2VkIHRvIDEwNDE2NjYgYnl0ZXMuCgBKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKMyBjb21wb25lbnRzLT4gTnVtYmVyIG9mIGNvbXBvbmVudHMgb2YgaW5wdXQgaW1hZ2UgKCVkKSBpcyBub3QgY29tcGxpYW50Ci0+IE5vbi1wcm9maWxlLTMgY29kZXN0cmVhbSB3aWxsIGJlIGdlbmVyYXRlZAoAc2lnbmVkAHVuc2lnbmVkAEpQRUcgMjAwMCBQcm9maWxlLTMgKDJrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOgpQcmVjaXNpb24gb2YgZWFjaCBjb21wb25lbnQgc2hhbGwgYmUgMTIgYml0cyB1bnNpZ25lZC0+IEF0IGxlYXN0IGNvbXBvbmVudCAlZCBvZiBpbnB1dCBpbWFnZSAoJWQgYml0cywgJXMpIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczoKd2lkdGggPD0gMjA0OCBhbmQgaGVpZ2h0IDw9IDEwODAKLT4gSW5wdXQgaW1hZ2Ugc2l6ZSAlZCB4ICVkIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgUHJvZmlsZS00ICg0ayBkYyBwcm9maWxlKSByZXF1aXJlczoKd2lkdGggPD0gNDA5NiBhbmQgaGVpZ2h0IDw9IDIxNjAKLT4gSW1hZ2Ugc2l6ZSAlZCB4ICVkIGlzIG5vdCBjb21wbGlhbnQKLT4gTm9uLXByb2ZpbGUtNCBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkCgBKUEVHIDIwMDAgTG9uZyBUZXJtIFN0b3JhZ2UgcHJvZmlsZSBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIEJyb2FkY2FzdCBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIElNRiBwcm9maWxlcyBub3QgeWV0IHN1cHBvcnRlZAoASlBFRyAyMDAwIFBhcnQtMiBwcm9maWxlIGRlZmluZWQKYnV0IG5vIFBhcnQtMiBleHRlbnNpb24gZW5hYmxlZC4KUHJvZmlsZSBzZXQgdG8gTk9ORS4KAFVuc3VwcG9ydGVkIFBhcnQtMiBleHRlbnNpb24gZW5hYmxlZApQcm9maWxlIHNldCB0byBOT05FLgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29weSBvZiB1c2VyIGVuY29kaW5nIHBhcmFtZXRlcnMgbWF0cml4IAoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29weSBvZiBjb21tZW50IHN0cmluZwoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgY29tbWVudCBzdHJpbmcKACVzJXMAQ3JlYXRlZCBieSBPcGVuSlBFRyB2ZXJzaW9uIABOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0aWxlIGNvZGluZyBwYXJhbWV0ZXJzCgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgY2hlY2tpbmcgdGhlIHBvYyB2YWx1ZXMuCgBNaXNzaW5nIHBhY2tldHMgcG9zc2libGUgbG9zcyBvZiBkYXRhCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0aWxlIGNvbXBvbmVudCBjb2RpbmcgcGFyYW1ldGVycwoATm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgdGVtcCBidWZmZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGVuY29kZXIgTUNUIGNvZGluZyBtYXRyaXggCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBlbmNvZGVyIE1DVCBkZWNvZGluZyBtYXRyaXggCgBGYWlsZWQgdG8gaW52ZXJzZSBlbmNvZGVyIE1DVCBkZWNvZGluZyBtYXRyaXggCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBlbmNvZGVyIE1DVCBub3JtcyAKAEZhaWxlZCB0byBzZXR1cCBqMmsgbWN0IGVuY29kaW5nCgBDYW5ub3QgcGVyZm9ybSBNQ1Qgb24gY29tcG9uZW50cyB3aXRoIGRpZmZlcmVudCBzaXplcy4gRGlzYWJsaW5nIE1DVC4KAENhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWQpLgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoAU3RyZWFtIHRvbyBzaG9ydAoAQSBtYXJrZXIgSUQgd2FzIGV4cGVjdGVkICgweGZmLS0pIGluc3RlYWQgb2YgJS44eAoAVW5rbm93biBtYXJrZXIKAE1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uCgBVbmtub3cgbWFya2VyIGhhdmUgYmVlbiBkZXRlY3RlZCBhbmQgZ2VuZXJhdGVkIGVycm9yLgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXIKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBieXRlcyB0byByZWFkIE5wcG0KAENvcnJ1cHRlZCBQUE0gbWFya2VycwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgdHJhbnNmb3JtYXRpb24gc3RhZ2VzLgoARXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBNQ0MgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyBvdGhlciB0aGFuIGFycmF5IGRlY29ycmVsYXRpb24KAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAENycm9yIHJlYWRpbmcgQ0JEIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXIKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBNQ1QgbWFya2VycwoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcjogcGFja2V0IGhlYWRlciBoYXZlIGJlZW4gcHJldmlvdXNseSBmb3VuZCBpbiB0aGUgbWFpbiBoZWFkZXIgKFBQTSBtYXJrZXIpLgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyCgBacHB0ICV1IGFscmVhZHkgcmVhZAoARXJyb3IgcmVhZGluZyBQUE0gbWFya2VyCgBacHBtICV1IGFscmVhZHkgcmVhZAoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgVExNIG1hcmtlcgoARXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemUKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbnVtYmVyIG9mIGNvbXBvbmVudCBpcyBpbGxlZ2FsIC0+ICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgKHgxOiAlZCwgeTE6ICVkKQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyCgBJbnZhbGlkIHZhbHVlcyBmb3IgY29tcCA9ICVkIDogZHg9JXUgZHk9JXUgKHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0pCgBJbnZhbGlkIHZhbHVlcyBmb3IgY29tcCA9ICVkIDogcHJlYz0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMzggYWNjb3JkaW5nIHRvIHRoZSBKUEVHMjAwMCBub3JtKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAFRvbyBtYW55IFBPQ3MgJWQKAEVycm9yIHJlYWRpbmcgUUNDIG1hcmtlcgoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAV2hpbGUgcmVhZGluZyBDQ1BfUU5UU1RZIGVsZW1lbnQgaW5zaWRlIFFDRCBvciBRQ0MgbWFya2VyIHNlZ21lbnQsIG51bWJlciBvZiBzdWJiYW5kcyAoJWQpIGlzIGdyZWF0ZXIgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpLiBTbyB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHN0b3JlZCB0byBPUEpfSjJLX01BWEJBTkRTICglZCkgYW5kIHNraXAgdGhlIHJlc3QuIAoARXJyb3IgcmVhZGluZyBRQ0QgbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZCkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDT0MgbWFya2VyIChiYWQgbnVtYmVyIG9mIGNvbXBvbmVudHMpCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoARXJyb3IgZGVjb2RpbmcgY29tcG9uZW50ICVkLgpUaGUgbnVtYmVyIG9mIHJlc29sdXRpb25zIHRvIHJlbW92ZSBpcyBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHJlc29sdXRpb25zIG9mIHRoaXMgY29tcG9uZW50Ck1vZGlmeSB0aGUgY3BfcmVkdWNlIHBhcmFtZXRlci4KCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBJbnZhbGlkIHByZWNpbmN0IHNpemUKAENPRCBtYXJrZXIgYWxyZWFkeSByZWFkLiBObyBtb3JlIHRoYW4gb25lIENPRCBtYXJrZXIgcGVyIHRpbGUuCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoARXJyb3IgcmVhZGluZyBTT1QgbWFya2VyCgBJbnZhbGlkIHRpbGUgbnVtYmVyICVkCgBFbXB0eSBTT1QgbWFya2VyIGRldGVjdGVkOiBQc290PSVkLgoAUHNvdCB2YWx1ZSBpcyBub3QgY29ycmVjdCByZWdhcmRzIHRvIHRoZSBKUEVHMjAwMCBub3JtOiAlZC4KAFBzb3QgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdGlsZS1wYXJ0IGlzIGVxdWFsIHRvIHplcm8sIHdlIGFzc3VtaW5nIGl0IGlzIHRoZSBsYXN0IHRpbGUtcGFydCBvZiB0aGUgY29kZXN0cmVhbS4KAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXAKAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoaGVhZGVyKSAoJWQpLCBnaXZpbmcgdXAKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgU09UIG1hcmtlci4gVGlsZSBpbmRleCBhbGxvY2F0aW9uIGZhaWxlZAoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBNYXJrZXIgc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoAVGlsZSBwYXJ0IGxlbmd0aCBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlCgBvcGpfajJrX2FwcGx5X25iX3RpbGVfcGFydHNfY29ycmVjdGlvbiBlcnJvcgoATm9uIGNvbmZvcm1hbnQgY29kZXN0cmVhbSBUUHNvdD09VE5zb3QuCgBGYWlsZWQgdG8gbWVyZ2UgUFBUIGRhdGEKAEhlYWRlciBvZiB0aWxlICVkIC8gJWQgaGFzIGJlZW4gcmVhZC4KAEZhaWxlZCB0byBkZWNvZGUuCgBObyBFT0MgbWFya2VyLiBQb3NzaWJseSBhIHRydW5jYXRlZCBzdHJlYW0KAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAFN0cmVhbSB0b28gc2hvcnQsIGV4cGVjdGVkIFNPVAoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtAE5vIGRlY29kZWQgYXJlYSBwYXJhbWV0ZXJzLCBzZXQgdGhlIGRlY29kZWQgYXJlYSB0byB0aGUgd2hvbGUgaW1hZ2UKAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS4KAFNpemUgeSBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS5oPSVkKS4KAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoAV3JvbmcgZmxhZwoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAAkgdHgwPSVkLCB0eTA9JWQKAAkgdGR4PSVkLCB0ZHk9JWQKAAkgdHc9JWQsIHRoPSVkCgB9CgBDb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXI6IHsKAAkgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JWxsaQoJIE1haW4gaGVhZGVyIGVuZCBwb3NpdGlvbj0lbGxpCgAJIE1hcmtlciBsaXN0OiB7CgAJCSB0eXBlPSUjeCwgcG9zPSVsbGksIGxlbj0lZAoACSB9CgAJIFRpbGUgaW5kZXg6IHsKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKAAkJCSB0aWxlLXBhcnRbJWRdOiBzdGFyX3Bvcz0lbGxpLCBlbmRfaGVhZGVyPSVsbGksIGVuZF9wb3M9JWxsaS4KAAkgZGVmYXVsdCB0aWxlIHsKAAkJIGNzdHk9JSN4CgAJCSBwcmc9JSN4CgAJCSBudW1sYXllcnM9JWQKAAkJIG1jdD0leAoACQkgY29tcCAlZCB7CgAJCQkgY3N0eT0lI3gKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkJIGNibGt3PTJeJWQKAAkJCSBjYmxraD0yXiVkCgAJCQkgY2Jsa3N0eT0lI3gKAAkJCSBxbWZiaWQ9JWQKAAkJCSBwcmVjY2ludHNpemUgKHcsaCk9ACglZCwlZCkgAAkJCSBxbnRzdHk9JWQKAAkJCSBudW1nYml0cz0lZAoACQkJIHN0ZXBzaXplcyAobSxlKT0ACQkJIHJvaXNoaWZ0PSVkCgAJCSB9CgBbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3QgewoASW1hZ2UgaW5mbyB7CgAlcyB4MD0lZCwgeTA9JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgbnVtY29tcHM9JWQKACVzCSBjb21wb25lbnQgJWQgewoAJXN9CgBbREVWXSBEdW1wIGFuIGltYWdlX2NvbXBfaGVhZGVyIHN0cnVjdCB7CgAlcyBkeD0lZCwgZHk9JWQKACVzIHByZWM9JWQKACVzIHNnbmQ9JWQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlcwoATm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAlZC8lZAoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASW1hZ2UgZGF0YSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGlsZSAlZC4KCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgb25lIHRpbGUKAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAFRoZSBnaXZlbiB0aWxlIGluZGV4IGRvZXMgbm90IG1hdGNoLgB0aWxlIG51bWJlciAlZCAvICVkCgBFcnJvciBhbGxvY2F0aW5nIHRpbGUgY29tcG9uZW50IGRhdGEuAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGVuY29kZSBhbGwgdGlsZXMKAFNpemUgbWlzbWF0Y2ggYmV0d2VlbiB0aWxlIGRhdGEgYW5kIHNlbnQgZGF0YS4AQ2Fubm90IGVuY29kZSB0aWxlCgBGYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UgaGVhZGVyLgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGlsZSBDb2RlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgQ0JEIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNDIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNPIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgdGhlIENPTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFBPQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFRMTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFFDQyBtYXJrZXIKAEVycm9yIHdyaXRpbmcgU1FjZCBTUWNjIGVsZW1lbnQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIENPQyBtYXJrZXIKAEVycm9yIHdyaXRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoATm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgUUNEIG1hcmtlcgoARXJyb3Igd3JpdGluZyBRQ0QgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBDT0QgbWFya2VyCgBFcnJvciB3cml0aW5nIENPRCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgU0laIG1hcmtlcgoATnVtYmVyIG9mIHJlc29sdXRpb25zIGlzIHRvbyBoaWdoIGluIGNvbXBhcmlzb24gdG8gdGhlIHNpemUgb2YgdGlsZXMKAEVycm9yIHdoaWxlIG9wal9qMmtfcHJlX3dyaXRlX3RpbGUgd2l0aCB0aWxlIGluZGV4ID0gJWQKAEVycm9yIHdoaWxlIG9wal9qMmtfcG9zdF93cml0ZV90aWxlIHdpdGggdGlsZSBpbmRleCA9ICVkCgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBjb2Rlc3RyZWFtIGluIHRoZSBKUDIgZmlsZQoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAFVuZXhwZWN0ZWQgT09NLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBDb21wb25lbnQgJWQgaXMgbWFwcGVkIHR3aWNlLgoARGlyZWN0IHVzZSBhdCAjJWQgaG93ZXZlciBwY29sPSVkLgoAQ29tcG9uZW50ICVkIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuCgBDb21wb25lbnQgbWFwcGluZyBzZWVtcyB3cm9uZy4gVHJ5aW5nIHRvIGNvcnJlY3QuCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIHNwZWNpZmllZCB3aGlsZSBzZXR0aW5nIHVwIEpQMiBlbmNvZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB3aGVuIHNldHVwIHRoZSBKUDIgZW5jb2RlcgoAQWxwaGEgY2hhbm5lbCBzcGVjaWZpZWQgYnV0IHVua25vd24gZW51bWNzLiBObyBjZGVmIGJveCB3aWxsIGJlIGNyZWF0ZWQuCgBBbHBoYSBjaGFubmVsIHNwZWNpZmllZCBidXQgbm90IGVub3VnaCBpbWFnZSBjb21wb25lbnRzIGZvciBhbiBhdXRvbWF0aWMgY2RlZiBib3ggY3JlYXRpb24uCgBBbHBoYSBjaGFubmVsIHBvc2l0aW9uIGNvbmZsaWN0cyB3aXRoIGNvbG9yIGNoYW5uZWwuIE5vIGNkZWYgYm94IHdpbGwgYmUgY3JlYXRlZC4KAE11bHRpcGxlIGFscGhhIGNoYW5uZWxzIHNwZWNpZmllZC4gTm8gY2RlZiBib3ggd2lsbCBiZSBjcmVhdGVkLgoATm90IGVub3VnaCBtZW1vcnkgdG8gc2V0dXAgdGhlIEpQMiBlbmNvZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgZmlsZSBoZWFkZXIKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAGJhZCBwbGFjZWQganBlZyBjb2Rlc3RyZWFtCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAGludmFsaWQgYm94IHNpemUgJWQgKCV4KQoARm91bmQgYSBtaXNwbGFjZWQgJyVjJWMlYyVjJyBib3ggb3V0c2lkZSBqcDJoIGJveAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAUHJvYmxlbSB3aXRoIHNraXBwaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBJbnZhbGlkIGJveCBzaXplICVkIGZvciBib3ggJyVjJWMlYyVjJy4gTmVlZCAlZCBieXRlcywgJWQgYnl0ZXMgcmVtYWluaW5nIAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGJveAoAUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IGZpcnN0IGJveCBtdXN0IGJlIEpQRUcgMjAwMCBzaWduYXR1cmUgYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBzZWNvbmQgYm94IG11c3QgYmUgZmlsZSB0eXBlIGJveAoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENERUYgYm94LgoATnVtYmVyIG9mIGNoYW5uZWwgZGVzY3JpcHRpb24gaXMgZXF1YWwgdG8gemVybyBpbiBDREVGIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENNQVAgYm94LgoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAlZCBlbnRyaWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzIDAgcGFsZXR0ZSBjb2x1bW5zCgBBIEJQQ0MgaGVhZGVyIGJveCBpcyBhdmFpbGFibGUgYWx0aG91Z2ggQlBDIGdpdmVuIGJ5IHRoZSBJSERSIGJveCAoJWQpIGluZGljYXRlIGNvbXBvbmVudHMgYml0IGRlcHRoIGlzIGNvbnN0YW50CgBCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplOiAlZCkKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAEJhZCBDT0xSIGhlYWRlciBib3ggKENJRUxhYiwgYmFkIHNpemU6ICVkKQoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAElnbm9yaW5nIGloZHIgYm94LiBGaXJzdCBpaGRyIGJveCBhbHJlYWR5IHJlYWQKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEludmFsaWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGloZHIpCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgaW1hZ2UgaGVhZGVyIChpaGRyKQoASlAyIElIRFIgYm94OiBjb21wcmVzc2lvbiB0eXBlIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgaXMgbm90IGEgY29uZm9ybWluZyBKUDIgZmlsZSAoJWQpIAoAVGhlICBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAQ2Fubm90IGhhbmRsZSBib3ggb2YgbGVzcyB0aGFuIDggYnl0ZXMKAENhbm5vdCBoYW5kbGUgWEwgYm94IG9mIGxlc3MgdGhhbiAxNiBieXRlcwoAQm94IGxlbmd0aCBpcyBpbmNvbnNpc3RlbnQuCgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveAoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IGJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBUaGUgZnR5cCBib3ggbXVzdCBiZSB0aGUgc2Vjb25kIGJveCBpbiB0aGUgZmlsZS4KAEVycm9yIHdpdGggRlRZUCBzaWduYXR1cmUgQm94IHNpemUKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAEVycm9yIHdpdGggSlAgc2lnbmF0dXJlIEJveCBzaXplCgBFcnJvciB3aXRoIEpQIFNpZ25hdHVyZSA6IGJhZCBtYWdpYyBudW1iZXIKAEZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBob2xkIEpQMiBIZWFkZXIgZGF0YQoAU3RyZWFtIGVycm9yIHdoaWxlIHdyaXRpbmcgSlAyIEhlYWRlciBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBmdHlwIGRhdGEKAEVycm9yIHdoaWxlIHdyaXRpbmcgZnR5cCBkYXRhIHRvIHN0cmVhbQoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoAVGlsZSBYIGNvb3JkaW5hdGVzIGFyZSBub3Qgc3VwcG9ydGVkCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAHRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb24KAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIGRhdGEKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAE5vIGluY2x0cmVlIGNyZWF0ZWQuCgBObyBpbXNidHJlZSBjcmVhdGVkLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlCgB0Z3RfY3JlYXRlIHRyZWUtPm51bW5vZGVzID09IDAsIG5vIHRyZWUgY3JlYXRlZC4KAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVpbml0aWFsaXplIHRoZSB0YWcgdHJlZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgAAAQECAQICAgECAgICAgICAwMDAwMDAwMDAwMDAwMDAwUGBgYGBgYGBgYGBgYGBgYHBwcHBwcHBwcHBwcHBwcHAwMDAwMDAwMDAwMDAwMDAwQEBAQEBAQEBAQEBAQEBAQHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwUGBgYGBgYGBgYGBgYGBgYHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAEBAgECAgIBAgICAgICAgUGBgYGBgYGBgYGBgYGBgYDAwMDAwMDAwMDAwMDAwMDBwcHBwcHBwcHBwcHBwcHBwUGBgYGBgYGBgYGBgYGBgYICAgICAgICAgICAgICAgIBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgDAwMDAwMDAwMDAwMDAwMDBwcHBwcHBwcHBwcHBwcHBwQEBAQEBAQEBAQEBAQEBAQHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwgICAgICAgICAgICAgICAgHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAABAQIBAgICAQICAgICAgIDAwMDAwMDAwMDAwMDAwMDBQYGBgYGBgYGBgYGBgYGBgcHBwcHBwcHBwcHBwcHBwcDAwMDAwMDAwMDAwMDAwMDBAQEBAQEBAQEBAQEBAQEBAcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBQYGBgYGBgYGBgYGBgYGBgcHBwcHBwcHBwcHBwcHBwcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAwMGAwYGCAMGBggGCAgIAQQEBwQHBwgEBwcIBwgICAEEBAcEBwcIBAcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAQQEBwQHBwgEBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAEEBAcEBwcIBAcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgIAgUFBwUHBwgFBwcIBwgICAIFBQcFBwcIBQcHCAcICAgCBQUHBQcHCAUHBwgHCAgICQoMDQoKDQ0MDQwNDQ0NDQkKDAsKCQ0MDAsMCw0MDQwJCgwLCgoLCwwNCQoNDQoKCQoMDQoJCwwMCwkKDQwKCQkKDA0KCQsMDA0MDQsMCwwJCgwLCgoLCwwLDAsLCwsLCQoMCwoJDQwMDQkKCwwKCQkKDA0KCg0NDAsJCgsLCgoJCgwNCgoNDQwLCQoLCwoKCQoMCwoJDQwMDQkKCwwKCQkKDAsKCgsLDAsMCwsLCwsJCgwNCgkLDAwNDA0LDAsMCQoMDQoJCwwMCwkKDQwKCQkKDAsKCgsLDA0JCg0NCgoJCgwLCgkNDAwLDAsNDA0MCQoMDQoKDQ0MDQwNDQ0NDQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAQAAAQEAAAAAAAAAAAABAQEAAAEBAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAEAAAEBAAAAAAAAAAAAAAAAAQEBAAEBAAAAAAAAAQAAAQEBAQEBAQAAAAEAAAEBAAAAAAAAAAABAQAAAQEAAAABAAAAAAAAAQEAAQEBAAAAAAEBAAABAQEBAQEBAQEBAAEBAQAAAQEBAQEBAQEBAQAAAAABAAAAAQEAAAEBAQAAAQAAAQEAAAEBAAEBAQEBAAABAQEAAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQFyZWFkOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggY3VycmVudCBzaXplICglZCA+ICVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAc2tpcDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAEludmFsaWQgcHJlY2luY3QKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIFNPUCBtYXJrZXIKAEV4cGVjdGVkIFNPUCBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXIKAEV4cGVjdGVkIEVQSCBtYXJrZXIKAHJ3YQARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAARMJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAC0rICAgMFgweAAobnVsbCkALTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAwMTIzNDU2Nzg5QUJDREVGLgBUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24=";var Oe=U;function Fe(){}U+=16;var Ge={varargs:0,get:function(e){return Ge.varargs+=4,j[Ge.varargs-4>>2]},getStr:function(){return C(Ge.get())},get64:function(){var e=Ge.get(),t=Ge.get();return b(e>=0?0===t:-1===t),e},getZero:function(){b(0===Ge.get())}};function Ne(e,t){Ge.varargs=t;try{var n=Ge.getStreamFromFD(),i=(Ge.get(),Ge.get()),r=Ge.get(),o=Ge.get(),a=i;return FS.llseek(n,a,o),j[r>>2]=n.position,n.getdents&&0===a&&0===o&&(n.getdents=null),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}function je(e,t){Ge.varargs=t;try{var n=Ge.getStreamFromFD(),i=Ge.get(),r=Ge.get();return Ge.doReadv(n,i,r)}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}function He(){var e=o._fflush;e&&e(0);var t=ze.printChar;if(t){var n=ze.buffers;n[1].length&&t(1,10),n[2].length&&t(2,10)}}function ze(e,t){Ge.varargs=t;try{var n=Ge.get(),i=Ge.get(),r=Ge.get(),a=0;ze.buffers||(ze.buffers=[null,[],[]],ze.printChar=function(e,t){var n=ze.buffers[e];b(n),0===t||10===t?((1===e?o.print:o.printErr)(L(n,0)),n.length=0):n.push(t)});for(var s=0;s>2],c=j[i+(8*s+4)>>2],h=0;h>2]=e),e}function Ve(e,t){Ge.varargs=t;try{return 0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}function We(e,t){Ge.varargs=t;try{var n=Ge.getStr(),i=Ge.get(),r=Ge.get();return FS.open(n,i,r).fd}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}function Ze(e,t){Ge.varargs=t;try{return 0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}function Ye(e,t){Ge.varargs=t;try{var n=Ge.getStreamFromFD();return FS.close(n),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||Bt(e),-e.errno}}var Xe=I([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",T);function Je(){}var qe=Se,Qe=Me,Ke=Me,$e=Ee;function et(e,t,n){return G.set(G.subarray(t,t+n),e),e}J=p(4),W=Z=g(U),X=g(Y=W+oe),j[J>>2]=X,V=!0;var tt=!1;function nt(e){for(var t=[],n=0;n255&&(tt&&b(!1,"Character code "+i+" ("+String.fromCharCode(i)+") at offset "+n+" not in 0x00-0xFF."),i&=255),t.push(String.fromCharCode(i))}return t.join("")}var it="function"==typeof atob?atob:function(e){var t,n,i,r,o,a,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l="",c=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=s.indexOf(e.charAt(c++))<<2|(r=s.indexOf(e.charAt(c++)))>>4,n=(15&r)<<4|(o=s.indexOf(e.charAt(c++)))>>2,i=(3&o)<<6|(a=s.indexOf(e.charAt(c++))),l+=String.fromCharCode(t),64!==o&&(l+=String.fromCharCode(n)),64!==a&&(l+=String.fromCharCode(i))}while(c>2]=e,e=0|Ne(e),l[n+32>>2]=e,e?(l[n+36>>2]=e,t=0==(0|t),l[(e=n+68|0)>>2]=l[e>>2]|(t?1:2),l[n+40>>2]=t?29:30,l[n+44>>2]=t?31:32,l[n+16>>2]=4,l[n+20>>2]=5,l[n+24>>2]=6,l[n+28>>2]=7,0|n):(Ve(n),0|(n=0))):0|(n=0)}function Y(e){e|=0;var t,n=0;return(t=0|je(1,72))?(l[t+64>>2]=1048576,n=0|Ne(1048576),l[t+32>>2]=n,n?(l[t+36>>2]=n,n=0==(0|e),l[(e=t+68|0)>>2]=l[e>>2]|(n?1:2),l[t+40>>2]=n?29:30,l[t+44>>2]=n?31:32,l[t+16>>2]=4,l[t+20>>2]=5,l[t+24>>2]=6,l[t+28>>2]=7,0|(n=t)):(Ve(t),0|(n=0))):0|(n=0)}function X(e){var t=0;(e|=0)&&(0|(t=0|l[e+4>>2])&&$r[7&t](0|l[e>>2]),Ve(0|l[(t=e+32|0)>>2]),l[t>>2]=0,Ve(e))}function J(e,t){t|=0,(e|=0)&&2&l[e+68>>2]&&(l[e+16>>2]=t)}function q(e,t){t|=0,(e|=0)&&(l[e+28>>2]=t)}function Q(e,t){t|=0,(e|=0)&&(l[e+24>>2]=t)}function K(e,t,n){t|=0,n|=0,(e|=0)&&(l[e>>2]=t,l[e+4>>2]=n)}function $(e,t,n){t|=0,n|=0,(e|=0)&&(l[(e=e+8|0)>>2]=t,l[e+4>>2]=n)}function ee(e,t){t|=0,(e|=0)&&1&l[e+68>>2]&&(l[e+20>>2]=t)}function te(e,t,n,i){t|=0,n|=0,i|=0;var r,o=0;return l[36+(e|=0)>>2]=l[e+32>>2],l[e+48>>2]=0,o=0==(0|Yr[63&l[e+28>>2]](t,n,0|l[e>>2])),r=0|l[(i=e+68|0)>>2],o?(l[i>>2]=4|r,0|(o=0)):(l[i>>2]=-5&r,l[(o=e+56|0)>>2]=t,l[o+4>>2]=n,0|(o=1))}function ne(e,t,n){e|=0,t|=0,n|=0;var i,o,a=0;if(o=w,w=w+16|0,l[(i=o)>>2]=t,n){for(a=0,t=i+n|0;t=t+-1|0,r[e>>0]=0|r[t>>0],(0|(a=a+1|0))!=(0|n);)e=e+1|0;w=o}else w=o}function ie(e,t,n){e|=0,n|=0;var i=0;if(l[(t|=0)>>2]=0,n)for(i=t+n|0,t=e,e=0;r[(i=i+-1|0)>>0]=0|r[t>>0],(0|(e=e+1|0))!=(0|n);)t=t+1|0}function re(e,t){e|=0,t=+t;var n,i=0,o=0;_[b>>3]=t,o=0|Ar(0|(n=0|l[b>>2]),0|(i=0|l[b+4>>2]),56),r[e>>0]=o,o=0|Ar(0|n,0|i,48),r[e+1>>0]=o,o=0|Ar(0|n,0|i,40),r[e+2>>0]=o,r[e+3>>0]=i,o=0|Ar(0|n,0|i,24),r[e+4>>0]=o,o=0|Ar(0|n,0|i,16),r[e+5>>0]=o,i=0|Ar(0|n,0|i,8),r[e+6>>0]=i,r[e+7>>0]=n}function oe(e,t){var n;e|=0,r[(n=8+(t|=0)|0)-1>>0]=0|r[e>>0],r[n+-2>>0]=0|r[e+1>>0],r[n+-3>>0]=0|r[e+2>>0],r[n+-4>>0]=0|r[e+3>>0],r[n+-5>>0]=0|r[e+4>>0],r[n+-6>>0]=0|r[e+5>>0],r[n+-7>>0]=0|r[e+6>>0],r[t>>0]=0|r[e+7>>0]}function ae(e,t){e|=0,t=+t;var n;m[b>>2]=t,n=0|l[b>>2],r[e>>0]=n>>>24,r[e+1>>0]=n>>>16,r[e+2>>0]=n>>>8,r[e+3>>0]=n}function se(e,t){var n;e|=0,r[(n=4+(t|=0)|0)-1>>0]=0|r[e>>0],r[n+-2>>0]=0|r[e+1>>0],r[n+-3>>0]=0|r[e+2>>0],r[t>>0]=0|r[e+3>>0]}function le(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0;if(a=w,w=w+16|0,y=a+8|0,_=a,(s=0|l[(o=48+(e|=0)|0)>>2])>>>0>=n>>>0)return Er(0|t,0|l[(y=e+36|0)>>2],0|n),l[y>>2]=(0|l[y>>2])+n,l[o>>2]=(0|l[o>>2])-n,_=0|gr(0|l[(_=y=e+56|0)>>2],0|l[_+4>>2],0|n,0),l[y>>2]=_,l[y+4>>2]=S,w=a,0|n;if(4&l[(r=e+68|0)>>2]|0)return Er(0|t,0|l[(y=e+36|0)>>2],0|s),_=0|l[o>>2],l[y>>2]=(0|l[y>>2])+_,_=0|gr(0|l[(i=y=e+56|0)>>2],0|l[i+4>>2],0|_,0),l[y>>2]=_,l[y+4>>2]=S,l[o>>2]=0,w=a,0|(0|s?s:-1);for(s?(Er(0|t,0|l[(m=e+36|0)>>2],0|s),c=0|l[(g=e+32|0)>>2],l[m>>2]=c,p=0|l[o>>2],d=0|gr(0|l[(d=f=e+56|0)>>2],0|l[d+4>>2],0|p,0),l[f>>2]=d,l[f+4>>2]=S,l[o>>2]=0,n=n-p|0,t=t+p|0):(c=0|l[(g=e+32|0)>>2],l[(m=e+36|0)>>2]=c,s=0),f=e+64|0,p=e+16|0,d=e+56|0;;){if(h=0|l[f>>2],u=0|l[p>>2],n>>>0>=h>>>0){if(h=0|Yr[63&u](t,n,0|l[e>>2]),l[o>>2]=h,-1==(0|h)){c=16;break}if(s=h+s|0,!(h>>>0>>0)){c=19;break}c=h}else{if(c=0|Yr[63&u](c,h,0|l[e>>2]),l[o>>2]=c,-1==(0|c)){c=11;break}if(c>>>0>=n>>>0){c=14;break}Er(0|t,0|l[m>>2],0|c),s=c+s|0,c=0|l[o>>2]}u=0|l[g>>2],l[m>>2]=u,v=0|gr(0|l[(v=d)>>2],0|l[v+4>>2],0|c,0),l[(h=d)>>2]=v,l[h+4>>2]=S,l[o>>2]=0,n=n-c|0,t=t+c|0,c=u}return 11==(0|c)?(me(i,4,4386,_),l[o>>2]=0,l[r>>2]=4|l[r>>2],w=a,0|(v=0|s?s:-1)):14==(0|c)?(Er(0|t,0|l[m>>2],0|n),l[m>>2]=(0|l[m>>2])+n,l[o>>2]=(0|l[o>>2])-n,y=0|gr(0|l[(y=v=e+56|0)>>2],0|l[y+4>>2],0|n,0),l[v>>2]=y,l[v+4>>2]=S,w=a,0|(v=s+n|0)):16==(0|c)?(me(i,4,4386,y),l[o>>2]=0,l[r>>2]=4|l[r>>2],w=a,0|(v=0|s?s:-1)):19==(0|c)?(y=0|gr(0|l[(y=v=e+56|0)>>2],0|l[y+4>>2],0|h,0),l[v>>2]=y,l[v+4>>2]=S,l[m>>2]=l[g>>2],l[o>>2]=0,w=a,0|(v=s)):0}function ce(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0;if(s=w,w=w+16|0,a=s,8&l[(r=68+(e|=0)|0)>>2]|0)return w=s,-1;o=e+64|0,f=0|l[(y=e+48|0)>>2],c=(0|l[o>>2])-f|0;do{if(c>>>0>>0){m=e+32|0,h=e+36|0,g=e+20|0,u=e+56|0,d=0,p=c;e:for(;;){if(p?(Er(0|l[h>>2],0|t,0|p),c=0|l[m>>2],l[h>>2]=c,f=(0|l[y>>2])+p|0,l[y>>2]=f,b=0|gr(0|l[(b=u)>>2],0|l[b+4>>2],0|p,0),l[(v=u)>>2]=b,l[v+4>>2]=S,d=p+d|0,n=n-p|0,t=t+p|0):c=0|l[m>>2],l[h>>2]=c,f){do{if(-1==(0|(f=0|Yr[63&l[g>>2]](c,f,0|l[e>>2]))))break e;c=(0|l[h>>2])+f|0,l[h>>2]=c,f=(0|l[y>>2])-f|0,l[y>>2]=f}while(0!=(0|f));c=0|l[m>>2]}if(l[h>>2]=c,n>>>0<=(p=0|l[o>>2])>>>0){_=5;break}f=0}if(5==(0|_))break;return l[r>>2]=8|l[r>>2],me(i,4,4360,a),w=s,-1}d=0,u=e+56|0,h=c=e+36|0,c=0|l[c>>2]}while(0);return Er(0|c,0|t,0|n),l[h>>2]=(0|l[h>>2])+n,l[y>>2]=(0|l[y>>2])+n,v=0|gr(0|l[(v=u)>>2],0|l[v+4>>2],0|n,0),l[(b=u)>>2]=v,l[b+4>>2]=S,w=s,0|d+n}function he(e){return S=0|l[4+(e=56+(e|=0)|0)>>2],0|l[e>>2]}function ue(e){var t=0,n=0;return 0==(0|(t=0|l[(n=8+(e|=0)|0)>>2]))&0==(0|(n=0|l[n+4>>2]))?(S=t=0,0|(n=0)):(n=0|_r(0|t,0|n,0|l[(e=e+56|0)>>2],0|l[e+4>>2]),S=t=S,0|n)}function de(e,t,n,i){return t|=0,n|=0,i|=0,0|Xr[63&l[40+(e|=0)>>2]](e,t,n,i)}function fe(e,t,n,i){return t|=0,n|=0,i|=0,0|Xr[63&l[44+(e|=0)>>2]](e,t,n,i)}function pe(e){return 7!=(0|l[28+(e|=0)>>2])|0}function me(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r,o,a,s=0;a=w,w=w+528|0,r=a,o=a+16|0;e:do{if(e){switch(0|t){case 1:t=e+12|0;break;case 2:t=e+16|0,e=e+4|0;break;case 4:t=e+20|0,e=e+8|0;break;default:t=0;break e}s=0|l[t>>2],t=0|l[e>>2],s?n?(Tr(0|o,0,512),l[r>>2]=i,or(o,512,n,r),eo[7&s](o,t),t=1):t=1:t=0}else t=0}while(0);return w=a,0|t}function ge(e){l[(e|=0)>>2]=0,l[e+4>>2]=0,l[e+8>>2]=0,l[e+12>>2]=4,l[e+20>>2]=4,l[e+16>>2]=4}function _e(e,t,n){e|=0,t|=0,n|=0;var i,r,o=0,a=0,s=0,c=0,h=0;if(!(i=0|je(1,36)))return 0|i;if(l[i+20>>2]=n,l[(r=i+16|0)>>2]=e,o=0|je(1,52*e|0),l[(s=i+24|0)>>2]=o,!o)return 0|(n=0|l[i+28>>2])&&Ve(n),Ve(i),0;if(!e)return 0|i;for(n=0;l[o+(52*n|0)>>2]=l[t+(36*n|0)>>2],l[o+(52*n|0)+4>>2]=l[t+(36*n|0)+4>>2],c=0|l[t+(36*n|0)+8>>2],l[o+(52*n|0)+8>>2]=c,h=0|l[t+(36*n|0)+12>>2],l[o+(52*n|0)+12>>2]=h,l[o+(52*n|0)+16>>2]=l[t+(36*n|0)+16>>2],l[o+(52*n|0)+20>>2]=l[t+(36*n|0)+20>>2],l[o+(52*n|0)+24>>2]=l[t+(36*n|0)+24>>2],l[o+(52*n|0)+28>>2]=l[t+(36*n|0)+28>>2],l[o+(52*n|0)+32>>2]=l[t+(36*n|0)+32>>2],c=0|je(0|I(h,c),4),l[o+(52*n|0)+44>>2]=c,n=n+1|0,c;){if(n>>>0>=e>>>0){a=22;break}o=0|l[s>>2]}if(22==(0|a))return 0|i;if(0|(n=0|l[s>>2])){if(o=0|l[r>>2]){for(e=0;(n=0|l[n+(52*e|0)+44>>2])&&(Ve(n),o=0|l[r>>2]),!((n=e+1|0)>>>0>=o>>>0);)e=n,n=0|l[s>>2];n=0|l[s>>2]}Ve(n)}return 0|(n=0|l[i+28>>2])&&Ve(n),Ve(i),0}function ye(e){var t,n=0,i=0,r=0,o=0;if(e|=0){if(0|(n=0|l[(t=e+24|0)>>2])){if(i=0|l[(o=e+16|0)>>2]){for(r=0;(n=0|l[n+(52*r|0)+44>>2])&&(Ve(n),i=0|l[o>>2]),!((n=r+1|0)>>>0>=i>>>0);)r=n,n=0|l[t>>2];n=0|l[t>>2]}Ve(n)}0|(n=0|l[e+28>>2])&&Ve(n),Ve(e)}}function ve(){return 0|je(1,36)}function be(e,t){e|=0;var n,i,r=0,o=0,a=0,s=0,c=0;if(l[(t|=0)>>2]=l[e>>2],l[t+4>>2]=l[e+4>>2],l[t+8>>2]=l[e+8>>2],l[t+12>>2]=l[e+12>>2],n=t+16|0,o=0|l[(i=t+24|0)>>2]){if(a=0|l[n>>2]){for(r=0;(o=0|l[o+(52*r|0)+44>>2])&&(Ve(o),a=0|l[n>>2]),!((r=r+1|0)>>>0>=a>>>0);)o=0|l[i>>2];r=i,o=0|l[i>>2]}else r=i;Ve(o),l[i>>2]=0}else r=i;if(o=0|l[e+16>>2],l[n>>2]=o,o=0|Ne(52*o|0),l[r>>2]=o,!o)return l[i>>2]=0,void(l[n>>2]=0);if(0|l[n>>2]){c=e+24|0,s=0,r=o;do{r=r+(52*s|0)|0,o=(0|l[c>>2])+(52*s|0)|0,a=r+52|0;do{l[r>>2]=l[o>>2],r=r+4|0,o=o+4|0}while((0|r)<(0|a));r=0|l[i>>2],l[r+(52*s|0)+44>>2]=0,s=s+1|0}while(s>>>0<(0|l[n>>2])>>>0)}if(l[t+20>>2]=l[e+20>>2],r=0|l[(a=e+32|0)>>2],l[(s=t+32|0)>>2]=r,r)return o=0|Ne(r),l[(r=t+28|0)>>2]=o,o?void Er(0|o,0|l[e+28>>2],0|l[a>>2]):(l[r>>2]=0,void(l[s>>2]=0));l[t+28>>2]=0}function we(e){e|=0;var t=0;if(!(t=0|je(1,84)))return 0;switch(l[t+68>>2]=0,0|e){case 0:if(l[t+4>>2]=8,l[t+12>>2]=9,l[t>>2]=33,l[t+8>>2]=1,l[t+16>>2]=1,l[t+20>>2]=34,e=0|Ze(),l[t+40>>2]=e,!e)return Ve(t),0;break;case 2:if(l[t+4>>2]=10,l[t+12>>2]=11,l[t>>2]=35,l[t+8>>2]=2,l[t+16>>2]=2,l[t+20>>2]=36,e=0|It(0),l[t+40>>2]=e,!e)return Ve(t),0;break;default:return Ve(t),0}return ge(t+44|0),0|t}function xe(e){e|=0;var t=0;if(!(t=0|je(1,84)))return 0;switch(l[t+68>>2]=1,0|e){case 0:if(l[t+72>>2]=13,l[t+76>>2]=2,l[t+80>>2]=3,l[t+4>>2]=37,l[t+16>>2]=12,l[t>>2]=38,l[t+20>>2]=1,l[t+24>>2]=5,l[t+8>>2]=1,l[t+12>>2]=3,l[t+28>>2]=1,l[t+32>>2]=1,l[t+36>>2]=13,e=0|ot(),l[t+40>>2]=e,!e)return Ve(t),0;break;case 2:if(l[t+72>>2]=14,l[t+76>>2]=4,l[t+80>>2]=5,l[t+4>>2]=39,l[t+16>>2]=14,l[t>>2]=40,l[t+8>>2]=2,l[t+12>>2]=4,l[t+20>>2]=2,l[t+24>>2]=6,l[t+28>>2]=2,l[t+32>>2]=2,l[t+36>>2]=15,e=0|It(1),l[t+40>>2]=e,!e)return Ve(t),0;break;default:return Ve(t),0}return ge(t+44|0),0|t}function Ae(e,t,n){return n|=0,0!=(0|(e|=0))&0!=(0|(t|=0))&&0|l[e+68>>2]?0|(n=0|Xr[63&l[e+4>>2]](0|l[e+40>>2],t,n,e+44|0)):0|(n=0)}function Se(e){var t=0;(e|=0)&&(0|l[e+68>>2]?(t=e+40|0,$r[7&l[e+20>>2]](0|l[t>>2])):(t=e+40|0,$r[7&l[e+16>>2]](0|l[t>>2])),l[t>>2]=0,Ve(e))}function Me(e){var t,n=0;(e|=0)&&(n=0|l[e>>2],(t=0|l[n+48>>2])&&(Ve(t),n=0|l[e>>2]),Ve(n),l[e>>2]=0)}function Ee(e,t){return 0!=(0|(e|=0))&0!=(0|(t|=0))?0|l[e+68>>2]?0|(t=0):0|(t=0|Yr[63&l[e+4>>2]](0|l[e+40>>2],t,e+44|0)):0|(t=0)}function Te(e,t){return 0!=(0|(e|=0))&0!=(0|(t|=0))?0|l[e+68>>2]?0|(t=0):0|(t=0|Yr[63&l[e+12>>2]](0|l[e+40>>2],t,e+44|0)):0|(t=0)}function ke(e,t,n){var i;return n|=0,i=w,w=w+16|0,0!=(0|(e|=0))&0!=(0|(t|=0))?0|l[t+68>>2]?(n=0|Xr[63&l[t>>2]](e,0|l[t+40>>2],n,t+44|0),w=i,0|n):(me(t+44|0,1,4520,i),w=i,0|(n=0)):(w=i,0|(n=0))}function Ie(e){(e|=0)&&(Tr(0|e,0,8248),l[e+8200>>2]=-1,l[e+8204>>2]=-1,l[e+8248>>2]=0)}function Ce(e){(e|=0)&&(Tr(0|e,0,18708),l[e+5592>>2]=6,l[e+18684>>2]=0,l[e+5596>>2]=64,l[e+5600>>2]=64,l[e+44>>2]=0,l[e+5612>>2]=-1,l[e+18188>>2]=1,l[e+18192>>2]=1,r[e+18688>>0]=0,l[e+18196>>2]=-1,l[e+18200>>2]=-1,m[e+4792>>2]=0,l[e+4788>>2]=0,l[e+20>>2]=0,l[e+24>>2]=0,l[e+28>>2]=0,l[e+18692>>2]=0)}function Pe(e,t,n){return t|=0,n|=0,(e|=0)?(l[e+56>>2]=t,l[e+44>>2]=n,0|(n=1)):0|(n=0)}function Le(e,t,n){return t|=0,n|=0,(e|=0)?(l[e+64>>2]=t,l[e+52>>2]=n,0|(n=1)):0|(n=0)}function Re(e,t,n){return t|=0,n|=0,(e|=0)?(l[e+60>>2]=t,l[e+48>>2]=n,0|(n=1)):0|(n=0)}function Be(e,t){var n;return n=w,w=w+16|0,0!=(0|(e|=0))&0!=(0|(t|=0))?0|l[e+68>>2]?(eo[7&l[e+24>>2]](0|l[e+40>>2],t),w=n,0|(t=1)):(me(e+44|0,1,4439,n),w=n,0|(t=0)):(w=n,0|(t=0))}function De(e,t,n){return 0!=(0|(e|=0))&0!=(0|(t|=0))&0!=(0|(n|=0))?0|l[e+68>>2]?0|(n=0):0|(n=0|Xr[63&l[e+20>>2]](0|l[e+40>>2],t,n,e+44|0)):0|(n=0)}function Oe(e,t,n){return t|=0,0!=(0|(e|=0))&0!=(0|(n|=0))?0|l[e+68>>2]?0|(n=0):0|(n=0|Xr[63&l[e>>2]](0|l[e+40>>2],n,t,e+44|0)):0|(n=0)}function Fe(e,t){var n=0;return(e|=0)&&(n=0|Y(t|=0))?(K(n,e,0),$(n,0|l[e+8>>2],0),t?J(n,16):ee(n,17),Q(n,18),q(n,19),0|n):0|(n=0)}function Ge(e,t,n){t|=0;var i=0;return(e|=0)&&(i=0|Pi(e,0==(0|(n|=0))?4433:4436))?(e=0|Z(t,n))?(K(e,i,6),ji(i,0,2),n=0|function(e){return 0|function(e){var t=0;return(0|l[76+(e|=0)>>2])>-1?(!0,t=0|pr(e)):t=0|pr(e),0|t}(e|=0)}(i),ji(i,0,0),$(e,n,((0|n)<0)<<31>>31),J(e,20),ee(e,21),Q(e,22),q(e,23),0|(i=e)):(Oi(i),0|(i=0)):0|(i=0)}function Ne(e){return 0|((e|=0)?0|mi(e):0)}function je(e,t){return 0==(0|(e|=0))|0==(0|(t|=0))?0|(t=0):(t=0|function(e,t){t|=0;var n=0;return(e|=0)?(n=0|I(t,e),(t|e)>>>0>65535&&(n=(0|(n>>>0)/(e>>>0))==(0|t)?n:-1)):n=0,(e=0|mi(n))&&3&l[e+-4>>2]?(Tr(0|e,0,0|n),0|e):0|e}(e,t),0|t)}function He(e){var t,n;e|=0,n=w,w=w+16|0,t=n;do{if(e){if(0|vi(t,16,e)){l[t>>2]=0,e=0;break}e=0|l[t>>2];break}e=0}while(0);return w=n,0|e}function ze(e){gi(e|=0)}function Ue(e,t){return e|=0,e=(t|=0)?0|function(e,t){t|=0;var n=0,i=0;return(e|=0)?t>>>0>4294967231?(l[(t=25296)>>2]=12,0|(t=0)):(n=0|function(e,t){t|=0;var n,i,r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0;if(d=0|l[(i=4+(e|=0)|0)>>2],h=e+(r=-8&d)|0,!(3&d))return t>>>0<256?0|(e=0):r>>>0>=(t+4|0)>>>0&&(r-t|0)>>>0<=l[6304]<<1>>>0?0|e:0|(e=0);if(r>>>0>=t>>>0)return(r=r-t|0)>>>0<=15||(u=e+t|0,l[i>>2]=1&d|t|2,l[u+4>>2]=3|r,l[(d=h+4|0)>>2]=1|l[d>>2],_i(u,r)),0|e;if((0|l[6190])==(0|h))return r=(u=(0|l[6187])+r|0)-t|0,o=e+t|0,u>>>0<=t>>>0?0|(e=0):(l[i>>2]=1&d|t|2,l[o+4>>2]=1|r,l[6190]=o,l[6187]=r,0|e);if((0|l[6189])==(0|h))return(o=(0|l[6186])+r|0)>>>0>>0?0|(e=0):((r=o-t|0)>>>0>15?(u=e+t|0,o=e+o|0,l[i>>2]=1&d|t|2,l[u+4>>2]=1|r,l[o>>2]=r,l[(o=o+4|0)>>2]=-2&l[o>>2],o=u):(l[i>>2]=1&d|o|2,l[(o=e+o+4|0)>>2]=1|l[o>>2],o=0,r=0),l[6186]=r,l[6189]=o,0|e);if(2&(o=0|l[h+4>>2])|0)return 0;if((n=(-8&o)+r|0)>>>0>>0)return 0;u=n-t|0,a=o>>>3;do{if(o>>>0<256){if(o=0|l[h+8>>2],(0|(r=0|l[h+12>>2]))==(0|o)){l[6184]=l[6184]&~(1<>2]=r,l[r+8>>2]=o;break}c=0|l[h+24>>2],r=0|l[h+12>>2];do{if((0|r)==(0|h)){if(r=0|l[(o=4+(a=h+16|0)|0)>>2])s=o;else{if(!(r=0|l[a>>2])){a=0;break}s=a}for(;;)if(0|(o=0|l[(a=r+20|0)>>2]))r=o,s=a;else{if(!(a=0|l[(o=r+16|0)>>2]))break;r=a,s=o}l[s>>2]=0,a=r}else a=0|l[h+8>>2],l[a+12>>2]=r,l[r+8>>2]=a,a=r}while(0);if(0|c){if(r=0|l[h+28>>2],(0|l[(o=25040+(r<<2)|0)>>2])==(0|h)){if(l[o>>2]=a,!a){l[6185]=l[6185]&~(1<>2])!=(0|h)&1)<<2)>>2]=a,!a)break;l[a+24>>2]=c,0|(o=0|l[(r=h+16|0)>>2])&&(l[a+16>>2]=o,l[o+24>>2]=a),0|(r=0|l[r+4>>2])&&(l[a+20>>2]=r,l[r+24>>2]=a)}}while(0);return u>>>0<16?(l[i>>2]=n|1&d|2,l[(d=e+n+4|0)>>2]=1|l[d>>2],0|e):(h=e+t|0,l[i>>2]=1&d|t|2,l[h+4>>2]=3|u,l[(d=e+n+4|0)>>2]=1|l[d>>2],_i(h,u),0|e)}(e+-8|0,t>>>0<11?16:t+11&-8),0|n?0|(t=n+8|0):(n=0|mi(t))?(Er(0|n,0|e,0|((i=(-8&(i=0|l[e+-4>>2]))-(0==(3&i|0)?8:4)|0)>>>0>>0?i:t)),gi(e),0|(t=n)):0|(t=0)):0|(t=0|mi(t))}(e,t):0,0|e}function Ve(e){gi(e|=0)}function We(e,t){0!=(0|(e|=0))&0!=(0|(t|=0))&&(l[e+172>>2]=l[t+4>>2],l[e+168>>2]=l[t>>2])}function Ze(){var e=0,t=0;return(e=0|je(1,208))?(l[e>>2]=0,r[(t=e+184|0)>>0]=-3&r[t>>0],t=0|Ne(1e3),l[e+44>>2]=t,t?(l[e+48>>2]=1e3,t=0|mn(),l[e+192>>2]=t,t?(t=0|mn(),l[e+188>>2]=t,0|t?0|(t=e):(Ye(e),0|(t=0))):(Ye(e),0|(t=0))):(Ye(e),0|(t=0))):0|(e=0)}function Ye(e){var t=0,n=0,i=0,o=0,a=0,s=0;if(e|=0){if(0|l[e>>2]?(0|(n=0|l[(t=e+12|0)>>2])&&(Xe(n),Ve(0|l[t>>2]),l[t>>2]=0),0|(n=0|l[(t=e+16|0)>>2])&&(Ve(n),l[t>>2]=0,l[e+20>>2]=0)):(0|(n=0|l[(t=e+36|0)>>2])&&(Ve(n),l[t>>2]=0),0|(n=0|l[(t=e+24|0)>>2])&&(Ve(n),l[t>>2]=0,l[e+28>>2]=0),0|(n=0|l[(t=e+44|0)>>2])&&(Ve(n),l[t>>2]=0,l[e+48>>2]=0)),Kt(0|l[e+204>>2]),t=e+88|0,0|(n=0|l[(a=e+164|0)>>2])){if(o=0|I(0|l[e+112>>2],0|l[e+116>>2])){for(i=0;Xe(n),(0|(i=i+1|0))!=(0|o);)n=n+5640|0;n=0|l[a>>2]}Ve(n),l[a>>2]=0}if(0|(n=0|l[(a=e+124|0)>>2])){if(i=0|l[(s=e+120|0)>>2]){for(o=0;(n=0|l[n+(o<<3)>>2])&&(Ve(n),i=0|l[s>>2]),!((n=o+1|0)>>>0>=i>>>0);)o=n,n=0|l[a>>2];n=0|l[a>>2]}l[s>>2]=0,Ve(n),l[a>>2]=0}Ve(0|l[(s=e+144|0)>>2]),l[s>>2]=0,l[e+128>>2]=0,Ve(0|l[(s=e+108|0)>>2]),l[s>>2]=0,2&r[e+184>>0]||(Ve(0|l[(s=e+176|0)>>2]),l[s>>2]=0),n=t+100|0;do{l[t>>2]=0,t=t+4|0}while((0|t)<(0|n));gn(0|l[(s=e+188|0)>>2]),l[s>>2]=0,gn(0|l[e+192>>2]),l[s>>2]=0,Je(0|l[(s=e+196|0)>>2]),l[s>>2]=0,ye(0|l[(s=e+80|0)>>2]),l[s>>2]=0,ye(0|l[(s=e+84|0)>>2]),l[s>>2]=0,Ve(e)}}function Xe(e){var t,n=0,i=0,r=0,o=0,a=0,s=0;if(e|=0){if(0|(n=0|l[(o=e+5164|0)>>2])){if(i=0|l[(a=e+5160|0)>>2]){for(r=0;(n=0|l[n+(r<<3)>>2])&&(Ve(n),i=0|l[a>>2]),!((n=r+1|0)>>>0>=i>>>0);)r=n,n=0|l[o>>2];n=0|l[o>>2]}l[a>>2]=0,Ve(n),l[o>>2]=0}if(0|(i=0|l[(n=e+5172|0)>>2])&&(Ve(i),l[n>>2]=0),0|(i=0|l[(n=e+5584|0)>>2])&&(Ve(i),l[n>>2]=0),0|(i=0|l[(n=e+5608|0)>>2])&&(Ve(i),l[n>>2]=0),0|(i=0|l[(n=e+5604|0)>>2])&&(Ve(i),l[n>>2]=0),0|(i=0|l[(n=e+5624|0)>>2])&&(Ve(i),l[n>>2]=0,l[e+5632>>2]=0,l[e+5628>>2]=0),0|(n=0|l[(t=e+5612|0)>>2])){if(i=0|l[(s=e+5616|0)>>2]){for(a=0;(o=0|l[(r=n+12|0)>>2])&&(Ve(o),l[r>>2]=0,i=0|l[s>>2]),!((a=a+1|0)>>>0>=i>>>0);)n=n+20|0;n=0|l[t>>2]}Ve(n),l[t>>2]=0}0|(i=0|l[(n=e+5600|0)>>2])&&(Ve(i),l[n>>2]=0),(i=0|l[(n=e+5592|0)>>2])&&(Ve(i),l[n>>2]=0,l[e+5596>>2]=0)}}function Je(e){var t,n=0,i=0,r=0,o=0;if(e|=0){if(0|(i=0|l[(n=e+28|0)>>2])&&(Ve(i),l[n>>2]=0),0|(n=0|l[(t=e+40|0)>>2])){if(0|l[(o=e+36|0)>>2]){r=0;do{(i=0|l[n+(40*r|0)+36>>2])&&(Ve(i),n=0|l[t>>2],l[n+(40*r|0)+36>>2]=0),(i=0|l[n+(40*r|0)+16>>2])&&(Ve(i),n=0|l[t>>2],l[n+(40*r|0)+16>>2]=0),(i=0|l[n+(40*r|0)+24>>2])&&(Ve(i),n=0|l[t>>2],l[n+(40*r|0)+24>>2]=0),r=r+1|0}while(r>>>0<(0|l[o>>2])>>>0)}Ve(n),l[t>>2]=0}Ve(e)}}function qe(e,t,n,i){i|=0;var o,s,c,h,u,d,f,p,g,y,v,b,x,A,S,E,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0,te=0,ne=0,ie=0,re=0,oe=0,ae=0,se=0,le=0,ce=0;if(E=w,w=w+320|0,le=E+296|0,S=E+288|0,A=E+280|0,x=E+272|0,b=E+264|0,v=E+256|0,y=E+248|0,g=E+240|0,oe=E+232|0,u=E+224|0,h=E+216|0,re=E+208|0,c=E+200|0,s=E+192|0,o=E+184|0,N=E+176|0,G=E+168|0,F=E+160|0,O=E+152|0,B=E+144|0,K=E+136|0,Q=E+128|0,ne=E+112|0,q=E+104|0,J=E+96|0,X=E+88|0,Y=E+80|0,Z=E+72|0,V=E+64|0,U=E+56|0,z=E+48|0,H=E+32|0,j=E+24|0,R=E+16|0,P=E+8|0,k=E,ee=E+309|0,te=E+300|0,!(0!=(0|(e|=0))&0!=(0|(t|=0))&0!=(0|(n|=0))))return w=E,0;if(((T=0|l[(p=t+5592|0)>>2])-1|0)>>>0>32)return l[k>>2]=T,l[k+4>>2]=33,me(i,1,4599,k),w=E,0;l[(d=e+112|0)>>2]=1,l[(f=e+116|0)>>2]=1,$=t+18704|0;do{if(!(0|a[$>>1])){switch(0|l[t+18676>>2]){case 1:T=1041666,k=1302083,C=3,se=8;break;case 2:T=520833,k=651041,C=3,se=8;break;case 3:T=1041666,k=1302083,C=4,se=8;break;default:k=0}8==(0|se)&&(a[$>>1]=C,l[t+18700>>2]=k,l[t+18680>>2]=T,k=1),T=0|l[t+18684>>2];e:do{if((0|T)<4){if(3!=(0|T)){se=13;break e}T=3,se=12}else{if((0|T)<33024){if(4==(0|T)){T=4,se=12;break e}se=13;break e}if(33024!=(0|T)){se=13;break e}T=-32512,se=12}}while(0);if(12==(0|se))a[$>>1]=T;else if(13==(0|se)&&0==(0|k))break;me(i,2,4655,P)}}while(0);T=0|l[(W=t+18700|0)>>2];do{if((0|T)<1){if((D=+m[t+4792+((0|l[t+4788>>2])-1<<2)>>2])>0){ae=0|l[n+24>>2],R=0|I(0|l[ae+8>>2],0|l[n+16>>2]),R=0|I(R,0|l[ae+12>>2]),ce=+((0|I(R,0|l[ae+24>>2]))>>>0),ae=~~+M(+ce/(8*D*+((0|l[ae>>2])>>>0)*+((0|l[ae+4>>2])>>>0))),l[W>>2]=ae;break}l[W>>2]=0;break}if(L=0|l[n+24>>2],ae=0|I(0|l[L+8>>2],0|l[n+16>>2]),ae=0|I(ae,0|l[L+12>>2]),D=+((0|I(ae,0|l[L+24>>2]))>>>0),T=0|I(T<<3,0|l[L>>2]),D/=+((0|I(T,0|l[L+4>>2]))>>>0),0|(T=0|l[(L=t+4788|0)>>2])){P=0,k=0;do{+m[(C=t+4792+(P<<2)|0)>>2]>2]=D,k=1,T=0|l[L>>2]),P=P+1|0}while(P>>>0>>0);0|k&&me(i,2,4792,R)}}while(0);T=0|a[$>>1];e:do{if((T+-3&65535)>=4){if(T<<16>>16==7){me(i,2,6952,B),a[$>>1]=0;break}if((T+-256&65535)<524){me(i,2,7007,O),a[$>>1]=0;break}if((T+-1024&65535)<1180){me(i,2,7055,F),a[$>>1]=0;break}if(T<<16>>16<=-1)switch(T<<16>>16){case-32512:break e;case-32768:me(i,2,7097,G),a[$>>1]=0;break e;default:me(i,2,7185,N),a[$>>1]=0;break e}}else{if((T+-5&65535)<2){me(i,2,4884,j),a[$>>1]=0;break}l[t>>2]=0,l[t+12>>2]=1,l[t+16>>2]=1,r[t+18689>>0]=67,r[t+18688>>0]=1,l[t+4>>2]=0,l[t+8>>2]=0,l[t+18180>>2]=0,l[t+18184>>2]=0,l[t+5596>>2]=32,l[t+5600>>2]=32,l[t+5604>>2]=0,l[t+5612>>2]=-1,l[t+18188>>2]=1,l[t+18192>>2]=1,l[t+5608>>2]=1,(0|(C=0|l[(k=t+4788|0)>>2]))>1&&(ce=+m[t+4792+(C+-1<<2)>>2],l[H>>2]=C,_[H+8>>3]=ce,me(i,2,4946,H),l[t+4792>>2]=l[t+4792+((0|l[k>>2])-1<<2)>>2],l[k>>2]=1,T=0|a[$>>1]);t:do{switch(T<<16>>16){case 3:(0|(T=0|l[p>>2]))>6&&(l[z>>2]=T+1,me(i,2,5119,z),l[p>>2]=6,T=6);break;case 4:if((0|(T=0|l[p>>2]))<2){l[U>>2]=T+1,me(i,2,5265,U),l[p>>2]=1,T=1;break t}(0|T)>7&&(l[V>>2]=T+1,me(i,2,5419,V),l[p>>2]=7,T=7);break;default:T=0|l[p>>2]}}while(0);if(l[(k=t+40|0)>>2]=1|l[k>>2],l[(k=t+5620|0)>>2]=T+-1,(0|T)>1){T=0;do{l[t+5624+(T<<2)>>2]=256,l[t+5756+(T<<2)>>2]=256,T=T+1|0}while((0|T)<(0|l[k>>2]))}l[t+44>>2]=4,4==(0|a[$>>1])?(T=0|l[p>>2],l[t+96>>2]=1,l[t+48>>2]=0,l[t+52>>2]=0,l[t+56>>2]=1,ae=T+-1|0,l[t+60>>2]=ae,l[t+64>>2]=3,l[t+80>>2]=4,l[t+244>>2]=1,l[t+196>>2]=ae,l[t+200>>2]=0,l[t+204>>2]=1,l[t+208>>2]=T,l[t+212>>2]=3,l[t+228>>2]=4,T=2):T=0,l[t+4784>>2]=T,l[t+20>>2]=1,(0|(T=0|l[W>>2]))>=1?(0|T)>1302083&&(me(i,2,5722,Y),l[W>>2]=1302083):(l[W>>2]=1302083,me(i,2,5573,Z)),(0|(k=0|l[(T=t+18680|0)>>2]))>=1?(0|k)>1041666&&(me(i,2,6044,J),l[T>>2]=1041666):(l[T>>2]=1041666,me(i,2,5895,X)),T=0|l[n+16>>2],k=0|l[n+24>>2],P=0|l[k+8>>2],C=0|I(P,T),R=0|l[k+12>>2],C=0|I(C,R),ce=+((0|I(C,0|l[k+24>>2]))>>>0),C=0|I(l[W>>2]<<3,0|l[k>>2]),ce/=+((0|I(C,0|l[k+4>>2]))>>>0),m[t+4792>>2]=ce,C=0|a[$>>1];t:do{if(3==(0|T)){if(T=0|l[k+28>>2],(L=0|l[k+32>>2])|12!=(0|T))R=0;else if(T=0|l[k+80>>2],(L=0|l[k+84>>2])|12!=(0|T))R=1;else if(T=0|l[k+132>>2],(k=0|l[k+136>>2])|12!=(0|T))R=2,L=k;else switch(C<<16>>16){case 3:if(!(P>>>0>2048|R>>>0>1080))break e;l[Q>>2]=P,l[Q+4>>2]=R,me(i,2,6616,Q);break t;case 4:if(!(P>>>0>4096|R>>>0>2160))break e;l[K>>2]=P,l[K+4>>2]=R,me(i,2,6787,K);break t;default:break e}r[ee>>0]=0|r[6383],r[ee+1>>0]=0|r[6384],r[ee+2>>0]=0|r[6385],r[ee+3>>0]=0|r[6386],r[ee+4>>0]=0|r[6387],r[ee+5>>0]=0|r[6388],r[ee+6>>0]=0|r[6389],C=6390,P=(k=te)+9|0;do{r[k>>0]=0|r[C>>0],k=k+1|0,C=C+1|0}while((0|k)<(0|P));l[ne>>2]=R,l[ne+4>>2]=T,l[ne+8>>2]=0|L?ee:te,me(i,2,6399,ne)}else l[q>>2]=T,me(i,2,6217,q)}while(0);a[$>>1]=0}}while(0);l[e+168>>2]=l[t+18680>>2],a[(ae=e+88|0)>>1]=0|a[$>>1],ee=-2&r[(ne=e+181|0)>>0]|1&l[t+20>>2],r[ne>>0]=ee,ee=(255&l[(te=t+24|0)>>2])<<1&2|-3&ee,r[ne>>0]=ee,r[ne>>0]=-5&ee|(255&l[t+28>>2])<<2&4;do{if(0|l[te>>2]&&0|l[(ie=t+32|0)>>2]){if(k=0|Ne(T=0|I(12*(0|l[t+4788>>2])|0,0|l[p>>2])),l[e+176>>2]=k,0|k){Er(0|k,0|l[ie>>2],0|T);break}return me(i,1,7244,o),w=E,0}}while(0);l[(P=e+100|0)>>2]=l[t+12>>2],l[(L=e+104|0)>>2]=l[t+16>>2],l[(C=e+92|0)>>2]=l[t+4>>2],l[(R=e+96|0)>>2]=l[t+8>>2],T=0|l[(k=t+36|0)>>2];do{if(T){if(T=0|Ne(1+(0|Ai(T))|0),l[e+108>>2]=T,0|T){ar(T,0|l[k>>2]);break}return me(i,1,7316,s),w=E,0}if(k=0|Ne(29+(0|Ai(T=4427))|0),l[e+108>>2]=k,0|k){l[re>>2]=7421,l[re+4>>2]=T,lr(k,7416,re);break}return me(i,1,7370,c),w=E,0}while(0);if(T=(0|l[n+8>>2])-(0|l[C>>2])|0,0|l[t>>2]?(re=0|l[P>>2],l[d>>2]=(T+-1+re|0)/(0|re)|0,re=0|l[L>>2],l[f>>2]=((0|l[n+12>>2])-1-(0|l[R>>2])+re|0)/(0|re)|0):(l[P>>2]=T,l[L>>2]=(0|l[n+12>>2])-(0|l[R>>2])),0|r[t+18688>>0]&&(r[e+180>>0]=0|r[t+18689>>0],r[ne>>0]=8|r[ne>>0]),re=0|je(0|I(0|l[f>>2],0|l[d>>2]),5640),l[(te=e+164|0)>>2]=re,!re)return me(i,1,7450,h),w=E,0;V=0|l[(ee=t+4784|0)>>2];do{if(0|V){if(j=t+48|0,W=0|l[p>>2],Z=0|l[n+16>>2],Y=0|l[t+4788>>2],X=0|I(Z,W),!(J=0|je(0|I(X,Y),4))){me(i,1,7504,u);break}if((T=0|l[j>>2])>>>0<(C=0|l[(O=t+60|0)>>2])>>>0)for(B=0|I(T,Z),F=t+52|0,N=t+56|0,k=0|l[(G=t+64|0)>>2];;){if((P=0|l[F>>2])>>>0>>0){for(R=P+B|0,C=0|l[N>>2];;){if(C){for(k=R,L=0;l[J+(k<<2)>>2]=1,!((L=L+1|0)>>>0>=(C=0|l[N>>2])>>>0);)k=k+X|0;k=0|l[G>>2]}else C=0;if((P=P+1|0)>>>0>=k>>>0)break;R=R+1|0}C=0|l[O>>2]}if((T=T+1|0)>>>0>=C>>>0)break;B=B+Z|0}if(V>>>0>1){G=1;do{if(T=j,j=j+148|0,H=0|l[T+8>>2],H=(L=0|l[(N=T+156|0)>>2])>>>0>H>>>0?H:0,(k=0|l[j>>2])>>>0<(C=0|l[(z=T+160|0)>>2])>>>0)for(B=0|I(k,Z),U=T+152|0,O=T+164|0,F=0|I(H,X),T=0|l[O>>2];;){if((P=0|l[U>>2])>>>0>>0){for(R=P+B|0;;){if(H>>>0>>0){for(T=R+F|0,C=H;l[J+(T<<2)>>2]=1,!((C=C+1|0)>>>0>=(L=0|l[N>>2])>>>0);)T=T+X|0;T=0|l[O>>2]}if((P=P+1|0)>>>0>=T>>>0)break;R=R+1|0}C=0|l[z>>2]}if((k=k+1|0)>>>0>=C>>>0)break;B=B+Z|0}G=G+1|0}while((0|G)!=(0|V))}if(!(0==(0|Y)|0==(0|W)|0==(0|Z))){for(T=0,R=0,B=0;;){for(C=0,L=R;;){for(P=0,k=L;T|=1!=(0|l[J+(k<<2)>>2]),(0|(P=P+1|0))!=(0|Z);)k=k+1|0;if((0|(C=C+1|0))==(0|W))break;L=L+Z|0}if((0|(B=B+1|0))==(0|Y))break;R=R+X|0}0|T&&me(i,1,7552,oe)}Ve(J)}}while(0);e:do{if(0|I(0|l[f>>2],0|l[d>>2])){H=t+4788|0,z=t+40|0,U=t+44|0,V=t+18690|0,W=n+16|0,k=t+18696|0,Z=n+24|0,Y=t+5596|0,X=t+5600|0,J=t+5604|0,q=t+5608|0,Q=t+5612|0,K=t+5616|0,$=t+5620|0,j=0;t:for(;;){O=(B=0|l[te>>2])+(5640*j|0)|0,oe=0|l[H>>2],l[(C=B+(5640*j|0)+8|0)>>2]=oe;n:do{if(0|oe){if(((0|a[ae>>1])-3&65535)<4)T=0;else for(T=0;;)if(oe=0==(4&r[ne>>0]),l[(oe?B+(5640*j|0)+20+(T<<2)|0:B+(5640*j|0)+5184+(T<<2)|0)>>2]=l[(oe?t+4792+(T<<2)|0:t+5192+(T<<2)|0)>>2],(T=T+1|0)>>>0>=(0|l[C>>2])>>>0)break n;do{4&r[ne>>0]&&(l[B+(5640*j|0)+5184+(T<<2)>>2]=l[t+5192+(T<<2)>>2]),l[B+(5640*j|0)+20+(T<<2)>>2]=l[t+4792+(T<<2)>>2],T=T+1|0}while(T>>>0<(0|l[C>>2])>>>0)}}while(0);if(l[O>>2]=l[z>>2],l[B+(5640*j|0)+4>>2]=l[U>>2],l[(R=B+(5640*j|0)+16|0)>>2]=r[V>>0],C=0|r[(T=B+(5640*j|0)+5636|0)>>0],r[T>>0]=-5&C,0|l[ee>>2]){if(r[T>>0]=4|C,P=0|l[ee>>2]){L=j+1|0,T=0,C=0;do{(0|L)==(0|l[t+48+(148*C|0)+48>>2])&&(l[B+(5640*j|0)+424+(148*T|0)>>2]=l[t+48+(148*T|0)>>2],l[B+(5640*j|0)+424+(148*T|0)+4>>2]=l[t+48+(148*T|0)+4>>2],l[B+(5640*j|0)+424+(148*T|0)+8>>2]=l[t+48+(148*T|0)+8>>2],l[B+(5640*j|0)+424+(148*T|0)+12>>2]=l[t+48+(148*T|0)+12>>2],l[B+(5640*j|0)+424+(148*T|0)+16>>2]=l[t+48+(148*T|0)+16>>2],l[B+(5640*j|0)+424+(148*T|0)+32>>2]=l[t+48+(148*T|0)+32>>2],l[B+(5640*j|0)+424+(148*T|0)+48>>2]=l[t+48+(148*T|0)+48>>2],T=T+1|0),C=C+1|0}while(C>>>0

>>0)}else T=0;T=T+-1|0}else T=0;if(l[B+(5640*j|0)+420>>2]=T,oe=0|je(0|l[W>>2],1080),l[(N=B+(5640*j|0)+5584|0)>>2]=oe,!oe){se=141;break}do{if(0|l[k>>2]){if(C=0|l[W>>2],P=0|Ne(C=0|I(C<<2,C)),L=(0|l[k>>2])+C|0,!P){se=144;break t}if(l[R>>2]=2,T=0|Ne(C),l[B+(5640*j|0)+5608>>2]=T,!T){se=146;break t}if(Er(0|T,0|l[k>>2],0|C),Er(0|P,0|l[k>>2],0|C),T=0|Ne(C),l[(C=B+(5640*j|0)+5604|0)>>2]=T,!T){se=148;break t}if(!(0|Nn(P,T,0|l[W>>2]))){se=150;break t}if(T=0|Ne(l[W>>2]<<3),l[B+(5640*j|0)+5600>>2]=T,!T){se=152;break t}if(Ot(T,0|l[W>>2],0|l[C>>2]),Ve(P),0|(C=0|l[W>>2])){P=0|l[N>>2],T=0;do{l[P+(1080*T|0)+1076>>2]=l[L+(T<<2)>>2],T=T+1|0}while(T>>>0>>0)}if(!(0|Qe(O,n))){se=158;break t}0|l[W>>2]&&(O=0,se=172)}else{n:do{if(1==(0|l[R>>2])){if((T=0|l[W>>2])>>>0<=2){P=T;break}C=0|l[Z>>2],T=0|l[C>>2];do{if((0|T)==(0|l[C+52>>2])){if((0|T)!=(0|l[C+104>>2]))break;if((0|(T=0|l[C+4>>2]))!=(0|l[C+56>>2]))break;if((0|T)==(0|l[C+108>>2])){se=166;break n}}}while(0);me(i,2,7948,le),l[R>>2]=0,se=166}else se=166}while(0);if(166==(0|se)&&(se=0,P=0|l[W>>2]),!P)break;C=0|l[Z>>2],T=0;do{0|l[C+(52*T|0)+32>>2]||(l[(0|l[N>>2])+(1080*T|0)+1076>>2]=1<<(0|l[C+(52*T|0)+24>>2])-1),T=T+1|0}while(T>>>0

>>0);O=0,se=172}}while(0);if(172==(0|se))for(;;){if(se=0,G=(F=0|l[N>>2])+(1080*O|0)|0,P=1&l[z>>2],l[G>>2]=P,L=0|l[p>>2],l[(R=F+(1080*O|0)+4|0)>>2]=L,(0|(T=0|l[Y>>2]))>1)for(C=T,T=0;T=T+1|0,C>>>0>3;)C>>>=1;else T=0;if(l[F+(1080*O|0)+8>>2]=T,(0|(T=0|l[X>>2]))>1)for(C=T,T=0;T=T+1|0,C>>>0>3;)C>>>=1;else T=0;l[F+(1080*O|0)+12>>2]=T,l[F+(1080*O|0)+16>>2]=l[J>>2],oe=0|l[q>>2],l[F+(1080*O|0)+20>>2]=0==(0|oe)&1,l[F+(1080*O|0)+24>>2]=0|oe?2:0,l[F+(1080*O|0)+804>>2]=2,T=(0|O)==(0|l[Q>>2])?0|l[K>>2]:0,l[F+(1080*O|0)+808>>2]=T;do{if(P){if(!((0|L)>0))break;for(B=0;;){R=L,L=L+-1|0,T=0|l[$>>2];do{if((0|B)<(0|T)){T=0|l[t+5624+(B<<2)>>2];do{if((0|T)<1)T=1;else{if(1==(0|T)){T=0;break}for(C=T,T=0;T=T+1|0,C>>>0>3;)C>>>=1}}while(0);if(l[F+(1080*O|0)+812+(L<<2)>>2]=T,(0|(T=0|l[t+5756+(B<<2)>>2]))<1){T=1;break}if(1==(0|T)){T=0;break}for(C=T,T=0;T=T+1|0,C>>>0>3;)C>>>=1}else{C=B-(oe=T+-1|0)|0,T=l[t+5624+(oe<<2)>>2]>>C,C=l[t+5756+(oe<<2)>>2]>>C;do{if((0|T)<1)T=1;else{if(1==(0|T)){T=0;break}for(P=T,T=0;T=T+1|0,P>>>0>3;)P>>>=1}}while(0);if(l[F+(1080*O|0)+812+(L<<2)>>2]=T,(0|C)<1){T=1;break}if(1==(0|C)){T=0;break}for(T=0;T=T+1|0,C>>>0>3;)C>>>=1}}while(0);if(l[F+(1080*O|0)+944+(L<<2)>>2]=T,(0|R)<=1)break;B=B+1|0}}else{if(!L)break;T=0;do{l[F+(1080*O|0)+812+(T<<2)>>2]=15,l[F+(1080*O|0)+944+(T<<2)>>2]=15,T=T+1|0}while(T>>>0<(0|l[R>>2])>>>0)}}while(0);if(Bn(G,0|l[(0|l[Z>>2])+(52*O|0)+24>>2]),(O=O+1|0)>>>0>=(0|l[W>>2])>>>0)break;se=172}if((j=j+1|0)>>>0>=(0|I(0|l[f>>2],0|l[d>>2]))>>>0)break e}if(141==(0|se))return me(i,1,7591,g),w=E,0;if(144==(0|se))return me(i,1,7655,y),w=E,0;if(146==(0|se))return Ve(P),me(i,1,7698,v),w=E,0;if(148==(0|se))return Ve(P),me(i,1,7756,b),w=E,0;if(150==(0|se))return Ve(P),me(i,1,7816,x),w=E,0;if(152==(0|se))return Ve(P),me(i,1,7864,A),w=E,0;if(158==(0|se))return me(i,1,7914,S),w=E,0}else k=t+18696|0}while(0);return(T=0|l[k>>2])?(Ve(T),l[k>>2]=0,w=E,0|(le=1)):(w=E,0|(le=1))}function Qe(e,t){t|=0;var n,i,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,g=0,_=0;if(2!=(0|l[16+(e|=0)>>2]))return 1;f=e+5604|0,a=0|l[(_=e+5616|0)>>2],p=e+5620|0;do{if(0|l[f>>2]){do{if((0|a)==(0|l[p>>2])){if(a=a+10|0,l[p>>2]=a,0|(a=0|Ue(0|l[(o=e+5612|0)>>2],20*a|0))){l[o>>2]=a,Tr(a+(20*(g=0|l[_>>2])|0)|0,0,20*((0|l[p>>2])-g|0)|0),a=0|l[_>>2];break}return Ve(0|l[o>>2]),l[o>>2]=0,l[p>>2]=0,l[_>>2]=0,0}o=e+5612|0}while(0);if(s=(u=0|l[o>>2])+(20*a|0)|0,0|(o=0|l[(d=u+(20*a|0)+12|0)>>2])&&(Ve(o),l[d>>2]=0),l[u+(20*a|0)+8>>2]=1,l[u+(20*a|0)+4>>2]=1,l[s>>2]=2,o=0|l[t+16>>2],h=0|Ne(c=(o=0|I(o,o))<<2),l[d>>2]=h,h){to[15&l[768+(l[s>>2]<<2)>>2]](0|l[f>>2],h,o),l[u+(20*a|0)+16>>2]=c,a=1+(0|l[_>>2])|0,l[_>>2]=a,c=2;break}return 0}c=1,s=0}while(0);do{if((0|a)==(0|l[p>>2])){if(a=a+10|0,l[p>>2]=a,0|(a=0|Ue(0|l[(o=e+5612|0)>>2],20*a|0))){l[o>>2]=a,Tr(0|(a=a+(20*(g=0|l[_>>2])|0)|0),0,20*((0|l[p>>2])-g|0)|0),s=0==(0|s)?0:a+-20|0,a=0|l[_>>2];break}return Ve(0|l[o>>2]),l[o>>2]=0,l[p>>2]=0,l[_>>2]=0,0}o=e+5612|0}while(0);if(g=(p=0|l[o>>2])+(20*a|0)|0,0|(o=0|l[(n=p+(20*a|0)+12|0)>>2])&&(Ve(o),l[n>>2]=0),i=c+1|0,l[p+(20*a|0)+8>>2]=c,l[p+(20*a|0)+4>>2]=2,l[g>>2]=2,f=0|Ne(d=(u=0|l[(t=t+16|0)>>2])<<2),l[n>>2]=f,!f)return 0;if(!(f=0|Ne(d)))return Ve(0|l[n>>2]),l[n>>2]=0,0;if(0|u)for(o=0,c=0|l[e+5584>>2],h=f;m[h>>2]=+(0|l[c+1076>>2]),(0|(o=o+1|0))!=(0|u);)c=c+1080|0,h=h+4|0;to[15&l[768+(l[g>>2]<<2)>>2]](f,0|l[n>>2],u),Ve(f),l[p+(20*a|0)+16>>2]=d,l[_>>2]=1+(0|l[_>>2]),o=0|l[(h=e+5628|0)>>2],c=e+5632|0;do{if((0|o)==(0|l[c>>2])){if(o=o+10|0,l[c>>2]=o,0|(o=0|Ue(0|l[(a=e+5624|0)>>2],20*o|0))){l[a>>2]=o,Tr(o+(20*(e=0|l[h>>2])|0)|0,0,20*((0|l[c>>2])-e|0)|0),o=0|l[h>>2];break}return Ve(0|l[a>>2]),l[a>>2]=0,l[c>>2]=0,l[h>>2]=0,0}a=e+5624|0}while(0);return e=0|l[a>>2],l[e+(20*o|0)+8>>2]=s,r[(_=e+(20*o|0)+16|0)>>0]=1|r[_>>0],l[e+(20*o|0)+4>>2]=l[t>>2],l[e+(20*o|0)>>2]=i,l[e+(20*o|0)+12>>2]=g,l[h>>2]=1+(0|l[h>>2]),1}function Ke(e,t,n){return 1}function $e(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r=0,o=0,a=0,s=0,c=0,h=0;if(c=0|ve(),l[(h=t+80|0)>>2]=c,!c)return 0;if(0|_n(0|l[(r=t+192|0)>>2],24,i)&&0|_n(0|l[r>>2],25,i)){if(c=0|yn(s=0|l[r>>2]),r=0|vn(s),c){for(o=1,a=0;o=o?0!=(0|Yr[63&l[r>>2]](t,e,i)):0,(0|(a=a+1|0))!=(0|c);)r=r+4|0,o&=1;if(bn(s),!o)return ye(0|l[h>>2]),l[h>>2]=0,0}else bn(s);if(0|_n(0|l[(r=t+188|0)>>2],26,i)&&0|_n(0|l[r>>2],27,i)){if(c=0|yn(s=0|l[r>>2]),r=0|vn(s),c){for(o=1,a=0;o=o?0!=(0|Yr[63&l[r>>2]](t,e,i)):0,(0|(a=a+1|0))!=(0|c);)r=r+4|0,o&=1;if(bn(s),!o)return ye(0|l[h>>2]),l[h>>2]=0,0}else bn(s);if(r=0|ve(),l[n>>2]=r,!r)return 0;if(be(0|l[h>>2],r),o=0|I(0|l[t+116>>2],0|l[t+112>>2]),l[36+(0|l[(s=t+196|0)>>2])>>2]=o,o=0|je(o,40),r=0|l[s>>2],l[r+40>>2]=o,!o)return 0;if(!(0|l[r+36>>2]))return 1;for(a=0;;){if(l[o+(40*a|0)+28>>2]=100,l[o+(40*a|0)+20>>2]=0,h=0|je(100,24),r=0|l[s>>2],o=0|l[r+40>>2],l[o+(40*a|0)+24>>2]=h,a=a+1|0,!h){r=0,o=30;break}if(a>>>0>=(0|l[r+36>>2])>>>0){r=1,o=30;break}}if(30==(0|o))return 0|r}return ye(0|l[h>>2]),l[h>>2]=0,0}return ye(0|l[h>>2]),l[h>>2]=0,0}function et(e,t,n,i,r){t|=0,n|=0,i|=0,r|=0;var o,a,s,c,h,u=0,d=0;if(h=w,w=w+32|0,o=h+8|0,s=h+20|0,e=16==(0|l[8+(e|=0)>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],c=0|l[e+5584>>2],!(e=0|l[i>>2]))return me(r,1,10568,h),w=h,0;l[i>>2]=e+-1,ie(n,s,1),n=n+1|0,u=31&(e=0|l[s>>2]),l[(a=c+(1080*t|0)+24|0)>>2]=u,l[c+(1080*t|0)+804>>2]=e>>>5;do{if(1==(0|u))e=1,d=8;else{if((e=(0|l[i>>2])>>>(0!=(0|u)&1))>>>0>97&&(l[o>>2]=e,l[o+4>>2]=97,l[o+8>>2]=97,me(r,2,10604,o),u=0|l[a>>2]),r=0==(0|e),0|u){if(r){e=0,d=20;break}d=8;break}if(!r)for(u=0;ie(n,s,1),u>>>0<97&&(l[c+(1080*t|0)+28+(u<<3)>>2]=(0|l[s>>2])>>>3,l[c+(1080*t|0)+28+(u<<3)+4>>2]=0),(0|(u=u+1|0))!=(0|e);)n=n+1|0;e=(0|l[i>>2])-e|0}}while(0);if(8==(0|d))for(u=0;;){if(ie(n,s,2),u>>>0<97&&(d=0|l[s>>2],l[c+(1080*t|0)+28+(u<<3)>>2]=d>>>11,l[c+(1080*t|0)+28+(u<<3)+4>>2]=2047&d),(0|(u=u+1|0))==(0|e)){d=20;break}n=n+2|0}if(20==(0|d)&&(e=(0|l[i>>2])-(e<<1)|0),l[i>>2]=e,1!=(0|l[a>>2]))return w=h,1;n=c+(1080*t|0)+28|0,u=c+(1080*t|0)+32|0,e=1;do{i=(0|l[n>>2])-(((e+-1|0)>>>0)/3|0)|0,l[c+(1080*t|0)+28+(e<<3)>>2]=(0|i)>0?i:0,l[c+(1080*t|0)+28+(e<<3)+4>>2]=l[u>>2],e=e+1|0}while(97!=(0|e));return w=h,1}function tt(e,t,n,i,r){t|=0,n|=0,i|=0,r|=0;var o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0;if(u=w,w=w+64|0,h=u+48|0,o=u+40|0,m=u+16|0,p=u+8|0,c=u+52|0,d=16==(0|l[(f=8+(e|=0)|0)>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],a=0|l[d+5584>>2],(0|l[i>>2])>>>0<5)return me(r,1,11008,u),w=u,0;if(ie(n,s=a+(1080*t|0)+4|0,1),d=1+(0|l[s>>2])|0,l[s>>2]=d,d>>>0>33)return l[p>>2]=d,l[p+4>>2]=33,me(r,1,11043,p),w=u,0;if((0|l[e+168>>2])>>>0>=d>>>0)return l[m>>2]=t,me(r,1,11120,m),l[f>>2]=32768|l[f>>2],w=u,0;if(ie(n+1|0,p=a+(1080*t|0)+8|0,1),l[p>>2]=2+(0|l[p>>2]),ie(n+2|0,f=a+(1080*t|0)+12|0,1),m=2+(0|l[f>>2])|0,l[f>>2]=m,m>>>0>10|(p=0|l[p>>2])>>>0>10|(p+m|0)>>>0>12)return me(r,1,11278,u+24|0),w=u,0;if(ie(n+3|0,m=a+(1080*t|0)+16|0,1),192&l[m>>2]|0)return me(r,1,11346,u+32|0),w=u,0;if(ie(n+4|0,a+(1080*t|0)+20|0,1),d=(0|l[i>>2])-5|0,l[i>>2]=d,e=0|l[s>>2],!(1&l[a+(1080*t|0)>>2])){if(!e)return w=u,1;d=0;do{l[a+(1080*t|0)+812+(d<<2)>>2]=15,l[a+(1080*t|0)+944+(d<<2)>>2]=15,d=d+1|0}while(d>>>0<(0|l[s>>2])>>>0);return w=u,1}if(d>>>0>>0)return me(r,1,11008,o),w=u,0;do{if(e){for(p=0,f=n+5|0;ie(f,c,1),f=f+1|0,d=0|l[c>>2],!(0|p&&d>>>0<16|0==(15&d|0));)if(l[a+(1080*t|0)+812+(p<<2)>>2]=15&d,l[a+(1080*t|0)+944+(p<<2)>>2]=d>>>4,(p=p+1|0)>>>0>=(e=0|l[s>>2])>>>0){g=24;break}if(24==(0|g)){d=0|l[i>>2];break}return me(r,1,11413,h),w=u,0}e=0}while(0);return l[i>>2]=d-e,w=u,1}function nt(e,t,n,i,o,s,c,h,u,d,f){e|=0,t|=0,n|=0,i|=0,o|=0,s|=0,c|=0,h|=0,u|=0,d|=0,f|=0;var p,m,g,_,y,v,b,x,A,M,E,T,k,C,P,L,R,B,D,O,F,G,N,j,H,z,U,V,W,Z,Y,X,J,q,Q,K,$,ee=0,te=0,ne=0,re=0,oe=0,ae=0,se=0,ce=0,ge=0,_e=0,ye=0,ve=0,be=0,we=0,xe=0,Ae=0,Se=0,Me=0,Ee=0,Te=0,ke=0,Ie=0,Ce=0,Pe=0,Le=0,Re=0,Be=0,De=0,Oe=0,Fe=0;switch($=w,w=w+256|0,K=$+200|0,Q=$+192|0,J=$+184|0,X=$+176|0,V=$+168|0,U=$+160|0,z=$+152|0,H=$+144|0,j=$+136|0,N=$+128|0,F=$+120|0,O=$+112|0,D=$+104|0,B=$+96|0,R=$+88|0,L=$+80|0,P=$+72|0,C=$+64|0,k=$+56|0,T=$+48|0,Y=$+40|0,Z=$+32|0,W=$+24|0,G=$+16|0,E=$+8|0,M=$,p=$+240|0,m=$+236|0,g=$+232|0,_=$+228|0,y=$+224|0,v=$+220|0,b=$+216|0,A=$+208|0,l[(x=$+212|0)>>2]=65424,0|l[(q=e+8|0)>>2]){case 256:l[x>>2]=65497,ee=e+76|0;break;case 8:if(!(1&r[(ee=e+76|0)>>0])){xe=e+164|0,Ae=e+200|0,Se=e+72|0,Me=e+24|0,Ee=e+196|0,Te=e+112|0,Ce=e+116|0,Pe=p+2|0,Le=p+6|0,Re=p+7|0,Be=e+16|0,De=e+20|0,Oe=e+64|0,te=65424;e:do{t:do{if(65427!=(0|te)){for(;;){if(0==(0|(ve=0|ue(d)))&0==(0|S)){be=50;break}if(2!=(0|le(d,0|l[Be>>2],2,f))){be=8;break e}if(ie(0|l[Be>>2],A,2),(0|l[A>>2])>>>0<2){be=10;break e}if(32896==(0|l[x>>2])&&0==(0|(ve=0|ue(d)))&0==(0|S)){be=50;break}for(re=0|l[q>>2],te=0|l[A>>2],16&re|0&&(l[Me>>2]=-2-te+(0|l[Me>>2])),ne=te+-2|0,l[A>>2]=ne,te=0|l[x>>2],ye=784;!(0==(0|(ve=0|l[ye>>2]))|(0|ve)==(0|te));)ye=ye+12|0;if(!(l[ye+4>>2]&re)){be=18;break e}if(ne>>>0>(0|l[De>>2])>>>0){if(ve=0|ue(d),(0|(_e=S))<0|0==(0|_e)&ve>>>0>>0){be=22;break e}if(!(te=0|Ue(0|l[Be>>2],0|l[A>>2]))){be=24;break e}l[Be>>2]=te,ne=0|l[A>>2],l[De>>2]=ne}else te=0|l[Be>>2];if((0|(te=0|le(d,te,ne,f)))!=(0|l[A>>2])){be=27;break e}if(!(ne=0|l[ye+8>>2])){be=29;break e}if(!(0|Xr[63&ne](e,0|l[Be>>2],te,f))){be=31;break e}if(se=0|l[Ae>>2],ae=0|l[Ee>>2],ce=0|l[ye>>2],ge=(ge=0|he(d))-(_e=0|l[A>>2])-4|0,_e=_e+4|0,oe=0|l[(ae=ae+40|0)>>2],(1+(te=0|l[oe+(40*se|0)+20>>2])|0)>>>0>(re=0|l[(ne=oe+(40*se|0)+28|0)>>2])>>>0){if(re=~~(+(re>>>0)+100)>>>0,l[ne>>2]=re,ne=0|Ue(0|l[oe+(40*se|0)+24>>2],24*re|0),te=(re=0|l[ae>>2])+(40*se|0)+24|0,!ne){be=39;break e}l[te>>2]=ne,ae=re,te=0|l[re+(40*se|0)+20>>2]}else ae=oe,ne=0|l[oe+(40*se|0)+24>>2];a[ne+(24*te|0)>>1]=ce,l[(ve=ne+(24*te|0)+8|0)>>2]=ge,l[ve+4>>2]=((0|ge)<0)<<31>>31,l[ne+(24*te|0)+16>>2]=_e,l[ae+(40*se|0)+20>>2]=te+1,65424==(0|ce)&&0|(we=0|l[ae+(40*se|0)+16>>2])&&(ve=we+(24*(0|l[ae+(40*se|0)+12>>2])|0)|0,l[ve>>2]=ge,l[ve+4>>2]=0);do{if(65424==(0|l[ye>>2])){if(te=0|he(d),te=-4-(0|l[A>>2])+te|0,!((0|(ye=0|l[(ve=Oe)+4>>2]))<0|(0==(0|ye)?(0|l[ve>>2])>>>0>>0:0)))break;l[(ve=Oe)>>2]=te,l[ve+4>>2]=0}}while(0);if(4&r[ee>>0])break;if(2!=(0|le(d,0|l[Be>>2],2,f))){be=48;break e}if(ie(0|l[Be>>2],x,2),65427==(0|l[x>>2]))break t}if(50==(0|be)){be=0,l[q>>2]=64;break}if(ve=0|de(d,0|l[Me>>2],0,f),0!=(0|S)||(0|ve)!=(0|l[Me>>2])){be=45;break e}l[x>>2]=65427}}while(0);if(0==(0|(ve=0|ue(d)))&0==(0|S)&&64==(0|l[q>>2])){be=114;break}if(4&(te=0|r[ee>>0])){if(r[ee>>0]=-6&te,l[q>>2]=8,2!=(0|le(d,0|l[Be>>2],2,f))){be=112;break}ie(0|l[Be>>2],x,2)}else{ne=0|l[xe>>2],re=0|l[Ae>>2],0|l[Se>>2]?(te=0|gr(0|(te=0|ue(d)),0|S,-2,0),be=57):(te=0|l[Me>>2])>>>0>1&&(te=te+-2|0,be=57),57==(0|be)&&(be=0,l[Me>>2]=te),ve=ne+(5640*re|0)+5592|0,ye=ne+(5640*re|0)+5596|0;do{if(te){if(_e=0|ue(d),(0|(ge=S))<0|0==(0|ge)&_e>>>0>>0&&me(f,2,12386,R),!(te=0|l[ve>>2])){if(_e=0|Ne(0|l[Me>>2]),l[ve>>2]=_e,_e){ge=0;break}be=66;break e}if(!(te=0|Ue(te,(0|l[Me>>2])+(0|l[ye>>2])|0))){be=64;break e}l[ve>>2]=te,ge=0}else ge=1}while(0);if(0|(te=0|l[Ee>>2])){if(_e=0|gr(0|(Fe=0|he(d)),0|(re=S),-2,-1),oe=0|l[(ae=te+40|0)>>2],se=0|l[Ae>>2],ce=0|l[oe+(40*se|0)+12>>2],ne=0|l[oe+(40*se|0)+16>>2],l[(te=ne+(24*ce|0)+8|0)>>2]=_e,l[te+4>>2]=S,te=0|gr(0|Fe,0|re,0|l[Me>>2],0),l[(ce=ne+(24*ce|0)+16|0)>>2]=te,l[ce+4>>2]=S,ce=2+(0|l[Me>>2])|0,(1+(te=0|l[oe+(40*se|0)+20>>2])|0)>>>0>(re=0|l[(ne=oe+(40*se|0)+28|0)>>2])>>>0){if(re=~~(+(re>>>0)+100)>>>0,l[ne>>2]=re,ne=0|Ue(0|l[oe+(40*se|0)+24>>2],24*re|0),te=(re=0|l[ae>>2])+(40*se|0)+24|0,!ne){be=73;break}l[te>>2]=ne,ae=re,te=0|l[re+(40*se|0)+20>>2]}else ae=oe,ne=0|l[oe+(40*se|0)+24>>2];a[ne+(24*te|0)>>1]=-109,_e=0|xr(0,0|_e,32),l[(Fe=ne+(24*te|0)+8|0)>>2]=_e,l[Fe+4>>2]=S,l[ne+(24*te|0)+16>>2]=ce,l[ae+(40*se|0)+20>>2]=te+1}if(te=ge?0:0|le(d,(0|l[ve>>2])+(0|l[ye>>2])|0,0|l[Me>>2],f),l[q>>2]=(0|te)!=(0|l[Me>>2])?64:8,l[ye>>2]=(0|l[ye>>2])+te,1==(9&(te=0|r[ee>>0]))){r[ee>>0]=8|te,ne=0|l[Ae>>2];do{if(0==(0|pe(d))||-1==(0|(ke=0|he(d)))&-1==(0|(Ie=S)))te=1,ne=0;else{for(;;){if(2!=(0|le(d,p,2,f))){be=80;break}if(ie(p,m,2),65424!=(0|l[m>>2])){be=82;break}if(2!=(0|le(d,p,2,f))){be=84;break}if(ie(p,g,2),10!=(0|l[g>>2])){be=86;break}if(l[g>>2]=8,(0|(te=0|le(d,p,8,f)))!=(0|l[g>>2])){be=88;break}if(8!=(0|te)){be=90;break}if(ie(p,_,2),ie(Pe,y,4),ie(Le,v,1),ie(Re,b,1),(0|l[_>>2])==(0|ne)){be=96;break}if((te=0|l[y>>2])>>>0<14){be=93;break}if(Fe=te+-12|0,l[y>>2]=Fe,Fe=0|de(d,Fe,0,f),0!=(0|S)||(0|Fe)!=(0|l[y>>2])){be=95;break}}if(80==(0|be)){be=0,te=0!=(0|fe(d,ke,Ie,f)),ne=0;break}if(82==(0|be)){be=0,te=0!=(0|fe(d,ke,Ie,f)),ne=0;break}if(84==(0|be)){be=0,me(f,1,8150,O),te=0,ne=0;break}if(86==(0|be)){be=0,me(f,1,12203,F),te=0,ne=0;break}if(88==(0|be)){be=0,me(f,1,8150,N),te=0,ne=0;break}if(90==(0|be)){be=0,me(f,1,11669,j),te=0,ne=0;break}if(93==(0|be)){be=0,te=0!=(0|fe(d,ke,Ie,f)),ne=0;break}if(95==(0|be)){be=0,te=0!=(0|fe(d,ke,Ie,f)),ne=0;break}if(96==(0|be)){be=0,ne=(0|l[v>>2])==(0|l[b>>2])&1,te=0!=(0|fe(d,ke,Ie,f));break}}}while(0);if(!te){be=98;break}if(0|ne){if(ne=0|I(0|l[Ce>>2],0|l[Te>>2]),r[ee>>0]=-18&r[ee>>0]|16,0|ne){re=0|l[xe>>2],te=0;do{0|(ae=0|l[(oe=re+(5640*te|0)+5588|0)>>2])&&(l[oe>>2]=ae+1),te=te+1|0}while((0|te)!=(0|ne))}me(f,2,12521,z)}}if(!(1&r[ee>>0])){if(2!=(0|le(d,0|l[Be>>2],2,f))){be=108;break}ie(0|l[Be>>2],x,2)}}te=0|l[x>>2]}while(65497!=(0|te)&0==(1&r[ee>>0]));switch(0|be){case 8:return me(f,1,8150,M),w=$,0;case 10:return me(f,1,12203,E),w=$,0;case 18:return me(f,1,8235,G),w=$,0;case 22:return me(f,1,12229,W),w=$,0;case 24:return Ve(0|l[Be>>2]),l[Be>>2]=0,l[De>>2]=0,me(f,1,8333,Z),w=$,0;case 27:return me(f,1,8150,Y),w=$,0;case 29:return me(f,1,12274,T),w=$,0;case 31:return l[k>>2]=l[x>>2],me(f,1,12303,k),w=$,0;case 39:return Ve(0|l[te>>2]),Fe=0|l[ae>>2],l[Fe+(40*se|0)+24>>2]=0,l[Fe+(40*se|0)+28>>2]=0,l[Fe+(40*se|0)+20>>2]=0,me(f,1,12350,C),w=$,0;case 45:return me(f,1,8150,P),w=$,0;case 48:return me(f,1,8150,L),w=$,0;case 64:Ve(0|l[ve>>2]),l[ve>>2]=0,be=66;break;case 73:return Ve(0|l[te>>2]),Fe=0|l[ae>>2],l[Fe+(40*se|0)+24>>2]=0,l[Fe+(40*se|0)+28>>2]=0,l[Fe+(40*se|0)+20>>2]=0,me(f,1,12350,D),w=$,0;case 98:return me(f,1,12475,H),w=$,0;case 108:return me(f,1,8150,U),w=$,0;case 112:return me(f,1,8150,V),w=$,0;case 114:te=0|l[x>>2]}if(66==(0|be))return me(f,1,12441,B),w=$,0;65497==(0|te)&&256!=(0|l[q>>2])&&(l[e+200>>2]=0,l[q>>2]=256)}break;default:return w=$,0}if(1&r[ee>>0])re=ee=e+200|0,oe=0|l[e+164>>2],ee=0|l[ee>>2];else{ne=0|I(0|l[e+112>>2],0|l[e+116>>2]),oe=0|l[e+164>>2],ee=0|l[(re=e+200|0)>>2];e:do{if(ee>>>0>>0)for(te=oe+(5640*ee|0)|0;;){if(0|l[te+5592>>2])break e;if(ee=ee+1|0,l[re>>2]=ee,!(ee>>>0>>0))break;te=te+5640|0}}while(0);if((0|ee)==(0|ne))return l[u>>2]=0,w=$,1}if(2&r[oe+(5640*ee|0)+5636>>0]){if(ae=0|l[(be=oe+(5640*ee|0)+5160|0)>>2]){se=0|l[oe+(5640*ee|0)+5164>>2],ne=0,te=0;do{te=(0|l[se+(ne<<3)+4>>2])+te|0,ne=ne+1|0}while((0|ne)!=(0|ae))}else te=0;if(Fe=0|Ne(te),l[(ve=oe+(5640*ee|0)+5172|0)>>2]=Fe,!Fe)return me(f,1,9491,X),me(f,1,12562,J),w=$,0;if(l[(ye=oe+(5640*ee|0)+5180|0)>>2]=te,_e=oe+(5640*ee|0)+5164|0,ne=0|l[be>>2])for(ge=0,se=0,ce=te=0|l[_e>>2];(ae=0|l[ce+(ge<<3)>>2])?(Er((0|l[ve>>2])+se|0,0|ae,0|l[ce+(ge<<3)+4>>2]),ae=0|l[_e>>2],se=(0|l[ae+(ge<<3)+4>>2])+se|0,Ve(0|l[ae+(ge<<3)>>2]),ae=0|l[_e>>2],l[ae+(ge<<3)>>2]=0,l[ae+(ge<<3)+4>>2]=0,ne=0|l[be>>2],te=ae):ae=ce,!((ge=ge+1|0)>>>0>=ne>>>0);)ce=ae;else te=0|l[_e>>2];l[be>>2]=0,Ve(te),l[_e>>2]=0,l[oe+(5640*ee|0)+5168>>2]=l[ve>>2],l[oe+(5640*ee|0)+5176>>2]=l[ye>>2]}return 0|function(e,t,n){return 0|tn(e|=0,t|=0,0,.5,56,n|=0)}(0|l[(ee=e+204|0)>>2],0|l[re>>2],f)?(Fe=0|I(0|l[e+112>>2],0|l[e+116>>2]),l[K>>2]=1+(0|l[re>>2]),l[K+4>>2]=Fe,me(f,4,12588,K),l[t>>2]=l[re>>2],l[u>>2]=1,Fe=0|function(e){var t=0,n=0,i=0,r=0,o=0,a=0;if(t=0|l[24+(e|=0)>>2],!(r=0|l[t+16>>2]))return 0;for(i=0|l[20+(0|l[l[e+20>>2]>>2])>>2],t=0|l[t+24>>2],e=0,n=0;a=((a=0|l[t+24>>2])>>>3)+(0!=(7&a|0)&1)|0,o=(0|l[i+24>>2])+(136*(0|l[i+20>>2])|0)-136|0,e=(0|I(0|I(3==(0|a)?4:a,(0|l[o+8>>2])-(0|l[o>>2])|0),(0|l[o+12>>2])-(0|l[o+4>>2])|0))+e|0,!((n=n+1|0)>>>0>=r>>>0);)i=i+52|0,t=t+52|0;return 0|e}(0|l[ee>>2]),l[n>>2]=Fe,Fe=0|l[l[20+(0|l[ee>>2])>>2]>>2],l[i>>2]=l[Fe>>2],l[o>>2]=l[Fe+4>>2],l[s>>2]=l[Fe+8>>2],l[c>>2]=l[Fe+12>>2],l[h>>2]=l[Fe+16>>2],l[q>>2]=128|l[q>>2],w=$,0|(Fe=1)):(me(f,1,8019,Q),w=$,0|(Fe=0))}function it(e,t,n,i,o,a){t|=0,n|=0,i|=0,o|=0,a|=0;var s,c,h,u,d,f,p,m,g=0,_=0,y=0;if(m=w,w=w+48|0,f=m+28|0,p=m+32|0,!(128&l[(y=8+(e|=0)|0)>>2]))return w=m,0;if((0|l[(d=e+200|0)>>2])!=(0|t))return w=m,0;if(s=(g=0|l[e+164>>2])+(5640*t|0)|0,!(c=0|l[(_=g+(5640*t|0)+5592|0)>>2]))return Xe(s),w=m,0;if(u=g+(5640*t|0)+5596|0,!(0|rn(0|l[(h=e+204|0)>>2],c,0|l[u>>2],t,0|l[e+196>>2],a)))return Xe(s),l[y>>2]=32768|l[y>>2],me(a,1,12627,m),w=m,0;if(!(0|on(0|l[h>>2],n,i)))return w=m,0;if(0|(g=0|l[_>>2])&&(Ve(g),l[_>>2]=0,l[u>>2]=0),r[(e=e+76|0)>>0]=-2&r[e>>0],l[y>>2]=-129&l[y>>2],e=0|ue(o),256==(0|(_=0|l[y>>2]))|0==(0|e)&0==(0|S)&64==(0|_))return w=m,1;if(2!=(0|le(o,p,2,a)))return me(a,2,12646,m+8|0),w=m,1;switch(ie(p,f,2),0|l[f>>2]){case 65497:return l[d>>2]=0,l[y>>2]=256,w=m,1;case 65424:return w=m,1;default:return 0==(0|ue(o))&0==(0|S)?(l[y>>2]=64,me(a,2,12690,m+16|0),w=m,0|(y=1)):(me(a,1,12720,m+24|0),w=m,0|(y=0))}return 0}function rt(e,t,n,i,o,a,s){t|=0,n|=0,i|=0,o|=0,a|=0,s|=0;var c,h,u,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,M=0,E=0;if(u=w,w=w+112|0,E=u+96|0,h=u+88|0,c=u+80|0,M=u+72|0,A=u+64|0,x=u+56|0,v=u+48|0,g=u+40|0,m=u+32|0,p=u+24|0,f=u+16|0,y=0|l[80+(e|=0)>>2],8!=(0|l[e+8>>2]))return me(s,1,12752,u),w=u,0;if(!(i|n|o|a))return me(s,4,12831,u+8|0),l[e+28>>2]=0,l[e+32>>2]=0,l[e+36>>2]=l[e+112>>2],l[e+40>>2]=l[e+116>>2],w=u,1;if((d=0|l[(b=y+8|0)>>2])>>>0>>0)return l[f>>2]=n,l[f+4>>2]=d,me(s,1,12900,f),w=u,0;if((d=0|l[y>>2])>>>0>n>>>0?(l[p>>2]=n,l[p+4>>2]=d,me(s,2,12987,p),l[e+28>>2]=0,n=0|l[y>>2]):l[e+28>>2]=((n-(0|l[e+92>>2])|0)>>>0)/((0|l[e+100>>2])>>>0)|0,l[t>>2]=n,(n=0|l[(_=y+12|0)>>2])>>>0>>0)return l[m>>2]=i,l[m+4>>2]=n,me(s,1,13075,m),w=u,0;if((n=0|l[(f=y+4|0)>>2])>>>0>i>>>0?(l[g>>2]=i,l[g+4>>2]=n,me(s,2,13160,g),l[e+32>>2]=0,n=0|l[f>>2]):(l[e+32>>2]=((i-(0|l[e+96>>2])|0)>>>0)/((0|l[e+104>>2])>>>0)|0,n=i),l[(p=t+4|0)>>2]=n,(n=0|l[y>>2])>>>0>o>>>0)return l[v>>2]=o,l[v+4>>2]=n,me(s,1,13246,v),w=u,0;if((n=0|l[b>>2])>>>0>>0?(l[x>>2]=o,l[x+4>>2]=n,me(s,2,13335,x),l[e+36>>2]=l[e+112>>2],o=0|l[b>>2]):(x=0|l[e+100>>2],l[e+36>>2]=(o+-1-(0|l[e+92>>2])+x|0)/(0|x)|0),l[(d=t+8|0)>>2]=o,(o=0|l[f>>2])>>>0>a>>>0)return l[A>>2]=a,l[A+4>>2]=o,me(s,1,13423,A),w=u,0;(o=0|l[_>>2])>>>0>>0?(l[M>>2]=a,l[M+4>>2]=o,me(s,2,13513,M),l[e+40>>2]=l[e+116>>2],a=0|l[_>>2]):(M=0|l[e+104>>2],l[e+40>>2]=(a+-1-(0|l[e+96>>2])+M|0)/(0|M)|0),l[(M=t+12|0)>>2]=a,r[(A=e+76|0)>>0]=2|r[A>>0],A=0|l[t+16>>2],e=0|l[t>>2];e:do{if(A){for(x=(n=0|l[p>>2])-1|0,v=(o=0|l[d>>2])-1|0,b=e+-1|0,y=0,_=0|l[t+24>>2];;){if(g=(b+(t=0|l[_>>2])|0)/(0|t)|0,l[_+16>>2]=g,f=(x+(d=0|l[_+4>>2])|0)/(0|d)|0,l[_+20>>2]=f,t=(v+t|0)/(0|t)|0,m=0|Sr(1,0,0|(p=0|l[_+40>>2])),i=S,t=0|gr(0|t,((0|t)<0)<<31>>31|0,-1,-1),t=0|xr(0|(t=0|gr(0|t,0|S,0|m,0|i)),0|S,0|p),g=0|gr(0|g,((0|g)<0)<<31>>31|0,-1,-1),(0|(g=t-(g=0|xr(0|(g=0|gr(0|g,0|S,0|m,0|i)),0|S,0|p))|0))<0){d=29;break}if(t=(d+-1+(a=0|l[M>>2])|0)/(0|d)|0,l[_+8>>2]=g,t=0|gr(0|t,((0|t)<0)<<31>>31|0,-1,-1),t=0|xr(0|(t=0|gr(0|t,0|S,0|m,0|i)),0|S,0|p),f=0|gr(0|f,((0|f)<0)<<31>>31|0,-1,-1),(0|(f=t-(f=0|xr(0|(f=0|gr(0|f,0|S,0|m,0|i)),0|S,0|p))|0))<0){d=31;break}if(l[_+12>>2]=f,!((d=y+1|0)>>>0>>0))break e;y=d,_=_+52|0}if(29==(0|d))return l[c>>2]=y,l[c+4>>2]=g,me(s,1,13602,c),w=u,0;if(31==(0|d))return l[h>>2]=y,l[h+4>>2]=f,me(s,1,13671,h),w=u,0}else n=0|l[p>>2],o=0|l[d>>2],a=0|l[M>>2]}while(0);return l[E>>2]=e,l[E+4>>2]=n,l[E+8>>2]=o,l[E+12>>2]=a,me(s,4,13740,E),w=u,1}function ot(){var e,t=0,n=0;if(!(e=0|je(1,208)))return 0;if(l[e>>2]=1,r[(t=e+184|0)>>0]=2|r[t>>0],t=0|je(1,5640),l[e+12>>2]=t,!t)return Ye(e),0;if(t=0|je(1,1e3),l[e+16>>2]=t,!t)return Ye(e),0;l[e+20>>2]=1e3,l[e+60>>2]=-1,l[(t=e+64|0)>>2]=0,l[t+4>>2]=0,t=0|je(1,48);do{if(0|t){if(l[t+32>>2]=100,l[t+24>>2]=0,n=0|je(100,24),l[t+28>>2]=n,!n){Ve(t);break}return l[t+40>>2]=0,l[e+196>>2]=t,n=0|mn(),l[e+192>>2]=n,n?(n=0|mn(),l[e+188>>2]=n,0|n?0|(n=e):(Ye(e),0|(n=0))):(Ye(e),0|(n=0))}}while(0);return l[e+196>>2]=0,Ye(e),0}function at(e,t,n){e|=0,n|=0;var i,r,o,a,s,c=0,h=0,u=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0;if(s=w,w=w+128|0,a=s+104|0,o=s+72|0,r=s+64|0,b=s+40|0,y=s+24|0,i=s+16|0,m=s+8|0,p=s,384&(t|=0)|0)return Mi(13778,11,1,n),void(w=s);if(1&t|0&&0|(f=0|l[e+80>>2])&&st(f,0,n),2&t|0&&0|l[(h=e+80|0)>>2]&&(Mi(13790,36,1,n),f=0|l[e+96>>2],l[p>>2]=l[e+92>>2],l[p+4>>2]=f,Hi(n,13827,p),p=0|l[e+104>>2],l[m>>2]=l[e+100>>2],l[m+4>>2]=p,Hi(n,13845,m),m=0|l[e+116>>2],l[i>>2]=l[e+112>>2],l[i+4>>2]=m,Hi(n,13863,i),lt(0|l[e+12>>2],0|l[16+(0|l[h>>2])>>2],n),Mi(13879,2,1,n)),8&t|0&&(g=0|I(0|l[e+112>>2],0|l[e+116>>2]),!(0==(0|(u=0|l[(_=e+80|0)>>2]))|0==(0|g)))&&(lt(c=0|l[e+164>>2],0|l[u+16>>2],n),1!=(0|g))){h=1;do{lt(c=c+5640|0,0|l[16+(0|l[_>>2])>>2],n),h=h+1|0}while((0|h)!=(0|g))}if(16&t){f=0|l[e+196>>2],Mi(13882,37,1,n),g=0|l[(t=f)+4>>2],_=0|l[(h=f+8|0)>>2],h=0|l[h+4>>2],l[(u=y)>>2]=l[t>>2],l[u+4>>2]=g,l[(u=y+8|0)>>2]=_,l[u+4>>2]=h,Hi(n,13920,y),Mi(13987,17,1,n),h=0|l[(u=f+28|0)>>2];e:do{if(0|h&&(v=f+24|0,0|l[v>>2]))for(c=0;;){if(t=0|l[(g=h+(24*c|0)+8|0)>>2],g=0|l[g+4>>2],y=0|l[h+(24*c|0)+16>>2],l[b>>2]=d[h+(24*c|0)>>1],l[(_=b+8|0)>>2]=t,l[_+4>>2]=g,l[b+16>>2]=y,Hi(n,14005,b),(c=c+1|0)>>>0>=(0|l[v>>2])>>>0)break e;h=0|l[u>>2]}}while(0);if(Mi(14036,4,1,n),0|(u=0|l[(m=f+40|0)>>2])&&0|(x=0|l[(A=f+36|0)>>2])){c=0,h=0;do{c=(0|l[u+(40*h|0)+4>>2])+c|0,h=h+1|0}while((0|h)!=(0|x));if(0|c){if(Mi(14041,16,1,n),0|l[A>>2]){p=0,c=0|l[m>>2];do{f=0|l[c+(40*p|0)+4>>2],l[r>>2]=p,l[r+4>>2]=f,Hi(n,14058,r),c=0|l[m>>2],u=0|l[c+(40*p|0)+16>>2];e:do{if(0!=(0|f)&0!=(0|u))for(h=0,c=u;;){if(g=0|l[(_=c+(24*h|0)|0)>>2],_=0|l[_+4>>2],y=0|l[(v=c+(24*h|0)+8|0)>>2],v=0|l[v+4>>2],b=0|l[(x=c+(24*h|0)+16|0)>>2],x=0|l[x+4>>2],l[o>>2]=h,l[(c=o+8|0)>>2]=g,l[c+4>>2]=_,l[(c=o+16|0)>>2]=y,l[c+4>>2]=v,l[(c=o+24|0)>>2]=b,l[c+4>>2]=x,Hi(n,14094,o),h=h+1|0,c=0|l[m>>2],(0|h)==(0|f))break e;c=0|l[c+(40*p|0)+16>>2]}}while(0);u=0|l[c+(40*p|0)+24>>2];e:do{if(0!=(0|u)&&0!=(0|l[c+(40*p|0)+20>>2]))for(h=0,c=u;;){if(v=0|l[(b=c+(24*h|0)+8|0)>>2],b=0|l[b+4>>2],x=0|l[c+(24*h|0)+16>>2],l[a>>2]=d[c+(24*h|0)>>1],l[(c=a+8|0)>>2]=v,l[c+4>>2]=b,l[a+16>>2]=x,Hi(n,14005,a),h=h+1|0,c=0|l[m>>2],h>>>0>=(0|l[c+(40*p|0)+20>>2])>>>0)break e;c=0|l[c+(40*p|0)+24>>2]}}while(0);p=p+1|0}while(p>>>0<(0|l[A>>2])>>>0)}Mi(14036,4,1,n)}}Mi(13879,2,1,n),w=s}else w=s}function st(e,t,n){e|=0,n|=0;var i,o,a,s,c,h,u=0,d=0,f=0;if(c=w,w=w+64|0,s=c+48|0,a=c+40|0,i=c+32|0,f=c+16|0,d=c,o=c+52|0,(t|=0)?(Mi(14455,36,1,0|l[665]),u=0):(Mi(14492,13,1,n),r[o>>0]=9,u=1),r[o+u>>0]=0,h=0|l[e>>2],u=0|l[e+4>>2],l[d>>2]=o,l[d+4>>2]=h,l[d+8>>2]=u,Hi(n,14506,d),u=0|l[e+8>>2],d=0|l[e+12>>2],l[f>>2]=o,l[f+4>>2]=u,l[f+8>>2]=d,Hi(n,14523,f),d=0|l[(f=e+16|0)>>2],l[i>>2]=o,l[i+4>>2]=d,Hi(n,14540,i),!(0|l[(d=e+24|0)>>2]))return Mi(13879,2,1,n),void(w=c);if(!(0|l[f>>2]))return Mi(13879,2,1,n),void(w=c);u=0;do{l[a>>2]=o,l[a+4>>2]=u,Hi(n,14556,a),ct((0|l[d>>2])+(52*u|0)|0,t,n),l[s>>2]=o,Hi(n,14576,s),u=u+1|0}while(u>>>0<(0|l[f>>2])>>>0);Mi(13879,2,1,n),w=c}function lt(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p,m,g,_=0,y=0,v=0,b=0,x=0,A=0;if(g=w,w=w+128|0,m=g+120|0,p=g+112|0,f=g+104|0,d=g+96|0,u=g+88|0,h=g+80|0,c=g+72|0,s=g+64|0,a=g+56|0,o=g+48|0,r=g+40|0,i=g+32|0,b=g+24|0,v=g+16|0,y=g+8|0,_=g,e|=0){if(Mi(14160,17,1,n),l[_>>2]=l[e>>2],Hi(n,14178,_),l[y>>2]=l[e+4>>2],Hi(n,14191,y),l[v>>2]=l[e+8>>2],Hi(n,14203,v),l[b>>2]=l[e+16>>2],Hi(n,14220,b),(0|t)>0){v=e+5584|0,y=0;do{if(b=0|l[v>>2],l[i>>2]=y,Hi(n,14231,i),l[r>>2]=l[b+(1080*y|0)>>2],Hi(n,14245,r),_=b+(1080*y|0)+4|0,l[o>>2]=l[_>>2],Hi(n,14259,o),l[a>>2]=l[b+(1080*y|0)+8>>2],Hi(n,14282,a),l[s>>2]=l[b+(1080*y|0)+12>>2],Hi(n,14298,s),l[c>>2]=l[b+(1080*y|0)+16>>2],Hi(n,14314,c),l[h>>2]=l[b+(1080*y|0)+20>>2],Hi(n,14331,h),Mi(14346,23,1,n),0|l[_>>2]){e=0;do{A=0|l[b+(1080*y|0)+944+(e<<2)>>2],l[u>>2]=l[b+(1080*y|0)+812+(e<<2)>>2],l[u+4>>2]=A,Hi(n,14370,u),e=e+1|0}while(e>>>0<(0|l[_>>2])>>>0)}if(dr(10,n),A=b+(1080*y|0)+24|0,l[d>>2]=l[A>>2],Hi(n,14379,d),l[f>>2]=l[b+(1080*y|0)+804>>2],Hi(n,14394,f),Mi(14411,20,1,n),1!=(0|l[A>>2])?(0|(e=3*(0|l[_>>2])|0))>2&&(_=e+-2|0,x=8):(_=1,x=8),8==(0|x)){x=0,e=0;do{A=0|l[b+(1080*y|0)+28+(e<<3)>>2],l[p>>2]=l[b+(1080*y|0)+28+(e<<3)+4>>2],l[p+4>>2]=A,Hi(n,14370,p),e=e+1|0}while((0|e)!=(0|_))}dr(10,n),l[m>>2]=l[b+(1080*y|0)+808>>2],Hi(n,14432,m),Mi(14449,5,1,n),y=y+1|0}while((0|y)!=(0|t))}Mi(14036,4,1,n),w=g}else w=g}function ct(e,t,n){e|=0,n|=0;var i,o,a,s,c,h=0,u=0;s=w,w=w+48|0,a=s+24|0,u=s+16|0,h=s,o=s+32|0,(i=0!=(0|(t|=0)))?(Mi(14581,41,1,0|l[665]),t=0):(r[o>>0]=9,r[o+1>>0]=9,t=2),r[o+t>>0]=0,c=0|l[e>>2],t=0|l[e+4>>2],l[h>>2]=o,l[h+4>>2]=c,l[h+8>>2]=t,Hi(n,14623,h),h=0|l[e+24>>2],l[u>>2]=o,l[u+4>>2]=h,Hi(n,14640,u),u=0|l[e+32>>2],l[a>>2]=o,l[a+4>>2]=u,Hi(n,14652,a),i?(Mi(13879,2,1,n),w=s):w=s}function ht(e){var t,n,i,r,o,a=0,s=0,c=0,h=0,u=0;if(o=w,w=w+16|0,s=o,r=0|l[16+(0|l[(a=80+(e|=0)|0)>>2])>>2],t=0|je(1,56),l[s>>2]=t,!t)return w=o,0;if(a=0|l[16+(0|l[a>>2])>>2],l[t+24>>2]=a,l[t>>2]=l[e+92>>2],l[t+4>>2]=l[e+96>>2],l[t+8>>2]=l[e+100>>2],l[t+12>>2]=l[e+104>>2],l[t+16>>2]=l[e+112>>2],l[t+20>>2]=l[e+116>>2],l[t+52>>2]=0,e=0|l[e+12>>2],l[t+32>>2]=l[e>>2],l[t+36>>2]=l[e+4>>2],l[t+40>>2]=l[e+8>>2],l[t+44>>2]=l[e+16>>2],a=0|je(a,1080),l[(i=t+48|0)>>2]=a,!a)return Me(s),w=o,0;if(!r)return w=o,0|t;for(n=e+5584|0,e=0;;){if(h=0|l[n>>2],l[a+(1080*e|0)+4>>2]=l[h+(1080*e|0)>>2],c=0|l[(s=h+(1080*e|0)+4|0)>>2],l[a+(1080*e|0)+8>>2]=c,l[a+(1080*e|0)+12>>2]=l[h+(1080*e|0)+8>>2],l[a+(1080*e|0)+16>>2]=l[h+(1080*e|0)+12>>2],l[a+(1080*e|0)+20>>2]=l[h+(1080*e|0)+16>>2],l[a+(1080*e|0)+24>>2]=l[h+(1080*e|0)+20>>2],c>>>0<33&&(Er(a+(1080*e|0)+948|0,h+(1080*e|0)+944|0,0|c),Er(a+(1080*e|0)+816|0,h+(1080*e|0)+812|0,0|l[s>>2])),c=0|l[h+(1080*e|0)+24>>2],l[a+(1080*e|0)+28>>2]=c,l[a+(1080*e|0)+808>>2]=l[h+(1080*e|0)+804>>2],1!=(0|c)?((s=3*(0|l[s>>2])|0)-3|0)>>>0<96&&(c=s+-2|0,u=10):(c=1,u=10),10==(0|u)){u=0,s=0;do{l[a+(1080*e|0)+32+(s<<2)>>2]=l[h+(1080*e|0)+28+(s<<3)+4>>2],l[a+(1080*e|0)+420+(s<<2)>>2]=l[h+(1080*e|0)+28+(s<<3)>>2],s=s+1|0}while((0|s)!=(0|c))}if(l[a+(1080*e|0)+812>>2]=l[h+(1080*e|0)+808>>2],(0|(e=e+1|0))==(0|r))break;a=0|l[i>>2]}return w=o,0|t}function ut(e){e|=0;var t,n,i,r=0,o=0,a=0,s=0,c=0,h=0;if(!(t=0|je(1,48)))return 0;if(r=0|l[(i=e+196|0)>>2],h=0|l[(c=r)+4>>2],l[(e=t)>>2]=l[c>>2],l[e+4>>2]=h,h=0|l[4+(e=r+8|0)>>2],l[(c=t+8|0)>>2]=l[e>>2],l[c+4>>2]=h,h=0|l[4+(c=r+16|0)>>2],l[(e=t+16|0)>>2]=l[c>>2],l[e+4>>2]=h,r=0|l[r+24>>2],l[(e=t+24|0)>>2]=r,r=0|Ne(24*r|0),l[(h=t+28|0)>>2]=r,!r)return Ve(t),0;if((o=0|l[28+(0|l[i>>2])>>2])?Er(0|r,0|o,24*(0|l[e>>2])|0):(Ve(r),l[h>>2]=0),e=0|l[36+(0|l[i>>2])>>2],l[(n=t+36|0)>>2]=e,e=0|je(e,40),l[(c=t+40|0)>>2]=e,!e)return Ve(0|l[h>>2]),Ve(t),0;if(!(r=0|l[40+(0|l[i>>2])>>2]))return Ve(e),l[c>>2]=0,0|t;if(!(0|l[n>>2]))return 0|t;r=0|l[r+20>>2],l[e+20>>2]=r,r=0|Ne(24*r|0),e=0|l[c>>2],l[e+24>>2]=r;e:do{if(r){for(o=0;(a=0|l[(0|l[40+(0|l[i>>2])>>2])+(40*o|0)+24>>2])?(Er(0|r,0|a,24*(0|l[e+(40*o|0)+20>>2])|0),e=0|l[c>>2]):(Ve(r),e=0|l[c>>2],l[e+(40*o|0)+24>>2]=0),r=0|l[(0|l[40+(0|l[i>>2])>>2])+(40*o|0)+4>>2],l[e+(40*o|0)+4>>2]=r,r=0|Ne(24*r|0),e=0|l[c>>2],l[e+(40*o|0)+16>>2]=r,r;){if((a=0|l[(0|l[40+(0|l[i>>2])>>2])+(40*o|0)+16>>2])?(Er(0|r,0|a,24*(0|l[e+(40*o|0)+4>>2])|0),e=0|l[c>>2]):(Ve(r),e=0|l[c>>2],l[e+(40*o|0)+16>>2]=0),l[e+(40*o|0)+32>>2]=0,l[e+(40*o|0)+36>>2]=0,(o=o+1|0)>>>0>=(0|l[n>>2])>>>0){s=28;break}if(r=0|l[(0|l[40+(0|l[i>>2])>>2])+(40*o|0)+20>>2],l[e+(40*o|0)+20>>2]=r,r=0|Ne(24*r|0),e=0|l[c>>2],l[e+(40*o|0)+24>>2]=r,!r)break e}if(28==(0|s))return 0|t;if(o){r=0;do{Ve(0|l[e+(40*r|0)+24>>2]),Ve(0|l[(0|l[c>>2])+(40*r|0)+16>>2]),r=r+1|0,e=0|l[c>>2]}while((0|r)!=(0|o))}return Ve(e),Ve(0|l[h>>2]),Ve(t),0}o=0}while(0);if(o){r=0;do{Ve(0|l[e+(40*r|0)+24>>2]),r=r+1|0,e=0|l[c>>2]}while((0|r)!=(0|o))}return Ve(e),Ve(0|l[h>>2]),Ve(t),0}function dt(e,t,n,i){e|=0,t|=0,i|=0;var r,o,a=0,s=0,c=0,h=0;if(!(n|=0))return 0;if(a=0|ve(),l[(o=e+84|0)>>2]=a,!a)return 0;if(be(n,a),_n(0|l[(h=e+188|0)>>2],28,i),r=0|yn(h=0|l[h>>2]),a=0|vn(h),r){for(s=1,c=0;s=s?0!=(0|Yr[63&l[a>>2]](e,t,i)):0,(0|(c=c+1|0))!=(0|r);)a=a+4|0,s&=1;if(bn(h),!s)return ye(0|l[(n=e+80|0)>>2]),l[n>>2]=0,0}else bn(h);if(!(h=0|l[n+16>>2]))return 1;c=0|l[24+(0|l[o>>2])>>2],s=0|l[n+24>>2],a=0;do{l[s+(52*a|0)+36>>2]=l[c+(52*a|0)+36>>2],n=c+(52*a|0)+44|0,l[s+(52*a|0)+44>>2]=l[n>>2],l[n>>2]=0,a=a+1|0}while(a>>>0>>0);return 1}function ft(e,t,n,i){e|=0,n|=0,i|=0;var o=0,s=0,c=0,u=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0;if(!(0|l[(L=16+(t|=0)|0)>>2]))return 1;for(P=0,C=0|l[t+24>>2];;){if(u=i+8|0,t=0|l[(c=i+44|0)>>2])s=i+12|0;else{if(t=0|l[u>>2],!(o=0|l[(s=i+12|0)>>2])){n=0,e=66;break}if(t>>>0>(4294967295/(o>>>0)|0)>>>0){n=0,e=66;break}if(t=0|je(0|I(o,t),4),l[c>>2]=t,!t){n=0,e=66;break}}p=C+36|0,l[i+36>>2]=l[p>>2],w=0|l[C+24>>2],v=0|l[e+24>>2],p=0|l[p>>2],x=3==(0|(w=(w>>>3)+(0!=(7&w|0)&1)|0)),M=(f=0|l[v+(136*p|0)+8>>2])-(o=0|l[v+(136*p|0)>>2])|0,v=(y=0|l[v+(136*p|0)+12>>2])-(p=0|l[v+(136*p|0)+4>>2])|0,c=0|l[i+16>>2],g=0|Sr(1,0,0|(m=0|l[i+40>>2])),k=S,c=0|gr(0|c,0,-1,-1),c=0|Ar(0|(c=0|gr(0|c,0|S,0|g,0|k)),0|S,0|m),T=0|gr(0|l[i+20>>2],0,-1,-1),m=0|Ar(0|(k=0|gr(0|T,0|S,0|g,0|k)),0|S,0|m),u=(k=0|l[u>>2])+c|0,g=(s=0|l[s>>2])+m|0;do{if(o>>>0<=c>>>0){if(o=c-o|0,f>>>0>u>>>0){T=k,A=o,_=0,b=f-u|0;break}T=M-o|0,A=o,_=0,b=0;break}b=u-o|0,T=(E=f>>>0>u>>>0)?b:M,A=0,_=o-c|0,b=E?M-b|0:0}while(0);do{if(p>>>0<=m>>>0){if(o=m-p|0,y>>>0>g>>>0){E=s,f=o,c=0,o=y-g|0;break}E=v-o|0,f=o,c=0,o=0;break}o=g-p|0,E=(y=y>>>0>g>>>0)?o:v,f=0,c=p-m|0,o=y?v-o|0:0}while(0);if((A|b|T|o|f|E|0)<0){n=0,e=66;break}switch(s=(u=0|I(f,M))+A|0,m=A+b|0,g=(0|I(o,M))-A|0,c=t+((0|I(k,c))+_<<2)|0,1073741823&(x?4:w)|0){case 1:o=n+s|0,t=0!=(0|E);do{if(0|l[C+32>>2])if(t){if(!T){n=n+(b+u+(0|I(m,E+-1|0))+(A<<1))|0;break}for(p=T+b+u+(0|I(T+A+b|0,E+-1|0))+(A<<1)|0,t=o,s=0;;){for(f=t+T|0,u=0,o=c;l[o>>2]=r[t>>0],(0|(u=u+1|0))!=(0|T);)t=t+1|0,o=o+4|0;if((0|(s=s+1|0))==(0|E))break;t=f+m|0,c=c+(k<<2)|0}n=n+p|0}else n=o;else if(t){if(!T){n=n+(b+u+(0|I(m,E+-1|0))+(A<<1))|0;break}for(p=T+b+u+(0|I(T+A+b|0,E+-1|0))+(A<<1)|0,f=0,t=o;;){for(u=t+T|0,s=0,o=c;l[o>>2]=h[t>>0],(0|(s=s+1|0))!=(0|T);)t=t+1|0,o=o+4|0;if((0|(f=f+1|0))==(0|E))break;t=u+m|0,c=c+(k<<2)|0}n=n+p|0}else n=o}while(0);n=n+g|0;break;case 2:t=n+(s<<1)|0,o=0!=(0|E);do{if(0|l[C+32>>2])if(o){if(!T){n=n+((0|I(f<<1,M))+(0|I(m<<1,E+-1|0))+(A<<2)+(b<<1))|0;break}for(n=n+((0|I(T+m<<1,E+-1|0))+(A<<2)+(T+b+u<<1))|0,f=0;;){for(u=t+(T<<1)|0,o=0,s=c;l[s>>2]=a[t>>1],(0|(o=o+1|0))!=(0|T);)t=t+2|0,s=s+4|0;if((0|(f=f+1|0))==(0|E))break;t=u+(m<<1)|0,c=c+(k<<2)|0}}else n=t;else if(o){if(!T){n=n+((0|I(f<<1,M))+(0|I(m<<1,E+-1|0))+(A<<2)+(b<<1))|0;break}for(n=n+((0|I(T+m<<1,E+-1|0))+(A<<2)+(T+b+u<<1))|0,f=0;;){for(u=t+(T<<1)|0,s=0,o=c;l[o>>2]=d[t>>1],(0|(s=s+1|0))!=(0|T);)t=t+2|0,o=o+4|0;if((0|(f=f+1|0))==(0|E))break;t=u+(m<<1)|0,c=c+(k<<2)|0}}else n=t}while(0);n=n+(g<<1)|0;break;case 4:t=n+(s<<2)|0;do{if(E){if(!T){n=n+((0|I(f<<2,M))+(0|I(m<<2,E+-1|0))+(A<<3)+(b<<2))|0;break}for(n=n+((0|I(T+m<<2,E+-1|0))+(A<<3)+(T+b+u<<2))|0,f=0;;){for(u=t+(T<<2)|0,o=0,s=c;l[s>>2]=l[t>>2],(0|(o=o+1|0))!=(0|T);)t=t+4|0,s=s+4|0;if((0|(f=f+1|0))==(0|E))break;t=u+(m<<2)|0,c=c+(k<<2)|0}}else n=t}while(0);n=n+(g<<2)|0}if((P=P+1|0)>>>0>=(0|l[L>>2])>>>0){n=1,e=66;break}e=e+52|0,i=i+52|0,C=C+52|0}return 66==(0|e)?0|n:0}function pt(e,t,n,i,r){e|=0,t|=0,i|=0,r|=0;var o,a,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,M=0,E=0;if(a=w,w=w+16|0,h=a+8|0,!(n|=0))return me(i,1,14842,a),w=a,0;if(c=0|l[e+112>>2],(s=0|I(0|l[e+116>>2],c))>>>0<=r>>>0)return l[h>>2]=r,l[h+4>>2]=s+-1,me(i,1,14880,h),w=a,0;if(y=(r>>>0)%(c>>>0)|0,_=(r>>>0)/(c>>>0)|0,s=(s=0|I(0|l[(c=e+100|0)>>2],y))+(0|l[(h=e+92|0)>>2])|0,l[n>>2]=s,s=s>>>0<(u=0|l[l[(o=e+80|0)>>2]>>2])>>>0?u:s,l[n>>2]=s,h=(y=0|I(0|l[c>>2],y+1|0))+(0|l[h>>2])|0,l[(y=n+8|0)>>2]=h,h=h>>>0>(c=0|l[8+(0|l[o>>2])>>2])>>>0?c:h,l[y>>2]=h,c=(c=0|I(0|l[(y=e+104|0)>>2],_))+(0|l[(u=e+96|0)>>2])|0,l[(m=n+4|0)>>2]=c,c=c>>>0<(g=0|l[4+(0|l[o>>2])>>2])>>>0?g:c,l[m>>2]=c,u=(_=0|I(0|l[y>>2],_+1|0))+(0|l[u>>2])|0,l[(_=n+12|0)>>2]=u,u=u>>>0>(y=0|l[12+(0|l[o>>2])>>2])>>>0?y:u,l[_>>2]=u,_=n+24|0,0|(m=0|l[(y=n+16|0)>>2]))for(g=0|l[24+(0|l[o>>2])>>2],p=s+-1|0,f=c+-1|0,d=h+-1|0,h=u+-1|0,s=0,c=0|l[_>>2];u=0|l[g+(52*s|0)+40>>2],l[c+40>>2]=u,M=(p+(E=0|l[c>>2])|0)/(0|E)|0,l[c+16>>2]=M,A=(f+(v=0|l[c+4>>2])|0)/(0|v)|0,l[c+20>>2]=A,E=(d+E|0)/(0|E)|0,v=(h+v|0)/(0|v)|0,x=0|Sr(1,0,0|u),b=S,E=0|gr(0|E,((0|E)<0)<<31>>31|0,-1,-1),E=0|xr(0|(E=0|gr(0|E,0|S,0|x,0|b)),0|S,0|u),M=0|gr(0|M,((0|M)<0)<<31>>31|0,-1,-1),M=0|xr(0|(M=0|gr(0|M,0|S,0|x,0|b)),0|S,0|u),l[c+8>>2]=E-M,v=0|gr(0|v,((0|v)<0)<<31>>31|0,-1,-1),v=0|xr(0|(v=0|gr(0|v,0|S,0|x,0|b)),0|S,0|u),A=0|gr(0|A,((0|A)<0)<<31>>31|0,-1,-1),u=0|xr(0|(b=0|gr(0|A,0|S,0|x,0|b)),0|S,0|u),l[c+12>>2]=v-u,!((s=s+1|0)>>>0>=m>>>0);)c=c+52|0;if(0|(s=0|l[(f=e+84|0)>>2])&&ye(s),s=0|ve(),l[f>>2]=s,!s)return w=a,0;if(be(n,s),l[e+60>>2]=r,_n(0|l[(u=e+188|0)>>2],29,i),d=0|yn(u=0|l[u>>2]),s=0|vn(u),d){for(c=1,h=0;c=c?0!=(0|Yr[63&l[s>>2]](e,t,i)):0,(0|(h=h+1|0))!=(0|d);)s=s+4|0,c&=1;if(bn(u),!c)return ye(0|l[o>>2]),l[o>>2]=0,w=a,0}else bn(u);if(!(s=0|l[y>>2]))return w=a,1;for(d=0,u=0|l[24+(0|l[f>>2])>>2],h=0|l[_>>2];;){if(l[h+(52*d|0)+36>>2]=l[u+(52*d|0)+36>>2],(c=0|l[h+(52*d|0)+44>>2])?(Ve(c),c=0|l[24+(0|l[f>>2])>>2],h=0|l[_>>2],s=0|l[y>>2]):c=u,E=c+(52*d|0)+44|0,l[h+(52*d|0)+44>>2]=l[E>>2],l[E>>2]=0,(d=d+1|0)>>>0>=s>>>0){s=1;break}u=c}return w=a,0|s}function mt(e,t,n){t|=0,n|=0;var i,r,o,a=0,s=0,c=0,h=0;o=w,w=w+16|0,r=o,l[168+(e|=0)>>2]=t,i=0|l[e+80>>2];e:do{if(0!=(0|i)&&(h=0|l[i+24>>2],0!=(0|h))&&(c=e+12|0,a=0|l[c>>2],0!=(0|a))&&(s=0|l[a+5584>>2],0!=(0|s)))if(a=0|l[i+16>>2]){if((0|l[s+4>>2])>>>0>t>>>0){e=0;do{if(l[h+(52*e|0)+40>>2]=t,(e=e+1|0)>>>0>=a>>>0){e=1;break e}}while((0|l[(0|l[5584+(0|l[c>>2])>>2])+(1080*e|0)+4>>2])>>>0>t>>>0)}me(n,1,15074,r),e=0}else e=1;else e=0}while(0);return w=o,0|e}function gt(e,t,n){t|=0,n|=0;var i,o,s,c,h,u,d,f,p,m,g,_,y,v,b,x,A,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0;if(A=w,w=w+48|0,x=A+32|0,b=A+24|0,v=A+16|0,y=A+8|0,_=A,S=0|l[(f=204+(e|=0)|0)>>2],p=e+116|0,o=1==(0|(g=0|I(0|l[(m=e+112|0)>>2],0|l[p>>2]))),!g)return w=A,1;s=e+200|0,c=e+12|0,h=e+164|0,u=e+8|0,d=S+20|0,i=S+24|0,z=0,P=0,S=0;e:for(;;){if((0|l[s>>2])!=(0|z)){U=5;break}if(j=z,z=z+1|0,H=0|I(0|l[p>>2],0|l[m>>2]),l[y>>2]=z,l[y+4>>2]=H,me(n,4,15187,y),l[c>>2]=0,H=0|l[f>>2],l[H+12>>2]=l[(0|l[h>>2])+(5640*j|0)+5588>>2],l[u>>2]=0,!(0|en(H,0|l[s>>2],n)))break;if(M=0|l[f>>2],C=0|l[16+(0|l[M+24>>2])>>2])if(o){T=0|l[20+(0|l[l[d>>2]>>2])>>2],k=0|l[24+(0|l[i>>2])>>2],E=0;do{l[T+(52*E|0)+32>>2]=l[k+(52*E|0)+44>>2],l[T+(52*E|0)+36>>2]=0,E=E+1|0}while(E>>>0>>0)}else{E=0;do{if(!(0|$t((0|l[20+(0|l[l[d>>2]>>2])>>2])+(52*E|0)|0))){U=14;break e}E=E+1|0,M=0|l[f>>2]}while(E>>>0<(0|l[16+(0|l[M+24>>2])>>2])>>>0)}if(H=0|an(M),o)M=P;else{if(H>>>0>S>>>0){if(!(S=0|Ue(P,H))){U=20;break}M=S,S=H}else M=P;if(E=0|l[f>>2],T=0|l[(j=E+24|0)>>2],0|l[T+16>>2]){N=E+20|0,E=M,G=0;do{B=0|l[20+(0|l[l[N>>2]>>2])>>2],L=0|l[T+24>>2],V=((V=0|l[L+(52*G|0)+24>>2])>>>3)+(0!=(7&V|0)&1)|0,O=(C=0|l[B+(52*G|0)+8>>2])-(P=0|l[B+(52*G|0)>>2])|0,F=(R=0|l[B+(52*G|0)+12>>2])-(B=0|l[B+(52*G|0)+4>>2])|0,Z=0|l[T>>2],W=0|l[L+(52*G|0)>>2],k=0|l[L+(52*G|0)+4>>2],D=(W+~Z+(0|l[T+8>>2])|0)/(0|W)|0,k=P-((Z+-1+W|0)/(0|W)|0)+(0|I(D,B-(((0|l[T+4>>2])-1+k|0)/(0|k)|0)|0))|0,k=(0|l[L+(52*G|0)+44>>2])+(k<<2)|0;t:do{switch(1073741823&(3==(0|V)?4:V)|0){case 1:if(T=0==(0|O)|0==(0|F),0|l[L+(52*G|0)+32>>2]){if(T)break t;for(B=R+-1-B|0,R=E,T=k,k=0;;){for(C=0,P=R,L=T;r[P>>0]=l[L>>2],(0|(C=C+1|0))!=(0|O);)P=P+1|0,L=L+4|0;if((0|(k=k+1|0))==(0|F))break;R=R+O|0,T=T+(D<<2)|0}E=E+(O+(0|I(B,O)))|0;break t}if(T)break t;for(B=R+-1-B|0,L=0,R=E;;){for(T=0,C=R,P=k;r[C>>0]=l[P>>2],(0|(T=T+1|0))!=(0|O);)C=C+1|0,P=P+4|0;if((0|(L=L+1|0))==(0|F))break;R=R+O|0,k=k+(D<<2)|0}E=E+(O+(0|I(B,O)))|0;break t;case 2:if(T=0==(0|O)|0==(0|F),0|l[L+(52*G|0)+32>>2]){if(T)break t;for(B=(L=C-P<<1)+(0|I(R+-1-B|0,L))|0,L=E,R=0;;){for(T=L,C=0,P=k;a[T>>1]=l[P>>2],(0|(C=C+1|0))!=(0|O);)T=T+2|0,P=P+4|0;if((0|(R=R+1|0))==(0|F))break;L=L+(O<<1)|0,k=k+(D<<2)|0}E=E+B|0;break t}if(T)break t;for(B=(L=C-P<<1)+(0|I(R+-1-B|0,L))|0,L=E,R=0;;){for(T=0,C=L,P=k;a[C>>1]=l[P>>2],(0|(T=T+1|0))!=(0|O);)C=C+2|0,P=P+4|0;if((0|(R=R+1|0))==(0|F))break;L=L+(O<<1)|0,k=k+(D<<2)|0}E=E+B|0;break t;case 4:if(!(0==(0|O)|0==(0|F))){for(B=(L=C-P<<2)+(0|I(R+-1-B|0,L))|0,L=E,R=0;;){for(T=L,C=0,P=k;l[T>>2]=l[P>>2],(0|(C=C+1|0))!=(0|O);)T=T+4|0,P=P+4|0;if((0|(R=R+1|0))==(0|F))break;L=L+(O<<2)|0,k=k+(D<<2)|0}E=E+B|0}}}while(0);G=G+1|0,T=0|l[j>>2]}while(G>>>0<(0|l[T+16>>2])>>>0);E=0|l[f>>2]}if(!(0|sn(E,M,H))){U=61;break}}if(!(0|_t(e,t,n))){U=63;break}if(z>>>0>=g>>>0){U=65;break}P=M}if(5==(0|U))me(n,1,15150,_);else{if(14==(0|U))return me(n,1,15208,v),P?(Ve(P),w=A,0|(Z=0)):(w=A,0|(Z=0));if(20==(0|U))return 0|P&&Ve(P),me(n,1,15246,b),w=A,0;if(61==(0|U))return me(n,1,15285,x),Ve(M),w=A,0;if(63==(0|U))return M?(Ve(M),w=A,0|(Z=0)):(w=A,0|(Z=0));if(65==(0|U))return M?(Ve(M),w=A,0|(Z=1)):(w=A,0|(Z=1))}return P?(Ve(P),w=A,0|(Z=0)):(w=A,0|(Z=0))}function _t(e,t,n){t|=0,n|=0;var i,r,o,s,c,h,u,d,f,p,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=0,B=0;if(p=w,w=w+32|0,u=p+16|0,I=p+8|0,b=p,h=p+20|0,f=0|l[40+(e|=0)>>2],A=0|l[(R=e+36|0)>>2],v=0|l[(S=e+204|0)>>2],l[v+16>>2]=0,l[(o=e+8|0)>>2]=0,ne(A,65424,2),ne(A+2|0,10,2),ne(A+4|0,0|l[(d=e+200|0)>>2],2),ne(A+10|0,0|l[(s=e+12|0)>>2],1),ne(A+11|0,0|l[(0|l[(c=e+164|0)>>2])+(5640*(0|l[d>>2])|0)+5588>>2],1),l[h>>2]=12,g=A+12|0,m=f+-12|0,((0|a[(x=e+88|0)>>1])-3&65535)>=4&&(_=0|l[c>>2],y=0|l[d>>2],0!=(0|l[_+(5640*y|0)+420>>2]))?(l[h>>2]=0,yt(0|l[16+(0|l[e+80>>2])>>2],_,y,g,h),_=12+(L=0|l[h>>2])|0,g=g+L|0,m=m-L|0):_=12,l[h>>2]=0,ne(g,65427,2),l[v+4>>2]=l[o>>2],l[v+8>>2]=l[s>>2],0|l[s>>2]||(l[840+(0|l[l[v+20>>2]>>2])>>2]=0),l[h>>2]=0,!(0|nn(v,0|l[d>>2],g+2|0,h,m+-4|0,0)))return me(n,1,15332,b),w=p,0;m=2+(0|l[h>>2])|0,l[h>>2]=m,ne(A+6|0,m=m+_|0,4),((0|a[x>>1])-3&65535)<4&&(ne(0|l[(L=e+28|0)>>2],0|l[d>>2],1),P=1+(0|l[L>>2])|0,l[L>>2]=P,ne(P,m,4),l[L>>2]=4+(0|l[L>>2])),_=A+m|0,L=f-m|0,i=0|l[S>>2],r=e+88|0,T=0|l[c>>2],x=0|vt(r,0,k=0|l[d>>2]),P=e+8|0,l[s>>2]=1+(0|l[s>>2]);e:do{if(x>>>0>1){for(A=i+4|0,S=i+8|0,M=i+20|0,E=e+28|0,v=_,g=L,m=0,b=1;l[P>>2]=b,l[h>>2]=0,ne(v,65424,2),ne(v+2|0,10,2),ne(v+4|0,0|l[d>>2],2),ne(v+10|0,0|l[s>>2],1),ne(v+11|0,0|l[(0|l[c>>2])+(5640*(0|l[d>>2])|0)+5588>>2],1),_=v+12|0,l[h>>2]=0,ne(_,65427,2),l[A>>2]=l[o>>2],l[S>>2]=l[s>>2],0|l[s>>2]||(l[840+(0|l[l[M>>2]>>2])>>2]=0),l[h>>2]=0,0|nn(i,0|l[d>>2],v+14|0,h,g+-16|0,0);){if(B=2+(y=0|l[h>>2])|0,l[h>>2]=B,_=_+B|0,m=m+12+B|0,g=g+-12+(-2-y)|0,ne(v+6|0,y=y+14|0,4),((0|a[r>>1])-3&65535)<4&&(ne(0|l[E>>2],0|l[d>>2],1),B=1+(0|l[E>>2])|0,l[E>>2]=B,ne(B,y,4),l[E>>2]=4+(0|l[E>>2])),l[s>>2]=1+(0|l[s>>2]),(b=b+1|0)>>>0>=x>>>0){C=12;break e}v=_}me(n,1,15332,I)}else g=L,m=0,C=12}while(0);e:do{if(12==(0|C)){M=T+(5640*k|0)+420|0;t:do{if(0|l[M>>2]){E=i+16|0,T=i+4|0,k=i+8|0,I=i+20|0,S=e+28|0,A=1;n:for(;;){if(l[E>>2]=A,x=0|vt(r,A,0|l[d>>2]))for(b=0;;){if(l[P>>2]=b,l[h>>2]=0,ne(_,65424,2),ne(_+2|0,10,2),ne(_+4|0,0|l[d>>2],2),ne(_+10|0,0|l[s>>2],1),ne(_+11|0,0|l[(0|l[c>>2])+(5640*(0|l[d>>2])|0)+5588>>2],1),y=_+12|0,l[h>>2]=0,ne(y,65427,2),l[T>>2]=l[o>>2],l[k>>2]=l[s>>2],0|l[s>>2]||(l[840+(0|l[l[I>>2]>>2])>>2]=0),l[h>>2]=0,!(0|nn(i,0|l[d>>2],_+14|0,h,g+-16|0,0)))break n;if(v=2+(B=0|l[h>>2])|0,l[h>>2]=v,m=m+12+v|0,v=y+v|0,g=g+-12+(-2-B)|0,ne(_+6|0,y=B+14|0,4),((0|a[r>>1])-3&65535)<4&&(ne(0|l[S>>2],0|l[d>>2],1),B=1+(0|l[S>>2])|0,l[S>>2]=B,ne(B,y,4),l[S>>2]=4+(0|l[S>>2])),l[s>>2]=1+(0|l[s>>2]),(b=b+1|0)>>>0>=x>>>0){_=v;break}_=v}if((A=A+1|0)>>>0>(0|l[M>>2])>>>0)break t}me(n,1,15332,u);break e}}while(0);return B=m-L+f|0,(0|ce(t,0|l[R>>2],B,n))!=(0|B)?(w=p,0|(B=0)):(l[d>>2]=1+(0|l[d>>2]),w=p,0|(B=1))}}while(0);return w=p,0}function yt(e,t,n,i,r){e|=0,i|=0,r|=0;var o,a,s,c,h=0,u=0,d=0,f=0,p=0,m=0;if(h=0|l[(t|=0)+(5640*(n|=0)|0)+5584>>2],c=1+(0|l[t+(5640*n|0)+420>>2])|0,s=4+(u=0|I(c,5+((a=e>>>0<257?1:2)<<1)|0))|0,ne(i,65375,2),ne(i+2|0,u+2|0,2),c){for(u=t+(5640*n|0)+8|0,o=h+4|0,t=t+(5640*n|0)+424|0,n=0,h=i+4|0;ne(h,0|l[t>>2],1),ne(h=h+1|0,0|l[t+4>>2],a),ne(h=h+a|0,0|l[(p=t+8|0)>>2],2),ne(h=h+2|0,0|l[(d=t+12|0)>>2],1),ne(h=h+1|0,0|l[(i=t+16|0)>>2],a),ne(h=h+a|0,0|l[t+36>>2],1),m=0|l[p>>2],f=0|l[u>>2],l[p>>2]=(0|m)<(0|f)?m:f,p=0|l[d>>2],f=0|l[o>>2],l[d>>2]=(0|p)<(0|f)?p:f,d=0|l[i>>2],l[i>>2]=(0|d)<(0|e)?d:e,(0|(n=n+1|0))!=(0|c);)t=t+148|0,h=h+1|0;l[r>>2]=s}else l[r>>2]=s}function vt(e,t,n){t|=0,n|=0;var i,o,a=0,s=0,c=0,u=0,d=0,f=0;for(c=0|l[76+(e|=0)>>2],a=0|l[c+(5640*n|0)+4>>2],u=696;!(-1==(0|(d=0|l[u>>2]))|(0|d)==(0|a));)u=u+12|0;if(!(8&r[e+93>>0]))return 1;switch(d=0|h[e+92>>0],s=c+(5640*n|0)+424+(148*t|0)+92|0,i=c+(5640*n|0)+424+(148*t|0)+88|0,o=c+(5640*n|0)+424+(148*t|0)+96|0,c=c+(5640*n|0)+424+(148*t|0)+84|0,0|(t=0|r[u+4>>0])){case 67:a=s,f=8;break;case 82:a=i,f=8;break;case 80:a=o,f=8;break;case 76:a=c,f=8;break;default:a=1}if(8==(0|f)&&(a=0|l[a>>2]),(0|d)!=(0|t)){switch(0|(n=0|r[u+5>>0])){case 67:t=s,f=16;break;case 82:t=i,f=16;break;case 80:t=o,f=16;break;case 76:t=c,f=16}if(16==(0|f)&&(a=0|I(0|l[t>>2],a)),(0|d)!=(0|n)){switch(0|(n=0|r[u+6>>0])){case 67:t=s,f=22;break;case 82:t=i,f=22;break;case 80:t=o,f=22;break;case 76:t=c,f=22}if(22==(0|f)&&(a=0|I(0|l[t>>2],a)),(0|d)!=(0|n)){switch(0|(t=0|r[u+7>>0])){case 67:f=28;break;case 82:s=i,f=28;break;case 80:s=o,f=28;break;case 76:s=c,f=28}if(28==(0|f)&&(a=0|I(0|l[s>>2],a)),(0|d)!=(0|t))return 0|a;s=3}else s=2}else s=1}else s=0;return l[e+84>>2]=s,0|a}function bt(e,t,n){t|=0,n|=0;var i,r=0,o=0,s=0,c=0;if(!(0|_n(0|l[(r=188+(e|=0)|0)>>2],30,n)))return 0;if(((0|a[e+88>>1])-3&65535)<4&&0==(0|_n(0|l[r>>2],31,n)))return 0;if(!(0|_n(0|l[r>>2],32,n)))return 0;if(!(0|_n(0|l[r>>2],33,n)))return 0;if(!(0|_n(0|l[r>>2],34,n)))return 0;if(i=0|yn(c=0|l[r>>2]),r=0|vn(c),i)for(o=r,r=1,s=0;r=r?0!=(0|Yr[63&l[o>>2]](e,t,n)):0,r&=1,(0|(s=s+1|0))!=(0|i);)o=o+4|0;else r=1;return bn(c),0|r}function wt(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r,o,s=0,c=0,h=0,u=0;if(o=w,w=w+16|0,s=0|ve(),l[(r=e+80|0)>>2]=s,!s)return me(i,1,15352,o),w=o,0;if(be(n,s),0|(h=0|l[n+24>>2])&&0|(u=0|l[n+16>>2])){s=0;do{0|(c=0|l[(n=h+(52*s|0)+44|0)>>2])&&(l[(0|l[24+(0|l[r>>2])>>2])+(52*s|0)+44>>2]=c,l[n>>2]=0),s=s+1|0}while(s>>>0>>0)}if(!(0|_n(0|l[(s=e+192|0)>>2],35,i)))return w=o,0;if(!(0|_n(0|l[s>>2],36,i)))return w=o,0;if(!(0|_n(0|l[s>>2],37,i)))return w=o,0;if(u=0|yn(h=0|l[s>>2]),s=0|vn(h),u){for(n=1,c=0;n=n?0!=(0|Yr[63&l[s>>2]](e,t,i)):0,(0|(c=c+1|0))!=(0|u);)s=s+4|0,n&=1;if(bn(h),!n)return w=o,0}else bn(h);if(!(0|_n(0|l[(s=e+188|0)>>2],38,i)))return w=o,0;if(!(0|_n(0|l[s>>2],39,i)))return w=o,0;if(!(0|_n(0|l[s>>2],40,i)))return w=o,0;if(!(0|_n(0|l[s>>2],41,i)))return w=o,0;if(!(0|_n(0|l[s>>2],42,i)))return w=o,0;if(!(0|_n(0|l[s>>2],43,i)))return w=o,0;if(!(0|_n(0|l[s>>2],44,i)))return w=o,0;if(((0|a[(n=e+88|0)>>1])-3&65535)<4){if(!(0|_n(0|l[s>>2],45,i)))return w=o,0;if(4==(0|a[n>>1])&&0==(0|_n(0|l[s>>2],46,i)))return w=o,0}if(!(0|_n(0|l[s>>2],47,i)))return w=o,0;if(0|l[e+108>>2]&&0==(0|_n(0|l[s>>2],48,i)))return w=o,0;if(256&a[n>>1]&&0==(0|_n(0|l[s>>2],49,i)))return w=o,0;if(0|l[e+196>>2]&&0==(0|_n(0|l[s>>2],50,i)))return w=o,0;if(!(0|_n(0|l[s>>2],51,i)))return w=o,0;if(!(0|_n(0|l[s>>2],52,i)))return w=o,0;if(h=0|yn(u=0|l[s>>2]),s=0|vn(u),h)for(n=s,s=1,c=0;s=s?0!=(0|Yr[63&l[n>>2]](e,t,i)):0,s&=1,(0|(c=c+1|0))!=(0|h);)n=n+4|0;else s=1;return bn(u),w=o,0|s}function xt(e,t,n,i,r,o){n|=0,i|=0,r|=0,o|=0;var a,s,c,h,u=0,d=0;h=w,w=w+16|0,s=h+8|0,a=h,c=0|l[(e|=0)+(5640*(t|=0)|0)+5584>>2],t=0|l[c+(1080*n|0)+24>>2];do{if(1!=(0|t))if(u=(e=3*(0|l[c+(1080*n|0)+4>>2])|0)-2|0,t)d=7;else{if(e=e+-1|0,(0|l[r>>2])>>>0>>0)return me(o,1,15741,a),w=h,0;if(ne(i,l[c+(1080*n|0)+804>>2]<<5,1),!u)break;t=0;do{ne(i=i+1|0,l[c+(1080*n|0)+28+(t<<3)>>2]<<3,1),t=t+1|0}while((0|t)!=(0|u))}else u=1,t=1,d=7}while(0);if(7==(0|d)){if(e=u<<1|1,(0|l[r>>2])>>>0>>0)return me(o,1,15741,s),w=h,0;if(ne(i,(l[c+(1080*n|0)+804>>2]<<5)+t|0,1),u)for(i=i+1|0,t=0;ne(i,(l[c+(1080*n|0)+28+(t<<3)>>2]<<11)+(0|l[c+(1080*n|0)+28+(t<<3)+4>>2])|0,2),(0|(t=t+1|0))!=(0|u);)i=i+2|0}return l[r>>2]=(0|l[r>>2])-e,w=h,1}function At(e,t,n,i,r){var o,a,s;if(n|=0,i|=0,r|=0,s=w,w=w+16|0,o=0|l[(e|=0)+(5640*(t|=0)|0)+5584>>2],(0|l[i>>2])>>>0<5)return me(r,1,15813,s),w=s,0;if(ne(n,(0|l[(a=o+4|0)>>2])-1|0,1),ne(n+1|0,(0|l[o+8>>2])-2|0,1),ne(n+2|0,(0|l[o+12>>2])-2|0,1),ne(n+3|0,0|l[o+16>>2],1),ne(n+4|0,0|l[o+20>>2],1),e=(0|l[i>>2])-5|0,l[i>>2]=e,!(1&l[o>>2]))return w=s,1;if(e>>>0<(t=0|l[a>>2])>>>0)return me(r,1,15813,s+8|0),w=s,0;if(t){for(e=n+5|0,n=0;ne(e,(l[o+944+(n<<2)>>2]<<4)+(0|l[o+812+(n<<2)>>2])|0,1),!((n=n+1|0)>>>0>=(t=0|l[a>>2])>>>0);)e=e+1|0;e=0|l[i>>2]}else t=0;return l[i>>2]=e-t,w=s,1}function St(e,t,n,i,r,o){t|=0,n|=0,i|=0,r|=0,o|=0;var a,s,c,h,u=0,d=0,f=0,p=0;if(h=w,w=w+48|0,c=h+40|0,p=h+32|0,s=h+24|0,a=h+16|0,u=h+8|0,(0|l[(d=200+(e|=0)|0)>>2])!=(0|t))return me(o,1,15150,h),l[a>>2]=t,me(o,1,16086,a),w=h,0;if(f=0|I(0|l[e+116>>2],0|l[e+112>>2]),l[u>>2]=t+1,l[u+4>>2]=f,me(o,4,15187,u),l[e+12>>2]=0,u=0|l[(f=e+204|0)>>2],l[u+12>>2]=l[(0|l[e+164>>2])+(5640*t|0)+5588>>2],l[e+8>>2]=0,!(0|en(u,0|l[d>>2],o)))return l[a>>2]=t,me(o,1,16086,a),w=h,0;u=0|l[f>>2];e:do{if(0|l[16+(0|l[u+24>>2])>>2]){for(d=0;0|$t((0|l[20+(0|l[l[u+20>>2]>>2])>>2])+(52*d|0)|0);)if(d=d+1|0,u=0|l[f>>2],d>>>0>=(0|l[16+(0|l[u+24>>2])>>2])>>>0)break e;return me(o,1,15208,s),w=h,0}}while(0);return 0|sn(u,n,i)?0|_t(e,r,o)?(w=h,0|(p=1)):(l[c>>2]=t,me(o,1,16143,c),w=h,0|(p=0)):(me(o,1,15285,p),w=h,0|(p=0))}function Mt(e,t,n){e|=0,n|=0;var i,o,s,c,u,f,p,m,g,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0;g=w,w=w+80|0,T=g+72|0,m=g+64|0,p=g+56|0,f=g+48|0,u=g+40|0,c=g+32|0,s=g+24|0,E=g+16|0,A=g+8|0,x=g,_=0|l[8+(t|=0)>>2];e:do{if(_){M=0|l[_>>2],S=0|a[_+4>>1],y=0|l[e+16>>2],0!=(0|(_=0|l[t+12>>2]))&&0!=(0|l[_+12>>2])&&(y=0|h[_+18>>0]);t:do{if(S<<16>>16){b=0;n:for(;;){if(y>>>0<=(v=0|d[M+(6*(t=65535&b)|0)>>1])>>>0){b=14;break}switch((t=0|a[M+(6*t|0)+4>>1])<<16>>16){case 0:case-1:break;default:if((t=(65535&t)-1|0)>>>0>=y>>>0){b=17;break n}}if((65535&(b=b+1<<16>>16))>=(65535&S)){b=8;break}}if(8==(0|b))for(;;){y=y+-1|0,t=0;do{if((0|y)==(0|d[M+(6*(65535&t)|0)>>1]))break;t=t+1<<16>>16}while((65535&t)<(65535&S));if(t<<16>>16==S<<16>>16)break t;if(!y)break e;b=8}else{if(14==(0|b))return l[x>>2]=v,l[x+4>>2]=y,me(n,1,16331,x),w=g,0;if(17==(0|b))return l[A>>2]=t,l[A+4>>2]=y,me(n,1,16331,A),w=g,0}}else if(!y)break e}while(0);return me(n,1,16368,E),w=g,0}_=0|l[t+12>>2]}while(0);if(!_)return w=g,1;if(!(o=0|l[_+12>>2]))return w=g,1;if(i=255&(S=0|r[_+18>>0]),E=S<<24>>24==0)_=1;else{b=e+16|0,_=1,v=0,t=0;do{t=0|d[o+(t<<2)>>1],(y=0|l[b>>2])>>>0<=t>>>0&&(l[s>>2]=t,l[s+4>>2]=y,me(n,1,16331,s),_=0),t=65535&(v=v+1<<16>>16)}while(t>>>0>>0)}if(!(M=0|je(i,4)))return me(n,1,16401,c),w=g,0;if(!E){x=0,A=0;do{v=255&(y=0|r[o+(A<<2)+3>>0]);do{if((255&y)<(255&S)){if(b=M+(v<<2)|0,t=0|r[o+(A<<2)+2>>0],0!=(0|l[b>>2])&t<<24>>24==1){l[f>>2]=v,me(n,1,16474,f),_=0;break}if(t<<24>>24!=0|y<<24>>24==0){l[b>>2]=1;break}l[p>>2]=A,l[p+4>>2]=v,me(n,1,16505,p),_=0;break}l[u>>2]=v,me(n,1,16418,u),_=0}while(0);A=65535&(x=x+1<<16>>16)}while(A>>>0>>0);if(!E){y=0,t=0;do{0==(0|l[M+(t<<2)>>2])&&0!=(0|r[o+(t<<2)+2>>0])&&(l[m>>2]=t,me(n,1,16541,m),_=0),t=65535&(y=y+1<<16>>16)}while(t>>>0>>0)}}if(!_)return Ve(M),w=g,0;e:do{if(!(1!=(0|l[e+16>>2])|E)){for(t=0,_=0;t=t+1<<16>>16,0|l[M+(_<<2)>>2];)if((_=65535&t)>>>0>=i>>>0)break e;l[T>>2]=_,me(n,2,16579,T),_=0,t=0;do{r[o+(t<<2)+2>>0]=1,r[o+(t<<2)+3>>0]=_,t=65535&(_=_+1<<16>>16)}while(t>>>0>>0)}}while(0);return Ve(M),w=g,1}function Et(e,t){e|=0;var n,i,o,s,c,u,f,p,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0;if(t=0|l[(p=12+(t|=0)|0)>>2],b=0|l[t+8>>2],w=0|l[t+4>>2],o=0|l[t>>2],i=0|l[t+12>>2],t=0|r[t+18>>0],c=0|l[(s=e+24|0)>>2],f=0|Ne(52*(u=255&t)|0)){if(!(n=t<<24>>24==0)){y=0,v=0;do{if(t=0|a[i+(v<<2)>>1],0|r[i+(v<<2)+2>>0]){g=c+(52*(t&=65535)|0)|0,_=52+(m=f+(52*(0|h[i+(v<<2)+3>>0])|0)|0)|0;do{l[m>>2]=l[g>>2],m=m+4|0,g=g+4|0}while((0|m)<(0|_))}else{g=c+(52*(t&=65535)|0)|0,_=52+(m=f+(52*v|0)|0)|0;do{l[m>>2]=l[g>>2],m=m+4|0,g=g+4|0}while((0|m)<(0|_))}if(_=0|Ne(0|I(l[c+(52*t|0)+8>>2]<<2,0|l[c+(52*t|0)+12>>2])),l[f+(52*v|0)+44>>2]=_,!_){x=7;break}l[f+(52*v|0)+24>>2]=h[b+v>>0],l[f+(52*v|0)+32>>2]=h[w+v>>0],v=65535&(y=y+1<<16>>16)}while(v>>>0>>0);if(7==(0|x))return void Ve(f);if(w=(b=0|d[16+(0|l[p>>2])>>1])-1|0,!n){_=0,t=0;do{if(y=0|l[c+(52*(0|d[i+(t<<2)>>1])|0)+44>>2],g=0|h[i+(t<<2)+3>>0],v=0|I(0|l[f+(52*g|0)+12>>2],0|l[f+(52*g|0)+8>>2]),0|r[i+(t<<2)+2>>0]){if(m=0|l[f+(52*g|0)+44>>2],0|v){t=0;do{x=0|l[y+(t<<2)>>2],x=o+((0|I((0|x)<0?0:(0|x)<(0|b)?x:w,u))+g<<2)|0,l[m+(t<<2)>>2]=l[x>>2],t=t+1|0}while((0|t)!=(0|v))}}else if(m=0|l[f+(52*t|0)+44>>2],0|v){t=0;do{l[m+(t<<2)>>2]=l[y+(t<<2)>>2],t=t+1|0}while((0|t)!=(0|v))}t=65535&(_=_+1<<16>>16)}while(t>>>0>>0)}}if(0|(_=0|l[(g=e+16|0)>>2])){m=0,t=0;do{0|(t=0|l[c+(52*t|0)+44>>2])&&Ve(t),t=65535&(m=m+1<<16>>16)}while(_>>>0>t>>>0)}Ve(c),l[s>>2]=f,l[g>>2]=u,Ve(0|l[4+(0|l[p>>2])>>2]),Ve(0|l[8+(0|l[p>>2])>>2]),Ve(0|l[l[p>>2]>>2]),t=0|l[p>>2],(m=0|l[t+12>>2])&&(Ve(m),t=0|l[p>>2]),Ve(t),l[p>>2]=0}}function Tt(e,t,n){e|=0,n|=0;var i,r,o,s,c,h,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0;if(h=w,w=w+80|0,s=h+8|0,o=h,r=h+16|0,u=0|l[(c=8+(t|=0)|0)>>2],t=0|l[u>>2],(i=0|a[u+4>>1])<<16>>16){for(E=e+16|0,y=e+24|0,M=65535&i,A=1,S=0;;){b=65535&(v=0|a[t+(6*S|0)>>1]),e=0|l[E>>2];e:do{if(e>>>0>b>>>0){switch((u=0|a[t+(6*S|0)+4>>1])<<16>>16){case-1:case 0:a[(0|l[y>>2])+(52*b|0)+48>>1]=0|a[t+(6*S|0)+2>>1];break e}if(x=65535+(65535&u)&65535,e>>>0<=(m=65535&(_=u+-1<<16>>16))>>>0){l[s>>2]=m,l[s+4>>2]=e,me(n,2,16290,s);break}if(g=t+(6*S|0)+2|0,v<<16>>16!=_<<16>>16&&0==(0|a[g>>1])){f=e=(u=0|l[y>>2])+(52*b|0)|0,p=(d=r)+52|0;do{l[d>>2]=l[f>>2],d=d+4|0,f=f+4|0}while((0|d)<(0|p));f=u+(52*m|0)|0,p=(d=e)+52|0;do{l[d>>2]=l[f>>2],d=d+4|0,f=f+4|0}while((0|d)<(0|p));f=r,p=52+(d=(0|l[y>>2])+(52*m|0)|0)|0;do{l[d>>2]=l[f>>2],d=d+4|0,f=f+4|0}while((0|d)<(0|p));if((65535&i)>(S+1&65535)){d=A;do{(u=0|a[(e=t+(6*d|0)|0)>>1])<<16>>16!=v<<16>>16?u<<16>>16==_<<16>>16&&(u=v,T=14):(u=x,T=14),14==(0|T)&&(T=0,a[e>>1]=u),d=d+1|0}while(i<<16>>16!=(65535&d)<<16>>16)}}a[(0|l[y>>2])+(52*b|0)+48>>1]=0|a[g>>1]}else l[o>>2]=b,l[o+4>>2]=e,me(n,2,16250,o)}while(0);if((0|(S=S+1|0))==(0|M))break;A=A+1|0}u=t=0|l[c>>2],t=0|l[t>>2]}return t?(Ve(t),Ve(T=0|l[c>>2]),l[c>>2]=0,void(w=h)):(Ve(T=u),l[c>>2]=0,void(w=h))}function kt(e){var t=0,n=0,i=0;(e|=0)&&(Ye(0|l[e>>2]),l[e>>2]=0,0|(n=0|l[(t=e+72|0)>>2])&&(Ve(n),l[t>>2]=0),0|(n=0|l[(t=e+68|0)>>2])&&(Ve(n),l[t>>2]=0),0|(t=0|l[(n=e+108|0)>>2])&&(Ve(t),l[n>>2]=0),0|(t=0|l[(i=e+116|0)>>2])&&((n=0|l[t>>2])&&(Ve(n),t=0|l[i>>2],l[t>>2]=0),Ve(t),l[i>>2]=0),0|(t=0|l[(i=e+120|0)>>2])&&((n=0|l[t+12>>2])&&(Ve(n),t=0|l[i>>2],l[t+12>>2]=0),(n=0|l[t+4>>2])&&(Ve(n),t=0|l[i>>2],l[t+4>>2]=0),(n=0|l[t+8>>2])&&(Ve(n),t=0|l[i>>2],l[t+8>>2]=0),(n=0|l[t>>2])&&(Ve(n),t=0|l[i>>2],l[t>>2]=0),Ve(t),l[i>>2]=0),0|(n=0|l[(t=e+4|0)>>2])&&(gn(n),l[t>>2]=0),0|(n=0|l[(t=e+8|0)>>2])&&(gn(n),l[t>>2]=0),Ve(e))}function It(e){e|=0;var t=0;return(t=0|je(1,136))?(e=e?0|ot():0|Ze(),l[t>>2]=e,e?(l[(e=t+108|0)>>2]=0,l[e+4>>2]=0,l[e+8>>2]=0,l[e+12>>2]=0,r[e+16>>0]=0,e=0|mn(),l[t+4>>2]=e,e?(e=0|mn(),l[t+8>>2]=e,0|e?0|t:(kt(t),0|(t=0))):(kt(t),0|(t=0))):(kt(t),0|(t=0))):0|t}function Ct(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0,s=0,c=0,h=0,u=0;if(i|=0){r=0;do{s=0|l[(u=e+(r<<2)|0)>>2],a=0|l[(c=t+(r<<2)|0)>>2],h=0|l[(o=n+(r<<2)|0)>>2],l[u>>2]=(a<<1)+s+h>>2,l[c>>2]=h-a,l[o>>2]=s-a,r=r+1|0}while((0|r)!=(0|i))}}function Pt(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0,s=0,c=0,h=0,u=0;if(i|=0){r=0;do{h=e+(r<<2)|0,a=0|l[(c=t+(r<<2)|0)>>2],u=0|l[(o=n+(r<<2)|0)>>2],s=(0|l[h>>2])-(u+a>>2)|0,l[h>>2]=s+u,l[c>>2]=s,l[o>>2]=s+a,r=r+1|0}while((0|r)!=(0|i))}}function Lt(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0;if(i|=0){r=0;do{b=0|l[(p=e+(r<<2)|0)>>2],v=0|l[(h=t+(r<<2)|0)>>2],y=0|l[(o=n+(r<<2)|0)>>2],g=0|Ar(0|(g=0|gr(0|(g=0|mr(0|b,0|(c=((0|b)<0)<<31>>31),2449,0)),0|S,4096,0)),0|S,13),_=0|Ar(0|(_=0|gr(0|(_=0|mr(0|v,0|(s=((0|v)<0)<<31>>31),4809,0)),0|S,4096,0)),0|S,13),m=0|Ar(0|(m=0|gr(0|(m=0|mr(0|y,0|(a=((0|y)<0)<<31>>31),934,0)),0|S,4096,0)),0|S,13),u=0|Ar(0|(u=0|gr(0|(u=0|mr(0|b,0|c,1382,0)),0|S,4096,0)),0|S,13),d=0|Ar(0|(d=0|gr(0|(d=0|mr(0|v,0|s,2714,0)),0|S,4096,0)),0|S,13),f=0|Ar(0|(f=0|gr(0|(f=0|Sr(0|y,0|a,12)),0|S,4096,0)),0|S,13),c=0|Ar(0|(c=0|gr(0|(c=0|Sr(0|b,0|c,12)),0|S,4096,0)),0|S,13),s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|v,0|s,3430,0)),0|S,4096,0)),0|S,13),a=0|Ar(0|(a=0|gr(0|(a=0|mr(0|y,0|a,666,0)),0|S,4096,0)),0|S,13),l[p>>2]=_+g+m,l[h>>2]=f-(d+u),l[o>>2]=c-s-a,r=r+1|0}while((0|r)!=(0|i))}}function Rt(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0,s=0,l=0,c=0,h=0;if(i|=0){r=0;do{s=+m[(h=e+(r<<2)|0)>>2],a=+m[(l=t+(r<<2)|0)>>2],c=+m[(o=n+(r<<2)|0)>>2],m[h>>2]=s+1.4019999504089355*c,m[l>>2]=s-.3441300094127655*a-.714139997959137*c,m[o>>2]=s+1.7719999551773071*a,r=r+1|0}while((0|r)!=(0|i))}}function Bt(e,t,n,i,r){e|=0,t|=0,n|=0,r|=0;var o,a,s=0,c=0,h=0,u=0,d=0,f=0,p=0,g=0;if(!(a=0|Ne((s=0|I(i|=0,i))+i<<2)))return 0;if(o=a+(i<<2)|0,0|s)for(r=e,e=0;l[o+(e<<2)>>2]=~~(8192*+m[r>>2]),(0|(e=e+1|0))!=(0|s);)r=r+4|0;e:do{if(0|t){if(i)f=0;else for(r=0;;)if((0|(r=r+1|0))==(0|t))break e;do{r=0;do{l[a+(r<<2)>>2]=l[l[n+(r<<2)>>2]>>2],r=r+1|0}while((0|r)!=(0|i));for(e=o,s=0;;){for(u=0|l[(h=n+(s<<2)|0)>>2],l[u>>2]=0,r=0,c=e,d=0;p=0|l[c>>2],d=d+(p=0|Ar(0|(p=0|gr(0|(p=0|mr(0|(g=0|l[a+(r<<2)>>2]),((0|g)<0)<<31>>31|0,0|p,((0|p)<0)<<31>>31|0)),0|S,4096,0)),0|S,13))|0,l[u>>2]=d,(0|(r=r+1|0))!=(0|i);)c=c+4|0;if(l[h>>2]=u+4,(0|(s=s+1|0))==(0|i))break;e=e+(i<<2)|0}f=f+1|0}while((0|f)!=(0|t))}}while(0);return Ve(a),1}function Dt(e,t,n,i,r){e|=0,t|=0,n|=0,r|=0;var o,a,s=0,c=0,h=0,u=0,d=0,f=0;if(!(a=0|Ne((i|=0)<<3)))return 0;o=a+(i<<2)|0;e:do{if(0|t){if(i)f=0;else for(r=0;;)if((0|(r=r+1|0))==(0|t))break e;do{r=0;do{l[a+(r<<2)>>2]=l[l[n+(r<<2)>>2]>>2],r=r+1|0}while((0|r)!=(0|i));for(s=e,h=0;;){for(m[(u=o+(h<<2)|0)>>2]=0,r=0,c=s,d=0;d+=+m[c>>2]*+m[a+(r<<2)>>2],m[u>>2]=d,(0|(r=r+1|0))!=(0|i);)c=c+4|0;if(u=0|l[(c=n+(h<<2)|0)>>2],l[c>>2]=u+4,m[u>>2]=d,(0|(h=h+1|0))==(0|i))break;s=s+(i<<2)|0}f=f+1|0}while((0|f)!=(0|t))}}while(0);return Ve(a),1}function Ot(e,t,n){e|=0,n|=0;var i=0,r=0,o=0,a=0,s=0,l=0;if(t|=0){o=0;do{for(_[(s=e+(o<<3)|0)>>3]=0,i=0,r=o,a=0;a+=(l=+m[n+(r<<2)>>2])*l,(0|(i=i+1|0))!=(0|t);)r=r+t|0;l=+E(+a),_[s>>3]=l,o=o+1|0}while((0|o)!=(0|t))}}function Ft(e,t,n){e|=0,n|=0;var i,o,a,s,c,h,u,d,f,p,m,g,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0;if(g=w,w=w+32|0,E=g+28|0,A=g+24|0,T=g+20|0,i=g+16|0,k=g+12|0,o=g+8|0,S=g+4|0,x=g,m=0|l[(_=76+(t|=0)|0)>>2],R=1+(0|l[(u=m+(5640*n|0)+420|0)>>2])|0,!(d=0|Ne(528*(0|l[(M=e+16|0)>>2])|0)))return w=g,0;if(!(f=0|Ne(l[M>>2]<<2)))return Ve(d),w=g,0;if(!(_=0|Gt(e,0|l[_>>2],n)))return Ve(d),Ve(f),w=g,0;if(0|(b=0|l[M>>2]))for(y=d,v=0;l[f+(v<<2)>>2]=y,!((v=v+1|0)>>>0>=b>>>0);)y=y+528|0;if(Nt(e,t,n,T,i,k,o,S,x,A,E,f),p=0|l[A>>2],s=0|I(0|l[M>>2],p),h=0|l[E>>2],a=0|I(h,s),l[(v=_+4|0)>>2]=0,a>>>0<=(4294967295/((y=1+(0|l[(c=m+(5640*n|0)+8|0)>>2])|0)>>>0)|0)>>>0&&(L=0|je(0|I(y,a),2),l[v>>2]=L,0|L)){if(y=0|l[_+196>>2],L=0|l[e+24>>2],P=0|l[T>>2],l[_+200>>2]=P,C=0|l[k>>2],l[_+204>>2]=C,k=0|l[i>>2],l[_+208>>2]=k,T=0|l[o>>2],l[_+212>>2]=T,l[_+20>>2]=1,l[_+16>>2]=p,l[_+12>>2]=s,l[_+8>>2]=a,0|(M=0|l[_+192>>2]))for(S=L,t=y,x=0;;){if(y=0|l[t+12>>2],v=0|l[f+(x<<2)>>2],l[t>>2]=l[S>>2],l[t+4>>2]=l[S+4>>2],0|(A=0|l[t+8>>2]))for(b=0;l[y>>2]=l[v>>2],l[y+4>>2]=l[v+4>>2],l[y+8>>2]=l[v+8>>2],l[y+12>>2]=l[v+12>>2],!((b=b+1|0)>>>0>=A>>>0);)y=y+16|0,v=v+16|0;if((x=x+1|0)>>>0>=M>>>0)break;S=S+52|0,t=t+16|0}if(R>>>0>1){S=1,E=_;do{if(y=0|l[E+428>>2],l[E+432>>2]=P,l[E+436>>2]=C,l[E+440>>2]=k,l[E+444>>2]=T,l[E+252>>2]=1,l[E+248>>2]=p,l[E+244>>2]=s,l[E+240>>2]=a,0|(e=0|l[E+424>>2]))for(M=L,x=0;;){if(v=0|l[y+12>>2],b=0|l[f+(x<<2)>>2],l[y>>2]=l[M>>2],l[y+4>>2]=l[M+4>>2],0|(A=0|l[y+8>>2]))for(t=0;l[v>>2]=l[b>>2],l[v+4>>2]=l[b+4>>2],l[v+8>>2]=l[b+8>>2],l[v+12>>2]=l[b+12>>2],!((t=t+1|0)>>>0>=A>>>0);)v=v+16|0,b=b+16|0;if((x=x+1|0)>>>0>=e>>>0)break;M=M+52|0,y=y+16|0}l[E+236>>2]=l[E+4>>2],E=E+232|0,S=S+1|0}while((0|S)!=(0|R))}if(Ve(d),Ve(f),y=0==(0|(x=1+(0|l[u>>2])|0)),4&r[m+(5640*n|0)+5636>>0]){if(y)return w=g,0|_;for(y=m+(5640*n|0)+424|0,v=_,b=0;l[v+80>>2]=l[y+36>>2],l[v+40>>2]=1,l[v+44>>2]=l[y>>2],l[v+48>>2]=l[y+4>>2],l[v+64>>2]=0,l[v+68>>2]=0,l[v+56>>2]=l[y+12>>2],l[v+60>>2]=l[y+16>>2],l[v+52>>2]=l[y+8>>2],l[v+72>>2]=p,(0|(b=b+1|0))!=(0|x);)y=y+148|0,v=v+232|0;return w=g,0|_}if(y)return w=g,0|_;for(t=0|l[m+(5640*n|0)+4>>2],b=0|l[c>>2],y=0,v=_;l[v+80>>2]=t,l[v+40>>2]=1,l[v+44>>2]=0,l[v+48>>2]=0,l[v+64>>2]=0,l[v+68>>2]=0,l[v+56>>2]=h,l[v+60>>2]=l[v+192>>2],l[v+52>>2]=b,l[v+72>>2]=p,(0|(y=y+1|0))!=(0|x);)v=v+232|0;return w=g,0|_}if(Ve(d),Ve(f),0|(y=0|l[v>>2])&&(Ve(y),l[v>>2]=0),0|R)for(S=_,M=0;;){if(0|(y=0|l[(E=S+196|0)>>2])){if(v=0|l[(A=S+192|0)>>2]){for(x=0;(t=0|l[(b=y+12|0)>>2])&&(Ve(t),l[b>>2]=0,v=0|l[A>>2]),!((x=x+1|0)>>>0>=v>>>0);)y=y+16|0;y=0|l[E>>2]}Ve(y),l[E>>2]=0}if((0|(M=M+1|0))==(0|R))break;S=S+232|0}return Ve(_),w=g,0}function Gt(e,t,n){e|=0;var i,r=0,o=0,a=0,s=0,c=0,h=0,u=0;if(!(i=0|je(u=1+(0|l[(t|=0)+(5640*(n|=0)|0)+420>>2])|0,232)))return 0;if(!u)return 0|i;s=t+(5640*n|0)+5584|0,o=i,a=0,e=0|l[(c=e+16|0)>>2];e:for(;;){if(t=0|je(e,16),l[(r=o+196|0)>>2]=t,!t){e=5;break}h=0|l[c>>2],l[o+192>>2]=h;t:do{if(h){if(e=4+(0|l[s>>2])|0,h=0|je(0|l[e>>2],16),l[t+12>>2]=h,!h){e=19;break e}for(n=0;;){if(l[t+(n<<4)+8>>2]=l[e>>2],(n=n+1|0)>>>0>=(e=0|l[c>>2])>>>0)break t;if(t=0|l[r>>2],e=(0|l[s>>2])+(1080*n|0)+4|0,h=0|je(0|l[e>>2],16),l[t+(n<<4)+12>>2]=h,!h){e=19;break e}}}else e=0}while(0);if((a=a+1|0)>>>0>=u>>>0){e=33;break}o=o+232|0}if(5==(0|e)){for((t=0|l[(e=i+4|0)>>2])?(Ve(t),l[e>>2]=0,s=i,c=0):(s=i,c=0);;){if(0|(e=0|l[(h=s+196|0)>>2])){if(t=0|l[(a=s+192|0)>>2]){for(o=0;(r=0|l[(n=e+12|0)>>2])&&(Ve(r),l[n>>2]=0,t=0|l[a>>2]),!((o=o+1|0)>>>0>=t>>>0);)e=e+16|0;e=0|l[h>>2]}Ve(e),l[h>>2]=0}if((0|(c=c+1|0))==(0|u))break;s=s+232|0}return Ve(i),0}if(19==(0|e)){for((t=0|l[(e=i+4|0)>>2])?(Ve(t),l[e>>2]=0,s=i,c=0):(s=i,c=0);;){if(0|(e=0|l[(h=s+196|0)>>2])){if(t=0|l[(a=s+192|0)>>2]){for(o=0;(r=0|l[(n=e+12|0)>>2])&&(Ve(r),l[n>>2]=0,t=0|l[a>>2]),!((o=o+1|0)>>>0>=t>>>0);)e=e+16|0;e=0|l[h>>2]}Ve(e),l[h>>2]=0}if((0|(c=c+1|0))==(0|u))break;s=s+232|0}return Ve(i),0}return 33==(0|e)?0|i:0}function Nt(e,t,n,i,r,o,a,s,c,h,u,d){e|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,c|=0,h|=0,u|=0,d|=0;var f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0;if(f=0|l[(0|l[76+(t|=0)>>2])+(5640*n|0)+5584>>2],p=0|l[e+24>>2],k=0|l[t+24>>2],T=(0|I(0|l[(C=t+12|0)>>2],(n>>>0)%(k>>>0)|0))+(0|l[t+4>>2])|0,E=0|l[e>>2],l[i>>2]=T>>>0>E>>>0?T:E,T=0|gr(0|l[C>>2],0,0|T,0),T|=0-S,C=0|l[e+8>>2],l[r>>2]=T>>>0>>0?T:C,k=(0|I(0|l[(C=t+16|0)>>2],(n>>>0)/(k>>>0)|0))+(0|l[t+8>>2])|0,T=0|l[e+4>>2],l[o>>2]=k>>>0>T>>>0?k:T,k=0|gr(0|l[C>>2],0,0|k,0),k|=0-S,C=0|l[e+12>>2],l[a>>2]=k>>>0>>0?k:C,l[h>>2]=0,l[u>>2]=0,l[s>>2]=2147483647,l[c>>2]=2147483647,0|l[(C=e+16|0)>>2])for(E=0;;){if(b=0|l[d+(E<<2)>>2],m=0|l[p>>2],t=((0|l[i>>2])-1+m|0)/(0|m)|0,g=0|l[(T=p+4|0)>>2],n=((0|l[o>>2])-1+g|0)/(0|g)|0,m=(m+-1+(0|l[r>>2])|0)/(0|m)|0,g=(g+-1+(0|l[a>>2])|0)/(0|g)|0,(e=0|l[(k=f+4|0)>>2])>>>0>(0|l[u>>2])>>>0&&(l[u>>2]=e,e=0|l[k>>2]),0|e)for(A=0|gr(0|t,((0|t)<0)<<31>>31|0,-1,-1),M=S,w=0|gr(0|n,((0|n)<0)<<31>>31|0,-1,-1),x=S,v=0|gr(0|m,((0|m)<0)<<31>>31|0,-1,-1),y=S,g=0|gr(0|g,((0|g)<0)<<31>>31|0,-1,-1),_=S,m=0,n=b;e=e+-1|0,t=0|l[f+812+(m<<2)>>2],b=0|l[f+944+(m<<2)>>2],l[n>>2]=t,l[n+4>>2]=b,R=l[p>>2]<>2]<>2],l[s>>2]=(0|B)<(0|R)?B:R,R=0|l[c>>2],l[c>>2]=(0|R)<(0|F)?R:F,B=0|xr(0|(B=0|gr(0|A,0|M,0|(F=0|Sr(1,0,0|e)),0|(R=S))),0|S,0|e),P=0|xr(0|(P=0|gr(0|w,0|x,0|F,0|R)),0|S,0|e),O=0|xr(0|(O=0|gr(0|v,0|y,0|F,0|R)),0|S,0|e),R=0|xr(0|(R=0|gr(0|g,0|_,0|F,0|R)),0|S,0|e),F=0|Sr(1,0,0|t),D=S,L=0|gr(0|O,((0|O)<0)<<31>>31|0,-1,-1),D=0|xr(0|(D=0|gr(0|L,0|S,0|F,0|D)),0|S,0|t),F=0|Sr(1,0,0|b),L=S,G=0|gr(0|R,((0|R)<0)<<31>>31|0,-1,-1),L=0|xr(0|(L=0|gr(0|G,0|S,0|F,0|L)),0|S,0|b),t=(0|B)==(0|O)?0:(D<>t<>t,b=(0|P)==(0|R)?0:(L<>b<>b,l[n+8>>2]=t,l[n+12>>2]=b,(t=0|I(b,t))>>>0>(0|l[h>>2])>>>0&&(l[h>>2]=t),!((m=m+1|0)>>>0>=(0|l[k>>2])>>>0);)n=n+16|0;if((E=E+1|0)>>>0>=(0|l[C>>2])>>>0)break;f=f+1080|0,p=p+52|0}}function jt(e,t){t|=0;var n=0,i=0,r=0,o=0,a=0,s=0,c=0,h=0,u=0;if(e|=0){if(0|(i=0|l[(n=e+4|0)>>2])&&(Ve(i),l[n>>2]=0),0|t)for(c=e,h=0;;){if(0|(n=0|l[(u=c+196|0)>>2])){if(i=0|l[(s=c+192|0)>>2]){for(a=0;(o=0|l[(r=n+12|0)>>2])&&(Ve(o),l[r>>2]=0,i=0|l[s>>2]),!((a=a+1|0)>>>0>=i>>>0);)n=n+16|0;n=0|l[u>>2]}Ve(n),l[u>>2]=0}if((0|(h=h+1|0))==(0|t))break;c=c+232|0}Ve(e)}}function Ht(e,t,n,i){e|=0,n|=0,i|=0;var o,s,c,u,d,f,p,m,g,_,y,v,b,x,A,S,M,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0;if(M=w,w=w+32|0,P=M+28|0,C=M+24|0,L=M+20|0,B=M+16|0,R=M+12|0,D=M+8|0,O=M+4|0,s=M,_=0|l[(x=76+(t|=0)|0)>>2],G=1+(0|l[_+(5640*n|0)+420>>2])|0,!(y=0|Ne(528*(0|l[(b=e+16|0)>>2])|0)))return w=M,0;if(!(v=0|Ne(l[b>>2]<<2)))return Ve(y),w=M,0;if(!(o=0|Gt(e,0|l[x>>2],n)))return Ve(y),Ve(v),w=M,0;if(0|(k=0|l[b>>2]))for(E=y,T=0;l[v+(T<<2)>>2]=E,!((T=T+1|0)>>>0>=k>>>0);)E=E+528|0;if(Nt(e,t,n,L,B,R,D,O,s,C,P,v),S=0|l[C>>2],d=0|I(0|l[b>>2],S),A=0|l[P>>2],u=0|I(A,d),r[o>>0]=(0|h[t+93>>0])>>>3&1,F=0|je(0|I(0|l[_+(5640*n|0)+8>>2],u),2),l[(T=o+4|0)>>2]=F,!F){if(Ve(y),Ve(v),0|(E=0|l[T>>2])&&(Ve(E),l[T>>2]=0),0|G)for(L=o,R=0;;){if(0|(E=0|l[(B=L+196|0)>>2])){if(T=0|l[(e=L+192|0)>>2]){for(P=0;(C=0|l[(k=E+12|0)>>2])&&(Ve(C),l[k>>2]=0,T=0|l[e>>2]),!((P=P+1|0)>>>0>=T>>>0);)E=E+16|0;E=0|l[B>>2]}Ve(E),l[B>>2]=0}if((0|(R=R+1|0))==(0|G))break;L=L+232|0}return Ve(o),w=M,0}if(C=0|l[o+196>>2],c=0|l[e+24>>2],F=0|l[L>>2],l[o+200>>2]=F,g=0|l[R>>2],l[o+204>>2]=g,m=0|l[B>>2],l[o+208>>2]=m,p=0|l[D>>2],l[o+212>>2]=p,f=0|l[O>>2],l[o+224>>2]=f,O=0|l[s>>2],l[o+228>>2]=O,l[o+20>>2]=1,l[o+16>>2]=S,l[o+12>>2]=d,l[o+8>>2]=u,0|(R=0|l[o+192>>2]))for(L=c,P=0;;){if(E=0|l[C+12>>2],T=0|l[v+(P<<2)>>2],l[C>>2]=l[L>>2],l[C+4>>2]=l[L+4>>2],0|(e=0|l[C+8>>2]))for(k=0;l[E>>2]=l[T>>2],l[E+4>>2]=l[T+4>>2],l[E+8>>2]=l[T+8>>2],l[E+12>>2]=l[T+12>>2],!((k=k+1|0)>>>0>=e>>>0);)E=E+16|0,T=T+16|0;if((P=P+1|0)>>>0>=R>>>0)break;L=L+52|0,C=C+16|0}if(G>>>0>1){L=1,B=o;do{if(E=0|l[B+428>>2],l[B+432>>2]=F,l[B+436>>2]=g,l[B+440>>2]=m,l[B+444>>2]=p,l[B+456>>2]=f,l[B+460>>2]=O,l[B+252>>2]=1,l[B+248>>2]=S,l[B+244>>2]=d,l[B+240>>2]=u,0|(D=0|l[B+424>>2]))for(R=c,P=0;;){if(T=0|l[E+12>>2],k=0|l[v+(P<<2)>>2],l[E>>2]=l[R>>2],l[E+4>>2]=l[R+4>>2],0|(e=0|l[E+8>>2]))for(C=0;l[T>>2]=l[k>>2],l[T+4>>2]=l[k+4>>2],l[T+8>>2]=l[k+8>>2],l[T+12>>2]=l[k+12>>2],!((C=C+1|0)>>>0>=e>>>0);)T=T+16|0,k=k+16|0;if((P=P+1|0)>>>0>=D>>>0)break;R=R+52|0,E=E+16|0}l[B+236>>2]=l[B+4>>2],B=B+232|0,L=L+1|0}while((0|L)!=(0|G))}Ve(y),Ve(v);do{if(4&r[_+(5640*n|0)+5636>>0]){if((65535&(E=0|a[t>>1]))>2){if(!(1==(0|i)|(65535&E)<7))break}else if(1!=(0|i))break;return zt(0|l[x>>2],n,F,m,g,p,S,f,O),w=M,0|o}}while(0);if(e=0|l[b>>2],E=0|l[x>>2],!(k=1+(0|l[E+(5640*n|0)+420>>2])|0))return w=M,0|o;for(C=0|l[E+(5640*n|0)+8>>2],P=0|l[E+(5640*n|0)+4>>2],T=0,E=E+(5640*n|0)+424|0;l[E+76>>2]=0,l[E+92>>2]=e,l[E+72>>2]=0,l[E+88>>2]=A,l[E+68>>2]=0,l[E+84>>2]=C,l[E+36>>2]=P,l[E+80>>2]=0,l[E+96>>2]=S,l[E+100>>2]=F,l[E+104>>2]=m,l[E+108>>2]=g,l[E+112>>2]=p,l[E+116>>2]=f,l[E+120>>2]=O,(0|(T=T+1|0))!=(0|k);)E=E+148|0;return w=M,0|o}function zt(e,t,n,i,r,o,a,s,c){n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,c|=0;var h,u=0;if(h=1+(0|l[(e|=0)+(5640*(t|=0)|0)+420>>2])|0,l[e+(5640*t|0)+500>>2]=l[e+(5640*t|0)+428>>2],l[e+(5640*t|0)+516>>2]=l[e+(5640*t|0)+440>>2],l[e+(5640*t|0)+496>>2]=l[e+(5640*t|0)+424>>2],l[e+(5640*t|0)+512>>2]=l[e+(5640*t|0)+436>>2],l[e+(5640*t|0)+508>>2]=l[e+(5640*t|0)+432>>2],l[e+(5640*t|0)+492>>2]=0,l[e+(5640*t|0)+460>>2]=l[e+(5640*t|0)+456>>2],l[e+(5640*t|0)+504>>2]=0,l[e+(5640*t|0)+520>>2]=a,l[e+(5640*t|0)+524>>2]=n,l[e+(5640*t|0)+528>>2]=i,l[e+(5640*t|0)+532>>2]=r,l[e+(5640*t|0)+536>>2]=o,l[e+(5640*t|0)+540>>2]=s,l[e+(5640*t|0)+544>>2]=c,!(h>>>0<=1))for(u=1,e=e+(5640*t|0)+572|0;l[e+76>>2]=l[e+4>>2],l[e+92>>2]=l[e+16>>2],l[e+72>>2]=l[e>>2],l[e+88>>2]=l[e+12>>2],t=0|l[e+8>>2],l[e+84>>2]=t,l[e+36>>2]=l[e+32>>2],l[e+80>>2]=0,l[e+68>>2]=t>>>0>(0|l[e+-64>>2])>>>0?t:0,l[e+96>>2]=a,l[e+100>>2]=n,l[e+104>>2]=i,l[e+108>>2]=r,l[e+112>>2]=o,l[e+116>>2]=s,l[e+120>>2]=c,(0|(u=u+1|0))!=(0|h);)e=e+148|0}function Ut(e,t,n,i,o,s,c){e|=0,n|=0,i|=0,o|=0,s|=0,c|=0;var h,u,d,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0;q=0|l[76+(t|=0)>>2],h=0|function(e){e|=0;var t=0,n=0;for(t=696;!(-1==(0|(n=0|l[t>>2]))|(0|n)==(0|e));)t=t+12|0;return t+4|0}(0|l[(d=q+(5640*n|0)+424+(148*i|0)+36|0)>>2]),l[e+(232*i|0)+40>>2]=1,u=e+(232*i|0)+44|0,l[e+(232*i|0)+80>>2]=l[d>>2];do{if(8&r[t+93>>0]){if((65535&(f=0|a[t>>1]))>2){if(!(1==(0|c)&(65535&f)>6|(f+-3&65535)<4))break}else if(!(1==(0|c)|(f+-3&65535)<4))break;e:do{if((0|s)<3)for(y=q+(5640*n|0)+424+(148*i|0)+72|0,v=q+(5640*n|0)+424+(148*i|0)+88|0,b=e+(232*i|0)+56|0,w=q+(5640*n|0)+424+(148*i|0)+76|0,x=e+(232*i|0)+48|0,A=q+(5640*n|0)+424+(148*i|0)+92|0,S=e+(232*i|0)+60|0,M=q+(5640*n|0)+424+(148*i|0)+68|0,E=e+(232*i|0)+64|0,T=q+(5640*n|0)+424+(148*i|0)+84|0,k=e+(232*i|0)+52|0,I=q+(5640*n|0)+424+(148*i|0)+80|0,C=e+(232*i|0)+68|0,P=q+(5640*n|0)+424+(148*i|0)+96|0,L=e+(232*i|0)+72|0,R=q+(5640*n|0)+424+(148*i|0)+100|0,B=e+(232*i|0)+96|0,D=q+(5640*n|0)+424+(148*i|0)+108|0,O=e+(232*i|0)+104|0,F=q+(5640*n|0)+424+(148*i|0)+104|0,G=e+(232*i|0)+100|0,N=q+(5640*n|0)+424+(148*i|0)+112|0,j=e+(232*i|0)+108|0,f=s;;){switch(c=f,0|r[h+(f=f+1|0)>>0]){case 82:p=b,m=v,g=u,_=y,J=10;break;case 67:p=S,m=A,g=x,_=w,J=10;break;case 76:p=k,m=T,g=E,_=M,J=10;break;case 80:(0|l[d>>2])>>>0<2?(p=L,m=P,g=C,_=I,J=10):(l[B>>2]=l[R>>2],l[O>>2]=l[D>>2],p=j,m=N,g=G,_=F,J=10)}if(10==(0|J)&&(J=0,l[g>>2]=l[_>>2],l[p>>2]=l[m>>2]),(0|c)>=2)break e}}while(0);if(f=(0|s)>-1,!o){if(!f)return;for(m=q+(5640*n|0)+424+(148*i|0)+76|0,g=q+(5640*n|0)+424+(148*i|0)+132|0,_=e+(232*i|0)+48|0,y=e+(232*i|0)+60|0,v=q+(5640*n|0)+424+(148*i|0)+72|0,b=q+(5640*n|0)+424+(148*i|0)+128|0,w=e+(232*i|0)+56|0,x=q+(5640*n|0)+424+(148*i|0)+68|0,A=q+(5640*n|0)+424+(148*i|0)+124|0,S=e+(232*i|0)+64|0,M=e+(232*i|0)+52|0,E=q+(5640*n|0)+424+(148*i|0)+80|0,T=q+(5640*n|0)+424+(148*i|0)+136|0,k=e+(232*i|0)+68|0,I=e+(232*i|0)+72|0,C=q+(5640*n|0)+424+(148*i|0)+100|0,P=q+(5640*n|0)+424+(148*i|0)+140|0,L=q+(5640*n|0)+424+(148*i|0)+108|0,R=q+(5640*n|0)+424+(148*i|0)+144|0,B=e+(232*i|0)+96|0,D=q+(5640*n|0)+424+(148*i|0)+116|0,O=e+(232*i|0)+100|0,F=e+(232*i|0)+104|0,p=q+(5640*n|0)+424+(148*i|0)+120|0,c=e+(232*i|0)+108|0,f=s;;){e:do{switch(0|r[h+f>>0]){case 67:i=0|l[m>>2],l[_>>2]=i,i=i+1|0,l[y>>2]=i,l[g>>2]=i;break;case 82:i=0|l[v>>2],l[u>>2]=i,i=i+1|0,l[w>>2]=i,l[b>>2]=i;break;case 76:i=0|l[x>>2],l[S>>2]=i,i=i+1|0,l[M>>2]=i,l[A>>2]=i;break;case 80:if((0|l[d>>2])>>>0<2){i=0|l[E>>2],l[k>>2]=i,i=i+1|0,l[I>>2]=i,l[T>>2]=i;break e}i=0|l[C>>2],s=0|l[L>>2],l[B>>2]=i,n=(n=0|l[D>>2])+i-((i>>>0)%(n>>>0)|0)|0,l[O>>2]=n,l[F>>2]=s,i=(i=0|l[p>>2])+s-((s>>>0)%(i>>>0)|0)|0,l[c>>2]=i,l[P>>2]=n,l[R>>2]=i;break e}}while(0);if(!((0|f)>0))break;f=f+-1|0}return}if(!f)return;for(V=q+(5640*n|0)+424+(148*i|0)+128|0,W=q+(5640*n|0)+424+(148*i|0)+88|0,Z=q+(5640*n|0)+424+(148*i|0)+72|0,Y=e+(232*i|0)+56|0,X=q+(5640*n|0)+424+(148*i|0)+132|0,x=q+(5640*n|0)+424+(148*i|0)+92|0,A=q+(5640*n|0)+424+(148*i|0)+76|0,S=e+(232*i|0)+48|0,M=e+(232*i|0)+60|0,E=q+(5640*n|0)+424+(148*i|0)+124|0,T=q+(5640*n|0)+424+(148*i|0)+84|0,k=q+(5640*n|0)+424+(148*i|0)+68|0,I=e+(232*i|0)+64|0,C=e+(232*i|0)+52|0,P=q+(5640*n|0)+424+(148*i|0)+136|0,L=q+(5640*n|0)+424+(148*i|0)+96|0,R=q+(5640*n|0)+424+(148*i|0)+80|0,B=e+(232*i|0)+68|0,D=e+(232*i|0)+72|0,O=q+(5640*n|0)+424+(148*i|0)+140|0,F=q+(5640*n|0)+424+(148*i|0)+104|0,G=e+(232*i|0)+96|0,N=q+(5640*n|0)+424+(148*i|0)+116|0,j=e+(232*i|0)+100|0,o=q+(5640*n|0)+424+(148*i|0)+144|0,H=q+(5640*n|0)+424+(148*i|0)+112|0,z=e+(232*i|0)+104|0,U=q+(5640*n|0)+424+(148*i|0)+120|0,b=e+(232*i|0)+108|0,w=q+(5640*n|0)+424+(148*i|0)+100|0,v=q+(5640*n|0)+424+(148*i|0)+108|0,f=1,y=s;;){_=h+y|0;e:do{switch(0|r[_>>0]){case 67:c=M,p=X,m=(0|l[X>>2])-1|0,g=S,J=35;break;case 82:c=Y,p=V,m=(0|l[V>>2])-1|0,g=u,J=35;break;case 76:c=C,p=E,m=(0|l[E>>2])-1|0,g=I,J=35;break;case 80:if((0|l[d>>2])>>>0<2){c=D,p=P,m=(0|l[P>>2])-1|0,g=B,J=35;break e}g=0|l[O>>2],m=0|l[N>>2],l[G>>2]=g-m-((g>>>0)%(m>>>0)|0),l[j>>2]=g,c=b,p=o,m=(g=0|l[o>>2])-(m=0|l[U>>2])-((g>>>0)%(m>>>0)|0)|0,g=z,J=35;break e}}while(0);35==(0|J)&&(J=0,l[g>>2]=m,l[c>>2]=l[p>>2]);e:do{if(1==(0|f))switch(0|r[_>>0]){case 82:if((0|(f=0|l[V>>2]))!=(0|l[W>>2])){l[u>>2]=f,f=f+1|0,l[Y>>2]=f,l[V>>2]=f,f=0;break e}if(!(0|Vt(y+-1|0,t,n,i,h))){f=0;break e}f=0|l[Z>>2],l[u>>2]=f,f=f+1|0,l[Y>>2]=f,l[V>>2]=f,f=1;break e;case 67:if((0|(f=0|l[X>>2]))!=(0|l[x>>2])){l[S>>2]=f,f=f+1|0,l[M>>2]=f,l[X>>2]=f,f=0;break e}if(!(0|Vt(y+-1|0,t,n,i,h))){f=0;break e}f=0|l[A>>2],l[S>>2]=f,f=f+1|0,l[M>>2]=f,l[X>>2]=f,f=1;break e;case 76:if((0|(f=0|l[E>>2]))!=(0|l[T>>2])){l[I>>2]=f,f=f+1|0,l[C>>2]=f,l[E>>2]=f,f=0;break e}if(!(0|Vt(y+-1|0,t,n,i,h))){f=0;break e}f=0|l[k>>2],l[I>>2]=f,f=f+1|0,l[C>>2]=f,l[E>>2]=f,f=1;break e;case 80:if((0|l[d>>2])>>>0<2){if((0|(f=0|l[P>>2]))!=(0|l[L>>2])){l[B>>2]=f,f=f+1|0,l[D>>2]=f,l[P>>2]=f,f=0;break e}if(!(0|Vt(y+-1|0,t,n,i,h))){f=0;break e}f=0|l[R>>2],l[B>>2]=f,f=f+1|0,l[D>>2]=f,l[P>>2]=f,f=1;break e}if((f=0|l[O>>2])>>>0<(0|l[F>>2])>>>0){l[G>>2]=f,f=(s=0|l[N>>2])+f-((f>>>0)%(s>>>0)|0)|0,l[j>>2]=f,l[O>>2]=f,f=0;break e}if((c=0|l[o>>2])>>>0<(0|l[H>>2])>>>0)l[z>>2]=c,f=0,p=(s=0|l[U>>2])+c|0,c=(c>>>0)%(s>>>0)|0;else{if(!(0|Vt(y+-1|0,t,n,i,h))){f=0;break e}s=0|l[v>>2],l[o>>2]=s,l[z>>2]=s,f=1,p=(c=0|l[U>>2])+s|0,c=(s>>>0)%(c>>>0)|0}q=p-c|0,l[b>>2]=q,l[o>>2]=q,q=0|l[w>>2],l[G>>2]=q,s=(s=0|l[N>>2])+q-((q>>>0)%(s>>>0)|0)|0,l[j>>2]=s,l[O>>2]=s;break e;default:f=1;break e}}while(0);if(!((0|y)>0))break;y=y+-1|0}return}}while(0);l[u>>2]=l[q+(5640*n|0)+424+(148*i|0)+72>>2],l[e+(232*i|0)+56>>2]=l[q+(5640*n|0)+424+(148*i|0)+88>>2],l[e+(232*i|0)+48>>2]=l[q+(5640*n|0)+424+(148*i|0)+76>>2],l[e+(232*i|0)+60>>2]=l[q+(5640*n|0)+424+(148*i|0)+92>>2],l[e+(232*i|0)+64>>2]=l[q+(5640*n|0)+424+(148*i|0)+68>>2],l[e+(232*i|0)+52>>2]=l[q+(5640*n|0)+424+(148*i|0)+84>>2],l[e+(232*i|0)+68>>2]=l[q+(5640*n|0)+424+(148*i|0)+80>>2],l[e+(232*i|0)+72>>2]=l[q+(5640*n|0)+424+(148*i|0)+96>>2],l[e+(232*i|0)+96>>2]=l[q+(5640*n|0)+424+(148*i|0)+100>>2],l[e+(232*i|0)+104>>2]=l[q+(5640*n|0)+424+(148*i|0)+108>>2],l[e+(232*i|0)+100>>2]=l[q+(5640*n|0)+424+(148*i|0)+104>>2],l[e+(232*i|0)+108>>2]=l[q+(5640*n|0)+424+(148*i|0)+112>>2]}function Vt(e,t,n,i,o){e|=0,n|=0,i|=0,o|=0;var a,s=0,c=0;if(a=0|l[76+(t|=0)>>2],!((0|e)>-1))return 0|1&(c=0);s=e;e:for(;;){switch(0|r[o+s>>0]){case 82:c=3;break e;case 67:c=5;break e;case 76:c=7;break e;case 80:c=9;break e}s=s+-1|0}return 3==(0|c)?(0|l[a+(5640*n|0)+424+(148*i|0)+128>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+88>>2])?(c=1,0|(c&=1)):(c=0!=(0|Vt(e+-1|0,t,n,i,o)),0|(c&=1)):5==(0|c)?(0|l[a+(5640*n|0)+424+(148*i|0)+132>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+92>>2])?(c=1,0|(c&=1)):(c=0!=(0|Vt(e+-1|0,t,n,i,o)),0|(c&=1)):7==(0|c)?(0|l[a+(5640*n|0)+424+(148*i|0)+124>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+84>>2])?(c=1,0|(c&=1)):(c=0!=(0|Vt(e+-1|0,t,n,i,o)),0|(c&=1)):9==(0|c)?(0|l[a+(5640*n|0)+424+(148*i|0)+36>>2])>>>0<2?(0|l[a+(5640*n|0)+424+(148*i|0)+136>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+96>>2])?(c=1,0|(c&=1)):(c=0!=(0|Vt(s+-1|0,t,n,i,o)),0|(c&=1)):(0|l[a+(5640*n|0)+424+(148*i|0)+140>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+104>>2])||(0|l[a+(5640*n|0)+424+(148*i|0)+144>>2])!=(0|l[a+(5640*n|0)+424+(148*i|0)+112>>2])?(c=1,0|(c&=1)):(c=0!=(0|Vt(s+-1|0,t,n,i,o)),0|(c&=1)):0}function Wt(e,t,n){e|=0,n|=0;var i,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0;if(i=0|l[76+(t|=0)>>2],O=(n>>>0)%((R=0|l[t+24>>2])>>>0)|0,R=(n>>>0)/(R>>>0)|0,B=0|l[t+4>>2],C=0|l[t+12>>2],D=(0|(k=(0|I(C,O))+B|0))>(0|(D=0|l[e>>2]))?k:D,O=(0|(B=(0|I(C,O+1|0))+B|0))<(0|(O=0|l[e+8>>2]))?B:O,B=0|l[t+8>>2],C=0|l[t+16>>2],L=(0|(k=(0|I(C,R))+B|0))>(0|(L=0|l[e+4>>2]))?k:L,R=(0|(B=(0|I(C,R+1|0))+B|0))<(0|(R=0|l[e+12>>2]))?B:R,B=0|l[e+16>>2])for(E=D+-1|0,T=L+-1|0,k=O+-1|0,C=R+-1|0,u=2147483647,M=0|l[i+(5640*n|0)+5584>>2],x=0|l[e+24>>2],A=0,h=2147483647,d=0,o=0;;){if(t=(E+(v=0|l[x>>2])|0)/(0|v)|0,e=(T+(b=0|l[x+4>>2])|0)/(0|b)|0,a=(k+v|0)/(0|v)|0,s=(C+b|0)/(0|b)|0,(w=0|l[M+4>>2])>>>0<=d>>>0?w&&(P=5):(d=w,P=5),5==(0|P)&&(P=0,_=0|gr(0|t,((0|t)<0)<<31>>31|0,-1,-1),y=S,m=0|gr(0|e,((0|e)<0)<<31>>31|0,-1,-1),g=S,f=0|gr(0|a,((0|a)<0)<<31>>31|0,-1,-1),p=S,s=0|gr(0|s,((0|s)<0)<<31>>31|0,-1,-1),c=S,h=h>>>0<(j=v<<(F=w+-1|0)+(G=0|l[M+812>>2]))>>>0?h:j,u=u>>>0<(t=b<<(a=0|l[M+944>>2])+F)>>>0?u:t,N=0|xr(0|(N=0|gr(0|_,0|y,0|(t=0|Sr(1,0,0|F)),0|(j=S))),0|S,0|F),e=0|xr(0|(e=0|gr(0|m,0|g,0|t,0|j)),0|S,0|F),H=0|xr(0|(H=0|gr(0|f,0|p,0|t,0|j)),0|S,0|F),F=0|xr(0|(j=0|gr(0|s,0|c,0|t,0|j)),0|S,0|F),j=0|gr(0|(j=0|Sr(1,0,0|G)),0|S,-1,-1),j=0|xr(0|(j=0|gr(0|j,0|S,0|H,((0|H)<0)<<31>>31|0)),0|S,0|G),t=0|gr(0|(t=0|Sr(1,0,0|a)),0|S,-1,-1),t=0|xr(0|(t=0|gr(0|t,0|S,0|F,((0|F)<0)<<31>>31|0)),0|S,0|a),o=(a=0|I((0|N)==(0|H)?0:(j<>G<>G,(0|e)==(0|F)?0:(t<>a<>a))>>>0>o>>>0?a:o,w>>>0>1))for(e=-1,a=1;h=h>>>0<(e=v<<(N=e+-1+w|0)+(G=0|l[M+812+(a<<2)>>2]))>>>0?h:e,u=u>>>0<(j=b<<(t=0|l[M+944+(a<<2)>>2])+N)>>>0?u:j,F=0|xr(0|(F=0|gr(0|_,0|y,0|(j=0|Sr(1,0,0|N)),0|(e=S))),0|S,0|N),H=0|xr(0|(H=0|gr(0|m,0|g,0|j,0|e)),0|S,0|N),z=0|xr(0|(z=0|gr(0|f,0|p,0|j,0|e)),0|S,0|N),N=0|xr(0|(e=0|gr(0|s,0|c,0|j,0|e)),0|S,0|N),e=0|gr(0|(e=0|Sr(1,0,0|G)),0|S,-1,-1),e=0|xr(0|(e=0|gr(0|e,0|S,0|z,((0|z)<0)<<31>>31|0)),0|S,0|G),j=0|gr(0|(j=0|Sr(1,0,0|t)),0|S,-1,-1),j=0|xr(0|(j=0|gr(0|j,0|S,0|N,((0|N)<0)<<31>>31|0)),0|S,0|t),o=(t=0|I((0|F)==(0|z)?0:(e<>G<>G,(0|H)==(0|N)?0:(j<>t<>t))>>>0>o>>>0?t:o,(t=a+1|0)>>>0>>0;)e=~a,a=t;if((A=A+1|0)>>>0>=B>>>0)break;M=M+1080|0,x=x+52|0}else d=0,u=2147483647,h=2147483647,o=0;if(4&r[i+(5640*n|0)+5636>>0])zt(i,n,D,O,L,R,o,h,u);else if(a=1+(0|l[i+(5640*n|0)+420>>2])|0)for(s=0|l[i+(5640*n|0)+8>>2],c=0|l[i+(5640*n|0)+4>>2],e=0,t=i+(5640*n|0)+424|0;l[t+76>>2]=0,l[t+92>>2]=B,l[t+72>>2]=0,l[t+88>>2]=d,l[t+68>>2]=0,l[t+84>>2]=s,l[t+36>>2]=c,l[t+80>>2]=0,l[t+96>>2]=o,l[t+100>>2]=D,l[t+104>>2]=O,l[t+108>>2]=L,l[t+112>>2]=R,l[t+116>>2]=h,l[t+120>>2]=u,(0|(e=e+1|0))!=(0|a);)t=t+148|0}function Zt(e){var t=0,n=0,i=0,o=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0,te=0,ne=0,ie=0,re=0,oe=0,ae=0,se=0,le=0,ce=0,he=0,ue=0,de=0,fe=0,pe=0,me=0,ge=0,_e=0,ye=0,ve=0,be=0,we=0,xe=0,Ae=0,Se=0,Me=0,Ee=0,Te=0,ke=0,Ie=0,Ce=0,Pe=0,Le=0,Re=0,Be=0,De=0,Oe=0,Fe=0,Ge=0,Ne=0,je=0,He=0,ze=0,Ue=0,Ve=0,We=0,Ze=0,Ye=0,Xe=0,Je=0,qe=0,Qe=0,Ke=0,$e=0,et=0,tt=0,nt=0,it=0,rt=0,ot=0,at=0,st=0,lt=0,ct=0,ht=0,ut=0,dt=0,ft=0;switch(0|l[80+(e|=0)>>2]){case 0:for(0|l[(t=e+40|0)>>2]?(l[t>>2]=0,w=0|l[e+64>>2],l[e+36>>2]=w,n=5):(u=P=e+32|0,P=0|l[P>>2],n=18);;){if(5==(0|n)){if(w>>>0>=(0|l[e+52>>2])>>>0){ft=0,n=153;break}M=0|l[e+44>>2],l[e+28>>2]=M,n=7}else 18==(0|n)&&(c=P+1|0,l[u>>2]=c,o=u,n=14);for(;;){if(7==(0|n)){if(n=0,M>>>0>=(0|l[e+56>>2])>>>0){n=21;break}E=0|l[e+48>>2],l[(m=e+24|0)>>2]=E}else if(14==(0|n)){if(c>>>0<(0|l[e+72>>2])>>>0){n=16;break}f=L=e+24|0,L=0|l[L>>2],n=19}for(;;){if(19==(0|n)&&(n=0,E=L+1|0,l[f>>2]=E,m=f),E>>>0>=(0|l[e+60>>2])>>>0){n=20;break}if(T=0|l[e+196>>2],(k=0|l[e+28>>2])>>>0<(0|l[T+(E<<4)+8>>2])>>>0)break;f=m,L=E,n=19}20!=(0|n)?(t=0|l[T+(E<<4)+12>>2],0|r[e>>0]||(dt=0|I(0|l[t+(k<<4)+12>>2],0|l[t+(k<<4)+8>>2]),l[e+72>>2]=dt),c=0|l[e+68>>2],l[(o=e+32|0)>>2]=c,n=14):(M=1+(0|l[(n=e+28|0)>>2])|0,l[n>>2]=M,n=7)}if(16==(0|n)){if(n=0,C=0|I(0|l[e+8>>2],0|l[e+36>>2]),C=(C=(C=(0|I(0|l[e+12>>2],0|l[e+28>>2]))+C|0)+(0|I(0|l[e+16>>2],0|l[e+24>>2]))|0)+(0|I(0|l[e+20>>2],c))|0,C=(0|l[e+4>>2])+(C<<1)|0,0|a[C>>1]){u=o,P=c,n=18;continue}break}21!=(0|n)||(w=1+(0|l[(n=e+36|0)>>2])|0,l[n>>2]=w,n=5)}return 153==(0|n)?0|ft:(a[C>>1]=1,0|(e=1));case 1:for(0|l[(t=e+40|0)>>2]?(l[t>>2]=0,R=0|l[e+44>>2],l[e+28>>2]=R,n=25):(h=A=e+32|0,A=0|l[A>>2],n=38);;){if(25==(0|n)){if(R>>>0>=(0|l[e+56>>2])>>>0){ft=0,n=153;break}_=0|l[e+64>>2],l[e+36>>2]=_,n=27}else 38==(0|n)&&(s=A+1|0,l[h>>2]=s,i=h,n=34);for(;;){if(27==(0|n)){if(n=0,_>>>0>=(0|l[e+52>>2])>>>0){n=41;break}y=0|l[e+48>>2],l[(p=e+24|0)>>2]=y}else if(34==(0|n)){if(s>>>0<(0|l[e+72>>2])>>>0){n=36;break}d=S=e+24|0,S=0|l[S>>2],n=39}for(;;){if(39==(0|n)&&(n=0,y=S+1|0,l[d>>2]=y,p=d),y>>>0>=(0|l[e+60>>2])>>>0){n=40;break}if(v=0|l[e+196>>2],(b=0|l[e+28>>2])>>>0<(0|l[v+(y<<4)+8>>2])>>>0)break;d=p,S=y,n=39}40!=(0|n)?(t=0|l[v+(y<<4)+12>>2],0|r[e>>0]||(dt=0|I(0|l[t+(b<<4)+12>>2],0|l[t+(b<<4)+8>>2]),l[e+72>>2]=dt),s=0|l[e+68>>2],l[(i=e+32|0)>>2]=s,n=34):(_=1+(0|l[(n=e+36|0)>>2])|0,l[n>>2]=_,n=27)}if(36==(0|n)){if(n=0,x=0|I(0|l[e+8>>2],0|l[e+36>>2]),x=(x=(x=(0|I(0|l[e+12>>2],0|l[e+28>>2]))+x|0)+(0|I(0|l[e+16>>2],0|l[e+24>>2]))|0)+(0|I(0|l[e+20>>2],s))|0,x=(0|l[e+4>>2])+(x<<1)|0,0|a[x>>1]){h=i,A=s,n=38;continue}break}41!=(0|n)||(R=1+(0|l[(n=e+28|0)>>2])|0,l[n>>2]=R,n=25)}return 153==(0|n)?0|ft:(a[x>>1]=1,0|(e=1));case 2:if(0|l[(t=e+40|0)>>2]){if(l[t>>2]=0,l[(m=e+224|0)>>2]=0,l[(g=e+228|0)>>2]=0,0|(_=0|l[e+192>>2])){y=0|l[e+196>>2],p=0,n=0,t=0;do{if(c=0|l[y+(p<<4)+8>>2]){if(h=0|l[y+(p<<4)+12>>2],u=0|l[y+(p<<4)>>2],d=0|l[y+(p<<4)+4>>2],f=c+-1|0,Ue=u<<(0|l[h>>2])+f,Ve=d<<(0|l[h+4>>2])+f,n=0==(0|n)?Ue:n>>>0>>0?n:Ue,t=0==(0|t)?Ve:t>>>0>>0?t:Ve,1!=(0|c))for(o=-1,s=1;Ve=u<<(i=f+o|0)+(0|l[h+(s<<4)>>2]),i=d<<(0|l[h+(s<<4)+4>>2])+i,n=0==(0|n)?Ve:n>>>0>>0?n:Ve,t=0==(0|t)?i:t>>>0>>0?t:i,(i=s+1|0)>>>0>>0;)o=~s,s=i;l[m>>2]=n,l[g>>2]=t}p=p+1|0}while((0|p)!=(0|_))}0|r[e>>0]||(l[e+104>>2]=l[e+204>>2],l[e+96>>2]=l[e+200>>2],l[e+108>>2]=l[e+212>>2],l[e+100>>2]=l[e+208>>2]),O=0|l[e+44>>2],l[e+28>>2]=O,n=54}else We=ut=e+36|0,ut=0|l[ut>>2],n=75;for(;;){if(54==(0|n)){if(O>>>0>=(0|l[e+56>>2])>>>0){ft=0,n=153;break}Je=0|l[e+104>>2],l[e+220>>2]=Je,n=56}else 75==(0|n)&&(ct=ut+1|0,l[We>>2]=ct,Ze=We,n=71);for(;;){if(56==(0|n)){if((0|Je)>=(0|l[e+108>>2])){n=79;break}qe=0|l[e+96>>2],l[e+216>>2]=qe,n=58}else if(71==(0|n)){if(ct>>>0<(0|l[e+52>>2])>>>0){n=73;break}Ye=dt=e+24|0,dt=0|l[dt>>2],n=76}for(;;){if(58==(0|n)){if((0|qe)>=(0|l[e+100>>2])){n=78;break}Qe=0|l[e+48>>2],l[(Xe=e+24|0)>>2]=Qe}else 76==(0|n)&&(Qe=dt+1|0,l[Ye>>2]=Qe,Xe=Ye);if(Qe>>>0>=(0|l[e+60>>2])>>>0)qe=0|l[e+224>>2],qe=(Ve=0|l[(n=e+216|0)>>2])+qe-((0|Ve)%(0|qe)|0)|0,l[n>>2]=qe,n=58;else if(n=0|l[e+196>>2],(d=0|l[e+28>>2])>>>0>=(t=0|l[n+(Qe<<4)+8>>2])>>>0)Ye=Xe,dt=Qe,n=76;else{if(f=0|l[n+(Qe<<4)+12>>2],s=t+~d|0,$e=((c=0|l[e+200>>2])-1+(Ke=(h=0|l[n+(Qe<<4)>>2])<>2])-1+(et=(Ve=0|l[n+(Qe<<4)+4>>2])<>2])|0)/(0|Ke)|0,n=((it=et+-1|0)+(0|l[e+212>>2])|0)/(0|et)|0,i=(rt=0|l[f+(d<<4)>>2])+s|0,o=(ot=0|l[f+(d<<4)+4>>2])+s|0,0|(0|(at=0|l[e+220>>2]))%(Ve<>2]))%(h<>2]){if(!((0|tt)==(0|n)|((0|$e)==(0|t)?1:0==(0|l[f+(d<<4)+12>>2])))){n=70;break}Ye=Xe,dt=Qe,n=76}else Ye=Xe,dt=Qe,n=76}}70!=(0|n)?78!=(0|n)||(Je=0|l[e+228>>2],Je=(Ve=0|l[(n=e+220|0)>>2])+Je-((0|Ve)%(0|Je)|0)|0,l[n>>2]=Je,n=56):(ct=(((nt+st|0)/(0|Ke)|0)>>rt)-($e>>rt)+(0|I((((it+at|0)/(0|et)|0)>>ot)-(tt>>ot)|0,lt))|0,l[e+32>>2]=ct,ct=0|l[e+64>>2],l[(Ze=e+36|0)>>2]=ct,n=71)}if(73==(0|n)){if(n=0,ht=0|I(0|l[e+8>>2],ct),ht=(ht=(ht=(0|I(0|l[e+12>>2],0|l[e+28>>2]))+ht|0)+(0|I(0|l[e+16>>2],0|l[e+24>>2]))|0)+(0|I(0|l[e+20>>2],0|l[e+32>>2]))|0,ht=(0|l[e+4>>2])+(ht<<1)|0,0|a[ht>>1]){We=Ze,ut=ct,n=75;continue}break}79!=(0|n)||(O=1+(0|l[(n=e+28|0)>>2])|0,l[n>>2]=O,n=54)}return 153==(0|n)?0|ft:(a[ht>>1]=1,0|(e=1));case 3:if(0|l[(n=e+40|0)>>2]){if(l[n>>2]=0,l[(m=e+224|0)>>2]=0,l[(g=e+228|0)>>2]=0,0|(_=0|l[e+192>>2])){y=0|l[e+196>>2],p=0,n=0,t=0;do{if(c=0|l[y+(p<<4)+8>>2]){if(h=0|l[y+(p<<4)+12>>2],u=0|l[y+(p<<4)>>2],d=0|l[y+(p<<4)+4>>2],f=c+-1|0,ut=u<<(0|l[h>>2])+f,dt=d<<(0|l[h+4>>2])+f,n=0==(0|n)?ut:n>>>0>>0?n:ut,t=0==(0|t)?dt:t>>>0

>>0?t:dt,1!=(0|c))for(o=-1,s=1;dt=u<<(i=f+o|0)+(0|l[h+(s<<4)>>2]),i=d<<(0|l[h+(s<<4)+4>>2])+i,n=0==(0|n)?dt:n>>>0
>>0?n:dt,t=0==(0|t)?i:t>>>0>>0?t:i,(i=s+1|0)>>>0>>0;)o=~s,s=i;l[m>>2]=n,l[g>>2]=t}p=p+1|0}while((0|p)!=(0|_))}0|r[e>>0]?t=0|l[e+104>>2]:(t=0|l[e+204>>2],l[e+104>>2]=t,l[e+96>>2]=l[e+200>>2],l[e+108>>2]=l[e+212>>2],l[e+100>>2]=l[e+208>>2]),l[e+220>>2]=t,n=93}else Ue=0|l[e+24>>2],je=e+36|0,_e=(0|l[e+196>>2])+(Ue<<4)|0,ve=je,je=0|l[je>>2],n=113;for(;;){if(93==(0|n)){if((0|t)>=(0|l[e+108>>2])){ft=0,n=153;break}Ae=0|l[e+96>>2],l[e+216>>2]=Ae,n=95}else 113==(0|n)&&(Fe=je+1|0,l[ve>>2]=Fe,ge=_e,be=ve,Ge=Ue,n=109);for(;;){if(95==(0|n)){if((0|Ae)>=(0|l[e+100>>2])){n=117;break}Se=0|l[e+48>>2],l[e+24>>2]=Se,n=97}else if(109==(0|n)){if(Fe>>>0<(0|l[e+52>>2])>>>0){n=111;break}ye=ge,we=He=e+28|0,He=0|l[He>>2],Ve=Ge,n=114}for(;;){if(97==(0|n)){if(Se>>>0>=(0|l[e+60>>2])>>>0){n=116;break}me=(0|l[e+196>>2])+(Se<<4)|0,Me=0|l[e+44>>2],l[(xe=e+28|0)>>2]=Me,ze=Se}else 114==(0|n)&&(Me=He+1|0,l[we>>2]=Me,me=ye,xe=we,ze=Ve);if(Me>>>0>=((dt=0|l[e+56>>2])>>>0<(n=0|l[me+8>>2])>>>0?dt:n)>>>0)Se=ze+1|0,l[e+24>>2]=Se,n=97;else{if(f=0|l[me+12>>2],n=n+~Me|0,Te=((i=0|l[e+200>>2])-1+(Ee=(o=0|l[me>>2])<>2])-1+(ke=(dt=0|l[me+4>>2])<>2])|0)/(0|Ee)|0,h=((Pe=ke+-1|0)+(0|l[e+212>>2])|0)/(0|ke)|0,u=(Le=0|l[f+(Me<<4)>>2])+n|0,d=(Re=0|l[f+(Me<<4)+4>>2])+n|0,0|(0|(Be=0|l[e+220>>2]))%(dt<>2]))%(o<>2]){if(!((0|Ie)==(0|h)|((0|Te)==(0|c)?1:0==(0|l[f+(Me<<4)+12>>2])))){n=108;break}ye=me,we=xe,He=Me,Ve=ze,n=114}else ye=me,we=xe,He=Me,Ve=ze,n=114}}108!=(0|n)?116!=(0|n)||(Ae=0|l[e+224>>2],Ae=(dt=0|l[(n=e+216|0)>>2])+Ae-((0|dt)%(0|Ae)|0)|0,l[n>>2]=Ae,n=95):(Fe=(((Ce+De|0)/(0|Ee)|0)>>Le)-(Te>>Le)+(0|I((((Pe+Be|0)/(0|ke)|0)>>Re)-(Ie>>Re)|0,Oe))|0,l[e+32>>2]=Fe,Fe=0|l[e+64>>2],l[(be=e+36|0)>>2]=Fe,ge=me,Ge=ze,n=109)}if(111==(0|n)){if(n=0,Ne=0|I(0|l[e+8>>2],Fe),Ne=(Ne=(Ne=(0|I(0|l[e+12>>2],0|l[e+28>>2]))+Ne|0)+(0|I(0|l[e+16>>2],Ge))|0)+(0|I(0|l[e+20>>2],0|l[e+32>>2]))|0,Ne=(0|l[e+4>>2])+(Ne<<1)|0,0|a[Ne>>1]){_e=ge,ve=be,je=Fe,Ue=Ge,n=113;continue}break}117!=(0|n)||(t=0|l[e+228>>2],t=(dt=0|l[(n=e+220|0)>>2])+t-((0|dt)%(0|t)|0)|0,l[n>>2]=t,n=93)}return 153==(0|n)?0|ft:(a[Ne>>1]=1,0|(e=1));case 4:for(0|l[(t=e+40|0)>>2]?(l[t>>2]=0,Z=0|l[e+48>>2],l[e+24>>2]=Z,n=121):(ue=0|l[e+24>>2],ce=e+36|0,j=(0|l[e+196>>2])+(ue<<4)|0,z=ce,ce=0|l[ce>>2],n=148);;){if(121==(0|n)){if(Z>>>0>=(0|l[e+60>>2])>>>0){ft=0,n=153;break}if(g=(t=0|l[e+196>>2])+(Z<<4)|0,l[(p=e+224|0)>>2]=0,l[(m=e+228|0)>>2]=0,0|(u=0|l[t+(Z<<4)+8>>2])){if(d=0|l[t+(Z<<4)+12>>2],f=0|l[g>>2],c=0|l[t+(Z<<4)+4>>2],h=u+-1|0,n=f<<(0|l[d>>2])+h,t=c<<(0|l[d+4>>2])+h,1!=(0|u))for(o=-1,s=1;dt=f<<(i=h+o|0)+(0|l[d+(s<<4)>>2]),i=c<<(0|l[d+(s<<4)+4>>2])+i,n=0==(0|n)?dt:n>>>0
>>0?n:dt,t=0==(0|t)?i:t>>>0>>0?t:i,(i=s+1|0)>>>0>>0;)o=~s,s=i;l[p>>2]=n,l[m>>2]=t}0|r[e>>0]?t=0|l[e+104>>2]:(t=0|l[e+204>>2],l[e+104>>2]=t,l[e+96>>2]=l[e+200>>2],l[e+108>>2]=l[e+212>>2],l[e+100>>2]=l[e+208>>2]),l[e+220>>2]=t,B=t,D=Z,n=130}else 148==(0|n)&&(ae=ce+1|0,l[z>>2]=ae,N=j,U=z,se=ue,n=144);for(;;){if(130==(0|n)){if((0|B)>=(0|l[e+108>>2])){n=152;break}Y=0|l[e+96>>2],l[e+216>>2]=Y,F=g,de=D,n=132}else if(144==(0|n)){if(ae>>>0<(0|l[e+52>>2])>>>0){n=146;break}H=N,V=he=e+28|0,he=0|l[he>>2],pe=se,n=149}for(;;){if(132==(0|n)){if((0|Y)>=(0|l[e+100>>2])){n=151;break}X=0|l[e+44>>2],l[(W=e+28|0)>>2]=X,G=F,fe=de}else 149==(0|n)&&(X=he+1|0,l[V>>2]=X,G=H,W=V,fe=pe);if(X>>>0>=((dt=0|l[e+56>>2])>>>0<(t=0|l[G+8>>2])>>>0?dt:t)>>>0)Y=0|l[e+224>>2],Y=(de=0|l[(F=e+216|0)>>2])+Y-((0|de)%(0|Y)|0)|0,l[F>>2]=Y,F=G,de=fe,n=132;else{if(d=0|l[G+12>>2],t=t+~X|0,q=((n=0|l[e+200>>2])-1+(J=(i=0|l[G>>2])<>2])-1+(Q=(dt=0|l[G+4>>2])<>2])|0)/(0|J)|0,c=((ee=Q+-1|0)+(0|l[e+212>>2])|0)/(0|Q)|0,h=(te=0|l[d+(X<<4)>>2])+t|0,u=(ne=0|l[d+(X<<4)+4>>2])+t|0,0|(0|(ie=0|l[e+220>>2]))%(dt<>2]))%(i<>2]){if(!((0|K)==(0|c)|((0|q)==(0|s)?1:0==(0|l[d+(X<<4)+12>>2])))){n=143;break}H=G,V=W,he=X,pe=fe,n=149}else H=G,V=W,he=X,pe=fe,n=149}}143!=(0|n)?151!=(0|n)||(B=0|l[e+228>>2],B=(D=0|l[(g=e+220|0)>>2])+B-((0|D)%(0|B)|0)|0,l[g>>2]=B,g=F,D=de,n=130):(ae=((($+re|0)/(0|J)|0)>>te)-(q>>te)+(0|I((((ee+ie|0)/(0|Q)|0)>>ne)-(K>>ne)|0,oe))|0,l[e+32>>2]=ae,ae=0|l[e+64>>2],l[(U=e+36|0)>>2]=ae,N=G,se=fe,n=144)}if(146==(0|n)){if(n=0,le=0|I(0|l[e+8>>2],ae),le=(le=(le=(0|I(0|l[e+12>>2],0|l[e+28>>2]))+le|0)+(0|I(0|l[e+16>>2],se))|0)+(0|I(0|l[e+20>>2],0|l[e+32>>2]))|0,le=(0|l[e+4>>2])+(le<<1)|0,0|a[le>>1]){j=N,z=U,ce=ae,ue=se,n=148;continue}break}152!=(0|n)||(Z=D+1|0,l[e+24>>2]=Z,n=121)}return 153==(0|n)?0|ft:(a[le>>1]=1,0|(e=1));default:return 0}return 0}function Yt(e){e|=0;var t=0,n=0;return(t=0|je(1,44))?(r[(n=t+40|0)>>0]=-2&r[n>>0]|0!=(0|e),e=0|je(1,4),l[t+20>>2]=e,0|e?0|(n=t):(Ve(t),0|(n=0))):0|(t=0)}function Xt(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0;if(f=w,w=w+1200|0,u=f,p=0|l[l[20+(e|=0)>>2]>>2],m=0|l[(d=p+16|0)>>2]){s=p+20|0,c=8+(0|l[e+32>>2])|0,h=88+(0|l[e+28>>2])|0,o=e+24|0,a=0==(0|t),i=0==(0|n),r=t+-1|0,H=0,p=m;do{if(y=0|l[s>>2],v=0|l[c>>2],b=0|l[(N=y+(52*H|0)+16|0)>>2],v){if(b){m=0|l[h>>2],g=.0625*+((0|l[(0|l[24+(0|l[o>>2])>>2])+(52*H|0)+24>>2])>>>0),e=0;do{_=0|I(b,e),n=0;do{j=3*(_+n|0)|0,l[u+(120*e|0)+(12*n|0)>>2]=~~(+(0|l[m+(j<<2)>>2])*g),l[u+(120*e|0)+(12*n|0)+4>>2]=~~(+(0|l[m+(j+1<<2)>>2])*g),l[u+(120*e|0)+(12*n|0)+8>>2]=~~(+(0|l[m+(j+2<<2)>>2])*g),n=n+1|0}while(n>>>0>>0);e=e+1|0}while(e>>>0>>0);j=9}}else j=9;if(9==(0|j)&&(j=0,b)){G=y+(52*H|0)+24|0,F=0,p=b;do{if(D=0|l[G>>2],e=0|l[(O=D+(136*F|0)+24|0)>>2]){R=D+(136*F|0)+16|0,L=0,n=0|l[(B=D+(136*F|0)+20|0)>>2],p=0|l[R>>2];do{if(0|I(n,p)){k=D+(136*F|0)+28+(36*L|0)+20|0,C=u+(120*t|0)+(12*F|0)+(L<<2)|0,P=u+(120*r|0)+(12*F|0)+(L<<2)|0,T=0;do{p=0|l[k>>2],E=0|I(0|l[p+(40*T|0)+20>>2],0|l[p+(40*T|0)+16>>2]);e:do{if(0|E){if(M=p+(40*T|0)+24|0,y=0|l[C>>2],a)for(p=0;;)if(n=0|l[M>>2],m=0|l[n+(52*p|0)+4>>2],e=(0|y)>(0|(e=(0|l[(0|l[24+(0|l[o>>2])>>2])+(52*H|0)+24>>2])-(0|l[n+(52*p|0)+28>>2])|0))?y-e|0:0,l[(_=n+(52*p|0)+44|0)>>2]=0,e=0==(0|e)?0:(3*e|0)-2|0,l[m>>2]=e,0|e&&(S=0|l[n+(52*p|0)>>2],l[m+4>>2]=l[(0|l[n+(52*p|0)+8>>2])+(24*(e+-1|0)|0)>>2],l[m+16>>2]=S,!i)&&(l[_>>2]=e),(p=p+1|0)>>>0>=E>>>0)break e;A=y-(S=0|l[P>>2])|0,v=0;do{n=(e=0|l[M>>2])+(52*v|0)|0,b=0|l[e+(52*v|0)+4>>2],p=A+(S-(x=(0|l[(0|l[24+(0|l[o>>2])>>2])+(52*H|0)+24>>2])-(0|l[e+(52*v|0)+28>>2])|0))|0,p=(0|S)>(0|x)?A:(0|p)>0?p:0,p=(y=(_=0==(0|(m=0|l[(x=e+(52*v|0)+44|0)>>2])))?0==(0|p)?0:(3*p|0)-2|0:(3*p|0)+m|0)-m|0,l[b+(24*t|0)>>2]=p;do{if(0|p){if(e=0|l[e+(52*v|0)+8>>2],p=0|l[e+(24*(y+-1|0)|0)>>2],_?e=0|l[n>>2]:(_=0|l[e+(24*(m+-1|0)|0)>>2],e=(0|l[n>>2])+_|0,p=p-_|0),l[b+(24*t|0)+4>>2]=p,l[b+(24*t|0)+16>>2]=e,i)break;l[x>>2]=y}}while(0);v=v+1|0}while(v>>>0>>0)}}while(0);T=T+1|0,p=0|l[R>>2],n=0|l[B>>2]}while(T>>>0<(0|I(n,p))>>>0);e=0|l[O>>2]}L=L+1|0}while(L>>>0>>0);p=0|l[N>>2]}F=F+1|0}while(F>>>0

>>0);p=0|l[d>>2]}H=H+1|0}while(H>>>0

>>0);w=f}else w=f}function Jt(e,t,n,i){t|=0,n=+n,i|=0;var r,o,a,s,c,h=0,u=0,d=0,f=0,p=0,m=0,g=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0;if(e=0|l[l[20+(e|=0)>>2]>>2],_[(s=e+40+(t<<3)|0)>>3]=0,h=0|l[(c=e+16|0)>>2]){o=e+20|0,a=0==(0|t),r=0==(0|i),B=0,e=h;do{if(i=0|l[o>>2],h=0|l[(R=i+(52*B|0)+16|0)>>2]){L=i+(52*B|0)+24|0,P=0,e=h;do{if(k=0|l[L>>2],i=0|l[(C=k+(136*P|0)+24|0)>>2]){E=k+(136*P|0)+16|0,M=0,h=0|l[(T=k+(136*P|0)+20|0)>>2],e=0|l[E>>2];do{if(0|I(h,e)){S=k+(136*P|0)+28+(36*M|0)+20|0,A=0;do{if(i=0|l[S>>2],x=0|I(0|l[i+(40*A|0)+20>>2],0|l[i+(40*A|0)+16>>2])){v=i+(40*A|0)+24|0,y=0;do{if(m=(p=0|l[v>>2])+(52*y|0)|0,b=0|l[p+(52*y|0)+4>>2],w=p+(52*y|0)+44|0,a?(l[w>>2]=0,g=0):g=0|l[w>>2],g>>>0<(d=0|l[p+(52*y|0)+48>>2])>>>0){f=0|l[p+(52*y|0)+8>>2],e=g,h=g;do{i=0|l[f+(24*h|0)>>2],e?(D=e+-1|0,u=+_[f+(24*h|0)+8>>3]-+_[f+(24*D|0)+8>>3],i=i-(0|l[f+(24*D|0)>>2])|0):u=+_[f+(24*h|0)+8>>3],h=h+1|0,e=(i=i?n-u/+(i>>>0)<2220446049250313e-31:0!=u)?h:e}while(h>>>0>>0);d=e}else d=g;D=d-g|0,l[b+(24*t|0)>>2]=D,D?(i=0|l[p+(52*y|0)+8>>2],e=0|l[i+(24*(h=d+-1|0)|0)>>2],g?(D=0|l[i+(24*(g=g+-1|0)|0)>>2],l[b+(24*t|0)+16>>2]=(0|l[m>>2])+D,u=+_[i+(24*h|0)+8>>3]-+_[i+(24*g|0)+8>>3],e=e-D|0):(l[b+(24*t|0)+16>>2]=l[m>>2],u=+_[i+(24*h|0)+8>>3]),l[b+(24*t|0)+4>>2]=e,_[b+(24*t|0)+8>>3]=u,_[s>>3]=u+ +_[s>>3],r||(l[w>>2]=d)):_[b+(24*t|0)+8>>3]=0,y=y+1|0}while(y>>>0>>0);h=0|l[T>>2],e=0|l[E>>2]}A=A+1|0}while(A>>>0<(0|I(h,e))>>>0);i=0|l[C>>2]}M=M+1|0}while(M>>>0>>0);e=0|l[R>>2]}P=P+1|0}while(P>>>0>>0);e=0|l[c>>2]}B=B+1|0}while(B>>>0>>0)}}function qt(e,t,n,i,o){t|=0,n|=0,i|=0,o|=0;var s,c,h,u,d,f,p=0,g=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0;if(f=w,w=w+800|0,u=f,d=0|l[28+(e|=0)>>2],c=0|l[l[e+20>>2]>>2],h=0|l[e+32>>2],l[(s=c+24|0)>>2]=0,Q=0|l[c+16>>2]){K=e+24|0,q=0|l[c+20>>2],J=0,v=17976931348623157e292,b=0,y=0,p=0;do{if(l[(Y=q+(52*J|0)+48|0)>>2]=0,X=0|l[q+(52*J|0)+16>>2]){Z=0|l[q+(52*J|0)+24>>2],W=0,g=0;do{if(H=0|l[Z+(136*W|0)+24>>2]){U=0==(0|(z=0|I(0|l[Z+(136*W|0)+20>>2],0|l[Z+(136*W|0)+16>>2]))),j=0;do{if(!U){N=0|l[Z+(136*W|0)+28+(36*j|0)+20>>2],G=0;do{if(O=0|I(0|l[N+(40*G|0)+20>>2],0|l[N+(40*G|0)+16>>2])){F=N+(40*G|0)+24|0,D=0;do{if(R=0|l[F>>2],C=0|l[R+(52*D|0)+48>>2]){L=8+(P=0|l[R+(52*D|0)+8>>2])|0,E=0;do{M=0|l[P+(24*E|0)>>2],E?(ee=E+-1|0,x=+_[P+(24*E|0)+8>>3]-+_[P+(24*ee|0)+8>>3],M=M-(0|l[P+(24*ee|0)>>2])|0):x=+_[L>>3],M&&(v=(V=x/+(0|M))b?V:b),E=E+1|0}while(E>>>0>>0)}p=(ee=0|I((0|l[R+(52*D|0)+24>>2])-(0|l[R+(52*D|0)+16>>2])|0,(0|l[R+(52*D|0)+20>>2])-(0|l[R+(52*D|0)+12>>2])|0))+p|0,l[s>>2]=p,g=ee+g|0,l[Y>>2]=g,D=D+1|0}while(D>>>0>>0)}G=G+1|0}while(G>>>0>>0)}j=j+1|0}while(j>>>0>>0)}W=W+1|0}while(W>>>0>>0)}else g=0;y+=(V=+(1<>2])>>2])+(52*J|0)+24>>2]|0)-1)*V*+(0|g),J=J+1|0}while(J>>>0>>0);V=v}else V=17976931348623157e292,b=0,y=0,p=0;if(U=0!=(0|o)){if(Q=0|l[o+88>>2],K=0|l[e+36>>2],l[Q+(592*K|0)+552>>2]=p,_[Q+(592*K|0)+560>>3]=+_[c+32>>3],ee=0|Ne(l[(p=h+8|0)>>2]<<3),l[Q+(592*K|0)>>2]=ee,!ee)return w=f,0}else p=h+8|0;if(!(0|l[p>>2]))return w=f,1;for(D=c+32|0,O=d+93|0,F=o+88|0,G=e+36|0,N=c+40|0,j=e+24|0,H=e+8|0,z=e+16|0,R=0;;){if(C=(K=(S=+m[h+20+(R<<2)>>2])>0)&(C=~~+k(+S)>>>0)>>>0>>0?C:i,S=+m[h+5184+(R<<2)>>2],B=+_[D>>3]-y/+T(10,+S/10),0==(1&(ee=0|r[O>>0]))|1^K&&!(0!=(4&ee)&S>0))v=V;else{if(!(L=0|Jn(0|l[j>>2],d))){p=0,$=56;break}if(P=R+1|0,M=u+(R+-1<<3)|0,E=c+40+(R<<3)|0,R){g=0,v=0,A=b,S=V;do{Jt(e,R,x=.5*(S+A),0);do{if(4&r[O>>0]){if(((0|a[d>>1])-3&65535)>=4){if(+_[M>>3]+ +_[E>>3]>2],c,P,t,n,C,o,0|l[H>>2],0|l[e>>2],0|l[z>>2],0)?+_[M>>3]+ +_[E>>3]>2],c,P,t,n,C,o,0|l[H>>2],0|l[e>>2],0|l[z>>2],0)?(v=x,A=x,$=47):S=x}while(0);47==(0|$)&&($=0),g=g+1|0}while(128!=(0|g))}else{g=0,v=0,A=b,S=V;do{Jt(e,0,x=.5*(S+A),0);do{if(4&r[O>>0]){if(((0|a[d>>1])-3&65535)>=4){if(+_[N>>3]>2],c,P,t,n,C,o,0|l[H>>2],0|l[e>>2],0|l[z>>2],0)?+_[N>>3]>2],c,P,t,n,C,o,0|l[H>>2],0|l[e>>2],0|l[z>>2],0)?(v=x,A=x,$=39):S=x}while(0);39==(0|$)&&($=0),g=g+1|0}while(128!=(0|g))}qn(L),v=0==v?x:v}if(U&&(_[(0|l[(0|l[F>>2])+(592*(0|l[G>>2])|0)>>2])+(R<<3)>>3]=v),Jt(e,R,v,1),v=R?+_[u+(R+-1<<3)>>3]+ +_[c+40+(R<<3)>>3]:+_[N>>3],_[u+(R<<3)>>3]=v,(R=R+1|0)>>>0>=(0|l[p>>2])>>>0){p=1,$=56;break}}return 56==(0|$)?(w=f,0|p):0}function Qt(e,t,n){t|=0,n|=0;var i,r=0,o=0;return l[24+(e|=0)>>2]=t,l[e+28>>2]=n,r=0|je(1,848),l[l[(i=e+20|0)>>2]>>2]=r,r?(o=0|je(0|l[(r=t+16|0)>>2],52),t=0|l[l[i>>2]>>2],l[t+20>>2]=o,o?(l[t+16>>2]=l[r>>2],l[e>>2]=l[n+84>>2],0|(o=1)):0|(o=0)):0|(n=0)}function Kt(e){var t,n=0,i=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0;if(e|=0){n=0|l[(t=e+20|0)>>2];do{if(0|n){if(y=0==(1&r[e+40>>0])?3:4,i=0|l[n>>2]){if(n=0|l[(m=i+20|0)>>2],0|l[(p=i+16|0)>>2]){for(f=0;;){if(0|(i=0|l[(d=n+24|0)>>2])){if(u=((h=0|l[n+28>>2])>>>0)/136|0,h>>>0>135){for(h=0;;){if(0|(o=0|l[(c=i+48|0)>>2])){if(s=((a=0|l[i+52>>2])>>>0)/40|0,a>>>0>39){for(a=0;un(0|l[(v=o+32|0)>>2]),l[v>>2]=0,un(0|l[(v=o+36|0)>>2]),l[v>>2]=0,$r[7&y](o),!((a=a+1|0)>>>0>=s>>>0);)o=o+40|0;o=0|l[c>>2]}Ve(o),l[c>>2]=0}if(0|(o=0|l[(c=i+84|0)>>2])){if(s=((v=0|l[i+88>>2])>>>0)/40|0,v>>>0>39){for(a=0;un(0|l[(v=o+32|0)>>2]),l[v>>2]=0,un(0|l[(v=o+36|0)>>2]),l[v>>2]=0,$r[7&y](o),!((a=a+1|0)>>>0>=s>>>0);)o=o+40|0;o=0|l[c>>2]}Ve(o),l[c>>2]=0}if(0|(o=0|l[(c=i+120|0)>>2])){if(s=((v=0|l[i+124>>2])>>>0)/40|0,v>>>0>39){for(a=0;un(0|l[(v=o+32|0)>>2]),l[v>>2]=0,un(0|l[(v=o+36|0)>>2]),l[v>>2]=0,$r[7&y](o),!((a=a+1|0)>>>0>=s>>>0);)o=o+40|0;o=0|l[c>>2]}Ve(o),l[c>>2]=0}if((h=h+1|0)>>>0>=u>>>0)break;i=i+136|0}i=0|l[d>>2]}Ve(i),l[d>>2]=0}if(0|l[n+36>>2]&&0|(_=0|l[(g=n+32|0)>>2])&&(ze(_),l[g>>2]=0,l[g+4>>2]=0,l[g+8>>2]=0,l[g+12>>2]=0),(f=f+1|0)>>>0>=(0|l[p>>2])>>>0)break;n=n+52|0}n=0|l[m>>2]}if(Ve(n),l[m>>2]=0,Ve(0|l[l[t>>2]>>2]),n=0|l[t>>2],l[n>>2]=0,!n)break}Ve(n),l[t>>2]=0}}while(0);Ve(e)}}function $t(e){var t,n,i,r=0,o=0,a=0;r=0|l[(i=32+(e|=0)|0)>>2],n=0|l[(t=e+40|0)>>2];do{if(r){if(n>>>0<=(0|l[(o=e+44|0)>>2])>>>0)return 1;if(0|l[e+36>>2]){if(ze(r),r=0|He(0|l[t>>2]),l[i>>2]=r,0|r){l[o>>2]=l[t>>2];break}return l[o>>2]=0,l[t>>2]=0,l[e+36>>2]=0,0}a=4}else a=4}while(0);do{if(4==(0|a)){if(a=0|He(n),l[i>>2]=a,a){l[e+44>>2]=l[t>>2];break}return 0}}while(0);return l[e+36>>2]=1,1}function en(e,t,n){return 0|tn(e|=0,t|=0,1,1,52,n|=0)}function tn(e,t,n,i,o,a){t|=0,n|=0,i=+i,o|=0,a|=0;var s,c,h,u,d,f,p,g,_,y,v,b,x,A,M,E,T,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0,te=0,ne=0,ie=0,re=0,oe=0,ae=0,se=0,le=0,ce=0,he=0,ue=0,de=0,fe=0,pe=0,ge=0,_e=0,ye=0,ve=0,be=0,we=0,xe=0,Ae=0,Se=0,Me=0,Ee=0,Te=0,ke=0,Ie=0,Ce=0,Pe=0,Le=0,Re=0,Be=0,De=0,Oe=0,Fe=0,Ge=0,We=0,Ze=0,Ye=0,Xe=0,Je=0,qe=0,Qe=0,Ke=0,$e=0,et=0,tt=0,nt=0;if(T=w,w=w+112|0,A=T+104|0,x=T+96|0,b=T+88|0,v=T+80|0,y=T+72|0,_=T+64|0,g=T+56|0,p=T+48|0,tt=T+40|0,E=T+32|0,M=T+24|0,P=0|l[28+(e|=0)>>2],f=0|l[l[e+20>>2]>>2],L=0|l[(0|l[P+76>>2])+(5640*t|0)+5584>>2],R=0|l[f+20>>2],C=0|l[e+24>>2],B=0|l[C+24>>2],k=0|l[P+24>>2],F=0|l[P+12>>2],D=(et=(0|I(F,(t>>>0)%(k>>>0)|0))+(0|l[P+4>>2])|0)>>>0>(D=0|l[C>>2])>>>0?et:D,l[f>>2]=D,et=0|gr(0|F,0,0|et,0),F=(et|=0-S)>>>0<(F=0|l[C+8>>2])>>>0?et:F,l[(et=f+8|0)>>2]=F,!((0|D)>-1&(0|F)>(0|D)))return me(a,1,19655,T),w=T,0;if(O=0|l[P+16>>2],k=(Ke=(0|I(O,(t>>>0)/(k>>>0)|0))+(0|l[P+8>>2])|0)>>>0>(k=0|l[C+4>>2])>>>0?Ke:k,l[(d=f+4|0)>>2]=k,Ke=0|gr(0|O,0,0|Ke,0),O=(Ke|=0-S)>>>0<(O=0|l[C+12>>2])>>>0?Ke:O,l[(Ke=f+12|0)>>2]=O,!((0|k)>-1&(0|O)>(0|k)))return me(a,1,19693,T+8|0),w=T,0;if(!(0|l[L+4>>2]))return me(a,1,19731,T+16|0),w=T,0;if(!(0|l[(u=f+16|0)>>2]))return w=T,1;h=P+80|0,c=e+40|0,s=0==(0|n),t=0,Qe=R,C=D,P=F,e=O;e:for(;;){if(l[B+36>>2]=0,Ye=(C+-1+(Je=0|l[B>>2])|0)/(0|Je)|0,l[Qe>>2]=Ye,C=(k+-1+(Xe=0|l[B+4>>2])|0)/(0|Xe)|0,l[(qe=Qe+4|0)>>2]=C,P=(P+-1+Je|0)/(0|Je)|0,l[(Je=Qe+8|0)>>2]=P,k=(e+-1+Xe|0)/(0|Xe)|0,l[(Xe=Qe+12|0)>>2]=k,P=P-Ye|0){if((4294967295/(P>>>0)|0)>>>0<(k=k-C|0)>>>0){$e=12;break}}else k=k-C|0;if((k=0|I(k,P))>>>0>1073741823){$e=14;break}C=k<<2,k=0|l[L+4>>2],l[(Ye=Qe+16|0)>>2]=k,P=0|l[h>>2],l[Qe+20>>2]=k>>>0

>>0?1:k-P|0,l[(P=Qe+40|0)>>2]=C;do{if(1&r[c>>0]){if(n=0|l[(e=Qe+32|0)>>2]){if(C>>>0<=(0|l[(R=Qe+44|0)>>2])>>>0)break;if(0|l[(k=Qe+36|0)>>2]){if(ze(n),Ze=0|He(0|l[P>>2]),l[e>>2]=Ze,!Ze){$e=22;break e}l[R>>2]=l[P>>2]}else $e=19}else $e=19;if(19==(0|$e)){if($e=0,Ze=0|He(C),l[e>>2]=Ze,!Ze)break e;l[Qe+44>>2]=l[P>>2],k=Qe+36|0}l[k>>2]=1,k=0|l[Ye>>2]}}while(0);if(P=136*k|0,k=0|l[(e=Qe+24|0)>>2]){if(P>>>0>(0|l[(C=Qe+28|0)>>2])>>>0){if(!(k=0|Ue(k,P))){$e=31;break}l[e>>2]=k,Tr(k+(Ze=0|l[C>>2])|0,0,P-Ze|0),l[C>>2]=P}}else{if(k=0|Ne(P),l[e>>2]=k,!k){t=0,$e=100;break}l[Qe+28>>2]=P,Tr(0|k,0,0|P)}if(Ze=0==(0|l[L+20>>2])?7:8,0|(k=0|l[Ye>>2]))for(Oe=L+8|0,Fe=L+12|0,Ge=B+24|0,We=L+804|0,De=0,Be=0|l[e>>2],O=L+28|0;;){if(ke=k,k=k+-1|0,Re=0|l[Qe>>2],Pe=0|gr(0|(Ie=0|Sr(1,0,0|k)),0|(Ce=S),-1,-1),Re=0|xr(0|(Re=0|gr(0|Pe,0|(Le=S),0|Re,((0|Re)<0)<<31>>31|0)),0|S,0|k),l[Be>>2]=Re,Me=0|xr(0|(Me=0|gr(0|Pe,0|Le,0|(Me=0|l[qe>>2]),((0|Me)<0)<<31>>31|0)),0|S,0|k),l[Be+4>>2]=Me,C=0|xr(0|(C=0|gr(0|Pe,0|Le,0|(C=0|l[Je>>2]),((0|C)<0)<<31>>31|0)),0|S,0|k),l[Be+8>>2]=C,Ee=0|xr(0|(Ee=0|gr(0|Pe,0|Le,0|(Ee=0|l[Xe>>2]),((0|Ee)<0)<<31>>31|0)),0|S,0|k),l[Be+12>>2]=Ee,D=Re>>(n=0|l[L+812+(De<<2)>>2])<>(e=0|l[L+944+(De<<2)>>2])<>31|0)),0|S,0|n),P=0|gr(0|(P=0|Sr(1,0,0|e)),0|S,-1,-1),P=0|xr(0|(P=0|gr(0|P,0|S,0|Ee,((0|Ee)<0)<<31>>31|0)),0|S,0|e),Te=(Te<>n,C=(0|Re)==(0|C)?0:Te,l[(Re=Be+16|0)>>2]=C,P=(0|Me)==(0|Ee)?0:(P<>e,l[Be+20>>2]=P,0|C&&(4294967295/(Te>>>0)|0)>>>0

>>0&a>>>0

>>0)&&0==(3&(a|o)|0)){for(p=o>>>2,f=a>>>2,d=0;;){if(o=0|Ci(0|l[e+((a=(c=(u=d+(h=s>>>1)|0)<<1)+p|0)<<2)>>2],i),!((a=0|Ci(0|l[e+(a+1<<2)>>2],i))>>>0>>0&o>>>0<(t-a|0)>>>0)){o=0;break e}if(0|r[e+(a+o)>>0]){o=0;break e}if(!(o=0|xi(n,e+a|0)))break;if(o=(0|o)<0,1==(0|s)){o=0;break e}d=o?d:u,s=o?h:s-h|0}a=0|Ci(0|l[e+((o=c+f|0)<<2)>>2],i),o=(o=0|Ci(0|l[e+(o+1<<2)>>2],i))>>>0>>0&a>>>0<(t-o|0)>>>0&&0==(0|r[e+(o+a)>>0])?e+o|0:0}else o=0}while(0);return 0|o}function Ci(e,t){var n;return t|=0,n=0|Mr(0|(e|=0)),0|(0==(0|t)?e:n)}function Pi(e,t){e|=0;var n,i,o,a=0,s=0;return o=w,w=w+48|0,i=o+32|0,n=o+16|0,a=o,0|Li(22305,0|r[(t|=0)>>0],4)?(s=0|function(e){var t,n=0;return n=0==(0|Ri(e|=0,43)),t=0|r[e>>0],n=n?t<<24>>24!=114&1:2,n=0==(0|Ri(e,120))?n:128|n,e=(e=0==(0|Ri(e,101)))?n:524288|n,e=t<<24>>24==114?e:64|e,e=t<<24>>24==119?512|e:e,0|(t<<24>>24==97?1024|e:e)}(t),l[a>>2]=e,l[a+4>>2]=32768|s,l[a+8>>2]=438,(0|(a=0|wi(0|H(5,0|a))))>=0?(524288&s|0&&(l[n>>2]=a,l[n+4>>2]=2,l[n+8>>2]=1,j(221,0|n)),e=0|function(e,t){e|=0;var n,i,o,a,s,c,h=0,u=0,d=0,f=0;if(c=w,w=w+64|0,s=c+40|0,o=c+24|0,i=c+16|0,n=c,a=c+56|0,0|Li(22305,(u=0|r[(t|=0)>>0])<<24>>24,4))if(h=0|mi(1156)){f=(d=h)+124|0;do{l[d>>2]=0,d=d+4|0}while((0|d)<(0|f));0|Ri(t,43)||(l[h>>2]=u<<24>>24==114?8:4),0|Ri(t,101)&&(l[n>>2]=e,l[n+4>>2]=2,l[n+8>>2]=1,j(221,0|n),u=0|r[t>>0]),u<<24>>24==97?(l[i>>2]=e,l[i+4>>2]=3,1024&(u=0|j(221,0|i))||(l[o>>2]=e,l[o+4>>2]=4,l[o+8>>2]=1024|u,j(221,0|o)),t=128|l[h>>2],l[h>>2]=t):t=0|l[h>>2],l[h+60>>2]=e,l[h+44>>2]=h+132,l[h+48>>2]=1024,r[(u=h+75|0)>>0]=-1,0==(8&t|0)&&(l[s>>2]=e,l[s+4>>2]=21523,l[s+8>>2]=a,0==(0|z(54,0|s)))&&(r[u>>0]=10),l[h+32>>2]=62,l[h+36>>2]=61,l[h+40>>2]=2,l[h+12>>2]=1,0|l[6309]||(l[h+76>>2]=-1),function(e){e|=0;var t,n;t=0|Bi(),l[e+56>>2]=l[t>>2],0|(n=0|l[t>>2])&&(l[n+52>>2]=e),l[t>>2]=e,Di()}(h)}else h=0;else l[(h=25296)>>2]=22,h=0;return w=c,0|h}(a,t),e||(l[i>>2]=a,U(6,0|i),e=0)):e=0):(l[(e=25296)>>2]=22,e=0),w=o,0|e}function Li(e,t,n){e|=0;var i=0,o=0,a=0,s=0;a=255&(t|=0),i=0!=(0|(n|=0));e:do{if(i&0!=(3&e|0))for(o=255&t;;){if((0|r[e>>0])==o<<24>>24){s=6;break e}if(!((i=0!=(0|(n=n+-1|0)))&0!=(3&(e=e+1|0)|0))){s=5;break}}else s=5}while(0);5==(0|s)&&(i?s=6:n=0);e:do{if(6==(0|s)&&(o=255&t,(0|r[e>>0])!=o<<24>>24)){i=0|I(a,16843009);t:do{if(n>>>0>3){for(;!((-2139062144&(a=l[e>>2]^i)^-2139062144)&a+-16843009|0);)if(e=e+4|0,(n=n+-4|0)>>>0<=3){s=11;break t}}else s=11}while(0);if(11==(0|s)&&!n){n=0;break}for(;;){if((0|r[e>>0])==o<<24>>24)break e;if(e=e+1|0,!(n=n+-1|0)){n=0;break}}}}while(0);return 0|(0|n?e:0)}function Ri(e,t){return e=0|function(e,t){e|=0;var n=0,i=0,o=0;i=255&(t|=0);e:do{if(i){if(3&e){n=255&t;do{if((o=0|r[e>>0])<<24>>24==0||o<<24>>24==n<<24>>24)break e;e=e+1|0}while(0!=(3&e|0))}i=0|I(i,16843009),n=0|l[e>>2];t:do{if(!((-2139062144&n^-2139062144)&n+-16843009))do{if((-2139062144&(o=n^i)^-2139062144)&o+-16843009|0)break t;n=0|l[(e=e+4|0)>>2]}while(!((-2139062144&n^-2139062144)&n+-16843009|0))}while(0);for(n=255&t;(o=0|r[e>>0])<<24>>24!=0&&o<<24>>24!=n<<24>>24;)e=e+1|0}else e=e+(0|Ai(e))|0}while(0);return 0|e}(e|=0,t|=0),0|((0|r[e>>0])==(255&t)<<24>>24?e:0)}function Bi(){return D(25300),25308}function Di(){V(25300)}function Oi(e){var t,n=0,i=0,r=0;return l[76+(e|=0)>>2],0,function(e){var t=0;0|l[68+(e|=0)>>2]&&(t=0|l[e+116>>2],e=e+112|0,0|t&&(l[t+112>>2]=l[e>>2]),e=0|l[e>>2],l[(e=e?e+116|0:3024)>>2]=t)}(e),(t=0!=(1&l[e>>2]|0))||(r=0|Bi(),n=e+56|0,0|(i=0|l[e+52>>2])&&(l[i+56>>2]=l[n>>2]),0|(n=0|l[n>>2])&&(l[n+52>>2]=i),(0|l[r>>2])==(0|e)&&(l[r>>2]=n),Di()),n=0|Fi(e),n=0|Wr[15&l[e+12>>2]](e)|n,0|(i=0|l[e+92>>2])&&gi(i),t||gi(e),0|n}function Fi(e){e|=0;var t=0;do{if(e){if((0|l[e+76>>2])<=-1){t=0|Gi(e);break}!0,t=0|Gi(e)}else{if(t=0|l[697]?0|Fi(0|l[697]):0,e=0|Bi(),e=0|l[e>>2])do{l[e+76>>2],0,(0|l[e+20>>2])>>>0>(0|l[e+28>>2])>>>0&&(t=0|Gi(e)|t),e=0|l[e+56>>2]}while(0!=(0|e));Di()}}while(0);return 0|t}function Gi(e){var t,n,i=0,r=0,o=0,a=0;return n=28+(e|=0)|0,(0|l[(t=e+20|0)>>2])>>>0>(0|l[n>>2])>>>0&&(Yr[63&l[e+36>>2]](e,0,0),0==(0|l[t>>2]))?e=-1:((r=0|l[(i=e+4|0)>>2])>>>0<(a=0|l[(o=e+8|0)>>2])>>>0&&Yr[63&l[e+40>>2]](e,r-a|0,1),l[e+16>>2]=0,l[n>>2]=0,l[t>>2]=0,l[o>>2]=0,l[i>>2]=0,e=0),0|e}function Ni(e){var t=0,n=0;return n=0|r[(t=74+(e|=0)|0)>>0],r[t>>0]=n+255|n,n=e+28|0,(0|l[(t=e+20|0)>>2])>>>0>(0|l[n>>2])>>>0&&Yr[63&l[e+36>>2]](e,0,0),l[e+16>>2]=0,l[n>>2]=0,l[t>>2]=0,4&(t=0|l[e>>2])?(l[e>>2]=32|t,t=-1):(n=(0|l[e+44>>2])+(0|l[e+48>>2])|0,l[e+8>>2]=n,l[e+4>>2]=n,t=t<<27>>31),0|t}function ji(e,t,n){return 0|function(e,t,n){t|=0,n|=0;return(0|l[76+(e|=0)>>2])>-1?(!0,t=0|rr(e,t,n)):t=0|rr(e,t,n),0|t}(e|=0,t|=0,n|=0)}function Hi(e,t,n){var i,r;return e|=0,t|=0,n|=0,i=w,w=w+16|0,l[(r=i)>>2]=n,n=0|zi(e,t,r),w=i,0|n}function zi(e,t,n){e|=0,t|=0,n|=0;var i,o,a,s,c,h=0,u=0,d=0,f=0,p=0,m=0,g=0;c=w,w=w+224|0,i=c+120|0,a=c,s=c+136|0,u=40+(h=o=c+80|0)|0;do{l[h>>2]=0,h=h+4|0}while((0|h)<(0|u));return l[i>>2]=l[n>>2],(0|Ui(0,t,i,a,o))<0?n=-1:(l[e+76>>2],0,g=32&(n=0|l[e>>2]),(0|r[e+74>>0])<1&&(l[e>>2]=-33&n),0|l[(h=e+48|0)>>2]?n=0|Ui(e,t,i,a,o):(d=0|l[(u=e+44|0)>>2],l[u>>2]=s,l[(f=e+28|0)>>2]=s,l[(p=e+20|0)>>2]=s,l[h>>2]=80,l[(m=e+16|0)>>2]=s+80,n=0|Ui(e,t,i,a,o),d&&(Yr[63&l[e+36>>2]](e,0,0),n=0==(0|l[p>>2])?-1:n,l[u>>2]=d,l[h>>2]=0,l[m>>2]=0,l[f>>2]=0,l[p>>2]=0)),h=0|l[e>>2],l[e>>2]=h|g,n=0==(32&h|0)?n:-1),w=c,0|n}function Ui(e,t,n,i,o){e|=0,t|=0,n|=0,i|=0,o|=0;var s,c,h,u,d,f,p,m,g,y=0,v=0,b=0,x=0,A=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=0;g=w,w=w+64|0,f=g,R=g+24|0,p=g+8|0,m=g+20|0,l[(d=g+16|0)>>2]=t,s=0!=(0|e),h=c=R+40|0,R=R+39|0,u=p+4|0,v=0,y=0,M=0;e:for(;;){do{if((0|y)>-1){if((0|v)>(2147483647-y|0)){l[(y=25296)>>2]=75,y=-1;break}y=v+y|0;break}}while(0);if(!((v=0|r[t>>0])<<24>>24)){L=86;break}b=t;t:for(;;){switch(v<<24>>24){case 37:v=b,L=9;break t;case 0:v=b;break t}P=b+1|0,l[d>>2]=P,v=0|r[P>>0],b=P}t:do{if(9==(0|L))for(;;){if(L=0,37!=(0|r[b+1>>0]))break t;if(v=v+1|0,b=b+2|0,l[d>>2]=b,37!=(0|r[b>>0]))break;L=9}}while(0);if(v=v-t|0,s&&Vi(e,t,v),0|v)t=b;else{if((v=(0|r[(x=b+1|0)>>0])-48|0)>>>0<10?(I=(P=36==(0|r[b+2>>0]))?v:-1,M=P?1:M,x=P?b+3|0:x):I=-1,l[d>>2]=x,(P=((v=0|r[x>>0])<<24>>24)-32|0)>>>0>31|0==(1<>24)-32,x=x+1|0,l[d>>2]=x,P=((v=0|r[x>>0])<<24>>24)-32|0}while(!(P>>>0>31|0==(1<>24==42){if((v=(0|r[(A=x+1|0)>>0])-48|0)>>>0<10&&36==(0|r[x+2>>0]))l[o+(v<<2)>>2]=10,v=0|l[i+((0|r[A>>0])-48<<3)>>2],M=1,x=x+3|0;else{if(0|M){y=-1;break}s?(M=3+(0|l[n>>2])&-4,v=0|l[M>>2],l[n>>2]=M+4,M=0,x=A):(v=0,M=0,x=A)}l[d>>2]=x,v=(C=(0|v)<0)?0-v|0:v,C=C?8192|b:b}else{if((0|(v=0|Wi(d)))<0){y=-1;break}C=b,x=0|l[d>>2]}do{if(46==(0|r[x>>0])){if(42!=(0|r[x+1>>0])){l[d>>2]=x+1,b=0|Wi(d),x=0|l[d>>2];break}if((b=(0|r[(A=x+2|0)>>0])-48|0)>>>0<10&&36==(0|r[x+3>>0])){l[o+(b<<2)>>2]=10,b=0|l[i+((0|r[A>>0])-48<<3)>>2],x=x+4|0,l[d>>2]=x;break}if(0|M){y=-1;break e}s?(P=3+(0|l[n>>2])&-4,b=0|l[P>>2],l[n>>2]=P+4):b=0,l[d>>2]=A,x=A}else b=-1}while(0);for(k=0;;){if(((0|r[x>>0])-65|0)>>>0>57){y=-1;break e}if(P=x+1|0,l[d>>2]=P,!(((E=255&(A=0|r[(0|r[x>>0])-65+(22309+(58*k|0))>>0]))-1|0)>>>0<8))break;k=E,x=P}if(!(A<<24>>24)){y=-1;break}T=(0|I)>-1;do{if(A<<24>>24==19){if(T){y=-1;break e}L=48}else{if(T){l[o+(I<<2)>>2]=E,I=0|l[4+(T=i+(I<<3)|0)>>2],l[(L=f)>>2]=l[T>>2],l[L+4>>2]=I,L=48;break}if(!s){y=0;break e}Zi(f,E,n)}}while(0);if(48!=(0|L)||(L=0,s)){x=0!=(0|k)&3==(15&(x=0|r[x>>0])|0)?-33&x:x,I=-65537&C,C=0==(8192&C|0)?C:I;t:do{switch(0|x){case 110:switch((255&k)<<24>>24){case 0:case 1:case 6:l[l[f>>2]>>2]=y,v=0,t=P;continue e;case 2:case 7:v=0|l[f>>2],l[v>>2]=y,l[v+4>>2]=((0|y)<0)<<31>>31,v=0,t=P;continue e;case 3:a[l[f>>2]>>1]=y,v=0,t=P;continue e;case 4:r[l[f>>2]>>0]=y,v=0,t=P;continue e;default:v=0,t=P;continue e}case 112:x=120,b=b>>>0>8?b:8,t=8|C,L=60;break;case 88:case 120:t=C,L=60;break;case 111:A=0,E=22773,b=0==(8&C|0)|(0|b)>(0|(k=h-(T=0|Xi(t=0|l[(x=f)>>2],x=0|l[x+4>>2],c))|0))?b:k+1|0,k=C,L=66;break;case 105:case 100:if(t=0|l[(x=f)>>2],(0|(x=0|l[x+4>>2]))<0){t=0|_r(0,0,0|t,0|x),x=S,l[(A=f)>>2]=t,l[A+4>>2]=x,A=1,E=22773,L=65;break t}A=0!=(2049&C|0)&1,E=0==(2048&C|0)?0==(1&C|0)?22773:22775:22774,L=65;break t;case 117:A=0,E=22773,t=0|l[(x=f)>>2],x=0|l[x+4>>2],L=65;break;case 99:r[R>>0]=l[f>>2],t=R,A=0,E=22773,T=c,x=1,b=I;break;case 109:x=0|qi(0|l[(x=25296)>>2]),L=70;break;case 115:x=0|(x=0|l[f>>2])?x:22783,L=70;break;case 67:l[p>>2]=l[f>>2],l[u>>2]=0,l[f>>2]=p,T=-1,x=p,L=74;break;case 83:t=0|l[f>>2],b?(T=b,x=t,L=74):(Qi(e,32,v,0,C),t=0,L=83);break;case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:v=0|$i(e,+_[f>>3],v,b,C,x),t=P;continue e;default:A=0,E=22773,T=c,x=b,b=C}}while(0);t:do{if(60==(0|L))T=0|Yi(I=0|l[(C=f)>>2],C=0|l[C+4>>2],c,32&x),A=(E=0==(8&t|0)|0==(0|I)&0==(0|C))?0:2,E=E?22773:22773+(x>>4)|0,k=t,t=I,x=C,L=66;else if(65==(0|L))T=0|Ji(t,x,c),k=C,L=66;else if(70==(0|L))L=0,t=x,A=0,E=22773,T=(k=0==(0|(C=0|Li(x,0,b))))?x+b|0:C,x=k?b:C-x|0,b=I;else if(74==(0|L)){for(L=0,E=x,t=0,b=0;(A=0|l[E>>2])&&!((0|(b=0|Ki(m,A)))<0|b>>>0>(T-t|0)>>>0)&&T>>>0>(t=b+t|0)>>>0;)E=E+4|0;if((0|b)<0){y=-1;break e}if(Qi(e,32,v,t,C),t)for(A=0;;){if(!(b=0|l[x>>2])){L=83;break t}if((0|(A=(b=0|Ki(m,b))+A|0))>(0|t)){L=83;break t}if(Vi(e,m,b),A>>>0>=t>>>0){L=83;break}x=x+4|0}else t=0,L=83}}while(0);if(66==(0|L))L=0,C=0!=(0|b)|(x=0!=(0|t)|0!=(0|x)),x=h-T+(1&(1^x))|0,t=C?T:c,T=c,x=C?(0|b)>(0|x)?b:x:b,b=(0|b)>-1?-65537&k:k;else if(83==(0|L)){L=0,Qi(e,32,v,t,8192^C),v=(0|v)>(0|t)?v:t,t=P;continue}Qi(e,32,v=(0|v)<(0|(C=(k=(0|x)<(0|(I=T-t|0))?I:x)+A|0))?C:v,C,b),Vi(e,E,A),Qi(e,48,v,C,65536^b),Qi(e,48,k,I,0),Vi(e,t,I),Qi(e,32,v,C,8192^b),t=P}else v=0,t=P}}e:do{if(86==(0|L)&&!e)if(M){for(y=1;t=0|l[o+(y<<2)>>2];){if(Zi(i+(y<<3)|0,t,n),t=y+1|0,!((0|y)<9)){y=t;break}y=t}if((0|y)<10)for(;;){if(0|l[o+(y<<2)>>2]){y=-1;break e}if(!((0|y)<9)){y=1;break}y=y+1|0}else y=1}else y=0}while(0);return w=g,0|y}function Vi(e,t,n){t|=0,n|=0,32&l[(e|=0)>>2]||ki(t,n,e)}function Wi(e){var t=0,n=0,i=0;if(n=0|l[(e|=0)>>2],(i=(0|r[n>>0])-48|0)>>>0<10){t=0;do{t=i+(10*t|0)|0,n=n+1|0,l[e>>2]=n,i=(0|r[n>>0])-48|0}while(i>>>0<10)}else t=0;return 0|t}function Zi(e,t,n){e|=0,t|=0,n|=0;var i=0,r=0,o=0;e:do{if(t>>>0<=20)switch(0|t){case 9:i=3+(0|l[n>>2])&-4,t=0|l[i>>2],l[n>>2]=i+4,l[e>>2]=t;break e;case 10:i=3+(0|l[n>>2])&-4,t=0|l[i>>2],l[n>>2]=i+4,l[(i=e)>>2]=t,l[i+4>>2]=((0|t)<0)<<31>>31;break e;case 11:i=3+(0|l[n>>2])&-4,t=0|l[i>>2],l[n>>2]=i+4,l[(i=e)>>2]=t,l[i+4>>2]=0;break e;case 12:i=7+(0|l[n>>2])&-8,r=0|l[(t=i)>>2],t=0|l[t+4>>2],l[n>>2]=i+8,l[(i=e)>>2]=r,l[i+4>>2]=t;break e;case 13:r=3+(0|l[n>>2])&-4,i=0|l[r>>2],l[n>>2]=r+4,i=(65535&i)<<16>>16,l[(r=e)>>2]=i,l[r+4>>2]=((0|i)<0)<<31>>31;break e;case 14:r=3+(0|l[n>>2])&-4,i=0|l[r>>2],l[n>>2]=r+4,l[(r=e)>>2]=65535&i,l[r+4>>2]=0;break e;case 15:r=3+(0|l[n>>2])&-4,i=0|l[r>>2],l[n>>2]=r+4,i=(255&i)<<24>>24,l[(r=e)>>2]=i,l[r+4>>2]=((0|i)<0)<<31>>31;break e;case 16:r=3+(0|l[n>>2])&-4,i=0|l[r>>2],l[n>>2]=r+4,l[(r=e)>>2]=255&i,l[r+4>>2]=0;break e;case 17:case 18:r=7+(0|l[n>>2])&-8,o=+_[r>>3],l[n>>2]=r+8,_[e>>3]=o;break e;default:break e}}while(0)}function Yi(e,t,n,i){if(n|=0,i|=0,!(0==(0|(e|=0))&0==(0|(t|=0))))do{r[(n=n+-1|0)>>0]=0|h[22825+(15&e)>>0]|i,e=0|Ar(0|e,0|t,4),t=S}while(!(0==(0|e)&0==(0|t)));return 0|n}function Xi(e,t,n){if(n|=0,!(0==(0|(e|=0))&0==(0|(t|=0))))do{r[(n=n+-1|0)>>0]=7&e|48,e=0|Ar(0|e,0|t,3),t=S}while(!(0==(0|e)&0==(0|t)));return 0|n}function Ji(e,t,n){n|=0;var i=0;if((t|=0)>>>0>0|0==(0|t)&(e|=0)>>>0>4294967295){for(;i=0|wr(0|e,0|t,10,0),r[(n=n+-1|0)>>0]=255&i|48,i=e,e=0|br(0|e,0|t,10,0),t>>>0>9|9==(0|t)&i>>>0>4294967295;)t=S;t=e}else t=e;if(t)for(;r[(n=n+-1|0)>>0]=48|(t>>>0)%10,!(t>>>0<10);)t=(t>>>0)/10|0;return 0|n}function qi(e){return 0|function(e,t){e|=0,t|=0;var n=0,i=0;for(i=0;;){if((0|h[22843+i>>0])==(0|e)){e=2;break}if(87==(0|(n=i+1|0))){n=22931,i=87,e=5;break}i=n}if(2==(0|e)&&(i?(n=22931,e=5):n=22931),5==(0|e))for(;;){do{e=n,n=n+1|0}while(0!=(0|r[e>>0]));if(!(i=i+-1|0))break;e=5}return 0|function(e,t){return 0|function(e,t){return e|=0,0|(0|(t=(t|=0)?0|Ii(0|l[t>>2],0|l[t+4>>2],e):0)?t:e)}(e|=0,t|=0)}(n,0|l[t+20>>2])}(e|=0,0|l[745])}function Qi(e,t,n,i,r){var o,a;if(e|=0,t|=0,a=w,w=w+256|0,o=a,(0|(n|=0))>(0|(i|=0))&0==(73728&(r|=0)|0)){if(Tr(0|o,0|t,0|((r=n-i|0)>>>0<256?r:256)),r>>>0>255){t=n-i|0;do{Vi(e,o,256),r=r+-256|0}while(r>>>0>255);r=255&t}Vi(e,o,r)}w=a}function Ki(e,t){return 0|((e|=0)?0|ir(e,t|=0):0)}function $i(e,t,n,i,o,a){e|=0,t=+t,n|=0,i|=0,o|=0,a|=0;var s,c=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0;s=w,w=w+560|0,d=s+8|0,R=B=s+524|0,f=s+512|0,l[(b=s)>>2]=0,L=f+12|0,er(t),(0|S)<0?(t=-t,C=1,k=22790):(C=0!=(2049&o|0)&1,k=0==(2048&o|0)?0==(1&o|0)?22791:22796:22793),er(t);do{if(!0&2146435072==(2146435072&S|0))B=0!=(32&a|0),Qi(e,32,n,c=C+3|0,-65537&o),Vi(e,k,C),Vi(e,t!=t|!1?B?22817:22821:B?22809:22813,3),Qi(e,32,n,c,8192^o);else{if((c=0!=(_=2*+tr(t,b)))&&(l[b>>2]=(0|l[b>>2])-1),97==(0|(A=32|a))){y=0==(0|(m=32&a))?k:k+9|0,g=2|C,c=12-i|0;do{if(!(i>>>0>11|0==(0|c))){t=8;do{c=c+-1|0,t*=16}while(0!=(0|c));if(45==(0|r[y>>0])){t=-(t+(-_-t));break}t=_+t-t;break}t=_}while(0);(0|(c=0|Ji(c=(0|(u=0|l[b>>2]))<0?0-u|0:u,((0|c)<0)<<31>>31,L)))==(0|L)&&(r[(c=f+11|0)>>0]=48),r[c+-1>>0]=43+(u>>31&2),r[(p=c+-2|0)>>0]=a+15,d=(0|i)<1,f=0==(8&o|0),c=B;do{P=~~t,u=c+1|0,r[c>>0]=m|h[22825+P>>0],t=16*(t-+(0|P)),1!=(u-R|0)||f&d&0==t?c=u:(r[u>>0]=46,c=c+2|0)}while(0!=t);0!=(0|i)&&(-2-R+c|0)<(0|i)?(u=c-R|0,c=i+2|0):u=c=c-R|0,Qi(e,32,n,R=(L=L-p|0)+g+c|0,o),Vi(e,y,g),Qi(e,48,n,R,65536^o),Vi(e,B,u),Qi(e,48,c-u|0,0,0),Vi(e,p,L),Qi(e,32,n,R,8192^o),c=R;break}u=(0|i)<0?6:i,c?(c=(0|l[b>>2])-28|0,l[b>>2]=c,t=268435456*_):(t=_,c=0|l[b>>2]),d=P=(0|c)<0?d:d+288|0;do{E=~~t>>>0,l[d>>2]=E,d=d+4|0,t=1e9*(t-+(E>>>0))}while(0!=t);if((0|c)>0)for(f=P,m=d;;){if(p=(0|c)<29?c:29,(c=m+-4|0)>>>0>=f>>>0){d=0;do{x=0|wr(0|(M=0|gr(0|(M=0|Sr(0|l[c>>2],0,0|p)),0|S,0|d,0)),0|(E=S),1e9,0),l[c>>2]=x,d=0|br(0|M,0|E,1e9,0),c=c+-4|0}while(c>>>0>=f>>>0);d&&(l[(f=f+-4|0)>>2]=d)}for(d=m;!(d>>>0<=f>>>0||0|l[(c=d+-4|0)>>2]);)d=c;if(c=(0|l[b>>2])-p|0,l[b>>2]=c,!((0|c)>0))break;m=d}else f=P;if((0|c)<0){i=1+((u+25|0)/9|0)|0,v=102==(0|A);do{if(y=(0|(y=0-c|0))<9?y:9,f>>>0>>0){p=(1<>>y,g=0,c=f;do{E=0|l[c>>2],l[c>>2]=(E>>>y)+g,g=0|I(E&p,m),c=c+4|0}while(c>>>0>>0);c=0==(0|l[f>>2])?f+4|0:f,g?(l[d>>2]=g,f=c,c=d+4|0):(f=c,c=d)}else f=0==(0|l[f>>2])?f+4|0:f,c=d;d=(c-(d=v?P:f)>>2|0)>(0|i)?d+(i<<2)|0:c,c=(0|l[b>>2])+y|0,l[b>>2]=c}while((0|c)<0);c=f,i=d}else c=f,i=d;if(E=P,c>>>0>>0){if(d=9*(E-c>>2)|0,(p=0|l[c>>2])>>>0>=10){f=10;do{f=10*f|0,d=d+1|0}while(p>>>0>=f>>>0)}}else d=0;if((0|(f=u-(102!=(0|A)?d:0)+(((x=0!=(0|u))&(v=103==(0|A)))<<31>>31)|0))<((9*(i-E>>2)|0)-9|0)){if(y=P+4+(((0|(f=f+9216|0))/9|0)-1024<<2)|0,(0|(f=(0|f)%9|0))<8)for(p=10;p=10*p|0,(0|f)<7;)f=f+1|0;else p=10;if((f=(y+4|0)==(0|i))&0==(0|(g=((m=0|l[y>>2])>>>0)%(p>>>0)|0)))f=y;else if(_=0==(1&((m>>>0)/(p>>>0)|0)|0)?9007199254740992:9007199254740994,t=g>>>0<(M=(0|p)/2|0)>>>0?.5:f&(0|g)==(0|M)?1:1.5,C&&(t=(M=45==(0|r[k>>0]))?-t:t,_=M?-_:_),f=m-g|0,l[y>>2]=f,_+t!=_){if(M=f+p|0,l[y>>2]=M,M>>>0>999999999)for(d=y;f=d+-4|0,l[d>>2]=0,f>>>0>>0&&(l[(c=c+-4|0)>>2]=0),M=1+(0|l[f>>2])|0,l[f>>2]=M,M>>>0>999999999;)d=f;else f=y;if(d=9*(E-c>>2)|0,(m=0|l[c>>2])>>>0>=10){p=10;do{p=10*p|0,d=d+1|0}while(m>>>0>=p>>>0)}}else f=y;f=i>>>0>(f=f+4|0)>>>0?f:i,M=c}else f=i,M=c;for(A=f;;){if(A>>>0<=M>>>0){b=0;break}if(0|l[(c=A+-4|0)>>2]){b=1;break}A=c}i=0-d|0;do{if(v){if((0|(c=u+(1&(1^x))|0))>(0|d)&(0|d)>-5?(p=a+-1|0,u=c+-1-d|0):(p=a+-2|0,u=c+-1|0),!(c=8&o)){if(b&&0!=(0|(T=0|l[A+-4>>2])))if((T>>>0)%10|0)f=0;else{f=0,c=10;do{c=10*c|0,f=f+1|0}while(!(0|(T>>>0)%(c>>>0)))}else f=9;if(c=(9*(A-E>>2)|0)-9|0,102==(32|p)){u=(0|u)<(0|(y=(0|(y=c-f|0))>0?y:0))?u:y,y=0;break}u=(0|u)<(0|(y=(0|(y=c+d-f|0))>0?y:0))?u:y,y=0;break}y=c}else p=a,y=8&o}while(0);if(m=0!=(0|(v=u|y))&1,g=102==(32|p))x=0,c=(0|d)>0?d:0;else{if(((f=L)-(c=0|Ji(c=(0|d)<0?i:d,((0|c)<0)<<31>>31,L))|0)<2)do{r[(c=c+-1|0)>>0]=48}while((f-c|0)<2);r[c+-1>>0]=43+(d>>31&2),r[(c=c+-2|0)>>0]=p,x=c,c=f-c|0}if(Qi(e,32,n,c=C+1+u+m+c|0,o),Vi(e,k,C),Qi(e,48,n,c,65536^o),g){m=y=B+9|0,g=B+8|0,f=p=M>>>0>P>>>0?P:M;do{if(d=0|Ji(0|l[f>>2],0,y),(0|f)==(0|p))(0|d)==(0|y)&&(r[g>>0]=48,d=g);else if(d>>>0>B>>>0){Tr(0|B,48,d-R|0);do{d=d+-1|0}while(d>>>0>B>>>0)}Vi(e,d,m-d|0),f=f+4|0}while(f>>>0<=P>>>0);if(0|v&&Vi(e,22841,1),f>>>0>>0&(0|u)>0)for(;;){if((d=0|Ji(0|l[f>>2],0,y))>>>0>B>>>0){Tr(0|B,48,d-R|0);do{d=d+-1|0}while(d>>>0>B>>>0)}if(Vi(e,d,(0|u)<9?u:9),d=u+-9|0,!((f=f+4|0)>>>0>>0&(0|u)>9)){u=d;break}u=d}Qi(e,48,u+9|0,9,0)}else{if(v=b?A:M+4|0,(0|u)>-1){y=0==(0|y),i=b=B+9|0,m=0-R|0,g=B+8|0,p=M;do{(0|(d=0|Ji(0|l[p>>2],0,b)))==(0|b)&&(r[g>>0]=48,d=g);do{if((0|p)==(0|M)){if(f=d+1|0,Vi(e,d,1),y&(0|u)<1){d=f;break}Vi(e,22841,1),d=f}else{if(d>>>0<=B>>>0)break;Tr(0|B,48,d+m|0);do{d=d+-1|0}while(d>>>0>B>>>0)}}while(0);Vi(e,d,(0|u)>(0|(R=i-d|0))?R:u),u=u-R|0,p=p+4|0}while(p>>>0>>0&(0|u)>-1)}Qi(e,48,u+18|0,18,0),Vi(e,x,L-x|0)}Qi(e,32,n,c,8192^o)}}while(0);return w=s,0|((0|c)<(0|n)?n:c)}function er(e){var t;return e=+e,_[b>>3]=e,t=0|l[b>>2],S=0|l[b+4>>2],0|t}function tr(e,t){return+ +nr(e=+e,t|=0)}function nr(e,t){e=+e,t|=0;var n,i,r=0;switch(_[b>>3]=e,2047&(i=0|Ar(0|(r=0|l[b>>2]),0|(n=0|l[b+4>>2]),52))){case 0:0!=e?(e=+nr(0x10000000000000000*e,t),r=(0|l[t>>2])-64|0):r=0,l[t>>2]=r;break;case 2047:break;default:l[t>>2]=(2047&i)-1022,l[b>>2]=r,l[b+4>>2]=-2146435073&n|1071644672,e=+_[b>>3]}return+e}function ir(e,t,n){e|=0,t|=0;do{if(e){if(t>>>0<128){r[e>>0]=t,e=1;break}if(!(0|l[l[745]>>2])){if(57216==(-128&t|0)){r[e>>0]=t,e=1;break}l[(e=25296)>>2]=84,e=-1;break}if(t>>>0<2048){r[e>>0]=t>>>6|192,r[e+1>>0]=63&t|128,e=2;break}if(t>>>0<55296|57344==(-8192&t|0)){r[e>>0]=t>>>12|224,r[e+1>>0]=t>>>6&63|128,r[e+2>>0]=63&t|128,e=3;break}if((t+-65536|0)>>>0<1048576){r[e>>0]=t>>>18|240,r[e+1>>0]=t>>>12&63|128,r[e+2>>0]=t>>>6&63|128,r[e+3>>0]=63&t|128,e=4;break}l[(e=25296)>>2]=84,e=-1;break}e=1}while(0);return 0|e}function rr(e,t,n){var i,r;return e|=0,t|=0,1==(0|(n|=0))&&(t=t-(0|l[e+8>>2])+(0|l[e+4>>2])|0),r=e+28|0,(0|l[(i=e+20|0)>>2])>>>0>(0|l[r>>2])>>>0&&(Yr[63&l[e+36>>2]](e,0,0),0==(0|l[i>>2]))?t=-1:(l[e+16>>2]=0,l[r>>2]=0,l[i>>2]=0,(0|Yr[63&l[e+40>>2]](e,t,n))<0?t=-1:(l[e+8>>2]=0,l[e+4>>2]=0,l[e>>2]=-17&l[e>>2],t=0)),0|t}function or(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var o,a,s=0,c=0,h=0,u=0,d=0;a=w,w=w+128|0,s=a+124|0,h=3036,o=(c=d=a)+124|0;do{l[c>>2]=l[h>>2],c=c+4|0,h=h+4|0}while((0|c)<(0|o));return(t+-1|0)>>>0>2147483646?t?(l[(t=25296)>>2]=75,t=-1):(e=s,t=1,u=4):u=4,4==(0|u)&&(u=t>>>0>(u=-2-e|0)>>>0?u:t,l[d+48>>2]=u,l[(s=d+20|0)>>2]=e,l[d+44>>2]=e,t=e+u|0,l[(e=d+16|0)>>2]=t,l[d+28>>2]=t,t=0|zi(d,n,i),u&&(d=0|l[s>>2],r[d+(((0|d)==(0|l[e>>2]))<<31>>31)>>0]=0)),w=a,0|t}function ar(e,t){return sr(e|=0,t|=0),0|e}function sr(e,t){e|=0;var n=0,i=0;n=t|=0;e:do{if(3&(n^e))i=8;else{if(3&n)do{if(n=0|r[t>>0],r[e>>0]=n,!(n<<24>>24))break e;t=t+1|0,e=e+1|0}while(0!=(3&t|0));if(!((-2139062144&(n=0|l[t>>2])^-2139062144)&n+-16843009))for(i=e;t=t+4|0,e=i+4|0,l[i>>2]=n,!((-2139062144&(n=0|l[t>>2])^-2139062144)&n+-16843009|0);)i=e;i=8}}while(0);if(8==(0|i)&&(i=0|r[t>>0],r[e>>0]=i,i<<24>>24))do{e=e+1|0,i=0|r[(t=t+1|0)>>0],r[e>>0]=i}while(i<<24>>24!=0);return 0|e}function lr(e,t,n){var i,r;return e|=0,t|=0,n|=0,i=w,w=w+16|0,l[(r=i)>>2]=n,n=0|function(e,t,n){return 0|or(e|=0,2147483647,t|=0,n|=0)}(e,t,r),w=i,0|n}function cr(e,t){return+ +function(e,t){e=+e;var n=0,i=0;return(0|(t|=0))<=1023?(0|t)<-1022&&(e*=22250738585072014e-324,n=t+2044|0,e=(i=(0|t)<-2044)?22250738585072014e-324*e:e,t=i?(0|n)>-1022?n:-1022:t+1022|0):(e*=898846567431158e293,i=t+-2046|0,e=(n=(0|t)>2046)?898846567431158e293*e:e,t=n?(0|i)<1023?i:1023:t+-1023|0),n=0|Sr(t+1023|0,0,52),i=S,l[b>>2]=n,l[b+4>>2]=i,+e*+_[b>>3]}(e=+e,t|=0)}function hr(e){return 0|~~+Ir(+(e=+e))}function ur(e,t,n,i){e|=0,i|=0;var o,a,s=0,c=0,h=0;o=0|I(n|=0,t|=0),n=0==(0|t)?0:n,l[i+76>>2],c=0|r[(s=i+74|0)>>0],r[s>>0]=c+255|c,c=0|l[(s=i+4|0)>>2],h=(a=(0|l[i+8>>2])-c|0)>>>0>>0?a:o,(0|a)>0?(Er(0|e,0|c,0|h),l[s>>2]=c+h,s=o-h|0,e=e+h|0):s=o;e:do{if(s){for(h=i+32|0;!(0|Ni(i)||(1+(c=0|Yr[63&l[h>>2]](i,e,s))|0)>>>0<2);){if(!(s=s-c|0)){13;break e}e=e+c|0}n=((o-s|0)>>>0)/(t>>>0)|0}else 13}while(0);return 0|n}function dr(e,t){e|=0;var n=0,i=0,o=0,a=0,s=0;l[76+(t|=0)>>2],s=3;do{if(3==(0|s)){if(i=255&e,(0|(n=255&e))!=(0|r[t+75>>0])&&(a=0|l[(o=t+20|0)>>2])>>>0<(0|l[t+16>>2])>>>0){l[o>>2]=a+1,r[a>>0]=i;break}n=0|Ei(t,e)}}while(0);return 0|n}function fr(e){e|=0;var t,n=0,i=0;t=0|l[665],l[t+76>>2];do{if((0|Si(e,t))<0)e=-1;else{if(10!=(0|r[t+75>>0])&&(i=0|l[(n=t+20|0)>>2])>>>0<(0|l[t+16>>2])>>>0){l[n>>2]=i+1,r[i>>0]=10,e=0;break}e=(0|Ei(t,10))>>31}}while(0);return 0|e}function pr(e){var t=0;return t=128&l[(e|=0)>>2]&&(0|l[e+20>>2])>>>0>(0|l[e+28>>2])>>>0?2:1,(0|(t=0|Yr[63&l[e+40>>2]](e,0,t)))>=0&&(t=t-(0|l[e+8>>2])+(0|l[e+4>>2])+(0|l[e+20>>2])-(0|l[e+28>>2])|0),0|t}function mr(e,t,n,i){var r,o;return t|=0,i|=0,n=0|function(e,t){var n,i,r,o=0;return e=((n=0|I(o=65535&(t|=0),r=65535&(e|=0)))>>>16)+(0|I(o,i=e>>>16))|0,t=0|I(o=t>>>16,r),0|(S=(e>>>16)+(0|I(o,i))+(((65535&e)+t|0)>>>16)|0,e+t<<16|65535&n|0)}(r=e|=0,o=n|=0),e=S,0|(S=(0|I(t,o))+(0|I(i,r))+e|0&e,0|n)}function gr(e,t,n,i){return 0|(S=(t|=0)+(i|=0)+((n=(e|=0)+(n|=0)>>>0)>>>0>>0|0)>>>0,0|n)}function _r(e,t,n,i){return 0|(S=i=(t|=0)-(i|=0)-((n|=0)>>>0>(e|=0)>>>0|0)>>>0,e-n>>>0|0)}function yr(e){var t=0;return(0|(t=0|r[x+(255&(e|=0))>>0]))<8?0|t:(0|(t=0|r[x+(e>>8&255)>>0]))<8?t+8|0:(0|(t=0|r[x+(e>>16&255)>>0]))<8?t+16|0:24+(0|r[x+(e>>>24)>>0])|0}function vr(e,t,n,i,r){r|=0;var o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0;if(u=e|=0,a=n|=0,s=f=i|=0,!(h=c=t|=0))return o=0!=(0|r),s?o?(l[r>>2]=0|e,l[r+4>>2]=0&t,0|(S=f=0,r=0)):0|(S=f=0,r=0):(o&&(l[r>>2]=(u>>>0)%(a>>>0),l[r+4>>2]=0),0|(S=f=0,r=(u>>>0)/(a>>>0)>>>0));o=0==(0|s);do{if(a){if(!o){if((o=(0|C(0|s))-(0|C(0|h))|0)>>>0<=31){a=d=o+1|0,e=u>>>(d>>>0)&(t=o-31>>31)|h<<(s=31-o|0),t&=h>>>(d>>>0),o=0,s=u<>2]=0|e,l[r+4>>2]=c|0&t,0|(S=f=0,r=0)):0|(S=f=0,r=0)}if((o=a-1|0)&a|0){a=s=33+(0|C(0|a))-(0|C(0|h))|0,e=(d=32-s|0)-1>>31&h>>>((p=s-32|0)>>>0)|(h<>>(s>>>0))&(t=p>>31),t&=h>>>(s>>>0),o=u<<(m=64-s|0)&(c=d>>31),s=(h<>>(p>>>0))&c|u<>31;break}return 0|r&&(l[r>>2]=o&u,l[r+4>>2]=0),1==(0|a)?0|(S=p=c|0&t,m=0|e):(m=0|yr(0|a),0|(S=p=h>>>(m>>>0)|0,m=h<<32-m|u>>>(m>>>0)|0))}if(o)return 0|r&&(l[r>>2]=(h>>>0)%(a>>>0),l[r+4>>2]=0),0|(S=p=0,(h>>>0)/(a>>>0)>>>0);if(!u)return 0|r&&(l[r>>2]=0,l[r+4>>2]=(h>>>0)%(s>>>0)),0|(S=p=0,(h>>>0)/(s>>>0)>>>0);if(!((o=s-1|0)&s))return 0|r&&(l[r>>2]=0|e,l[r+4>>2]=o&h|0&t),p=0,m=h>>>((0|yr(0|s))>>>0),0|(S=p,m);if((o=(0|C(0|s))-(0|C(0|h))|0)>>>0<=30){a=t=o+1|0,e=h<<(s=31-o|0)|u>>>(t>>>0),t=h>>>(t>>>0),o=0,s=u<>2]=0|e,l[r+4>>2]=c|0&t,0|(S=p=0,m=0)):0|(S=p=0,m=0)}while(0);if(a){h=0|gr(0|(d=0|n),0|(u=f|0&i),-1,-1),n=S,c=s,s=0;do{i=c,c=o>>>31|c<<1,o=s|o<<1,_r(0|h,0|n,0|(i=e<<1|i>>>31|0),0|(f=e>>>31|t<<1|0)),s=1&(p=(m=S)>>31|((0|m)<0?-1:0)<<1),e=0|_r(0|i,0|f,p&d|0,(((0|m)<0?-1:0)>>31|((0|m)<0?-1:0)<<1)&u|0),t=S,a=a-1|0}while(0!=(0|a));h=c,c=0}else h=s,c=0,s=0;return a=0,0|r&&(l[r>>2]=e,l[r+4>>2]=t),0|(S=p=(0|o)>>>31|(h|a)<<1|0&(a<<1|o>>>31)|c,-2&(o<<1|0)|s)}function br(e,t,n,i){return 0|vr(e|=0,t|=0,n|=0,i|=0,0)}function wr(e,t,n,i){var r,o;return o=w,w=w+16|0,vr(e|=0,t|=0,n|=0,i|=0,r=0|o),w=o,0|(S=0|l[r+4>>2],0|l[r>>2])}function xr(e,t,n){return t|=0,(0|(n|=0))<32?(S=t>>n,(e|=0)>>>n|(t&(1<>n-32|0)}function Ar(e,t,n){return t|=0,(0|(n|=0))<32?(S=t>>>n,(e|=0)>>>n|(t&(1<>>n-32|0)}function Sr(e,t,n){return e|=0,(0|(n|=0))<32?(S=(t|=0)<>>32-n,e<>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function Er(e,t,n){e|=0,t|=0;var i,o,a=0;if((0|(n|=0))>=8192)return 0|W(0|e,0|t,0|n);if(o=0|e,i=e+n|0,(3&e)==(3&t)){for(;3&e;){if(!n)return 0|o;r[e>>0]=0|r[t>>0],e=e+1|0,t=t+1|0,n=n-1|0}for(a=(n=-4&i|0)-64|0;(0|e)<=(0|a);)l[e>>2]=l[t>>2],l[e+4>>2]=l[t+4>>2],l[e+8>>2]=l[t+8>>2],l[e+12>>2]=l[t+12>>2],l[e+16>>2]=l[t+16>>2],l[e+20>>2]=l[t+20>>2],l[e+24>>2]=l[t+24>>2],l[e+28>>2]=l[t+28>>2],l[e+32>>2]=l[t+32>>2],l[e+36>>2]=l[t+36>>2],l[e+40>>2]=l[t+40>>2],l[e+44>>2]=l[t+44>>2],l[e+48>>2]=l[t+48>>2],l[e+52>>2]=l[t+52>>2],l[e+56>>2]=l[t+56>>2],l[e+60>>2]=l[t+60>>2],e=e+64|0,t=t+64|0;for(;(0|e)<(0|n);)l[e>>2]=l[t>>2],e=e+4|0,t=t+4|0}else for(n=i-4|0;(0|e)<(0|n);)r[e>>0]=0|r[t>>0],r[e+1>>0]=0|r[t+1>>0],r[e+2>>0]=0|r[t+2>>0],r[e+3>>0]=0|r[t+3>>0],e=e+4|0,t=t+4|0;for(;(0|e)<(0|i);)r[e>>0]=0|r[t>>0],e=e+1|0,t=t+1|0;return 0|o}function Tr(e,t,n){t|=0;var i,o=0,a=0,s=0;if(i=(e|=0)+(n|=0)|0,t&=255,(0|n)>=67){for(;3&e;)r[e>>0]=t,e=e+1|0;for(a=(o=-4&i|0)-64|0,s=t|t<<8|t<<16|t<<24;(0|e)<=(0|a);)l[e>>2]=s,l[e+4>>2]=s,l[e+8>>2]=s,l[e+12>>2]=s,l[e+16>>2]=s,l[e+20>>2]=s,l[e+24>>2]=s,l[e+28>>2]=s,l[e+32>>2]=s,l[e+36>>2]=s,l[e+40>>2]=s,l[e+44>>2]=s,l[e+48>>2]=s,l[e+52>>2]=s,l[e+56>>2]=s,l[e+60>>2]=s,e=e+64|0;for(;(0|e)<(0|o);)l[e>>2]=s,e=e+4|0}for(;(0|e)<(0|i);)r[e>>0]=t,e=e+1|0;return i-n|0}function kr(e){return(e=+e)>=0?+M(e+.5):+k(e-.5)}function Ir(e){return(e=+e)-+M(e)!=.5?+kr(e):2*+kr(e/2)}function Cr(e){var t,n;return(0|(n=15+(e|=0)&-16|0))>0&(0|(e=(t=0|l[v>>2])+n|0))<(0|t)|(0|e)<0?(B(),O(12),-1):(l[v>>2]=e,(0|e)>(0|R())&&0==(0|L())?(l[v>>2]=t,O(12),-1):0|t)}function Pr(e){return P(0),0}function Lr(e){return P(1),0}function Rr(e,t){return P(2),0}function Br(e,t,n){return P(3),0}function Dr(e,t,n,i){return P(4),0}function Or(e,t,n,i,r){return P(5),0}function Fr(e,t,n,i,r,o){return P(6),0}function Gr(e,t,n,i,r,o,a){return P(7),0}function Nr(e,t,n,i,r,o,a,s,l,c,h){return P(8),0}function jr(e){P(9)}function Hr(e,t){P(10)}function zr(e,t,n){P(11)}function Ur(e,t,n,i){P(12)}t._llvm_ceil_f32,t._llvm_floor_f32,t._llvm_floor_f64,t._llvm_pow_f64,t.flush_NO_FILESYSTEM;var Vr=[Pr,function(e){return 0},function(e){return+ +(((14*(0|l[5588+(e|=0)>>2])|0)-14|0)>>>0)},Pr],Wr=[Lr,function(e){var t,n;return t=w,w=w+16|0,n=t,e=0|function(e){return 0|e}(0|l[60+(e|=0)>>2]),l[n>>2]=e,e=0|wi(0|U(6,0|n)),w=t,0|e},ht,ut,function(e){return 0|ht(0|l[(e|=0)>>2])},function(e){return 0|ut(0|l[(e|=0)>>2])},Oi,function(e){return 0},function(e){return 0|(0==(0|(e|=0))?0:(e+-1|0)>>>0<2?1:2)},Lr,Lr,Lr,Lr,Lr,Lr,Lr],Zr=[Rr,function(e,t){e|=0,t|=0;var n=0;return(n=0|je(1,22))?(ne(n,22,4),ne(n+4|0,1768449138,4),ne(n+8|0,0|l[e+16>>2],4),ne(n+12|0,0|l[e+12>>2],4),ne(n+16|0,0|l[e+20>>2],2),ne(n+18|0,0|l[e+24>>2],1),ne(n+19|0,0|l[e+28>>2],1),ne(n+20|0,0|l[e+32>>2],1),ne(n+21|0,0|l[e+36>>2],1),l[t>>2]=22,0|n):0|(n=0)},function(e,t){t|=0;var n,i=0,r=0,o=0,a=0,s=0;switch(0|l[(i=40+(e|=0)|0)>>2]){case 1:a=15;break;case 2:a=11+(0|l[e+112>>2])|0;break;default:return 0}if(!(s=0|je(1,a)))return 0;switch(ne(s,a,4),ne(s+4|0,1668246642,4),ne(s+8|0,0|l[i>>2],1),ne(s+9|0,0|l[e+52>>2],1),ne(s+10|0,0|l[e+44>>2],1),n=s+11|0,0|l[i>>2]){case 1:ne(n,0|l[e+48>>2],4);break;case 2:if(0|l[(o=e+112|0)>>2])for(r=e+108|0,i=n,e=0;ne(i,0|h[(0|l[r>>2])+e>>0],1),!((e=e+1|0)>>>0>=(0|l[o>>2])>>>0);)i=i+1|0}return l[t>>2]=a,0|s},function(e,t){t|=0;var n,i,r,o=0,s=0,c=0;if(!(r=0|Ne(i=10+(6*(0|d[4+(0|l[(n=116+(e|=0)|0)>>2])>>1])|0)|0)))return 0;if(ne(r,i,4),ne(r+4|0,1667523942,4),ne(r+8|0,0|d[4+(0|l[n>>2])>>1],2),e=0|l[n>>2],0|a[e+4>>1])for(s=r+10|0,c=0,o=0;ne(s,0|d[(0|l[e>>2])+(6*o|0)>>1],2),ne(s+2|0,0|d[(0|l[l[n>>2]>>2])+(6*o|0)+2>>1],2),ne(s+4|0,0|d[(0|l[l[n>>2]>>2])+(6*o|0)+4>>1],2),o=c+1<<16>>16,e=0|l[n>>2],!((65535&o)>=(0|d[e+4>>1]));)s=s+6|0,c=o,o&=65535;return l[t>>2]=i,0|r},function(e,t){t|=0;var n,i,r=0,o=0,a=0;if(!(a=0|je(1,i=8+(0|l[(n=20+(e|=0)|0)>>2])|0)))return 0;if(ne(a,i,4),ne(a+4|0,1651532643,4),0|l[n>>2])for(o=e+72|0,e=0,r=a+8|0;ne(r,0|l[(0|l[o>>2])+(12*e|0)+8>>2],1),!((e=e+1|0)>>>0>=(0|l[n>>2])>>>0);)r=r+1|0;return l[t>>2]=i,0|a},Rr,Rr,Rr],Yr=[Br,function(e,t,n){t|=0,n|=0;var i,o=0;return i=w,w=w+32|0,o=i,l[36+(e|=0)>>2]=61,0==(64&l[e>>2]|0)&&(l[o>>2]=l[e+60>>2],l[o+4>>2]=21523,l[o+8>>2]=i+16,0|z(54,0|o))&&(r[e+75>>0]=-1),o=0|bi(e,t,n),w=i,0|o},function(e,t,n){var i,r,o;return e|=0,t|=0,n|=0,r=w,w=w+32|0,i=r+20|0,l[(o=r)>>2]=l[e+60>>2],l[o+4>>2]=0,l[o+8>>2]=t,l[o+12>>2]=i,l[o+16>>2]=n,(0|wi(0|F(140,0|o)))<0?(l[i>>2]=-1,e=-1):e=0|l[i>>2],w=r,0|e},function(e,t,n){var i,r;return t|=0,n|=0,Er(0|(r=0|l[(i=20+(e|=0)|0)>>2]),0|t,0|(e=(e=(0|l[e+16>>2])-r|0)>>>0>n>>>0?n:e)),l[i>>2]=(0|l[i>>2])+e,0|n},function(e,t,n){return-1},function(e,t,n){return-1},function(e,t,n){return S=-1,-1},function(e,t,n){return 0},gt,bt,function(e,t,n){return t|=0,n|=0,0|gt(0|l[(e|=0)>>2],t,n)},function(e,t,n){t|=0,n|=0;var i,r=0,o=0,a=0,s=0;if(!(0|_n(0|l[(r=8+(e|=0)|0)>>2],54,n)))return 0;if(!(0|bt(0|l[e>>2],t,n)))return 0;if(i=0|yn(s=0|l[r>>2]),r=0|vn(s),i)for(o=r,r=1,a=0;r=r?0!=(0|Yr[63&l[o>>2]](e,t,n)):0,r&=1,(0|(a=a+1|0))!=(0|i);)o=o+4|0;else r=1;return bn(s),0|r},Ke,mt,function(e,t,n){t|=0,n|=0;var i,r,o=0,a=0,s=0;if(!(0|_n(0|l[(o=8+(e|=0)|0)>>2],53,n)))return 0;if(r=0|yn(i=0|l[o>>2]),o=0|vn(i),r){for(a=1,s=0;a=a?0!=(0|Yr[63&l[o>>2]](e,t,n)):0,(0|(s=s+1|0))!=(0|r);)o=o+4|0,a&=1;if(bn(i),!a)return 0}else bn(i);return 0|(l[e>>2],1)},function(e,t,n){return t|=0,n|=0,0|mt(0|l[(e|=0)>>2],t,n)},function(e,t,n){e|=0,t|=0;var i,r=0;return r=0|l[(i=4+(n|=0)|0)>>2],(n=(0|l[n>>2])+(0|l[n+8>>2])-r|0)?(Er(0|e,0|r,0|(t=n>>>0>t>>>0?t:n)),l[i>>2]=(0|l[i>>2])+t,0|(r=t)):0|(r=-1)},function(e,t,n){e|=0,t|=0;var i,r,o=0,a=0,s=0,c=0;for(o=0|l[(c=4+(n|=0)|0)>>2],a=0|l[(i=n+8|0)>>2],r=o-(0|l[n>>2])|0,s=0==(0|a)?1:a;(s-r|0)>>>0>>0;)s<<=1;if((0|s)!=(0|a)){if(!(o=0|Ne(s)))return-1;0|(a=0|l[n>>2])&&(Er(0|o,0|a,0|r),Ve(0|l[n>>2])),l[n>>2]=o,o=o+r|0,l[c>>2]=o,l[i>>2]=s}return Er(0|o,0|e,0|t),l[c>>2]=(0|l[c>>2])+t,0|t},function(e,t,n){e|=0,t|=0;var i,r,o=0,a=0;return a=0|l[(o=4+(n|=0)|0)>>2],(n=(0|l[n>>2])+(0|l[n+8>>2])-a|0)?(r=(0|(i=((0|n)<0)<<31>>31))>(0|t)|(0|i)==(0|t)&n>>>0>e>>>0,l[o>>2]=a+e,S=o=r?t:i,0|(a=r?e:n)):(S=o=-1,0|(a=-1))},function(e,t,n){var i;return e|=0,t|=0,i=0|l[8+(n|=0)>>2],l[n+4>>2]=(0|l[n>>2])+(0>(0|t)|0==(0|t)&i>>>0>e>>>0?e:i),1},function(e,t,n){return 0|(0|(n=0|ur(e|=0,1,t|=0,n|=0))?n:-1)},function(e,t,n){return 0|Mi(e|=0,1,t|=0,n|=0)},function(e,t,n){return t|=0,n=0==(0|ji(n|=0,e|=0,1)),S=n?t:-1,0|(n?e:-1)},function(e,t,n){return 0==(0|ji(n|=0,e|=0,0))|0},function(e,t,n){return 1},function(e,t,n){return 0==(0|l[8+(e|=0)>>2])&0!=(0|l[e+188>>2])&0!=(0|l[e+192>>2])&1|0},function(e,t,n){t|=0,n|=0;var i,o,s,c,h,u,d,f,p,m,g,_,y,v,b,x,A,M,E,T,k,I,C,P,L,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0;L=w,w=w+224|0,J=L+200|0,C=L+192|0,I=L+184|0,T=L+176|0,E=L+168|0,M=L+160|0,Z=L+152|0,A=L+144|0,x=L+136|0,v=L+128|0,y=L+120|0,_=L+112|0,g=L+104|0,m=L+96|0,p=L+88|0,f=L+80|0,d=L+72|0,u=L+64|0,h=L+56|0,c=L+48|0,s=L+40|0,b=L+32|0,H=L+24|0,j=L+16|0,N=L+8|0,k=L,R=L+216|0,B=L+212|0,i=L+208|0,o=L+204|0,l[(P=8+(e|=0)|0)>>2]=1;e:do{if(2==(0|le(t,R,2,n))&&(ie(R,B,2),65359==(0|l[B>>2]))){l[P>>2]=2,G=0|gr(0|(G=0|he(t)),0|S,-2,-1),F=S,B=0|l[(X=e+196|0)>>2],l[B>>2]=G,l[B+4>>2]=F,l[(B=k)>>2]=G,l[B+4>>2]=F,me(n,4,8053,k),B=0|l[X>>2],F=0|l[B>>2],R=0|l[(G=B+24|0)>>2],D=0|l[(O=B+32|0)>>2];do{if((R+1|0)>>>0>D>>>0){if(W=~~(+(D>>>0)+100)>>>0,l[O>>2]=W,B=0|Ue(0|l[(R=B+28|0)>>2],24*W|0)){l[R>>2]=B,R=0|l[G>>2];break}Ve(0|l[R>>2]),l[R>>2]=0,l[O>>2]=0,l[G>>2]=0,me(n,1,8090,N);break e}B=0|l[B+28>>2]}while(0);if(a[B+(24*R|0)>>1]=-177,V=0|xr(0,0|F,32),l[(W=B+(24*R|0)+8|0)>>2]=V,l[W+4>>2]=S,l[B+(24*R|0)+16>>2]=2,l[G>>2]=R+1,2!=(0|le(t,0|l[(W=e+16|0)>>2],2,n)))return me(n,1,8150,H),w=L,0;if(ie(0|l[W>>2],i,2),65424!=(0|(O=0|l[i>>2]))){V=e+20|0,D=0,B=0,R=0;t:do{if(O>>>0<65280){Y=14;break}for(F=784;!((N=0==(0|(G=0|l[F>>2])))|(0|G)==(0|O));)F=F+12|0;if(N){me(n,2,8219,s),U=2;n:for(;;){for(;;){if(2!=(0|le(t,0|l[W>>2],2,n))){Y=20;break t}if(ie(0|l[W>>2],k,2),(O=0|l[k>>2])>>>0>=65280){z=784;break}}for(;!(0==(0|(F=0|l[z>>2]))|(0|F)==(0|O));)z=z+12|0;if(!(l[z+4>>2]&l[P>>2])){Y=24;break t}if((0|F)>=65424){Y=99;break}if(0!=(0|F))break n;U=U+2|0}if(99==(0|Y)&&(Y=0,65424==(0|F))){Y=26;break t}if(F=0|l[X>>2],j=(j=0|he(t))-U|0,(1+(O=0|l[(H=F+24|0)>>2])|0)>>>0>(G=0|l[(N=F+32|0)>>2])>>>0){if(G=~~(+(G>>>0)+100)>>>0,l[N>>2]=G,!(F=0|Ue(0|l[(O=F+28|0)>>2],24*G|0))){Y=31;break}l[O>>2]=F,O=0|l[H>>2]}else F=0|l[F+28>>2];if(a[F+(24*O|0)>>1]=0,l[(N=F+(24*O|0)+8|0)>>2]=j,l[N+4>>2]=((0|j)<0)<<31>>31,l[F+(24*O|0)+16>>2]=U,l[H>>2]=O+1,F=0|l[z>>2],l[i>>2]=F,65424==(0|F))break;for(O=784;;){if(0==(0|(G=0|l[O>>2]))|(0|G)==(0|F)){N=O;break}O=O+12|0}}else N=F;if(R=65361==(0|G)?1:R,B=65362==(0|G)?1:B,D=65372==(0|G)?1:D,!(l[N+4>>2]&l[P>>2])){Y=37;break}if(2!=(0|le(t,0|l[W>>2],2,n))){Y=39;break}if(ie(0|l[W>>2],o,2),F=(0|l[o>>2])-2|0,l[o>>2]=F,O=0|l[W>>2],F>>>0>(0|l[V>>2])>>>0){if(!(O=0|Ue(O,F))){Y=42;break}l[W>>2]=O,F=0|l[o>>2],l[V>>2]=F}if((0|(O=0|le(t,O,F,n)))!=(0|l[o>>2])){Y=45;break}if(!(0|Xr[63&l[N+8>>2]](e,0|l[W>>2],O,n))){Y=47;break}if(G=0|l[X>>2],j=0|l[N>>2],H=0|he(t),H=-4-(z=0|l[o>>2])+H|0,z=z+4|0,(1+(O=0|l[(U=G+24|0)>>2])|0)>>>0>(F=0|l[(N=G+32|0)>>2])>>>0){if(F=~~(+(F>>>0)+100)>>>0,l[N>>2]=F,!(F=0|Ue(0|l[(O=G+28|0)>>2],24*F|0))){Y=52;break}l[O>>2]=F,O=0|l[U>>2]}else F=0|l[G+28>>2];if(a[F+(24*O|0)>>1]=j,l[(j=F+(24*O|0)+8|0)>>2]=H,l[j+4>>2]=((0|H)<0)<<31>>31,l[F+(24*O|0)+16>>2]=z,l[U>>2]=O+1,2!=(0|le(t,0|l[W>>2],2,n))){Y=54;break}ie(0|l[W>>2],i,2),O=0|l[i>>2]}while(65424!=(0|O));switch(0|Y){case 14:return l[b>>2]=O,me(n,1,8168,b),w=L,0;case 20:me(n,1,8150,c),Y=33;break;case 24:me(n,1,8235,h),Y=33;break;case 26:l[i>>2]=65424;break;case 31:Ve(0|l[O>>2]),l[O>>2]=0,l[N>>2]=0,l[H>>2]=0,me(n,1,8090,u),Y=33;break;case 37:return me(n,1,8235,f),w=L,0;case 39:return me(n,1,8150,p),w=L,0;case 42:return Ve(0|l[W>>2]),l[W>>2]=0,l[V>>2]=0,me(n,1,8333,m),w=L,0;case 45:return me(n,1,8150,g),w=L,0;case 47:return me(n,1,8367,_),w=L,0;case 52:return Ve(0|l[O>>2]),l[O>>2]=0,l[N>>2]=0,l[U>>2]=0,me(n,1,8090,y),w=L,0;case 54:return me(n,1,8150,v),w=L,0}if(33==(0|Y))return me(n,1,8278,d),w=L,0;if(0|R){if(!B)return me(n,1,8472,A),w=L,0;if(!D)return me(n,1,8518,Z),w=L,0;t:do{if(1&r[e+184>>0]){R=0|l[(V=e+120|0)>>2];do{if(R){H=e+124|0,N=0,B=0,j=0;n:for(;;){if(D=0|l[H>>2],F=0|l[D+(j<<3)>>2]){if(G=(D=0|l[D+(j<<3)+4>>2])-N|0,D=(O=N>>>0>>0)?0:N-D|0,!(0==(0|G)|1^O)){for(R=O?F+N|0:F;;){if(G>>>0<4){Y=72;break n}if(ie(R,k,4),R=R+4|0,Z=G+-4|0,B=(O=0|l[k>>2])+B|0,D=(F=Z>>>0>>0)?O-Z|0:D,!(G=F?0:Z-O|0))break;R=F?R:R+O|0}R=0|l[V>>2]}}else D=N;if((j=j+1|0)>>>0>=R>>>0)break;N=D}if(72==(0|Y)){me(n,1,8564,M);break}D?me(n,1,8595,E):Y=76}else B=0,Y=76}while(0);n:do{if(76==(0|Y)){if(D=0|Ne(B),l[(H=e+144|0)>>2]=D,!D){me(n,1,8618,T);break}l[(z=e+132|0)>>2]=B,O=0|l[V>>2],U=e+124|0;do{if(O){j=0,F=0,N=0,B=R=0|l[U>>2];i:for(;;){if(G=0|l[B+(j<<3)>>2]){B=0|l[B+(j<<3)+4>>2],R=(0|l[H>>2])+F|0;r:do{if(N>>>0>>0){if(Er(0|R,0|G,0|N),R=F+N|0,!(D=B-N|0)){D=0;break}for(B=G+N|0;;){if(D>>>0<4){Y=91;break i}if(ie(B,k,4),F=B+4|0,O=D+-4|0,B=0|l[k>>2],D=(0|l[H>>2])+R|0,O>>>0>>0)break;if(Er(0|D,0|F,0|B),R=(B=0|l[k>>2])+R|0,!(D=O-B|0)){D=0;break r}B=F+B|0}Er(0|D,0|F,0|O),D=(0|l[k>>2])-O|0,R=O+R|0}else Er(0|R,0|G,0|B),D=N-B|0,R=B+F|0}while(0);Ve(0|l[(0|l[U>>2])+(j<<3)>>2]),B=0|l[U>>2],l[B+(j<<3)>>2]=0,l[B+(j<<3)+4>>2]=0,F=R,O=0|l[V>>2],R=B}else D=N;if((j=j+1|0)>>>0>=O>>>0){Y=93;break}N=D}if(91==(0|Y)){me(n,1,8564,I);break n}if(93==(0|Y)){D=0|l[H>>2],B=0|l[z>>2];break}}else R=0|l[U>>2]}while(0);l[e+128>>2]=D,l[e+152>>2]=B,l[V>>2]=0,Ve(R),l[U>>2]=0;break t}}while(0);return me(n,1,8656,C),w=L,0}}while(0);return me(n,4,8682,J),n=0|he(t),J=8+(0|l[X>>2])|0,l[J>>2]=n+-2,l[J+4>>2]=0,l[P>>2]=8,w=L,1}}return me(n,1,8426,x),w=L,0}}while(0);return me(n,1,8126,j),w=L,0},function(e,t,n){t|=0,n|=0;var i,o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0;u=w,w=w+16|0,h=u,s=0|l[80+(e|=0)>>2],c=e+88|0,i=0|I(0|l[e+112>>2],0|l[e+116>>2]),o=1080*(A=0|l[s+16>>2])|0,a=0|l[e+12>>2],A=0|I(A<<2,A);e:do{if(0|i){S=a+5604|0,M=a+5620|0,E=a+5612|0,T=a+5616|0,k=a+5632|0,C=a+5624|0,P=a+5584|0,b=0|l[e+164>>2],x=0;t:for(;;){if(L=0|l[(g=b+5584|0)>>2],Er(0|b,0|a,5640),r[(t=b+5636|0)>>0]=-4&r[t>>0],l[b+5168>>2]=0,l[(t=b+5604|0)>>2]=0,l[(_=b+5620|0)>>2]=0,l[(R=b+5612|0)>>2]=0,l[(y=b+5632|0)>>2]=0,l[(v=b+5624|0)>>2]=0,l[g>>2]=L,0|l[S>>2]){if(d=0|Ne(A),l[t>>2]=d,!d){t=0,d=25;break}Er(0|d,0|l[S>>2],0|A)}if(d=0|Ne(t=20*(0|l[M>>2])|0),l[R>>2]=d,!d){t=0,d=25;break}if(Er(0|d,0|l[E>>2],0|t),0|(t=0|l[T>>2]))for(p=0|l[R>>2],m=0|l[E>>2],g=0;;){if(0|l[(f=m+12|0)>>2]){if(d=0|Ne(0|l[(t=m+16|0)>>2]),l[p+12>>2]=d,!d){t=0,d=25;break t}Er(0|d,0|l[f>>2],0|l[t>>2]),t=0|l[T>>2]}if(l[_>>2]=1+(0|l[_>>2]),(g=g+1|0)>>>0>=t>>>0)break;p=p+20|0,m=m+20|0}if(d=0|Ne(t=20*(0|l[k>>2])|0),l[v>>2]=d,!d){t=0,d=25;break}if(Er(0|d,0|l[C>>2],0|t),l[y>>2]=l[k>>2],0|(m=0|l[k>>2]))for(p=0|l[C>>2],d=0|l[v>>2],f=0;0|(t=0|l[p+8>>2])&&(l[d+8>>2]=(0|l[R>>2])+(20*((t-(0|l[E>>2])|0)/20|0)|0)),0|(t=0|l[p+12>>2])&&(l[d+12>>2]=(0|l[R>>2])+(20*((t-(0|l[E>>2])|0)/20|0)|0)),!((f=f+1|0)>>>0>=m>>>0);)p=p+20|0,d=d+20|0;if(Er(0|L,0|l[P>>2],0|o),(x=x+1|0)>>>0>=i>>>0)break e;b=b+5640|0}if(25==(0|d))return w=u,0|t}}while(0);return d=0|Yt(1),l[(t=e+204|0)>>2]=d,d?0|Qt(d,s,c)?(w=u,0|(n=1)):(Kt(0|l[t>>2]),l[t>>2]=0,me(n,1,8019,h),w=u,0|(n=0)):(w=u,0|(n=0))},function(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p,m,g,_,y,v,b=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0;if(v=w,w=w+80|0,p=v+32|0,m=v+24|0,C=v+16|0,k=v+8|0,y=v+60|0,c=v+56|0,h=v+52|0,u=v+48|0,d=v+44|0,f=v+40|0,i=v+36|0,l[(s=v+64|0)>>2]=1,!(b=0|Ne(1e3)))return me(n,1,14664,v),w=v,0;for(g=e+116|0,_=e+112|0,r=e+204|0,o=e+84|0,a=e+8|0,T=0,x=1e3;;){if(!(0|nt(e,y,c,h,u,d,f,i,s,t,n))){x=5;break}if(!(0|l[s>>2])){x=17;break}if((E=0|l[c>>2])>>>0>x>>>0){if(!(x=0|Ue(b,E))){x=9;break}b=x,M=E}else M=x;if(!(0|it(e,A=0|l[y>>2],b,E,t,n))){x=11;break}if(x=A+1|0,E=0|I(0|l[_>>2],0|l[g>>2]),l[m>>2]=x,l[m+4>>2]=E,me(n,4,14768,m),E=0|l[r>>2],!(0|ft(0|l[20+(0|l[l[E+20>>2]>>2])>>2],0|l[E+24>>2],b,0|l[24+(0|l[o>>2])>>2]))){x=13;break}if(l[p>>2]=x,me(n,4,14798,p),0==(0|(E=0|ue(t)))&0==(0|S)&&64==(0|l[a>>2])){x=17;break}if((0|(T=T+1|0))==(0|I(0|l[_>>2],0|l[g>>2]))){x=17;break}x=M}return 5==(0|x)?(Ve(b),w=v,0|(C=0)):9==(0|x)?(Ve(b),C=0|I(0|l[_>>2],0|l[g>>2]),l[k>>2]=1+(0|l[y>>2]),l[k+4>>2]=C,me(n,1,14699,k),w=v,0|(C=0)):11==(0|x)?(Ve(b),k=0|I(0|l[_>>2],0|l[g>>2]),l[C>>2]=A+1,l[C+4>>2]=k,me(n,1,14739,C),w=v,0|(C=0)):13==(0|x)?(Ve(b),w=v,0|(C=0)):17==(0|x)?(Ve(b),w=v,0|(C=1)):0},function(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p,m,g,_,y,v=0,b=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0;if(y=w,w=w+96|0,m=y+56|0,p=y+48|0,f=y+40|0,_=y+32|0,g=y+24|0,E=y+16|0,M=y+8|0,a=y+88|0,s=y+84|0,c=y+80|0,h=y+76|0,u=y+72|0,d=y+68|0,i=y+64|0,l[(o=y+92|0)>>2]=1,!(v=0|Ne(1e3)))return me(n,1,14941,y),w=y,0;b=0|l[(r=e+196|0)>>2],x=0|l[b+40>>2];e:do{if(!x){x=0|I(0|l[e+116>>2],0|l[e+112>>2]),l[b+36>>2]=x,x=0|je(x,40),b=0|l[r>>2],l[b+40>>2]=x;t:do{if(0|x){if(0|l[b+36>>2]){A=0;do{if(l[x+(40*A|0)+28>>2]=100,l[x+(40*A|0)+20>>2]=0,P=0|je(100,24),b=0|l[r>>2],x=0|l[b+40>>2],l[x+(40*A|0)+24>>2]=P,A=A+1|0,!P)break t}while(A>>>0<(0|l[b+36>>2])>>>0)}if(b=0|l[e+60>>2],x){A=b,L=11;break e}break e}}while(0);return Ve(v),w=y,0}A=0|l[e+60>>2],L=11}while(0);if(11==(0|L))if(0|l[x+16>>2]){if(0|l[x+(40*A|0)+4>>2]){if(P=0|l[x+(40*A|0)+16>>2],!(0|te(t,P=0|gr(0|l[P>>2],0|l[P+4>>2],2,0),S,n)))return me(n,1,14979,E),Ve(v),w=y,0}else if(!(0|te(t,P=0|gr(0|l[(P=e+64|0)>>2],0|l[P+4>>2],2,0),S,n)))return me(n,1,14979,M),Ve(v),w=y,0;256==(0|l[(b=e+8|0)>>2])?(l[b>>2]=8,b=A):b=A}else b=A;e:do{if(0|nt(e,a,s,c,h,u,d,i,o,t,n)){for(E=e+116|0,T=e+112|0,k=e+204|0,C=e+84|0,P=b+1|0,x=1e3;0|l[o>>2];){if((A=0|l[s>>2])>>>0>x>>>0){if(!(x=0|Ue(v,A))){L=25;break}v=x,x=A}if(!(0|it(e,M=0|l[a>>2],v,A,t,n))){L=27;break}if(A=M+1|0,R=0|I(0|l[T>>2],0|l[E>>2]),l[_>>2]=A,l[_+4>>2]=R,me(n,4,14768,_),R=0|l[k>>2],!(0|ft(0|l[20+(0|l[l[R+20>>2]>>2])>>2],0|l[R+24>>2],v,0|l[24+(0|l[C>>2])>>2]))){L=29;break}if(l[f>>2]=A,me(n,4,14798,f),(0|M)==(0|b)){L=31;break}if(l[m>>2]=A,l[m+4>>2]=P,me(n,2,15007,m),!(0|nt(e,a,s,c,h,u,d,i,o,t,n)))break e}return 25==(0|L)?(Ve(v),R=0|I(0|l[T>>2],0|l[E>>2]),l[g>>2]=1+(0|l[a>>2]),l[g+4>>2]=R,me(n,1,14699,g),w=y,0|(R=0)):27==(0|L)||29==(0|L)?(Ve(v),w=y,0|(R=0)):31!=(0|L)||(R=8+(0|l[r>>2])|0,0|te(t,R=0|gr(0|l[R>>2],0|l[R+4>>2],2,0),S,n))?(Ve(v),w=y,0|(R=1)):(me(n,1,14979,p),Ve(v),w=y,0|(R=0))}}while(0);return Ve(v),w=y,0},function(e,t,n){return t|=0,n|=0,ne(0|l[(e=44+(e|=0)|0)>>2],65497,2),2!=(0|ce(t,0|l[e>>2],2,n))?0|(n=0):(n=0!=(0|function(e,t){t|=0;var n,i,r,o,a=0,s=0,c=0,h=0,u=0;o=w,w=w+16|0,r=o,a=0|l[(n=32+(e|=0)|0)>>2],l[(u=e+36|0)>>2]=a,s=0|l[(i=e+48|0)>>2];do{if(s){for(c=e+20|0;-1!=(0|(s=0|Yr[63&l[c>>2]](a,s,0|l[e>>2])));)if(a=(0|l[u>>2])+s|0,l[u>>2]=a,s=(0|l[i>>2])-s|0,l[i>>2]=s,!s){h=6;break}if(6==(0|h)){a=0|l[n>>2];break}return l[(u=e+68|0)>>2]=8|l[u>>2],me(t,4,4360,r),w=o,0}}while(0);return l[u>>2]=a,w=o,1}(t,n))&1,0|n)},function(e,t,n){t|=0,n|=0;var i,r,o,a,s=0;return o=5*(0|l[32+(e|=0)>>2])|0,s=0|gr(0|l[(s=e+16|0)>>2],0|l[s+4>>2],6,0),a=S,i=0|he(t),r=S,0|fe(t,s,a,n)?(0|ce(t,0|l[e+24>>2],o,n))!=(0|o)?0|(s=0):0|(s=0!=(0|fe(t,i,r,n))&1):0|(s=0)},function(e,t,n){return t|=0,n|=0,(e=0|l[196+(e|=0)>>2])?(n=0|_r(0|(t=0|he(t)),0|S,0|l[(n=e)>>2],0|l[n+4>>2]),l[(t=e+16|0)>>2]=n,l[t+4>>2]=S,1):1},function(e,t,n){return t|=0,n|=0,Kt(0|l[(t=204+(e|=0)|0)>>2]),l[t>>2]=0,0|(n=0|l[(t=e+24|0)>>2])&&(Ve(n),l[t>>2]=0,l[e+28>>2]=0),(t=0|l[(n=e+36|0)>>2])?(Ve(t),l[n>>2]=0,l[(e=e+40|0)>>2]=0,1):(l[(e=e+40|0)>>2]=0,1)},function(e,t,n){return t|=0,n|=0,0|(n=0|l[(t=44+(e|=0)|0)>>2])&&(Ve(n),l[t>>2]=0),l[e+48>>2]=0,1},function(e,t,n){return 1},function(e,t,n){var i,r;return t|=0,n|=0,r=w,w=w+32|0,i=0==(0|l[8+(e|=0)>>2])&0!=(0|l[e+188>>2])&0!=(0|l[e+192>>2])&1,(t=(0|l[4+(0|l[5584+(0|l[e+164>>2])>>2])>>2])-1|0)>>>0>31?(me(n,1,16016,r),w=r,0|(n=0)):(t=1<>2])>>>0>>0?(me(n,1,16016,r+8|0),w=r,0|(n=0)):(0|l[e+104>>2])>>>0>=t>>>0?(w=r,0|(n=i)):(me(n,1,16016,r+16|0),w=r,0|(n=0)))},function(e,t,n){t|=0,n|=0;var i,r=0,o=0,s=0,c=0;if((-32256&a[88+(e|=0)>>1])<<16>>16!=-32256)return 1;if(!(i=0|I(0|l[e+112>>2],0|l[e+116>>2])))return 1;for(c=e+80|0,o=0|l[e+164>>2],t=1,s=0;;){if(2==(0|l[o+16>>2])&&(t&=0!=(0|l[o+5608>>2]),r=0|l[16+(0|l[c>>2])>>2]))for(n=0,e=0|l[o+5584>>2];t=(1&l[e+20>>2]^1)&t,!((n=n+1|0)>>>0>=r>>>0);)e=e+1080|0;if((0|(s=s+1|0))==(0|i))break;o=o+5640|0}return 0|t},function(e,t,n){t|=0,n|=0;var i,r,o,a,s=0,c=0,h=0;if(r=88+(e|=0)|0,o=e+32|0,a=0|l[e+80>>2],i=0|I(0|l[e+116>>2],0|l[e+112>>2]),l[o>>2]=0,!i)return 1;for(e=0|l[e+164>>2],s=0;;){Wt(a,r,s),c=e+420|0,t=0,n=0;do{h=0|vt(r,t,s),l[o>>2]=(0|l[o>>2])+h,n=h+n|0,t=t+1|0}while(t>>>0<=(0|l[c>>2])>>>0);if(l[e+5588>>2]=n,(0|(s=s+1|0))==(0|i))break;e=e+5640|0}return 1},function(e,t,n){return t|=0,n|=0,ne(e=0|l[44+(e|=0)>>2],65359,2),2==(0|ce(t,e,2,n))|0},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h=0,u=0,f=0,p=0;c=w,w=w+16|0,i=c,r=0|l[80+(e|=0)>>2],p=40+(o=3*(0|l[(s=r+16|0)>>2])|0)|0,f=0|l[r+24>>2],u=e+48|0,h=0|l[(a=e+44|0)>>2];do{if(p>>>0>(0|l[u>>2])>>>0){if(0|(h=0|Ue(h,p))){l[a>>2]=h,l[u>>2]=p;break}return Ve(0|l[a>>2]),l[a>>2]=0,l[u>>2]=0,me(n,1,15978,i),w=c,0}}while(0);if(ne(h,65361,2),ne(h+2|0,o+38|0,2),ne(h+4|0,0|d[e+88>>1],2),ne(h+6|0,0|l[r+8>>2],4),ne(h+10|0,0|l[r+12>>2],4),ne(h+14|0,0|l[r>>2],4),ne(h+18|0,0|l[r+4>>2],4),ne(h+22|0,0|l[e+100>>2],4),ne(h+26|0,0|l[e+104>>2],4),ne(h+30|0,0|l[e+92>>2],4),ne(h+34|0,0|l[e+96>>2],4),ne(h+38|0,0|l[s>>2],2),0|l[s>>2])for(h=h+40|0,u=0;ne(h,(0|l[f+24>>2])-1+(l[f+32>>2]<<7)|0,1),ne(h+1|0,0|l[f>>2],1),ne(h+2|0,0|l[f+4>>2],1),!((u=u+1|0)>>>0>=(0|l[s>>2])>>>0);)f=f+52|0,h=h+3|0;return p=(0|ce(t,0|l[a>>2],p,n))==(0|p)&1,w=c,0|p},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p,m=0,g=0;f=w,w=w+32|0,g=f+16|0,d=f+8|0,o=f,a=f+20|0,c=0|l[(s=164+(e|=0)|0)>>2],u=0|l[(h=e+200|0)>>2],m=0|l[c+(5640*u|0)+5584>>2],r=9+(p=1&l[m>>2]?5+(0|l[m+4>>2])|0:5)|0,l[a>>2]=r,i=e+48|0,m=0|l[(e=e+44|0)>>2];do{if(r>>>0>(0|l[i>>2])>>>0){if(0|(m=0|Ue(m,r))){l[e>>2]=m,l[i>>2]=r;break}return Ve(0|l[e>>2]),l[e>>2]=0,l[i>>2]=0,me(n,1,15913,o),w=f,0}}while(0);return ne(m,65362,2),ne(m+2|0,p+7|0,2),ne(m+4|0,0|l[c+(5640*u|0)>>2],1),ne(m+5|0,0|l[c+(5640*u|0)+4>>2],1),ne(m+6|0,0|l[c+(5640*u|0)+8>>2],2),ne(m+8|0,0|l[c+(5640*u|0)+16>>2],1),l[a>>2]=p,0|At(0|l[s>>2],0|l[h>>2],m+9|0,a,n)?0|l[a>>2]?(me(n,1,15952,g),w=f,0|(g=0)):(g=(0|ce(t,0|l[e>>2],r,n))==(0|r)&1,w=f,0|g):(me(n,1,15952,d),w=f,0|(g=0))},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d=0,f=0,p=0;u=w,w=w+32|0,p=u+16|0,h=u+8|0,o=u,s=u+20|0,c=200+(e|=0)|0,d=0|l[(0|l[(a=e+164|0)>>2])+(5640*(0|l[c>>2])|0)+5584>>2],d=1==(0|(f=0|l[d+24>>2]))?1:(3*(0|l[d+4>>2])|0)-2|0,r=4+(i=0==(0|f)?d+1|0:d<<1|1)|0,l[s>>2]=r,f=e+48|0,d=0|l[(e=e+44|0)>>2];do{if(r>>>0>(0|l[f>>2])>>>0){if(0|(d=0|Ue(d,r))){l[e>>2]=d,l[f>>2]=r;break}return Ve(0|l[e>>2]),l[e>>2]=0,l[f>>2]=0,me(n,1,15848,o),w=u,0}}while(0);return ne(d,65372,2),ne(d+2|0,i+2|0,2),l[s>>2]=i,0|xt(0|l[a>>2],0|l[c>>2],0,d+4|0,s,n)?0|l[s>>2]?(me(n,1,15887,p),w=u,0|(p=0)):(p=(0|ce(t,0|l[e>>2],r,n))==(0|r)&1,w=u,0|p):(me(n,1,15887,h),w=u,0|(p=0))},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0;if(u=w,w=w+16|0,h=u,a=u+4|0,(d=0|l[16+(0|l[(s=80+(e|=0)|0)>>2])>>2])>>>0<=1)return w=u,1;for(r=e+164|0,o=e+200|0,c=e+48|0,i=e+44|0,v=1,e=d;;){f=0|l[r>>2],m=0|l[o>>2],p=0|l[f+(5640*m|0)+5584>>2],g=0|l[p+(1080*v|0)>>2];e:do{if((0|l[p>>2])==(0|g)&&(b=0|l[p+4>>2],(0|b)==(0|l[p+(1080*v|0)+4>>2]))&&(0|l[p+8>>2])==(0|l[p+(1080*v|0)+8>>2])&&(0|l[p+12>>2])==(0|l[p+(1080*v|0)+12>>2])&&(0|l[p+16>>2])==(0|l[p+(1080*v|0)+16>>2])&&(0|l[p+20>>2])==(0|l[p+(1080*v|0)+20>>2])){if(b){d=0;do{if((0|l[p+812+(d<<2)>>2])!=(0|l[p+(1080*v|0)+812+(d<<2)>>2])){x=13;break e}if((0|l[p+944+(d<<2)>>2])!=(0|l[p+(1080*v|0)+944+(d<<2)>>2])){x=13;break e}d=d+1|0}while(d>>>0>>0)}}else x=13}while(0);if(13==(0|x)){if(x=0,y=(d=1&g?5+(0|l[p+(1080*v|0)+4>>2])|0:5)+(e>>>0<257?6:7)|0,d=0|l[i>>2],y>>>0>(0|l[c>>2])>>>0){if(!(d=0|Ue(d,y))){x=17;break}l[i>>2]=d,l[c>>2]=y,_=0|l[r>>2],m=0|l[o>>2],p=0|l[_+(5640*m|0)+5584>>2],e=0|l[16+(0|l[s>>2])>>2],g=0|l[p+(1080*v|0)>>2]}else _=f;if(f=e>>>0<257?1:2,e=1&g?5+(0|l[p+(1080*v|0)+4>>2])|0:5,ne(d,65363,2),ne(d+2|0,f+3+e|0,2),ne(g=d+4|0,v,f),ne(g=g+f|0,0|l[(0|l[_+(5640*m|0)+5584>>2])+(1080*v|0)>>2],1),l[a>>2]=e,At(0|l[r>>2],0|l[o>>2],g+1|0,a,n),(0|ce(t,0|l[i>>2],y,n))!=(0|y)){e=0,x=24;break}e=0|l[16+(0|l[s>>2])>>2]}if((v=v+1|0)>>>0>=e>>>0){e=1,x=24;break}}return 17==(0|x)?(Ve(0|l[i>>2]),l[i>>2]=0,l[c>>2]=0,me(n,1,15774,h),w=u,0|(x=0)):24==(0|x)?(w=u,0|e):0},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0;if(u=w,w=w+16|0,h=u,a=u+4|0,(d=0|l[16+(0|l[(s=80+(e|=0)|0)>>2])>>2])>>>0<=1)return w=u,1;for(r=e+164|0,o=e+200|0,c=e+48|0,i=e+44|0,y=1,e=d;;){g=0|l[(0|l[r>>2])+(5640*(0|l[o>>2])|0)+5584>>2],p=0|l[g+24>>2],m=0|l[g+(1080*y|0)+24>>2];e:do{if((0|p)==(0|m)&&(0|l[g+804>>2])==(0|l[g+(1080*y|0)+804>>2])){if(1!=(0|p)){if(d=(_=3*(0|l[g+4>>2])|0)-2|0,(0|_)!=(3*(0|l[g+(1080*y|0)+4>>2])|0)){v=14;break}if(!d)break;f=d}else f=1;d=0;do{if((0|l[g+28+(d<<3)>>2])!=(0|l[g+(1080*y|0)+28+(d<<3)>>2])){v=14;break e}d=d+1|0}while(d>>>0>>0);if(p){d=0;do{if((0|l[g+28+(d<<3)+4>>2])!=(0|l[g+(1080*y|0)+28+(d<<3)+4>>2])){v=14;break e}d=d+1|0}while(d>>>0>>0)}}else v=14}while(0);if(14==(0|v)){if(v=0,d=1==(0|m)?1:(3*(0|l[g+(1080*y|0)+4>>2])|0)-2|0,_=5+(0==(0|m)?d+1|0:d<<1|1)+(e>>>0>256&1)|0,e=0|l[i>>2],_>>>0>(0|l[c>>2])>>>0){if(!(e=0|Ue(e,_))){v=18;break}l[i>>2]=e,l[c>>2]=_,d=0|l[(0|l[r>>2])+(5640*(0|l[o>>2])|0)+5584>>2],f=0|l[d+(1080*y|0)+24>>2],p=e}else f=m,d=g,p=e;if(e=1==(0|f)?1:(3*(0|l[d+(1080*y|0)+4>>2])|0)-2|0,d=0==(0|f)?e+1|0:e<<1|1,l[a>>2]=d+6,ne(p,65373,2),e=p+2|0,(0|l[16+(0|l[s>>2])>>2])>>>0<257?(ne(e,d+3|0,2),ne(p+4|0,y,1),e=5):(ne(e,d+4|0,2),ne(p+4|0,y,2),e=6),l[a>>2]=d,xt(0|l[r>>2],0|l[o>>2],y,p+e|0,a,n),(0|ce(t,0|l[i>>2],_,n))!=(0|_)){e=0,v=28;break}e=0|l[16+(0|l[s>>2])>>2]}if((y=y+1|0)>>>0>=e>>>0){e=1,v=28;break}}return 18==(0|v)?(Ve(0|l[i>>2]),l[i>>2]=0,l[c>>2]=0,me(n,1,15702,h),w=u,0|(v=0)):28==(0|v)?(w=u,0|e):0},function(e,t,n){t|=0,n|=0;var i,r,o,a,s=0,c=0,h=0;a=w,w=w+16|0,c=a,h=6+(o=5*(0|l[32+(e|=0)>>2])|0)|0,i=e+48|0,s=0|l[(r=e+44|0)>>2];do{if(h>>>0>(0|l[i>>2])>>>0){if(0|(s=0|Ue(s,h))){l[r>>2]=s,l[i>>2]=h;break}return Ve(0|l[r>>2]),l[r>>2]=0,l[i>>2]=0,me(n,1,15663,c),w=a,0}}while(0);return c=0|he(t),l[(e=e+16|0)>>2]=c,l[e+4>>2]=S,ne(s,65365,2),ne(s+2|0,o+4|0,2),ne(s+4|0,0,1),ne(s+5|0,80,1),h=(0|ce(t,0|l[r>>2],h,n))==(0|h)&1,w=a,0|h},function(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a,s,c,h,u,d=0,f=0,p=0,m=0;u=w,w=w+16|0,o=u,l[(m=u+4|0)>>2]=0,f=0|l[(a=e+164|0)>>2],d=0|l[(s=e+200|0)>>2],p=0|l[16+(0|l[(r=e+80|0)>>2])>>2],h=4+(0|I(p>>>0<257?7:9,1+(0|l[f+(5640*d|0)+420>>2])|0))|0,i=e+48|0,e=0|l[(c=e+44|0)>>2];do{if(h>>>0>(0|l[i>>2])>>>0){if(0|(e=0|Ue(e,h))){l[c>>2]=e,l[i>>2]=h,p=0|l[16+(0|l[r>>2])>>2],f=0|l[a>>2],d=0|l[s>>2];break}return Ve(0|l[c>>2]),l[c>>2]=0,l[i>>2]=0,me(n,1,15624,o),w=u,0}}while(0);return yt(p,f,d,e,m),m=(0|ce(t,0|l[c>>2],h,n))==(0|h)&1,w=u,0|m},function(e,t,n){t|=0,n|=0;var i,r,o=0,a=0,s=0,c=0,h=0,u=0;if(r=164+(e|=0)|0,a=0|l[(h=e+80|0)>>2],!(o=0|l[a+16>>2]))return 1;for(i=e+44|0,s=0,c=0|l[5584+(0|l[r>>2])>>2],e=a;;){if(0|l[c+808>>2]){if(e=0|l[5584+(0|l[r>>2])>>2],a=6+(o=o>>>0<257?1:2)|0,ne(u=0|l[i>>2],65374,2),ne(u+2|0,4|o,2),ne(u=u+4|0,s,o),ne(o=u+o|0,0,1),ne(o+1|0,0|l[e+(1080*s|0)+808>>2],1),(0|ce(t,0|l[i>>2],a,n))!=(0|a)){e=0,o=7;break}e=0|l[h>>2]}if((s=s+1|0)>>>0>=(o=0|l[e+16>>2])>>>0){e=1,o=7;break}c=c+1080|0}return 7==(0|o)?0|e:0},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c,h=0;c=w,w=w+16|0,o=c,h=6+(s=0|Ai(a=0|l[108+(e|=0)>>2]))|0,r=e+48|0,e=0|l[(i=e+44|0)>>2];do{if(h>>>0>(0|l[r>>2])>>>0){if(0|(e=0|Ue(e,h))){l[i>>2]=e,l[r>>2]=h;break}return Ve(0|l[i>>2]),l[i>>2]=0,l[r>>2]=0,me(n,1,15581,o),w=c,0}}while(0);return ne(e,65380,2),ne(e+2|0,s+4|0,2),ne(e+4|0,1,2),Er(e+6|0,0|a,0|s),h=(0|ce(t,0|l[i>>2],h,n))==(0|h)&1,w=c,0|h},function(e,t,n){t|=0,n|=0;var i,o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0;u=w,w=w+32|0,c=u+24|0,a=u+16|0,b=u+8|0,f=u,p=0|l[80+(e|=0)>>2],_=6+(m=0|l[(g=p+16|0)>>2])|0,s=e+48|0,d=0|l[(h=e+44|0)>>2];do{if(_>>>0>(0|l[s>>2])>>>0){if(0|(d=0|Ue(d,_))){l[h>>2]=d,l[s>>2]=_;break}return Ve(0|l[h>>2]),l[h>>2]=0,l[s>>2]=0,me(n,1,15425,f),w=u,0}}while(0);if(ne(d,65400,2),ne(d+2|0,m+4|0,2),ne(d+4|0,0|l[g>>2],2),0|l[g>>2])for(p=0|l[p+24>>2],d=d+6|0,f=0;ne(d,(0|l[p+24>>2])-1|l[p+32>>2]<<7,1),!((f=f+1|0)>>>0>=(0|l[g>>2])>>>0);)p=p+52|0,d=d+1|0;if((0|ce(t,0|l[h>>2],_,n))!=(0|_))return w=u,0;m=(v=0|l[(i=e+164|0)>>2])+(5640*(y=0|l[(o=e+200|0)>>2])|0)+5616|0;e:do{if(0|l[m>>2]){for(f=0|l[v+(5640*y|0)+5612>>2],p=0;;){if(e=10+(_=0|l[(g=f+16|0)>>2])|0,d=0|l[h>>2],e>>>0>(0|l[s>>2])>>>0){if(!(d=0|Ue(d,e)))break;l[h>>2]=d,l[s>>2]=e}if(ne(d,65396,2),ne(d+2|0,_+8|0,2),ne(d+4|0,0,2),ne(d+6|0,l[f+4>>2]<<8|255&l[f+8>>2]|l[f>>2]<<10,2),ne(d+8|0,0,2),Er(d+10|0,0|l[f+12>>2],0|l[g>>2]),(0|ce(t,0|l[h>>2],e,n))!=(0|e)){x=0,A=41;break}if((p=p+1|0)>>>0>=(0|l[m>>2])>>>0)break e;f=f+20|0}return 41==(0|A)?(w=u,0|x):(Ve(0|l[h>>2]),l[h>>2]=0,l[s>>2]=0,me(n,1,15464,b),w=u,0|(n=0))}}while(0);b=v+(5640*y|0)+5628|0;e:do{if(0|l[b>>2]){for(e=0|l[v+(5640*y|0)+5624>>2],y=0;;){if(g=(m=(f=0|l[(_=e+4|0)>>2])>>>0>255)?2:1,m=m?32768:0,v=19+(f=0|I(g,f<<1))|0,d=0|l[h>>2],v>>>0>(0|l[s>>2])>>>0){if(!(d=0|Ue(d,v)))break;l[h>>2]=d,l[s>>2]=v}if(ne(d,65397,2),ne(d+2|0,f+17|0,2),ne(d+4|0,0,2),ne(d+6|0,0|l[e>>2],1),ne(d+7|0,0,2),ne(d+9|0,1,2),ne(d+11|0,1,1),ne(d+12|0,l[_>>2]|m,2),d=d+14|0,0|l[_>>2]){p=0;do{ne(d,p,g),d=d+g|0,p=p+1|0,f=0|l[_>>2]}while(p>>>0>>0)}else f=0;if(ne(d,f|m,2),d=d+2|0,0|l[_>>2]){f=0;do{ne(d,f,g),d=d+g|0,f=f+1|0}while(f>>>0<(0|l[_>>2])>>>0);p=d}else p=d;if(d=(255&(1&r[e+16>>0]^1))<<16,(f=0|l[e+8>>2])&&(d=l[f+8>>2]|d),(f=0|l[e+12>>2])&&(d=l[f+8>>2]<<8|d),ne(p,d,3),(0|ce(t,0|l[h>>2],v,n))!=(0|v)){x=0,A=41;break}if((y=y+1|0)>>>0>=(0|l[b>>2])>>>0)break e;e=e+20|0}return 41==(0|A)?(w=u,0|x):(Ve(0|l[h>>2]),l[h>>2]=0,l[s>>2]=0,me(n,1,15503,a),w=u,0|(n=0))}}while(0);g=0|l[i>>2],m=0|l[o>>2],e=5+(f=0|l[(_=g+(5640*m|0)+5628|0)>>2])|0,d=0|l[h>>2];do{if(e>>>0>(0|l[s>>2])>>>0){if(0|(d=0|Ue(d,e))){l[h>>2]=d,l[s>>2]=e;break}return Ve(0|l[h>>2]),l[h>>2]=0,l[s>>2]=0,me(n,1,15542,c),w=u,0}}while(0);if(ne(d,65399,2),ne(d+2|0,f+3|0,2),ne(d+4|0,0|l[_>>2],1),0|l[_>>2])for(p=0,f=0|l[g+(5640*m|0)+5624>>2],d=d+5|0;ne(d,0|l[f>>2],1),!((p=p+1|0)>>>0>=(0|l[_>>2])>>>0);)f=f+20|0,d=d+1|0;return n=(0|ce(t,0|l[h>>2],e,n))==(0|e)&1,w=u,0|n},function(e,t,n){return e|=0,n|=0,t=0|he(t|=0),n=8+(0|l[e+196>>2])|0,l[n>>2]=t,l[n+4>>2]=S,1},function(e,t,n){var i,r;return e|=0,t|=0,n|=0,r=w,w=w+16|0,t=0|Yt(0),l[(i=e+204|0)>>2]=t,t?0|Qt(t,0|l[e+80>>2],e+88|0)?(w=r,0|(n=1)):(Kt(0|l[i>>2]),l[i>>2]=0,w=r,0|(n=0)):(me(n,1,15385,r),w=r,0|(n=0))},function(e,t,n){t|=0,n|=0;var i,o,s,c,h,u,d=0,f=0,p=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0;if(i=0|l[(c=80+(e|=0)|0)>>2],f=0|l[(W=e+164|0)>>2],F=0|l[(V=i+24|0)>>2],d=0|l[F>>2],n=0|l[F+4>>2],s=i+16|0,F=0|I(0|l[F+24>>2],0|l[s>>2]),O=0|he(t),t=0|l[(h=e+116|0)>>2],p=0|l[(u=e+112|0)>>2],o=(+(O>>>0)+4294967296*+(0|S))/+((0|I(p,t))>>>0),O=0==(8&r[e+181>>0])?1:2,0|t){for(M=e+92|0,T=e+100|0,P=e+96|0,L=e+104|0,R=i+4|0,B=i+8|0,D=i+12|0,C=+((0|I(d<<3,n))>>>0),w=0,d=p,n=p;;){if(b=w,w=w+1|0,n){y=0;do{if(k=+Vr[3&O](f),k/=+((_=0|l[f+8>>2])>>>0),A=0|l[M>>2],d=0|l[T>>2],n=(0|(g=(0|I(d,y))+A|0))>(0|(n=0|l[i>>2]))?g:n,g=0|l[P>>2],p=0|l[L>>2],t=(0|(x=(0|I(p,b))+g|0))>(0|(t=0|l[R>>2]))?x:t,d=(0|(A=(0|I(d,y=y+1|0))+A|0))<(0|(d=0|l[B>>2]))?A:d,p=(0|(g=(0|I(p,w))+g|0))<(0|(p=0|l[D>>2]))?g:p,(v=+m[(g=f+20|0)>>2])>0&&(E=+((0|I(0|I(d-n|0,F),p-t|0))>>>0)/(v*C)-k,m[g>>2]=E),_>>>0>1)for(v=+((0|I(0|I(d-n|0,F),p-t|0))>>>0),n=f+24|0,t=1;(E=+m[n>>2])>0&&(m[n>>2]=v/(E*C)-k),!((t=t+1|0)>>>0>=_>>>0);)n=n+4|0;f=f+5640|0,n=0|l[u>>2]}while(y>>>0>>0);A=0|l[h>>2],x=n}else A=t,x=d,n=0;if(w>>>0>=A>>>0)break;d=x,t=A}if(0|A&&(j=o+2,0|x))for(y=0,n=0|l[W>>2];;){for(b=0,w=n,_=n+16|0;;){if((v=+m[(n=w+20|0)>>2])>0&&(C=v-o,m[n>>2]=C,C<30)&&(m[n>>2]=30),t=w+24|0,g=(n=0|l[w+8>>2])-1|0,f=(v=+m[t>>2])>0,g>>>0>1){p=_+(n<<2)|0,d=1,n=f;do{n&&(C=v-o,m[t>>2]=C,C<10+(z=+m[t+-4>>2]))&&(m[t>>2]=z+20),d=d+1|0,n=(v=+m[(t=t+4|0)>>2])>0}while((0|d)!=(0|g));n&&(G=p,N=v,U=25)}else f&&(G=t,N=v,U=25);if(25==(0|U)&&(U=0,C=N-j,m[G>>2]=C,C<10+(H=+m[G+-4>>2]))&&(m[G>>2]=H+20),w=w+5640|0,(b=b+1|0)>>>0>=x>>>0)break;_=_+5640|0}if((y=y+1|0)>>>0>=A>>>0)break;n=w}}if(f=0|l[s>>2]){for(p=(0|l[e+100>>2])-1|0,g=(0|l[e+104>>2])-1|0,d=0,n=0|l[V>>2],t=0;V=0|l[n>>2],U=0|l[n+4>>2],V=0|I(((g+U|0)>>>0)/(U>>>0)|0,((p+V|0)>>>0)/(V>>>0)|0),d=(0|I(V,0|l[n+24>>2]))+d|0,!((t=t+1|0)>>>0>=f>>>0);)n=n+52|0;T=~~(.1625*+(d>>>0))>>>0}else T=0;if(A=(b=0|l[16+(0|l[c>>2])>>2])-1|0,n=0|l[W>>2],w=0==(0|(M=0|I(0|l[h>>2],0|l[u>>2]))))f=0;else{for(t=0,d=0,f=n;t=t>>>0>(W=0|l[f+5588>>2])>>>0?t:W,(0|(d=d+1|0))!=(0|M);)f=f+5640|0;f=12*t|0}if(((0|a[(x=e+88|0)>>1])-3&65535)>=4){if(0==(0|b)|w)d=6,t=6;else{p=0,t=0;do{_=0|l[n+(5640*p|0)+5584>>2],g=0;do{t=t>>>0>(d=1&l[_+(1080*g|0)>>2]?5+(0|l[_+(1080*g|0)+4>>2])|0:5)>>>0?t:d,g=g+1|0}while((0|g)!=(0|b));p=p+1|0}while((0|p)!=(0|M));t=t+6|0,g=0,d=0;do{y=0|l[n+(5640*g|0)+5584>>2],_=0;do{d=d>>>0>(p=1&l[y+(1080*_|0)>>2]?5+(0|l[y+(1080*_|0)+4>>2])|0:5)>>>0?d:p,_=_+1|0}while((0|_)!=(0|b));g=g+1|0}while((0|g)!=(0|M));d=d+6|0}f=(0|I(d+t|0,A))+f|0}if(w)n=13;else{for(d=0,t=0;d=d>>>0>(W=0|l[n+420>>2])>>>0?d:W,(0|(t=t+1|0))!=(0|M);)n=n+5640|0;n=13+(9*d|0)|0}return W=f+T+n|0,l[e+40>>2]=W,W=0|Ne(W),l[e+36>>2]=W,W?((0|a[x>>1])-3&65535)>=4?0|(e=1):(n=0|Ne(5*(0|l[e+32>>2])|0),l[e+24>>2]=n,n?(l[e+28>>2]=n,0|(e=1)):0|(e=0)):0|(e=0)},function(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a,s,c,h,u,d,f,p,m,g,_,y,v,b,x,A=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=0,B=0,D=0;if(x=w,w=w+192|0,v=x+152|0,y=x+144|0,_=x+136|0,g=x+128|0,m=x+120|0,f=x+88|0,d=x+80|0,u=x+64|0,h=x+48|0,R=x+40|0,b=x+32|0,D=x+24|0,p=x+16|0,c=x+8|0,i=x+176|0,r=x+168|0,o=x+156|0,!(A=0|je(1,1024)))return me(n,1,17104,x),w=x,0;a=i+4|0,s=o+4|0,B=e+100|0,P=A,C=1024;e:for(;8==(0|le(t,i,8,n));){t:for(;;){switch(ie(i,o,4),ie(a,s,4),0|l[o>>2]){case 0:if(A=0|ue(t),(0|(L=S))>0|0==(0|L)&A>>>0>4294967287){L=6;break e}l[o>>2]=A+8,T=8;break;case 1:if(8!=(0|le(t,i,8,n))){L=12;break e}if(ie(i,r,4),0|l[r>>2]){L=10;break e}ie(a,o,4),T=16;break;default:T=8}if(1785737827==(0|(E=0|l[s>>2]))){L=14;break e}if(!(k=0|l[o>>2])){L=18;break e}if(k>>>0>>0){L=20;break e}n:do{if((0|E)<1718909296){if((0|E)<1668112752){if((0|E)<1667523942){if(1651532643!=(0|E)){L=43;break n}M=1124,L=30;break}if(1667523942!=(0|E)){L=43;break n}M=1148,L=30;break}if((0|E)<1668246642){if(1668112752!=(0|E)){L=43;break n}M=1140,L=30;break}if(1668246642!=(0|E)){L=43;break n}M=1116,L=30;break}if((0|E)<1783636e3){if((0|E)<1768449138){if(1718909296==(0|E)){L=27;break t}L=43;break n}if(1768449138==(0|E)){M=1108,L=30;break n}L=43;break n}if((0|E)<1785737832){if(1783636e3==(0|E)){A=1084,L=29;break t}L=43;break n}if((0|E)<1885564018){if(1785737832==(0|E)){L=28;break t}L=43;break n}if(1885564018!=(0|E)){L=43;break n}M=1132,L=30}while(0);if(30==(0|L)){if(L=0,A=k-T|0,l[h>>2]=E>>>24,l[h+4>>2]=E>>>16&255,l[h+8>>2]=E>>>8&255,l[h+12>>2]=255&E,me(n,2,17288,h),4&l[B>>2]|0){I=M,E=A;break}if(I=0|l[s>>2],l[u>>2]=I>>>24,l[u+4>>2]=I>>>16&255,l[u+8>>2]=I>>>8&255,l[u+12>>2]=255&I,me(n,2,17339,u),l[B>>2]=2147483647|l[B>>2],!((0|(I=0|de(t,A,0,n)))==(0|A)&0==(0|S))){L=32;break e}}else if(43==(0|L)){if(L=0,A=k-T|0,!(1&(M=0|l[B>>2]))){L=44;break e}if(!(2&M)){L=46;break e}if(l[B>>2]=2147483647|M,!((0|(I=0|de(t,A,0,n)))==(0|A)&0==(0|S))){L=49;break e}}if(8!=(0|le(t,i,8,n)))break e}if(27==(0|L)?(A=1092,L=29):28==(0|L)&&(A=1100,L=29),29==(0|L)&&(L=0,I=A,E=k-T|0),k=0|ue(t),(0|(T=S))<0|0==(0|T)&k>>>0>>0){L=34;break}if(E>>>0>C>>>0){if(!(A=0|Ue(P,E))){L=37;break}M=E}else A=P,M=C;if((0|le(t,A,E,n))!=(0|E)){L=39;break}if(!(0|Xr[63&l[I+4>>2]](e,A,E,n))){L=42;break}P=A,C=M}switch(0|L){case 6:me(n,1,17154,c);break;case 10:me(n,1,17154,p);break;case 12:break;case 14:return 4&(A=0|l[B>>2])?(l[B>>2]=8|A,Ve(P),w=x,0|(D=1)):(me(n,1,17196,D),Ve(P),w=x,0|(D=0));case 18:return me(n,1,17224,b),Ve(P),w=x,0;case 20:return l[R>>2]=k,l[R+4>>2]=E,me(n,1,17262,R),Ve(P),w=x,0;case 32:return me(n,1,17405,d),Ve(P),w=x,0;case 34:return R=0|l[o>>2],B=0|l[s>>2],D=0|ue(t),l[f>>2]=R,l[f+4>>2]=B>>>24,l[f+8>>2]=B>>>16&255,l[f+12>>2]=B>>>8&255,l[f+16>>2]=255&B,l[f+20>>2]=E,l[f+24>>2]=D,me(n,1,17455,f),Ve(P),w=x,0;case 37:return Ve(P),me(n,1,17531,m),w=x,0;case 39:return me(n,1,17573,g),Ve(A),w=x,0;case 42:return Ve(A),w=x,0;case 44:return me(n,1,17622,_),Ve(P),w=x,0;case 46:return me(n,1,17692,y),Ve(P),w=x,0;case 49:return me(n,1,17405,v),Ve(P),w=x,0}return Ve(P),w=x,1},function(e,t,n){e|=0,n|=0;var i,r,o,a,s=0;return a=w,w=w+32|0,ne(i=a+24|0,s=0|_r(0|(r=0|he(t|=0)),0|(o=S),0|l[(s=e=e+80|0)>>2],0|l[s+4>>2]),4),ne(i+4|0,1785737827,4),0|fe(t,0|l[e>>2],0|l[e+4>>2],n)?8!=(0|ce(t,i,8,n))?(me(n,1,19383,a+8|0),w=a,0|(s=0)):0|fe(t,r,o,n)?(w=a,0|(s=1)):(me(n,1,19383,a+16|0),w=a,0|(s=0)):(me(n,1,19383,a),w=a,0|(s=0))},function(e,t,n){t|=0,n|=0;var i,r=0,o=0;if(n=(0|l[(e|=0)>>2]?0==(l[e+104>>2]|l[e+100>>2]|0):0)&0!=(0|l[e+8>>2])&0!=(0|l[e+4>>2])&0!=(0|l[e+64>>2])&0!=(0|l[e+16>>2])&0!=(0|l[e+12>>2])&1,!(i=0|l[e+20>>2]))return o=n,e=(e=(e=0|l[(e=e+40|0)>>2])-1|0)>>>0<2,e&=1,t=0|pe(t),0|(t&=o)&e;o=0|l[e+72>>2],r=0;do{n&=(126&l[o+(12*r|0)+8>>2])>>>0<38,r=r+1|0}while(r>>>0>>0);return e=(e=(e=0|l[(e=e+40|0)>>2])-1|0)>>>0<2,e&=1,t=0|pe(t),0|(t&=n)&e},function(e,t,n){var i;return e|=0,t|=0,n|=0,e=w,w=w+16|0,ne(i=e,12,4),ne(i+4|0,1783636e3,4),ne(i+8|0,218793738,4),n=12==(0|ce(t,i,12,n))&1,w=e,0|n},function(e,t,n){t|=0,n|=0;var i,r,o,a,s,c=0,h=0;if(s=w,w=w+16|0,h=s+8|0,!(a=0|je(1,o=16+(l[(r=64+(e|=0)|0)>>2]<<2)|0)))return me(n,1,19500,s),w=s,0;if(ne(a,o,4),ne(a+4|0,1718909296,4),ne(a+8|0,0|l[e+56>>2],4),ne(a+12|0,0|l[e+60>>2],4),i=a+16|0,0|l[r>>2]){c=e+68|0,e=0;do{ne(i,0|l[(0|l[c>>2])+(e<<2)>>2],4),e=e+1|0}while(e>>>0<(0|l[r>>2])>>>0)}return(e=(0|ce(t,a,o,n))==(0|o))||me(n,1,19539,h),Ve(a),w=s,0|1&e},function(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a,s,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0;s=w,w=w+80|0,a=s+16|0,o=s+8|0,r=s,i=s+72|0,u=48+(c=h=s+24|0)|0;do{l[c>>2]=0,c=c+4|0}while((0|c)<(0|u));for(255==(0|l[e+24>>2])?(l[h>>2]=1,c=3,u=2,d=1,f=4):(c=2,u=1,d=0,f=1),l[h+(12*d|0)>>2]=f,l[h+(12*u|0)>>2]=2,0|l[e+116>>2]?(l[h+(12*c|0)>>2]=3,m=c+1|0):m=c,ne(i+4|0,1785737832,4),c=8,u=0,d=h;;){if(f=d+8|0,g=0|Zr[7&l[d>>2]](e,f),l[d+4>>2]=g,!g){p=7;break}if(c=(0|l[f>>2])+c|0,(0|(u=u+1|0))>=(0|m))break;d=d+12|0}if(7==(0|p)){for(me(n,1,19414,r),u=0,c=h;;){if(0|(h=0|l[c+4>>2])&&Ve(h),(0|(u=u+1|0))>=(0|m)){c=0;break}c=c+12|0}return w=s,0|c}ne(i,c,4);e:do{if(8==(0|ce(t,i,8,n))){for(c=0,u=h;g=u+8|0,(0|(p=0|ce(t,0|l[u+4>>2],0|l[g>>2],n)))==(0|l[g>>2]);){if((0|(c=c+1|0))>=(0|m)){c=1;break e}u=u+12|0}me(n,1,19457,a),c=0}else me(n,1,19457,o),c=0}while(0);for(u=0;0|(d=0|l[h+4>>2])&&Ve(d),!((0|(u=u+1|0))>=(0|m));)h=h+12|0;return w=s,0|c},function(e,t,n){var i;return e|=0,n|=0,i=0|he(t|=0),l[(e=e+88|0)>>2]=i,l[e+4>>2]=S,24==(0|(n=0|de(t,24,0,n)))&0==(0|S)&1|0},function(e,t,n){var i;return e|=0,n|=0,i=0|he(t|=0),l[(e=e+80|0)>>2]=i,l[e+4>>2]=S,8==(0|(n=0|de(t,8,0,n)))&0==(0|S)&1|0},bi,function(e,t,n){e|=0,t|=0,n|=0;var i,o,a,s=0,c=0,h=0,u=0;return o=w,w=w+32|0,s=o,l[(u=o+16|0)>>2]=t,c=u+4|0,a=0|l[(i=e+48|0)>>2],l[c>>2]=n-(0!=(0|a)&1),h=e+44|0,l[u+8>>2]=l[h>>2],l[u+12>>2]=a,l[s>>2]=l[e+60>>2],l[s+4>>2]=u,l[s+8>>2]=2,(0|(s=0|wi(0|G(145,0|s))))>=1?s>>>0>(u=0|l[c>>2])>>>0&&(c=0|l[h>>2],l[(h=e+4|0)>>2]=c,l[e+8>>2]=c+(s-u),0|l[i>>2]?(l[h>>2]=c+1,r[t+(n+-1)>>0]=0|r[c>>0],s=n):s=n):l[e>>2]=l[e>>2]|48&s^16,w=o,0|s},Br],Xr=[Dr,function(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var o,a,s,c,u,d,f,p,m,g,_,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0;if(_=w,w=w+112|0,E=_+88|0,g=_+80|0,S=_+72|0,m=_+64|0,A=_+56|0,d=_+48|0,s=_+40|0,o=_+32|0,b=_+24|0,y=_+16|0,f=_+100|0,M=_+92|0,l[(p=_+96|0)>>2]=0,T=e+200|0,8!=(0|n))return me(i,1,11669,_),me(i,1,11669,_+8|0),w=_,0;if(ie(t,T,2),ie(t+2|0,f,4),ie(t+6|0,M,1),ie(t+7|0,p,1),a=0|l[T>>2],t=0|l[e+112>>2],a>>>0>=(0|I(0|l[e+116>>2],t))>>>0)return l[y>>2]=a,me(i,1,11695,y),w=_,0;n=0|l[e+164>>2],u=(a>>>0)%(t>>>0)|0,c=(a>>>0)/(t>>>0)|0,t=0|l[f>>2];do{if((t+-1|0)>>>0<13){if(12==(0|t)){l[b>>2]=12,me(i,2,11719,b),t=0|l[f>>2];break}return l[o>>2]=t,me(i,1,11756,o),w=_,0}}while(0);t||(me(i,4,11817,s),l[e+72>>2]=1),t=0|l[p>>2];do{if(t){if(v=t+((0|h[e+76>>0])>>>4&1)|0,l[p>>2]=v,((y=0|l[(n=n+(5640*a|0)+5588|0)>>2])-1|0)>>>0<(t=0|l[M>>2])>>>0)return l[d>>2]=t,l[d+4>>2]=y,me(i,1,11928,d),l[e+72>>2]=1,w=_,0;if(t>>>0>>0){l[n>>2]=v,x=18;break}return l[A>>2]=t,l[A+4>>2]=v,me(i,1,12027,A),l[e+72>>2]=1,w=_,0}0|(t=0|l[n+(5640*a|0)+5588>>2])&&(v=t,x=18)}while(0);if(18==(0|x)&&(0|v)==(1+(0|l[M>>2])|0)&&(r[(A=e+76|0)>>0]=1|r[A>>0]),l[e+24>>2]=0==(0|l[e+72>>2])?(0|l[f>>2])-12|0:0,l[e+8>>2]=16,t=-1==(0|(t=0|l[e+60>>2]))?u>>>0>=(0|l[e+28>>2])>>>0&&u>>>0<(0|l[e+36>>2])>>>0&&c>>>0>=(0|l[e+32>>2])>>>0?(c>>>0>=(0|l[e+40>>2])>>>0&1)<<2&255:4:((0|l[T>>2])!=(0|t)&1)<<2&255,r[(b=e+76|0)>>0]=-5&r[b>>0]|t,!(t=0|l[(b=e+196|0)>>2]))return w=_,1;if(v=0|l[T>>2],t=0|l[t+40>>2],l[t+(40*v|0)>>2]=v,y=0|l[M>>2],l[t+(40*v|0)+12>>2]=y,0|(n=0|l[p>>2]))return l[t+(40*v|0)+4>>2]=n,l[t+(40*v|0)+8>>2]=n,(t=0|l[t+(40*v|0)+16>>2])?(t=0|Ue(t,24*n|0),n=(0|l[40+(0|l[b>>2])>>2])+(40*(0|l[T>>2])|0)+16|0,t?(l[n>>2]=t,w=_,0|(T=1)):(Ve(0|l[n>>2]),l[(0|l[40+(0|l[b>>2])>>2])+(40*(0|l[T>>2])|0)+16>>2]=0,me(i,1,12135,S),w=_,0|(T=0))):(E=0|je(n,24),l[(0|l[40+(0|l[b>>2])>>2])+(40*(0|l[T>>2])|0)+16>>2]=E,0|E?(w=_,0|(T=1)):(me(i,1,12135,m),w=_,0|(T=0)));do{if(!(0|l[t+(40*v|0)+16>>2])){if(l[t+(40*v|0)+8>>2]=10,S=0|je(10,24),t=0|l[40+(0|l[b>>2])>>2],n=0|l[T>>2],l[t+(40*n|0)+16>>2]=S,0|S){v=n,y=0|l[M>>2];break}return l[t+(40*n|0)+8>>2]=0,me(i,1,12135,g),w=_,0}}while(0);return y>>>0<(0|l[(n=t+(40*v|0)+8|0)>>2])>>>0?(w=_,0|(T=1)):(M=y+1|0,l[n>>2]=M,t=0|Ue(0|l[t+(40*v|0)+16>>2],24*M|0),n=(0|l[40+(0|l[b>>2])>>2])+(40*(0|l[T>>2])|0)+16|0,t?(l[n>>2]=t,w=_,0|(T=1)):(Ve(0|l[n>>2]),M=0|l[40+(0|l[b>>2])>>2],T=0|l[T>>2],l[M+(40*T|0)+16>>2]=0,l[M+(40*T|0)+8>>2]=0,me(i,1,12135,E),w=_,0|(T=0)))},function(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var o,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0;if(o=w,w=w+64|0,m=o+48|0,g=o+40|0,h=o+32|0,c=o+56|0,l[(f=o+52|0)>>2]=n,u=0|l[(_=e+80|0)>>2],d=16==(0|l[(p=e+8|0)>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],1&(s=0|r[(a=d+5636|0)>>0]))return me(i,1,11436,o),w=o,0;if(r[a>>0]=1|s,n>>>0<5)return me(i,1,11500,o+8|0),w=o,0;if(ie(t,d,1),(0|l[d>>2])>>>0>7)return me(i,1,11526,o+16|0),w=o,0;if(ie(t+1|0,c,1),c=0|l[c>>2],l[(a=d+4|0)>>2]=c,(0|c)>4&&(me(i,1,11560,o+24|0),l[a>>2]=-1),ie(t+2|0,a=d+8|0,2),((a=0|l[a>>2])-1|0)>>>0>65534)return l[h>>2]=a,me(i,1,11601,h),w=o,0;if(h=0|l[e+172>>2],l[d+12>>2]=0==(0|h)?a:h,ie(t+4|0,d+16|0,1),h=t+5|0,l[f>>2]=n+-5,0|(c=0|l[u+16>>2])){t=1&l[d>>2],s=0|l[d+5584>>2],a=0;do{l[s+(1080*a|0)>>2]=t,a=a+1|0}while(a>>>0>>0)}if(!(0|tt(e,0,h,f,i)))return me(i,1,11500,g),w=o,0;if(0|l[f>>2])return me(i,1,11500,m),w=o,0;if(a=16==(0|l[p>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],a=0|l[a+5584>>2],d=(s=0|l[(u=a+4|0)>>2])<<2,(0|l[16+(0|l[_>>2])>>2])>>>0<=1)return w=o,1;if(e=a+8|0,i=a+12|0,f=a+16|0,p=a+20|0,m=a+812|0,g=a+944|0,l[a+1084>>2]=s,c=0|l[e>>2],l[a+1088>>2]=c,t=0|l[i>>2],l[a+1092>>2]=t,h=0|l[f>>2],l[a+1096>>2]=h,n=0|l[p>>2],l[a+1100>>2]=n,Er(a+1892|0,0|m,0|d),Er(a+2024|0,0|g,0|d),(0|l[16+(0|l[_>>2])>>2])>>>0<=2)return w=o,1;if(l[a+2164>>2]=s,l[a+2168>>2]=c,l[a+2172>>2]=t,l[a+2176>>2]=h,l[a+2180>>2]=n,Er(a+2972|0,0|m,0|d),Er(a+3104|0,0|g,0|d),!((0|l[16+(0|l[_>>2])>>2])>>>0>3))return w=o,1;for(s=3;;){if(c=0|l[e>>2],t=0|l[i>>2],h=0|l[f>>2],n=0|l[p>>2],l[a+3244>>2]=l[u>>2],l[a+3248>>2]=c,l[a+3252>>2]=t,l[a+3256>>2]=h,l[a+3260>>2]=n,Er(a+4052|0,0|m,0|d),Er(a+4184|0,0|g,0|d),(s=s+1|0)>>>0>=(0|l[16+(0|l[_>>2])>>2])>>>0){a=1;break}a=a+1080|0}return w=o,0|a},function(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r,o,a,s,c,h=0;return s=w,w=w+48|0,h=s+32|0,l[(a=s+28|0)>>2]=n,c=16==(0|l[e+8>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],o=16+(0|l[e+80>>2])|0,(r=(0|l[o>>2])>>>0<257?1:2)>>>0>=n>>>0?(me(i,1,10929,s),w=s,0|(h=0)):(l[a>>2]=n+-1-r,ie(t,h,r),t=t+r|0,(n=0|l[h>>2])>>>0>=(0|l[o>>2])>>>0?(me(i,1,10955,s+8|0),w=s,0|(h=0)):(ie(t,(0|l[c+5584>>2])+(1080*n|0)|0,1),0|tt(e,0|l[h>>2],t+1|0,a,i)?0|l[a>>2]?(me(i,1,10929,s+24|0),w=s,0|(h=0)):(w=s,0|(h=1)):(me(i,1,10929,s+16|0),w=s,0|(h=0))))},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c=0,h=0;return s=w,w=w+32|0,h=s+8|0,o=s+20|0,(2+(r=(a=0|l[16+(0|l[80+(e|=0)>>2])>>2])>>>0<257?1:2)|0)!=(0|n)?(me(i,1,10846,s),w=s,0|(h=0)):(c=16==(0|l[e+8>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],ie(t,o,r),ie(n=t+r|0,s+16|0,1),(e=0|l[o>>2])>>>0>>0?(ie(n+1|0,(0|l[c+5584>>2])+(1080*e|0)+808|0,1),w=s,0|(h=1)):(l[h>>2]=e,l[h+4>>2]=a,me(i,1,10872,h),w=s,0|(h=0)))},function(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r,o=0,a=0;if(r=w,w=w+16|0,l[(o=r+12|0)>>2]=n,!(0|et(e,0,t,o,i)))return me(i,1,10820,r),w=r,0;if(0|l[o>>2])return me(i,1,10820,r+8|0),w=r,0;if(t=16==(0|l[e+8>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],t=0|l[t+5584>>2],(0|l[16+(0|l[(i=e+80|0)>>2])>>2])>>>0<=1)return w=r,1;for(o=t+24|0,e=t+804|0,a=t+28|0,n=1;;){if(l[t+1104>>2]=l[o>>2],l[t+1884>>2]=l[e>>2],Er(t+1108|0,0|a,776),(n=n+1|0)>>>0>=(0|l[16+(0|l[i>>2])>>2])>>>0){t=1;break}t=t+1080|0}return w=r,0|t},function(e,t,n,i){e|=0,t|=0,n|=0,i|=0;var r,o,a,s,c,h,u=0,d=0,f=0,p=0;h=w,w=w+48|0,p=h+32|0,c=h+24|0,s=h+16|0,d=h+8|0,u=h,r=h+40|0,l[(a=h+36|0)>>2]=n,o=e+80|0;do{if((0|l[16+(0|l[o>>2])>>2])>>>0<257){if(0|n){ie(t,r,1),u=-1,f=1;break}return me(i,1,10473,u),w=h,0}if(n>>>0>=2){ie(t,r,2),u=-2,f=2;break}return me(i,1,10473,d),w=h,0}while(0);return l[a>>2]=u+n,(d=0|l[r>>2])>>>0>=(u=0|l[16+(0|l[o>>2])>>2])>>>0?(l[s>>2]=d,l[s+4>>2]=u,me(i,1,10499,s),w=h,0|(p=0)):0|et(e,d,t+f|0,a,i)?0|l[a>>2]?(me(i,1,10473,p),w=h,0|(p=0)):(w=h,0|(p=1)):(me(i,1,10473,c),w=h,0|(p=0))},function(e,t,n,i){t|=0,i|=0;var o,a,s,c,h,u=0,d=0,f=0,p=0,m=0;if(c=w,w=w+16|0,f=c+8|0,s=c+12|0,0!=(0|((n|=0)>>>0)%((u=5+((a=(m=0|l[16+(0|l[80+(e|=0)>>2])>>2])>>>0<257?1:2)<<1)|0)>>>0))|u>>>0>n>>>0)return me(i,1,10429,c),w=c,0;if(h=16==(0|l[e+8>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],(o=(p=4&(d=0|r[(e=h+5636|0)>>0])?1+(0|l[h+420>>2])|0:0)+((n>>>0)/(u>>>0)|0)|0)>>>0>31)return l[f>>2]=o,me(i,1,10455,f),w=c,0;if(r[e>>0]=4|d,p>>>0>>0)for(d=h+8|0,e=t,n=p,u=h+424+(148*p|0)|0;ie(e,u,1),ie(e=e+1|0,u+4|0,a),ie(e=e+a|0,p=u+8|0,2),f=0|l[p>>2],t=0|l[d>>2],l[p>>2]=f>>>0>>0?f:t,ie(e=e+2|0,u+12|0,1),ie(e=e+1|0,p=u+16|0,a),ie(e=e+a|0,s,1),l[u+36>>2]=l[s>>2],t=0|l[p>>2],l[p>>2]=t>>>0>>0?t:m,!((n=n+1|0)>>>0>=o>>>0);)e=e+1|0,u=u+148|0;return l[h+420>>2]=o+-1,w=c,1},function(e,t,n,i){t|=0,n|=0,i|=0;var o,s,c,h,u,d,f,p,m,g,_,y,v,b,x=0,A=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0;if(b=w,w=w+160|0,j=b+144|0,O=b+136|0,v=b+128|0,y=b+120|0,D=b+112|0,B=b+104|0,p=b+96|0,f=b+80|0,s=b+72|0,o=b+64|0,P=b+56|0,R=b+48|0,L=b+32|0,E=b+24|0,M=b+16|0,x=b+152|0,u=b+148|0,G=0|l[80+(e|=0)>>2],N=e+88|0,n>>>0<36)return me(i,1,9677,b),w=b,0;if(C=((F=n+-36|0)>>>0)/3|0,0|(F>>>0)%3)return me(i,1,9677,b+8|0),w=b,0;if(ie(t,x,2),a[N>>1]=l[x>>2],ie(t+2|0,d=G+8|0,4),ie(t+6|0,_=G+12|0,4),ie(t+10|0,G,4),ie(t+14|0,k=G+4|0,4),ie(t+18|0,h=e+100|0,4),ie(t+22|0,g=e+104|0,4),ie(t+26|0,c=e+92|0,4),ie(t+30|0,m=e+96|0,4),ie(t+34|0,x,2),A=t+36|0,(n=0|l[x>>2])>>>0>=16385)return l[M>>2]=n,me(i,1,9705,M),w=b,0;if(n&=65535,l[(F=G+16|0)>>2]=n,(0|n)!=(0|C))return l[E>>2]=n,l[E+4>>2]=C,me(i,1,9766,E),w=b,0;if((E=0|l[G>>2])>>>0<(T=0|l[d>>2])>>>0){if((M=0|l[k>>2])>>>0<(t=0|l[_>>2])>>>0){if(x=0|l[h>>2],n=0|l[g>>2],x){if(n){if((4294967295/(T>>>0)|0)>>>0>>0)return l[P>>2]=T,l[P+4>>2]=t,me(i,1,10007,P),w=b,0;if(L=0|gr(0|(T=0|l[c>>2]),0,0|x,0),P=S,R=0|gr(0|(k=0|l[m>>2]),0,0|n,0),T>>>0<=E>>>0&&k>>>0<=M>>>0&(0-P|L)>>>0>E>>>0&(0-S|R)>>>0>M>>>0){if(n=0|je(C,52),l[(C=G+24|0)>>2]=n,!n)return l[F>>2]=0,me(i,1,10093,s),w=b,0;e:do{if(0|l[F>>2]){for(T=e+168|0,E=n,M=0;;){if(ie(A,u,1),t=0|l[u>>2],l[(n=E+24|0)>>2]=1+(127&t),l[E+32>>2]=t>>>7,ie(A+1|0,u,1),l[E>>2]=l[u>>2],ie(A+2|0,u,1),t=0|l[u>>2],l[E+4>>2]=t,(t+-1|0)>>>0>254|((x=0|l[E>>2])-1|0)>>>0>254){n=26;break}if((t=0|l[n>>2])>>>0>38){n=28;break}if(l[E+36>>2]=0,l[E+40>>2]=l[T>>2],!((n=M+1|0)>>>0<(0|l[F>>2])>>>0))break e;E=E+52|0,A=A+3|0,M=n}return 26==(0|n)?(l[f>>2]=M,l[f+4>>2]=x,l[f+8>>2]=t,me(i,1,10141,f)):28==(0|n)&&(l[p>>2]=M,l[p+4>>2]=t,me(i,1,10246,p)),w=b,0}}while(0);if(T=0|l[c>>2],E=0|l[h>>2],A=((0|l[d>>2])-1-T+E|0)/(0|E)|0,l[e+112>>2]=A,M=0|l[m>>2],x=0|l[g>>2],n=((0|l[_>>2])-1-M+x|0)/(0|x)|0,l[e+116>>2]=n,!(0==(0|n)|0==(0|A))&&A>>>0<=(65535/(n>>>0)|0)>>>0){if(k=0|I(A,n),t=e+28|0,2&r[e+76>>0]?(l[t>>2]=(((0|l[t>>2])-T|0)>>>0)/(E>>>0)|0,l[(n=e+32|0)>>2]=(((0|l[n>>2])-M|0)>>>0)/(x>>>0)|0,l[(n=e+36|0)>>2]=((0|l[n>>2])-1-T+E|0)/(0|E)|0,t=n=e+40|0,n=((0|l[n>>2])-1-M+x|0)/(0|x)|0):(l[t>>2]=0,l[e+32>>2]=0,l[e+36>>2]=A,t=e+40|0),l[t>>2]=n,B=0|je(k,5640),l[(M=e+164|0)>>2]=B,!B)return me(i,1,10093,D),w=b,0;if(D=0|je(0|l[F>>2],1080),l[5584+(0|l[(A=e+12|0)>>2])>>2]=D,!(0|l[5584+(0|l[A>>2])>>2]))return me(i,1,10093,y),w=b,0;if(n=0|je(10,20),l[5612+(0|l[A>>2])>>2]=n,n=0|l[A>>2],!(0|l[n+5612>>2]))return me(i,1,10093,v),w=b,0;if(l[n+5620>>2]=10,n=0|je(10,20),l[5624+(0|l[A>>2])>>2]=n,n=0|l[A>>2],!(0|l[n+5624>>2]))return me(i,1,10093,O),w=b,0;if(l[n+5632>>2]=10,0|(x=0|l[F>>2])){t=0|l[C>>2],n=0;do{0|l[t+(52*n|0)+32>>2]||(l[(0|l[5584+(0|l[A>>2])>>2])+(1080*n|0)+1076>>2]=1<<(0|l[t+(52*n|0)+24>>2])-1),n=n+1|0}while(n>>>0>>0)}e:do{if(0|k){if(n=0|l[M>>2],O=0|je(x,1080),l[n+5584>>2]=O,0|O)for(t=0;;){if((t=t+1|0)>>>0>=k>>>0)break e;if(O=0|je(0|l[F>>2],1080),l[n+11224>>2]=O,!O)break;n=n+5640|0}return me(i,1,10093,j),w=b,0}}while(0);return l[e+8>>2]=4,function(e,t){e|=0;var n,i=0,r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0;if(i=0|l[4+(t|=0)>>2],r=0|l[e>>2],a=0|l[t+8>>2],s=0|l[e+4>>2],o=0|l[t+12>>2],u=(0|I((0|l[t+24>>2])-1|0,o))+i|0,c=0|l[t+16>>2],h=(0|I((0|l[t+28>>2])-1|0,c))+a|0,t=0|gr(0|u,0,0|o,0),t|=0-S,o=0|l[e+8>>2],c=0|gr(0|h,0,0|c,0),c|=0-S,h=0|l[e+12>>2],u=0|l[e+16>>2])for(n=(i>>>0>r>>>0?i:r)+-1|0,a=(a>>>0>s>>>0?a:s)+-1|0,o=(t>>>0>>0?t:o)+-1|0,r=(c>>>0>>0?c:h)+-1|0,i=0,t=0|l[e+24>>2];h=((n+(s=0|l[t>>2])|0)>>>0)/(s>>>0)|0,e=((a+(p=0|l[t+4>>2])|0)>>>0)/(p>>>0)|0,f=0|Sr(1,0,0|(c=0|l[t+40>>2])),d=S,s=0|gr((((o+s|0)>>>0)/(s>>>0)|0)-h|0,0,-1,-1),s=0|Ar(0|(s=0|gr(0|s,0|S,0|f,0|d)),0|S,0|c),p=0|gr((((r+p|0)>>>0)/(p>>>0)|0)-e|0,0,-1,-1),c=0|Ar(0|(d=0|gr(0|p,0|S,0|f,0|d)),0|S,0|c),l[t+8>>2]=s,l[t+12>>2]=c,l[t+16>>2]=h,l[t+20>>2]=e,!((i=i+1|0)>>>0>=u>>>0);)t=t+52|0}(G,N),w=b,1}return l[B>>2]=A,l[B+4>>2]=n,me(i,1,10346,B),w=b,0}return me(i,1,10049,o),w=b,0}n=0}return l[R>>2]=x,l[R+4>>2]=n,me(i,1,9946,R),w=b,0}n=M}else t=0|l[_>>2],n=0|l[k>>2];return e=0|_r(0|T,0,0|E,0),G=S,N=0|_r(0|t,0,0|n,0),l[(j=L)>>2]=e,l[j+4>>2]=G,l[(j=L+8|0)>>2]=N,l[j+4>>2]=S,me(i,1,9880,L),w=b,0},function(e,t,n,i){var r;return e|=0,t|=0,i|=0,r=w,w=w+32|0,e=r+12|0,(n|=0)>>>0<2?(me(i,1,9651,r),w=r,0|(i=0)):(ie(t,r+16|0,1),ie(t+1|0,e,1),((n+-2|0)>>>0)%((2+((t=0|l[e>>2])>>>5&2)+(t>>>4&3)|0)>>>0)|0?(me(i,1,9651,r+8|0),w=r,0|(i=0)):(w=r,0|(i=1)))},function(e,t,n,i){return e|=0,t|=0,t=w,w=w+16|0,(n|=0)?e=1:(me(i|=0,1,9625,t),e=0),w=t,0|e},function(e,t,n,i){e|=0,t|=0,i|=0;var r,o,a,s,c=0;if(s=w,w=w+32|0,a=s+8|0,o=s+12|0,!(n|=0))return me(i,1,9599,s),w=s,0;if(ie(t,s+16|0,1),!(r=n+-1|0))return w=s,1;c=0,e=t,n=0;do{ie(e=e+1|0,o,1),c=0==(128&(t=0|l[o>>2])|0)?0:(127&t|c)<<7,n=n+1|0}while((0|n)!=(0|r));return c?(me(i,1,9599,a),w=s,0|(i=0)):(w=s,0|(i=1))},function(e,t,n,i){e|=0,t|=0,i|=0;var o,a,s,c,h,u,d=0,f=0,p=0;if(u=w,w=w+48|0,p=u+32|0,s=u+24|0,o=u+16|0,d=u+8|0,h=u+36|0,(n|=0)>>>0<2)return me(i,1,9551,u),w=u,0;r[(f=e+184|0)>>0]=1|r[f>>0],ie(t,h,1),f=t+1|0,c=n+-1|0,n=0|l[(a=e+124|0)>>2];do{if(!n){if(n=0|je(t=1+(0|l[h>>2])|0,8),l[a>>2]=n,0|n){l[e+120>>2]=t;break}return me(i,1,8618,d),w=u,0}if(d=e+120|0,t=0|l[h>>2],(0|l[d>>2])>>>0<=t>>>0){if(0|(t=0|Ue(n,(e=t+1|0)<<3))){l[a>>2]=t,Tr(t+((n=0|l[d>>2])<<3)|0,0,e-n<<3|0),l[d>>2]=e,n=0|l[a>>2];break}return me(i,1,8618,o),w=u,0}}while(0);return t=0|l[h>>2],0|l[n+(t<<3)>>2]?(l[s>>2]=t,me(i,1,9577,s),w=u,0|(p=0)):(e=0|Ne(c),n=0|l[a>>2],t=0|l[h>>2],l[n+(t<<3)>>2]=e,e?(l[n+(t<<3)+4>>2]=c,Er(0|e,0|f,0|c),w=u,0|(p=1)):(me(i,1,8618,p),w=u,0|(p=0)))},function(e,t,n,i){e|=0,t|=0,i|=0;var o,a,s,c,h,u,d,f,p=0,m=0,g=0;if(f=w,w=w+48|0,g=f+40|0,u=f+32|0,s=f+24|0,a=f+16|0,d=f+44|0,(n|=0)>>>0<2)return me(i,1,9364,f),w=f,0;if(1&r[e+184>>0])return me(i,1,9390,f+8|0),w=f,0;o=0|l[e+164>>2],p=0|l[e+200>>2],r[(m=o+(5640*p|0)+5636|0)>>0]=2|r[m>>0],ie(t,d,1),m=t+1|0,h=n+-1|0,t=0|l[(c=o+(5640*p|0)+5164|0)>>2];do{if(!t){if(t=0|je(e=1+(0|l[d>>2])|0,8),l[c>>2]=t,0|t){l[o+(5640*p|0)+5160>>2]=e;break}return me(i,1,9491,a),w=f,0}if(p=o+(5640*p|0)+5160|0,e=0|l[d>>2],(0|l[p>>2])>>>0<=e>>>0){if(0|(e=0|Ue(t,(n=e+1|0)<<3))){l[c>>2]=e,Tr(e+((t=0|l[p>>2])<<3)|0,0,n-t<<3|0),l[p>>2]=n,t=0|l[c>>2];break}return me(i,1,9491,s),w=f,0}}while(0);return e=0|l[d>>2],0|l[t+(e<<3)>>2]?(l[u>>2]=e,me(i,1,9529,u),w=f,0|(g=0)):(n=0|Ne(h),t=0|l[c>>2],e=0|l[d>>2],l[t+(e<<3)>>2]=n,n?(l[t+(e<<3)+4>>2]=h,Er(0|n,0|m,0|h),w=f,0|(g=1)):(me(i,1,9491,g),w=f,0|(g=0)))},function(e,t,n,i){return t|=0,n|=0,i|=0,t=w,w=w+16|0,(l[16+(0|l[80+(e|=0)>>2])>>2]<<2|0)==(0|n)?(w=t,0|(i=1)):(me(i,1,9338,t),w=t,0|(i=0))},function(e,t,n,i){return 1},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c,h,u,d,f=0,p=0,m=0,g=0,_=0;if(u=w,w=w+48|0,_=u+40|0,h=u+32|0,o=u+24|0,c=u+44|0,d=16==(0|l[8+(e|=0)>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],n>>>0<2)return me(i,1,9170,u),w=u,0;if(ie(t,c,2),0|l[c>>2])return me(i,2,9196,u+8|0),w=u,1;if(n>>>0<7)return me(i,1,9170,u+16|0),w=u,0;ie(t+2|0,c,2),s=t+4|0,g=255&l[c>>2],f=0|l[(r=d+5612|0)>>2],e=0|l[(a=d+5616|0)>>2];e:do{if(e){p=f,m=0;do{if((0|l[p+8>>2])==(0|g))break e;p=p+20|0,m=m+1|0}while(m>>>0>>0)}else p=f,m=0}while(0);if((0|m)==(0|e)){p=d+5620|0;do{if((0|e)==(0|l[p>>2])){if(e=e+10|0,l[p>>2]=e,0|(e=0|Ue(f,20*e|0))){l[r>>2]=e,Tr(e+(20*(f=0|l[a>>2])|0)|0,0,20*((0|l[p>>2])-f|0)|0),f=0|l[r>>2],e=0|l[a>>2];break}return Ve(0|l[r>>2]),l[r>>2]=0,l[p>>2]=0,l[a>>2]=0,me(i,1,9256,o),w=u,0}}while(0);l[a>>2]=e+1,p=f+(20*e|0)|0}return 0|(e=0|l[(m=p+12|0)>>2])&&(Ve(e),l[m>>2]=0),l[p+8>>2]=g,g=0|l[c>>2],l[p+4>>2]=g>>>8&3,l[p>>2]=g>>>10&3,ie(s,c,2),0|l[c>>2]?(me(i,2,9294,h),w=u,0|(_=1)):(f=0|Ne(e=n+-6|0),l[m>>2]=f,f?(Er(0|f,t+6|0,0|e),l[p+16>>2]=e,w=u,0|(_=1)):(me(i,1,9170,_),w=u,0|(_=0)))},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s=0;if(a=w,w=w+32|0,r=a+16|0,s=a+12|0,(2+(o=0|l[16+(0|l[(e=80+(e|=0)|0)>>2])>>2])|0)!=(0|n))return me(i,1,9144,a),w=a,0;if(ie(t,r,2),(0|l[r>>2])!=(0|o))return me(i,1,9144,a+8|0),w=a,0;if(!o)return w=a,1;for(i=0,n=t+2|0,e=0|l[24+(0|l[e>>2])>>2];;){if(ie(n,s,1),t=0|l[s>>2],l[e+32>>2]=t>>>7&1,l[e+24>>2]=1+(127&t),(0|(i=i+1|0))==(0|o)){e=1;break}n=n+1|0,e=e+52|0}return w=a,0|e},function(e,t,n,i){t|=0,n|=0,i|=0;var o,a,s,c,h,u,d,f,p,m,g,_,y,v,b,x,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0;if(b=w,w=w+144|0,F=b+120|0,v=b+112|0,y=b+104|0,_=b+96|0,g=b+88|0,m=b+80|0,p=b+72|0,f=b+64|0,d=b+56|0,u=b+48|0,L=b+40|0,P=b+32|0,k=b+24|0,o=b+136|0,a=b+132|0,s=b+128|0,c=b+124|0,x=16==(0|l[8+(e|=0)>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],n>>>0<2)return me(i,1,8804,b),w=b,0;if(ie(t,o,2),0|l[o>>2])return me(i,2,8830,b+8|0),w=b,1;if(n>>>0<7)return me(i,1,8804,b+16|0),w=b,0;ie(t+2|0,a,1),C=t+3|0,A=0|l[(T=x+5624|0)>>2],e=0|l[(h=x+5628|0)>>2];e:do{if(e){E=0|l[a>>2],M=A,S=0;do{if((0|l[M>>2])==(0|E))break e;M=M+20|0,S=S+1|0}while(S>>>0>>0)}else M=A,S=0}while(0);if((0|S)==(0|e)){S=x+5632|0;do{if((0|e)==(0|l[S>>2])){if(e=e+10|0,l[S>>2]=e,0|(e=0|Ue(A,20*e|0))){l[T>>2]=e,Tr(e+(20*(A=0|l[h>>2])|0)|0,0,20*((0|l[S>>2])-A|0)|0),A=0|l[T>>2],e=0|l[h>>2];break}return Ve(0|l[T>>2]),l[T>>2]=0,l[S>>2]=0,l[h>>2]=0,me(i,1,8876,k),w=b,0}}while(0);O=1,S=A+(20*e|0)|0}else O=0,S=M;if(l[S>>2]=l[a>>2],ie(C,o,2),0|l[o>>2])return me(i,2,8830,P),w=b,1;if(ie(t+5|0,s,2),(A=0|l[s>>2])>>>0>1)return me(i,2,8914,L),w=b,1;e=n+-7|0;e:do{if(A){R=S+4|0,B=S+16|0,D=S+8|0,n=S+12|0,L=x+5612|0,P=x+5616|0,k=t+7|0,C=0;t:for(;;){if(e>>>0<3){A=27;break}if(ie(k,o,1),1!=(0|l[o>>2])){A=29;break}if(ie(k+1|0,c,2),A=e+-3|0,E=1+((M=0|l[c>>2])>>>15)|0,M&=32767,l[R>>2]=M,A>>>0<(S=2+(0|I(E,M))|0)>>>0){A=31;break}if(e=k+3|0,T=A-S|0,M){A=0;do{if(ie(e,o,E),(0|l[o>>2])!=(0|A)){A=34;break t}e=e+E|0,A=A+1|0}while(A>>>0<(0|l[R>>2])>>>0)}if(ie(e,c,2),A=e+2|0,M=1+((S=0|l[c>>2])>>>15)|0,S&=32767,l[c>>2]=S,(0|S)!=(0|l[R>>2])){A=37;break}if(T>>>0<(e=3+(0|I(M,S))|0)>>>0){A=39;break}if(e=T-e|0,S){S=0;do{if(ie(A,o,M),(0|l[o>>2])!=(0|S)){A=42;break t}A=A+M|0,S=S+1|0}while(S>>>0<(0|l[R>>2])>>>0)}if(ie(A,o,3),k=A+3|0,M=0|l[o>>2],r[B>>0]=1&(M>>>16^1)|-2&r[B>>0],l[D>>2]=0,l[n>>2]=0,E=255&M,l[a>>2]=E,0|E){if(!(T=0|l[P>>2])){A=50;break}for(A=0|l[L>>2],S=0;(0|l[A+8>>2])!=(0|E);){if((S=S+1|0)>>>0>=T>>>0){A=50;break t}A=A+20|0}l[D>>2]=A}if(M=M>>>8&255,l[a>>2]=M,0|M){if(!(E=0|l[P>>2])){A=57;break}for(A=0|l[L>>2],S=0;(0|l[A+8>>2])!=(0|M);){if((S=S+1|0)>>>0>=E>>>0){A=57;break t}A=A+20|0}l[n>>2]=A}if((C=C+1|0)>>>0>=(0|l[s>>2])>>>0)break e}if(27==(0|A))return me(i,1,8804,u),w=b,0;if(29==(0|A))return me(i,2,8958,d),w=b,1;if(31==(0|A))return me(i,1,8804,f),w=b,0;if(34==(0|A))return me(i,2,9024,p),w=b,1;if(37==(0|A))return me(i,2,9078,m),w=b,1;if(39==(0|A))return me(i,1,8804,g),w=b,0;if(42==(0|A))return me(i,2,9024,_),w=b,1;if(50==(0|A))return me(i,1,8804,y),w=b,0;if(57==(0|A))return me(i,1,8804,v),w=b,0}}while(0);return 0|e?(me(i,1,8804,F),w=b,0|(F=0)):O?(l[h>>2]=1+(0|l[h>>2]),w=b,0|(F=1)):(w=b,0|(F=1))},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c,h,u,d=0,f=0,p=0,m=0,g=0,_=0;if(u=w,w=w+32|0,c=u+24|0,h=u+20|0,d=0|l[(_=80+(e|=0)|0)>>2],f=16==(0|l[e+8>>2])?(0|l[e+164>>2])+(5640*(0|l[e+200>>2])|0)|0:0|l[e+12>>2],!n)return me(i,1,8723,u),w=u,0;if(ie(t,h,1),(e=0|l[h>>2])>>>0>1)return me(i,2,8749,u+8|0),w=u,1;if((e+1|0)!=(0|n))return me(i,2,8723,u+16|0),w=u,0;if(s=f+5584|0,0|(d=0|l[d+16>>2]))for(n=0|l[s>>2],i=0;l[n+1076>>2]=0,!((i=i+1|0)>>>0>=d>>>0);)n=n+1080|0;if((n=0|l[(a=f+5604|0)>>2])&&(Ve(n),l[a>>2]=0,e=0|l[h>>2]),!e)return w=u,1;for(o=f+5624|0,r=f+5628|0,p=0;;){if(ie(t=t+1|0,c,1),e=0|l[_>>2],d=0|l[o>>2],0|l[r>>2]&&(0|l[d>>2])==(0|l[c>>2])&&(0|(m=0|l[d+4>>2]))==(0|l[(g=e+16|0)>>2])){if(0|(e=0|l[d+8>>2])){if(n=0|I(m,m),f=0|I(0|l[1036+(l[e>>2]<<2)>>2],n),(0|l[e+16>>2])!=(0|f)){e=0,n=32;break}if(i=0|Ne(n<<2),l[a>>2]=i,!i){e=0,n=32;break}to[15&l[1052+(l[e>>2]<<2)>>2]](0|l[e+12>>2],i,n)}if(0|(e=0|l[d+12>>2])){if(n=0|l[g>>2],f=0|I(n,0|l[1036+(l[e>>2]<<2)>>2]),(0|l[e+16>>2])!=(0|f)){e=0,n=32;break}if(!(f=0|Ne(n<<2))){e=0,n=32;break}if(to[15&l[1068+(l[e>>2]<<2)>>2]](0|l[e+12>>2],f,n),0|(d=0|l[g>>2]))for(e=f,n=0|l[s>>2],i=0;l[n+1076>>2]=l[e>>2],(0|(i=i+1|0))!=(0|d);)e=e+4|0,n=n+1080|0;Ve(f)}}if((p=p+1|0)>>>0>=(0|l[h>>2])>>>0){e=1,n=32;break}}return 32==(0|n)?(w=u,0|e):0},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o=0;return r=w,w=w+32|0,o=r+20|0,0|l[(e=100+(e|=0)|0)>>2]?(me(i,1,19251,r),w=r,0|(o=0)):4!=(0|n)?(me(i,1,19305,r+8|0),w=r,0|(o=0)):(ie(t,o,4),218793738==(0|l[o>>2])?(l[e>>2]=1|l[e>>2],w=r,0|(o=1)):(me(i,1,19339,r+16|0),w=r,0|(o=0)))},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s=0;if(a=w,w=w+32|0,o=a+24|0,1!=(0|l[(s=100+(e|=0)|0)>>2]))return me(i,1,19132,a),w=a,0;if(n>>>0<8)return me(i,1,19182,a+8|0),w=a,0;if(ie(t,e+56|0,4),ie(t+4|0,e+60|0,4),t=t+8|0,3&(n=n+-8|0)|0)return me(i,1,19182,a+16|0),w=a,0;if(n>>>=2,l[(r=e+64|0)>>2]=n,0|n){if(n=0|je(n,4),l[e+68>>2]=n,!n)return me(i,1,19218,o),w=a,0;if(0|l[r>>2])for(e=e+68|0,n=0;ie(t,(0|l[e>>2])+(n<<2)|0,4),!((n=n+1|0)>>>0>=(0|l[r>>2])>>>0);)t=t+4|0}return l[s>>2]=2|l[s>>2],w=a,1},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c,h,u,d,f,p,m,g,_,y=0,v=0,b=0,x=0,A=0,S=0,M=0;if(_=w,w=w+96|0,f=_+72|0,d=_+64|0,u=_+56|0,h=_+48|0,M=_+40|0,g=_+32|0,m=_+24|0,p=_+16|0,c=_+8|0,o=_+80|0,a=_+76|0,!(2&l[(s=100+(e|=0)|0)>>2]))return me(i,1,18800,_),w=_,0;l[(r=e+104|0)>>2]=0;do{if(0|n){x=0;e:for(;;){if(n>>>0<8){b=6;break}switch(ie(t,o,4),y=0|l[o>>2],ie(t+4|0,o,4),S=0|l[o>>2],0|y){case 0:b=15;break e;case 1:if(n>>>0<16){b=9;break e}if(ie(t+8|0,a,4),0|l[a>>2]){b=11;break e}if(ie(t+12|0,o,4),!(y=0|l[o>>2])){b=13;break e}A=16;break;default:A=8}if(y>>>0>>0){b=17;break}if(n>>>0>>0){b=20;break}t:do{if((0|S)<1668246642){if((0|S)<1667523942){if(1651532643!=(0|S)){b=28;break t}v=1124,b=27;break}if((0|S)<1668112752){if(1667523942!=(0|S)){b=28;break t}v=1148,b=27;break}if(1668112752!=(0|S)){b=28;break t}v=1140,b=27;break}if((0|S)<1768449138){if(1668246642!=(0|S)){b=28;break t}v=1116,b=27;break}if((0|S)<1885564018){if(1768449138==(0|S)){v=1108,b=27;break t}b=28;break t}if(1885564018!=(0|S)){b=28;break t}v=1132,b=27}while(0);if(27==(0|b)){if(!(0|Xr[63&l[v+4>>2]](e,t+A|0,y-A|0,i))){t=0,b=33;break}}else 28==(0|b)&&(l[r>>2]=2147483647|l[r>>2]);if(x=1768449138==(0|S)?1:x,!(n=n-y|0)){b=30;break}t=t+y|0}if(6==(0|b))me(i,1,18845,c);else if(9==(0|b))me(i,1,18885,p);else if(11==(0|b))me(i,1,17154,m);else if(13==(0|b))me(i,1,17224,g);else if(15==(0|b))me(i,1,17224,M);else if(17==(0|b))me(i,1,18929,h);else{if(20==(0|b))return me(i,1,19001,d),w=_,0;if(30==(0|b)){if(!x)break;return l[s>>2]=4|l[s>>2],w=_,1}if(33==(0|b))return w=_,0|t}return me(i,1,18958,u),w=_,0}}while(0);return me(i,1,19073,f),w=_,0},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a=0;return o=w,w=w+48|0,a=o+32|0,0|l[(r=72+(e|=0)|0)>>2]?(me(i,2,18543,o),w=o,0|(a=1)):14!=(0|n)?(me(i,1,18591,o+8|0),w=o,0|(a=0)):(ie(t,e+16|0,4),ie(t+4|0,e+12|0,4),ie(t+8|0,n=e+20|0,2),((n=0|l[n>>2])-1|0)>>>0>16383?(me(i,1,18624,o+16|0),w=o,0|(a=0)):(n=0|je(n,12),l[r>>2]=n,n?(ie(t+10|0,e+24|0,1),ie(t+11|0,n=e+28|0,1),7!=(0|(n=0|l[n>>2]))&&(l[a>>2]=n,me(i,4,18710,a)),ie(t+12|0,e+32|0,1),ie(t+13|0,e+36|0,1),w=o,0|(a=1)):(me(i,1,18661,o+24|0),w=o,0|(a=0))))},function(e,t,n,i){e|=0,t|=0,i|=0;var o,a,s,c,h,u,d,f,p,m,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0;if(m=w,w=w+96|0,y=m+48|0,a=m+40|0,x=m+32|0,b=m+24|0,v=m+16|0,A=m+80|0,o=m+76|0,h=m+72|0,s=m+68|0,u=m+64|0,c=m+60|0,d=m+56|0,f=m+52|0,(n|=0)>>>0<3)return me(i,1,18186,m),w=m,0;if(p=e+108|0,0|r[(S=e+124|0)>>0])return me(i,4,18218,m+8|0),w=m,1;switch(ie(t,_=e+40|0,1),ie(t+1|0,e+52|0,1),ie(t+2|0,e+44|0,1),g=t+3|0,0|(_=0|l[_>>2])){case 1:if(n>>>0<7)return l[v>>2]=n,me(i,1,18327,v),w=m,0;if(_=e+48|0,7!=(0|n)&&14!=(0|l[_>>2])&&(l[b>>2]=n,me(i,2,18327,b)),ie(g,_,4),y=t+7|0,14==(0|l[_>>2])){if(!(A=0|Ne(36)))return me(i,1,18363,x),w=m,0;switch(l[A>>2]=14,l[d>>2]=0,l[u>>2]=0,l[h>>2]=0,l[c>>2]=0,l[s>>2]=0,l[o>>2]=0,l[f>>2]=4470064,l[(g=A+4|0)>>2]=1145390592,0|n){case 35:ie(y,o,4),ie(t+11|0,h,4),ie(t+15|0,s,4),ie(t+19|0,u,4),ie(t+23|0,c,4),ie(t+27|0,d,4),ie(t+31|0,f,4),l[g>>2]=0,t=0|l[o>>2],x=0|l[s>>2],b=0|l[c>>2],v=0|l[h>>2],y=0|l[u>>2],_=0|l[d>>2],g=0|l[f>>2];break;case 7:t=0,x=0,b=0,v=0,y=0,_=0,g=4470064;break;default:l[a>>2]=n,me(i,2,18393,a),t=0,x=0,b=0,v=0,y=0,_=0,g=4470064}l[A+8>>2]=t,l[A+16>>2]=x,l[A+24>>2]=b,l[A+12>>2]=v,l[A+20>>2]=y,l[A+28>>2]=_,l[A+32>>2]=g,l[p>>2]=A,l[e+112>>2]=0}return r[S>>0]=1,w=m,1;case 2:if(y=n+-3|0,l[(_=e+112|0)>>2]=y,e=0|je(1,y),l[p>>2]=e,!e)return l[_>>2]=0,w=m,0;if((0|n)>3)for(_=0;ie(g,A,1),r[(0|l[p>>2])+_>>0]=l[A>>2],(0|(_=_+1|0))!=(0|y);)g=g+1|0;return r[S>>0]=1,w=m,1;default:return _>>>0<=2?(w=m,0|(S=1)):(l[y>>2]=_,me(i,4,18437,y),w=m,0|(S=1))}return 0},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o=0,a=0,s=0;if(r=w,w=w+16|0,a=r,255!=(0|(o=0|l[24+(e|=0)>>2]))&&(l[a>>2]=o,me(i,2,18040,a)),(0|l[(s=e+20|0)>>2])!=(0|n))return me(i,1,18154,r+8|0),w=r,0;if(!n)return w=r,1;for(a=e+72|0,o=0;;){if(ie(t,(0|l[a>>2])+(12*o|0)+8|0,1),(o=o+1|0)>>>0>=(0|l[s>>2])>>>0){t=1;break}t=t+1|0}return w=r,0|t},function(e,t,n,i){t|=0,i|=0;var o,s,c,u,d,f=0,p=0,m=0,g=0,_=0;if(d=w,w=w+16|0,f=d,_=d+12|0,(n|=0)>>>0<3|0!=(0|l[(p=120+(e|=0)|0)>>2]))return w=d,0;if(ie(t,_,2),((u=65535&(m=0|l[_>>2]))-1|0)>>>0>1023)return l[f>>2]=u,me(i,1,17957,f),w=d,0;if(ie(t+2|0,_,1),!(c=65535&l[_>>2]))return me(i,1,17995,d+8|0),w=d,0;if((c+3|0)>>>0>n>>>0)return w=d,0;if(!(o=0|Ne(0|I(u<<2,c))))return w=d,0;if(!(s=0|Ne(c)))return Ve(o),w=d,0;if(!(g=0|Ne(c)))return Ve(o),Ve(s),w=d,0;if(!(e=0|Ne(20)))return Ve(o),Ve(s),Ve(g),w=d,0;l[e+4>>2]=g,l[e+8>>2]=s,l[e>>2]=o,a[e+16>>1]=m,r[e+18>>0]=l[_>>2],l[e+12>>2]=0,l[p>>2]=e,e=0,i=t+3|0,f=0;do{ie(i,_,1),i=i+1|0,r[s+f>>0]=1+(127&l[_>>2]),r[g+f>>0]=(0|l[_>>2])>>>7&1,f=65535&(e=e+1<<16>>16)}while(c>>>0>f>>>0);if(!u)return w=d,1;g=t,m=0,f=o,e=i;e:for(;;){p=0,i=e,e=0;do{if((i-g+(e=(e=(7+(0|h[s+e>>0])|0)>>>3)>>>0<4?e:4)|0)>(0|n)){e=0,f=22;break e}ie(i,_,e),i=i+e|0,l[f>>2]=l[_>>2],f=f+4|0,e=65535&(p=p+1<<16>>16)}while(c>>>0>e>>>0);if(u>>>0<=(65535&(m=m+1<<16>>16))>>>0){e=1,f=22;break}e=i}return 22==(0|f)?(w=d,0|e):0},function(e,t,n,i){t|=0,n|=0,i|=0;var o,s,c,h=0,u=0;if(c=w,w=w+32|0,u=c+20|0,!(e=0|l[(s=120+(e|=0)|0)>>2]))return me(i,1,17847,c),w=c,0;if(0|l[e+12>>2])return me(i,1,17893,c+8|0),w=c,0;if((e=(o=255&(h=0|r[e+18>>0]))<<2)>>>0>n>>>0)return me(i,1,17924,c+16|0),w=c,0;if(!(n=0|Ne(e)))return w=c,0;if(h<<24>>24)for(e=t,h=0;ie(e,u,2),a[n+(h<<2)>>1]=l[u>>2],ie(e+2|0,u,1),r[n+(h<<2)+2>>0]=l[u>>2],ie(e+3|0,u,1),r[n+(h<<2)+3>>0]=l[u>>2],(0|(h=h+1|0))!=(0|o);)e=e+4|0;return l[12+(0|l[s>>2])>>2]=n,w=c,1},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,s=0,c=0;if(o=w,w=w+32|0,c=o+20|0,0|l[(r=116+(e|=0)|0)>>2])return w=o,0;if(n>>>0<2)return me(i,1,17753,o),w=o,0;if(ie(t,c,2),!(e=65535&(s=0|l[c>>2])))return me(i,1,17786,o+8|0),w=o,0;if((2+(6*e|0)|0)>>>0>n>>>0)return me(i,1,17753,o+16|0),w=o,0;if(!(s=0|Ne(6*s|0)))return w=o,0;if(e=0|Ne(8),l[r>>2]=e,!e)return Ve(s),w=o,0;if(l[e>>2]=s,i=65535&l[c>>2],a[e+4>>1]=i,!(i<<16>>16))return w=o,1;e=0;do{i=65535&e,ie(t+2|0,c,2),a[s+(6*i|0)>>1]=l[c>>2],ie(t+4|0,c,2),t=t+6|0,a[s+(6*i|0)+2>>1]=l[c>>2],ie(t,c,2),a[s+(6*i|0)+4>>1]=l[c>>2],e=e+1<<16>>16}while((65535&e)<(0|d[4+(0|l[r>>2])>>1]));return w=o,1},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c=0,h=0,u=0,d=0,f=0,p=0,m=0;if(s=w,w=w+16|0,m=s+8|0,r=s,8&l[(a=68+(e|=0)|0)>>2]|0)return S=m=-1,w=s,-1;c=0|l[(f=e+32|0)>>2],l[(o=e+36|0)>>2]=c,h=0|l[(u=e+48|0)>>2];do{if(h){for(d=e+20|0;-1!=(0|(h=0|Yr[63&l[d>>2]](c,h,0|l[e>>2])));)if(c=(0|l[o>>2])+h|0,l[o>>2]=c,h=(0|l[u>>2])-h|0,l[u>>2]=h,!h){p=6;break}if(6==(0|p)){c=0|l[f>>2];break}return l[a>>2]=8|l[a>>2],me(i,4,4360,r),l[a>>2]=8|l[a>>2],l[u>>2]=0,S=m=-1,w=s,-1}}while(0);l[o>>2]=c;e:do{if((0|n)>0|0==(0|n)&t>>>0>0){for(f=e+24|0,h=0,c=0;!(-1==(0|(u=0|Yr[63&l[f>>2]](t,n,0|l[e>>2])))&-1==(0|(d=S)));)if(t=0|_r(0|t,0|n,0|u,0|d),n=S,h=0|gr(0|u,0|d,0|h,0|c),c=S,!((0|n)>0|0==(0|n)&t>>>0>0))break e;return me(i,4,4412,m),l[a>>2]=8|l[a>>2],m=0|gr(0|l[(m=e=e+56|0)>>2],0|l[m+4>>2],0|h,0|c),l[e>>2]=m,l[e+4>>2]=S,S=m=(e=0!=(0|h)|0!=(0|c))?c:-1,w=s,0|(e?h:-1)}h=0,c=0}while(0);return e=0|gr(0|l[(e=m=e+56|0)>>2],0|l[e+4>>2],0|h,0|c),l[m>>2]=e,l[m+4>>2]=S,S=m=c,w=s,0|h},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a=0,s=0,c=0,h=0,u=0,d=0;if(o=w,w=w+16|0,d=o,(s=0|l[(a=48+(e|=0)|0)>>2])>>>0>=t>>>0)return l[(d=e+36|0)>>2]=(0|l[d>>2])+t,l[a>>2]=s-t,e=0|gr(0|l[(e=d=e+56|0)>>2],0|l[e+4>>2],0|t,0|n),l[d>>2]=e,l[d+4>>2]=S,S=d=n,w=o,0|t;if(4&l[(r=e+68|0)>>2]|0)return l[(d=e+36|0)>>2]=(0|l[d>>2])+s,l[a>>2]=0,d=0|gr(0|l[(d=e=e+56|0)>>2],0|l[d+4>>2],0|s,0),l[e>>2]=d,l[e+4>>2]=S,S=d=(e=0!=(0|s))?0:-1,w=o,0|(e?s:-1);s?(l[e+36>>2]=l[e+32>>2],t=0|_r(0|t,0|n,0|s,0),l[a>>2]=0,a=0,n=S):(s=0,a=0);e:do{if((0|n)>0|0==(0|n)&t>>>0>0){for(u=e+24|0;!(-1==(0|(c=0|Yr[63&l[u>>2]](t,n,0|l[e>>2])))&-1==(0|(h=S)));)if(t=0|_r(0|t,0|n,0|c,0|h),n=S,s=0|gr(0|c,0|h,0|s,0|a),a=S,!((0|n)>0|0==(0|n)&t>>>0>0))break e;return me(i,4,4386,d),l[r>>2]=4|l[r>>2],d=0|gr(0|l[(d=e=e+56|0)>>2],0|l[d+4>>2],0|s,0|a),l[e>>2]=d,l[e+4>>2]=S,S=d=(e=0!=(0|s)|0!=(0|a))?a:-1,w=o,0|(e?s:-1)}}while(0);return e=0|gr(0|l[(e=d=e+56|0)>>2],0|l[e+4>>2],0|s,0|a),l[d>>2]=e,l[d+4>>2]=S,S=d=a,w=o,0|s},function(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c=0,h=0,u=0,d=0,f=0;s=w,w=w+16|0,r=s,c=0|l[(o=32+(e|=0)|0)>>2],l[(a=e+36|0)>>2]=c,h=0|l[(f=e+48|0)>>2];do{if(h){for(u=e+20|0;-1!=(0|(h=0|Yr[63&l[u>>2]](c,h,0|l[e>>2])));)if(c=(0|l[a>>2])+h|0,l[a>>2]=c,h=(0|l[f>>2])-h|0,l[f>>2]=h,!h){d=6;break}if(6==(0|d)){h=e,c=0|l[o>>2];break}return l[(f=e+68|0)>>2]=8|l[f>>2],me(i,4,4360,r),l[f>>2]=8|l[f>>2],w=s,0}h=e}while(0);return l[a>>2]=c,l[f>>2]=0,0|Yr[63&l[e+28>>2]](t,n,0|l[h>>2])?(l[(f=e+56|0)>>2]=t,l[f+4>>2]=n,w=s,0|(f=1)):(l[(f=e+68|0)>>2]=8|l[f>>2],w=s,0|(f=0))},te,wt,qe,function(e,t,n,i){t|=0,n|=0,i|=0;var r=0,o=0,a=0,s=0,c=0;if(!(0|_n(0|l[(r=4+(e|=0)|0)>>2],55,i)))return 0;if(c=0|yn(s=0|l[r>>2]),r=0|vn(s),c){for(o=1,a=0;o=o?0!=(0|Yr[63&l[r>>2]](e,t,i)):0,(0|(a=a+1|0))!=(0|c);)r=r+4|0,o&=1;if(bn(s),!o)return 0}else bn(s);if(!(0|_n(0|l[(r=e+8|0)>>2],56,i)))return 0;if(!(0|_n(0|l[r>>2],57,i)))return 0;if(!(0|_n(0|l[r>>2],58,i)))return 0;if(0|l[e+96>>2]&&0==(0|_n(0|l[r>>2],59,i)))return 0;if(!(0|_n(0|l[r>>2],60,i)))return 0;if(c=0|yn(s=0|l[r>>2]),r=0|vn(s),c){for(o=1,a=0;o=o?0!=(0|Yr[63&l[r>>2]](e,t,i)):0,(0|(a=a+1|0))!=(0|c);)r=r+4|0,o&=1;if(bn(s),!o)return 0}else bn(s);return 0|wt(0|l[e>>2],t,n,i)},function(e,t,n,i){i|=0;var o,s,c,h,u,d,f,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0;if(f=w,w=w+80|0,x=f+64|0,u=f+56|0,s=f+48|0,b=f+40|0,h=f+32|0,c=f+24|0,!(0!=(0|(e|=0))&0!=(0|(t|=0))&0!=(0|(n|=0))))return w=f,0;if(((0|l[(d=n+16|0)>>2])-1|0)>>>0>16383)return me(i,1,16630,f),w=f,0;if(!(0|qe(0|l[e>>2],t,n,i)))return w=f,0;if(l[e+56>>2]=1785737760,l[e+60>>2]=0,l[e+64>>2]=1,p=0|Ne(4),l[e+68>>2]=p,!p)return me(i,1,16699,f+8|0),w=f,0;if(l[p>>2]=1785737760,v=0|l[d>>2],l[e+20>>2]=v,v=0|Ne(12*v|0),l[e+72>>2]=v,!v)return me(i,1,16699,f+16|0),w=f,0;if(l[e+16>>2]=(0|l[n+12>>2])-(0|l[n+4>>2]),l[e+12>>2]=(0|l[n+8>>2])-(0|l[n>>2]),o=0|l[(A=n+24|0)>>2],m=0|l[o+24>>2],g=0|l[o+32>>2],l[(_=e+24|0)>>2]=m+-1+(g<<7),(y=0|l[d>>2])>>>0>1){p=1;do{(0|m)!=(0|l[o+(52*p|0)+24>>2])&&(l[_>>2]=255),p=p+1|0}while(p>>>0>>0)}if(l[e+28>>2]=7,l[e+32>>2]=0,l[e+36>>2]=0,0|y&&(l[v+8>>2]=m+-1+(g<<7),1!=(0|y))){p=1;do{l[v+(12*p|0)+8>>2]=(0|l[o+(52*p|0)+24>>2])-1+(l[o+(52*p|0)+32>>2]<<7),p=p+1|0}while(p>>>0>>0)}m=0|l[(p=n+32|0)>>2],g=e+40|0;e:do{if(m)l[g>>2]=2,l[e+48>>2]=0,l[e+112>>2]=m,y=0|je(1,m),l[e+108>>2]=y,Er(0|y,0|l[n+28>>2],0|l[p>>2]),r[e+124>>0]=1,y=0|l[d>>2];else switch(l[g>>2]=1,0|l[n+20>>2]){case 1:l[e+48>>2]=16;break e;case 2:l[e+48>>2]=17;break e;case 3:l[e+48>>2]=18;break e;default:break e}}while(0);e:do{if(0|y){g=0|l[A>>2],_=0,p=0,m=0;do{p=p+(1&(1^(n=0==(0|a[g+(52*m|0)+48>>1]))))|0,_=n?_:m,m=m+1|0}while(m>>>0>>0);switch(0|p){case 0:break e;case 1:break;default:me(i,2,16995,s);break e}switch(0|l[e+48>>2]){case 18:case 16:p=3;break;case 17:p=1;break;default:me(i,2,16745,c);break e}if(y>>>0<=p>>>0){me(i,2,16819,h);break}if(_>>>0

>>0){me(i,2,16912,b);break}if(b=0|Ne(8),l[(m=e+116|0)>>2]=b,!b)return me(i,1,17060,u),w=f,0;if(_=0|Ne(6*(0|l[d>>2])|0),m=0|l[m>>2],l[m>>2]=_,!_)return me(i,1,17060,x),w=f,0;g=0|l[d>>2],a[m+4>>1]=g,m=0;do{a[_+(6*m|0)>>1]=m,a[_+(6*m|0)+2>>1]=0,x=m,m=m+1|0,a[_+(6*x|0)+4>>1]=m}while((0|m)!=(0|p));if(p>>>0>>0){m=0|l[A>>2];do{A=0==(0|a[m+(52*p|0)+48>>1]),a[_+(6*p|0)>>1]=p,a[_+(6*p|0)+2>>1]=A?-1:1,a[_+(6*p|0)+4>>1]=A<<31>>31,p=p+1|0}while(p>>>0>>0)}}}while(0);return l[e+52>>2]=0,l[e+44>>2]=0,l[e+96>>2]=l[t+18692>>2],w=f,1},dt,$e,function(e,t,n,i){t|=0,i|=0;var r,o,a,s=0;if(a=w,w=w+16|0,!(n|=0))return w=a,0;if(!(0|dt(0|l[(e|=0)>>2],t,n,i)))return me(i,1,16201,a),w=a,0;if(0|l[e+128>>2])return w=a,1;if(!(0|Mt(n,o=e+108|0,i)))return w=a,0;switch(0|(t=0|l[e+48>>2])){case 16:l[n+20>>2]=1;break;case 17:l[n+20>>2]=2;break;case 18:l[n+20>>2]=3;break;case 24:l[n+20>>2]=4;break;default:l[n+20>>2]=12==(0|t)?5:-1}t=0|l[(r=e+120|0)>>2];do{if(0|t){if(0|l[t+12>>2]){Et(n,o);break}Ve(0|l[t+4>>2]),Ve(0|l[8+(0|l[r>>2])>>2]),Ve(0|l[l[r>>2]>>2]),t=0|l[r>>2],(s=0|l[t+12>>2])&&(Ve(s),t=0|l[r>>2]),Ve(t),l[r>>2]=0}}while(0);return 0|l[e+116>>2]&&Tt(n,o,i),(t=0|l[o>>2])?(l[n+28>>2]=t,l[n+32>>2]=l[e+112>>2],l[o>>2]=0,w=a,0|(n=1)):(w=a,0|(n=1))},function(e,t,n,i){e|=0,n|=0,i|=0;var r,o=0,a=0,s=0,c=0,h=0;if(!(0|_n(0|l[(c=8+(t|=0)|0)>>2],53,i)))return 0;if(r=0|yn(h=0|l[t+4>>2]),o=0|vn(h),r){for(a=1,s=0;a=a?0!=(0|Yr[63&l[o>>2]](t,e,i)):0,(0|(s=s+1|0))!=(0|r);)o=o+4|0,a&=1;if(bn(h),!a)return 0}else bn(h);if(h=0|yn(c=0|l[c>>2]),o=0|vn(c),h){for(a=1,s=0;a=a?0!=(0|Yr[63&l[o>>2]](t,e,i)):0,(0|(s=s+1|0))!=(0|h);)o=o+4|0,a&=1;if(bn(c),!a)return 0}else bn(c);return 0|$e(e,0|l[t>>2],n,i)},Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr,Dr],Jr=[Or,pt,function(e,t,n,i,r){var o,a,s;if(e|=0,t|=0,r|=0,s=w,w=w+16|0,!(n|=0))return w=s,0;if(me(i|=0,2,19580,s),!(0|pt(0|l[e>>2],t,n,i,r)))return me(i,1,16201,s+8|0),w=s,0;if(!(0|Mt(n,a=e+108|0,i)))return w=s,0;switch(0|(t=0|l[e+48>>2])){case 16:l[n+20>>2]=1;break;case 17:l[n+20>>2]=2;break;case 18:l[n+20>>2]=3;break;case 24:l[n+20>>2]=4;break;default:l[n+20>>2]=12==(0|t)?5:-1}t=0|l[(o=e+120|0)>>2];do{if(0|t){if(0|l[t+12>>2]){Et(n,a);break}Ve(0|l[t+4>>2]),Ve(0|l[8+(0|l[o>>2])>>2]),Ve(0|l[l[o>>2]>>2]),t=0|l[o>>2],(r=0|l[t+12>>2])&&(Ve(r),t=0|l[o>>2]),Ve(t),l[o>>2]=0}}while(0);return 0|l[e+116>>2]&&Tt(n,a,i),(t=0|l[a>>2])?(l[n+28>>2]=t,l[n+32>>2]=l[e+112>>2],l[a>>2]=0,w=s,0|(n=1)):(w=s,0|(n=1))},Or],qr=[Fr,St,function(e,t,n,i,r,o){return t|=0,n|=0,i|=0,r|=0,o|=0,0|St(0|l[(e|=0)>>2],t,n,i,r,o)},it,function(e,t,n,i,r,o){return t|=0,n|=0,i|=0,r|=0,o|=0,0|it(0|l[(e|=0)>>2],t,n,i,r,o)},Fr,Fr,Fr],Qr=[Gr,rt,function(e,t,n,i,r,o,a){return t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,0|rt(0|l[(e|=0)>>2],t,n,i,r,o,a)},Gr],Kr=[Nr,nt,function(e,t,n,i,r,o,a,s,c,h,u){return t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,c|=0,h|=0,u|=0,0|nt(0|l[(e|=0)>>2],t,n,i,r,o,a,s,c,h,u)},Nr],$r=[jr,Ye,kt,function(e){var t,n,i=0,r=0,o=0;if(i=0|l[(n=24+(e|=0)|0)>>2]){if(t=((o=0|l[e+28>>2])>>>0)/52|0,o>>>0>51){for(o=0;0|(e=0|l[i>>2])&&(Ve(e+-1|0),l[i>>2]=0),0|(r=0|l[(e=i+4|0)>>2])&&(Ve(r),l[e>>2]=0),0|(r=0|l[(e=i+8|0)>>2])&&(Ve(r),l[e>>2]=0),!((o=o+1|0)>>>0>=t>>>0);)i=i+52|0;i=0|l[n>>2]}Ve(i),l[n>>2]=0}},function(e){var t,n,i=0,r=0,o=0;if(i=0|l[(n=24+(e|=0)|0)>>2]){if(t=((o=0|l[e+28>>2])>>>0)/56|0,o>>>0>55){for(o=0;0|(e=0|l[i>>2])&&(Ve(e),l[i>>2]=0),0|(r=0|l[(e=i+4|0)>>2])&&(Ve(r),l[e>>2]=0),!((o=o+1|0)>>>0>=t>>>0);)i=i+56|0;i=0|l[n>>2]}Ve(i),l[n>>2]=0}},jr,jr,jr],eo=[Hr,function(e,t){},function(e,t){},function(e,t){var n;e|=0,t|=0,t=w,w=w+16|0,l[(n=t)>>2]=e,function(e,t){t|=0;var n,i;n=w,w=w+16|0,l[(i=n)>>2]=t,t=0|zi(0|l[665],4200,i),w=n}(0,n),w=t},function(e,t){},We,function(e,t){t|=0,We(0|l[(e|=0)>>2],t),r[e+124>>0]=0,l[e+128>>2]=1&l[t+8248>>2]},Hr],to=[zr,function(e,t,n){e|=0,t|=0;var i=0;if(n|=0)for(i=0;ne(t,~~+m[e>>2]>>>0,2),(0|(i=i+1|0))!=(0|n);)e=e+4|0,t=t+2|0},function(e,t,n){e|=0,t|=0;var i=0;if(n|=0)for(i=0;ne(t,~~+m[e>>2]>>>0,4),(0|(i=i+1|0))!=(0|n);)e=e+4|0,t=t+4|0},function(e,t,n){e|=0,t|=0;var i=0;if(n|=0)for(i=0;ae(t,+m[e>>2]),(0|(i=i+1|0))!=(0|n);)e=e+4|0,t=t+4|0},function(e,t,n){e|=0,t|=0;var i=0;if(n|=0)for(i=0;re(t,+m[e>>2]),(0|(i=i+1|0))!=(0|n);)e=e+4|0,t=t+8|0},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;ie(e,i,2),m[t>>2]=+((0|l[i>>2])>>>0),(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+2|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;ie(e,i,4),m[t>>2]=+((0|l[i>>2])>>>0),(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+4|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;se(e,i),l[t>>2]=l[i>>2],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+4|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;oe(e,i),m[t>>2]=+_[i>>3],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+8|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;ie(e,i,2),l[t>>2]=l[i>>2],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+2|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;ie(e,i,4),l[t>>2]=l[i>>2],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+4|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;se(e,i),l[t>>2]=~~+m[i>>2],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+4|0;w=r}else w=r},function(e,t,n){e|=0,t|=0;var i,r,o=0;if(r=w,w=w+16|0,i=r,n|=0){for(o=0;oe(e,i),l[t>>2]=~~+_[i>>3],(0|(o=o+1|0))!=(0|n);)t=t+4|0,e=e+8|0;w=r}else w=r},at,function(e,t,n){t|=0,n|=0,at(0|l[(e|=0)>>2],t,n)},zr],no=[Ur,function(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0;if(i|=0)if(1==(0|t)&0==(0|n))l[e>>2]=l[e>>2]<<1;else{if((0|t)>0){r=n+-1|0,i=0;do{l[(a=e+(i<<1<<2)|0)>>2]=(0|l[a>>2])-((0|l[e+(((0|i)<1?1:(((0|i)>(0|n)?n:i)<<1)-1|0)<<2)>>2])+(0|l[e+((((0|i)>=(0|n)?r:i)<<1|1)<<2)>>2])>>1),i=i+1|0}while((0|i)!=(0|t))}if(!((0|n)<=0)){r=t+-1|0,i=0;do{o=i,i=i+1|0,l[(a=e+((o<<1|1)<<2)|0)>>2]=(2+(0|l[e+(((0|o)>=(0|t)?r:o)<<1<<2)>>2])+(0|l[e+(((0|i)>=(0|t)?r:i)<<1<<2)>>2])>>2)+(0|l[a>>2])}while((0|i)!=(0|n))}}else{if(!((i=(0|t)>0)|(0|n)>1))return;if(i){r=n+-1|0,i=0;do{a=i,i=i+1|0,l[(o=e+((a<<1|1)<<2)|0)>>2]=(0|l[o>>2])-((0|l[e+(((0|i)>=(0|n)?r:i)<<1<<2)>>2])+(0|l[e+(((0|a)>=(0|n)?r:a)<<1<<2)>>2])>>1)}while((0|i)!=(0|t))}if((0|n)<=0)return;r=t+-1|0,i=0;do{l[(a=e+(i<<1<<2)|0)>>2]=(2+(0|l[e+(((0|i)<1?1:(((0|i)>(0|t)?t:i)<<1)-1|0)<<2)>>2])+(0|l[e+((((0|i)>=(0|t)?r:i)<<1|1)<<2)>>2])>>2)+(0|l[a>>2]),i=i+1|0}while((0|i)!=(0|n))}},function(e,t,n,i){e|=0,t|=0,n|=0;var r=0,o=0,a=0,s=0,c=0;if(i|=0){if(!((0|t)>1|(a=(0|n)>0)))return;if(o=(0|t)>0){r=n+-1|0,i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|i)<1?1:(((0|i)>(0|n)?n:i)<<1)-1|0)<<2)>>2])+(0|l[e+((((0|i)>=(0|n)?r:i)<<1|1)<<2)>>2])|0),((0|s)<0)<<31>>31|0,12993,0)),0|S,4096,0)),0|S,13),l[(c=e+(i<<1<<2)|0)>>2]=(0|l[c>>2])-s,i=i+1|0}while((0|i)!=(0|t))}if(a){r=t+-1|0,i=0;do{c=i,s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|(i=i+1|0))>=(0|t)?r:i)<<1<<2)>>2])+(0|l[e+(((0|c)>=(0|t)?r:c)<<1<<2)>>2])|0),((0|s)<0)<<31>>31|0,434,0)),0|S,4096,0)),0|S,13),l[(c=e+((c<<1|1)<<2)|0)>>2]=(0|l[c>>2])-s}while((0|i)!=(0|n))}if(o){r=n+-1|0,i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|i)<1?1:(((0|i)>(0|n)?n:i)<<1)-1|0)<<2)>>2])+(0|l[e+((((0|i)>=(0|n)?r:i)<<1|1)<<2)>>2])|0),((0|s)<0)<<31>>31|0,7233,0)),0|S,4096,0)),0|S,13),l[(c=e+(i<<1<<2)|0)>>2]=(0|l[c>>2])+s,i=i+1|0}while((0|i)!=(0|t))}if(a){r=t+-1|0,i=0;do{c=i,s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|(i=i+1|0))>=(0|t)?r:i)<<1<<2)>>2])+(0|l[e+(((0|c)>=(0|t)?r:c)<<1<<2)>>2])|0),((0|s)<0)<<31>>31|0,3633,0)),0|S,4096,0)),0|S,13),l[(c=e+((c<<1|1)<<2)|0)>>2]=(0|l[c>>2])+s}while((0|i)!=(0|n))}if(o){i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=0|l[(c=e+(i<<1<<2)|0)>>2]),((0|s)<0)<<31>>31|0,5038,0)),0|S,4096,0)),0|S,13),l[c>>2]=s,i=i+1|0}while((0|i)!=(0|t))}if(!a)return;i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=0|l[(c=e+((i<<1|1)<<2)|0)>>2]),((0|s)<0)<<31>>31|0,6659,0)),0|S,4096,0)),0|S,13),l[c>>2]=s,i=i+1|0}while((0|i)!=(0|n))}else if((a=(0|t)>0)|(0|n)>1){if(a){r=n+-1|0,i=0;do{o=i,s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|(i=i+1|0))>=(0|n)?r:i)<<1<<2)>>2])+(0|l[e+(((0|o)>=(0|n)?r:o)<<1<<2)>>2])|0),((0|s)<0)<<31>>31|0,12993,0)),0|S,4096,0)),0|S,13),l[(o=e+((o<<1|1)<<2)|0)>>2]=(0|l[o>>2])-s}while((0|i)!=(0|t))}if(o=(0|n)>0){r=t+-1|0,i=0;do{c=0|Ar(0|(c=0|gr(0|(c=0|mr(0|(c=(0|l[e+((((0|i)>=(0|t)?r:i)<<1|1)<<2)>>2])+(0|l[e+(((0|i)<1?1:(((0|i)>(0|t)?t:i)<<1)-1|0)<<2)>>2])|0),((0|c)<0)<<31>>31|0,434,0)),0|S,4096,0)),0|S,13),l[(s=e+(i<<1<<2)|0)>>2]=(0|l[s>>2])-c,i=i+1|0}while((0|i)!=(0|n))}if(a){r=n+-1|0,i=0;do{c=i,s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+(((0|(i=i+1|0))>=(0|n)?r:i)<<1<<2)>>2])+(0|l[e+(((0|c)>=(0|n)?r:c)<<1<<2)>>2])|0),((0|s)<0)<<31>>31|0,7233,0)),0|S,4096,0)),0|S,13),l[(c=e+((c<<1|1)<<2)|0)>>2]=(0|l[c>>2])+s}while((0|i)!=(0|t))}if(o){r=t+-1|0,i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=(0|l[e+((((0|i)>=(0|t)?r:i)<<1|1)<<2)>>2])+(0|l[e+(((0|i)<1?1:(((0|i)>(0|t)?t:i)<<1)-1|0)<<2)>>2])|0),((0|s)<0)<<31>>31|0,3633,0)),0|S,4096,0)),0|S,13),l[(c=e+(i<<1<<2)|0)>>2]=(0|l[c>>2])+s,i=i+1|0}while((0|i)!=(0|n))}if(a){i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=0|l[(c=e+((i<<1|1)<<2)|0)>>2]),((0|s)<0)<<31>>31|0,5038,0)),0|S,4096,0)),0|S,13),l[c>>2]=s,i=i+1|0}while((0|i)!=(0|t))}if(o){i=0;do{s=0|Ar(0|(s=0|gr(0|(s=0|mr(0|(s=0|l[(c=e+(i<<1<<2)|0)>>2]),((0|s)<0)<<31>>31|0,6659,0)),0|S,4096,0)),0|S,13),l[c>>2]=s,i=i+1|0}while((0|i)!=(0|n))}}},Ur];return{___muldi3:mr,___udivdi3:br,___uremdi3:wr,_bitshift64Ashr:xr,_bitshift64Lshr:Ar,_bitshift64Shl:Sr,_emscripten_replace_memory:function(e){return!(16777215&y(e)||y(e)<=16777215||y(e)>2147483648||(r=new i(e),a=new o(e),l=new s(e),h=new c(e),d=new u(e),new f(e),m=new p(e),_=new g(e),n=e,0))},_free:gi,_i64Add:gr,_i64Subtract:_r,_jp2_decode:function(e,t,n,i,r,o,a,s,c,h,u){e|=0,t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,c|=0,h|=0,u|=0;var d,f,p,m=0,g=0;if(p=w,w=w+8272|0,g=p+16|0,m=p,l[(d=p+12|0)>>2]=0,Le(f=0|xe(1375686655==(0|l[e>>2])?0:2),1,0),Re(f,2,0),Pe(f,3,0),Ie(g),l[m>>2]=e,l[m+4>>2]=e,l[m+8>>2]=t,m=0|Fe(m,1),!(0|Be(f,g)))return fr(4211),X(m),Se(f),w=p,1;if(!(0|ke(m,f,d)))return fr(4263),X(m),Se(f),ye(0|l[d>>2]),w=p,1;if(!(0|Ae(f,m,0|l[d>>2])))return fr(4313),Se(f),X(m),ye(0|l[d>>2]),w=p,1;switch(e=0|l[d>>2],l[r>>2]=l[e+8>>2],l[o>>2]=l[e+12>>2],l[a>>2]=l[e+16>>2],g=0|l[(t=e+24|0)>>2],l[c>>2]=l[g+24>>2],l[h>>2]=l[g+32>>2],l[s>>2]=l[g+28>>2],l[u>>2]=l[e+20>>2],e=0|I(0|I(l[r>>2]<<2,0|l[o>>2]),0|l[a>>2]),l[i>>2]=e,h=0|mi(e),l[n>>2]=h,0|l[a>>2]){case 1:Er(0|h,0|l[44+(0|l[t>>2])>>2],0|e);break;case 3:if((0|(c=0|I(0|l[o>>2],0|l[r>>2])))>0){s=0|l[t>>2],t=0|l[s+44>>2],u=0|l[s+96>>2],s=0|l[s+148>>2],e=0;do{l[h+((g=3*e|0)<<2)>>2]=l[t+(e<<2)>>2],l[h+(g+1<<2)>>2]=l[u+(e<<2)>>2],l[h+(g+2<<2)>>2]=l[s+(e<<2)>>2],e=e+1|0}while((0|e)<(0|c))}}return X(m),Se(f),ye(0|l[d>>2]),w=p,0},_jp2_encode:function(e,t,n,i,r,o,a,s,c,u){e|=0,t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,c|=0,u|=0;var f,p,g,_=0,y=0,v=0,b=0,x=0,A=0,S=0;g=w,w=w+18880|0,_=g+16|0,x=g,Ce(p=g+160|0),l[p+18200>>2]=0,l[p+4788>>2]=1,l[p+20>>2]=1;e:do{if(r)m[p+4792>>2]=+(0|r);else switch(0|i){case 0:case 100:m[p+4792>>2]=0;break e;default:m[p+5192>>2]=+(0|i),l[p+28>>2]=1;break e}}while(0);if(l[_+24>>2]=n,l[_+28>>2]=n,l[_+32>>2]=0,l[_>>2]=1,l[_+4>>2]=1,l[_+8>>2]=e,l[_+12>>2]=t,l[_+60>>2]=n,l[_+64>>2]=n,l[_+68>>2]=0,l[_+36>>2]=1,l[_+40>>2]=1,l[_+44>>2]=e,l[_+48>>2]=t,l[_+96>>2]=n,l[_+100>>2]=n,l[_+104>>2]=0,l[_+72>>2]=1,l[_+76>>2]=1,l[_+80>>2]=e,l[_+84>>2]=t,l[_+132>>2]=n,l[_+136>>2]=n,l[_+140>>2]=0,l[_+108>>2]=1,l[_+112>>2]=1,l[_+116>>2]=e,l[_+120>>2]=t,!(f=0|_e(4,_,1)))return w=g,0;if(16==(0|n)){if((0|t)>0&(0|e)>0){v=0|l[f+24>>2],r=0|l[v+200>>2],n=0|l[v+44>>2],y=0|l[v+96>>2],v=0|l[v+148>>2],_=0;do{b=0|I(_,e),i=0;do{S=(A=i+b|0)<<2,l[n+(A<<2)>>2]=d[o+(S<<1)>>1],l[y+(A<<2)>>2]=d[o+((1|S)<<1)>>1],l[v+(A<<2)>>2]=d[o+((2|S)<<1)>>1],l[r+(A<<2)>>2]=d[o+((3|S)<<1)>>1],i=i+1|0}while((0|i)!=(0|e));_=_+1|0}while((0|_)!=(0|t))}}else if((0|t)>0&(0|e)>0){v=0|l[f+24>>2],r=0|l[v+200>>2],n=0|l[v+44>>2],y=0|l[v+96>>2],v=0|l[v+148>>2],_=0;do{b=0|I(_,e),i=0;do{A=(S=i+b|0)<<2,l[n+(S<<2)>>2]=h[o+A>>0],l[y+(S<<2)>>2]=h[o+(1|A)>>0],l[v+(S<<2)>>2]=h[o+(2|A)>>0],l[r+(S<<2)>>2]=h[o+(3|A)>>0],i=i+1|0}while((0|i)!=(0|e));_=_+1|0}while((0|_)!=(0|t))}return l[f>>2]=0,l[f+4>>2]=0,l[f+8>>2]=e,l[f+12>>2]=t,(0|s)>0&&(l[f+28>>2]=a,l[f+32>>2]=s),Le(0,1,0),Re(0,2,0),Pe(0,3,0),Le(r=0|we(2),1,0),Re(r,2,0),Pe(r,3,0),De(r,p,f),i=0|mi(67108864),l[x>>2]=i,l[(_=x+4|0)>>2]=i,l[x+8>>2]=67108864,(i=0|Fe(x,0))?0|Oe(r,f,i)&&0|Ee(r,i)&&0|Te(r,i)?(A=0|l[x>>2],x=0|mi(S=(0|l[_>>2])-A|0),l[c>>2]=x,Er(0|x,0|A,0|S),l[u>>2]=S,X(i),Se(r),ye(f),w=g,0|(S=1)):(X(i),Se(r),ye(f),w=g,0|(S=0)):(w=g,0|(S=0))},_jp2_version:function(){return 4427},_llvm_bswap_i32:Mr,_malloc:mi,_memcpy:Er,_memset:Tr,_opj_create_compress:we,_opj_create_decompress:xe,_opj_decode:Ae,_opj_decode_tile_data:function(e,t,n,i,r){return t|=0,i|=0,0!=(0|(e|=0))&0!=(0|(n|=0))&0!=(0|(r|=0))&&0|l[e+68>>2]?0|(r=0|qr[7&l[e+12>>2]](0|l[e+40>>2],t,n,i,r,e+44|0)):0|(r=0)},_opj_destroy_codec:Se,_opj_destroy_cstr_index:function(e){var t;(t=0|l[(e|=0)>>2])&&(Je(t),l[e>>2]=0)},_opj_destroy_cstr_info:Me,_opj_dump_codec:function(e,t,n){t|=0,n|=0,(e|=0)&&to[15&l[e+72>>2]](0|l[e+40>>2],t,n)},_opj_encode:Ee,_opj_end_compress:Te,_opj_end_decompress:function(e,t){return 0!=(0|(e|=0))&0!=(0|(t|=0))&&0|l[e+68>>2]?0|(t=0|Yr[63&l[e+16>>2]](0|l[e+40>>2],t,e+44|0)):0|(t=0)},_opj_get_cstr_index:function(e){return(e|=0)?0|(e=0|Wr[15&l[e+80>>2]](0|l[e+40>>2])):0|(e=0)},_opj_get_cstr_info:function(e){return(e|=0)?0|(e=0|Wr[15&l[e+76>>2]](0|l[e+40>>2])):0|(e=0)},_opj_get_decoded_tile:function(e,t,n,i){return n|=0,i|=0,0!=(0|(e|=0))&0!=(0|(t|=0))&&0|l[e+68>>2]?0|(i=0|Jr[3&l[e+32>>2]](0|l[e+40>>2],t,n,e+44|0,i)):0|(i=0)},_opj_image_create:_e,_opj_image_destroy:ye,_opj_image_tile_create:function(e,t,n){var i,r;if(e|=0,t|=0,n|=0,!(i=0|je(1,36)))return 0|i;if(l[i+20>>2]=n,l[i+16>>2]=e,r=0|je(e,52),l[i+24>>2]=r,r){if(!e)return 0|i;n=0;do{l[r+(52*n|0)>>2]=l[t+(36*n|0)>>2],l[r+(52*n|0)+4>>2]=l[t+(36*n|0)+4>>2],l[r+(52*n|0)+8>>2]=l[t+(36*n|0)+8>>2],l[r+(52*n|0)+12>>2]=l[t+(36*n|0)+12>>2],l[r+(52*n|0)+16>>2]=l[t+(36*n|0)+16>>2],l[r+(52*n|0)+20>>2]=l[t+(36*n|0)+20>>2],l[r+(52*n|0)+24>>2]=l[t+(36*n|0)+24>>2],l[r+(52*n|0)+32>>2]=l[t+(36*n|0)+32>>2],l[r+(52*n|0)+44>>2]=0,n=n+1|0}while((0|n)!=(0|e));return 0|i}return 0|(n=0|l[i+28>>2])&&Ve(n),Ve(i),0},_opj_read_header:ke,_opj_read_tile_header:function(e,t,n,i,r,o,a,s,c,h){return r|=0,o|=0,a|=0,s|=0,c|=0,h|=0,0!=(0|(n|=0))&0!=(0|(e|=0))&0!=(0|(t|=0))&0!=(0|(i|=0))&&0|l[e+68>>2]?0|(h=0|Kr[3&l[e+8>>2]](0|l[e+40>>2],n,i,r,o,a,s,c,h,t,e+44|0)):0|(h=0)},_opj_set_MCT:function(e,t,n,i){e|=0,t|=0,n|=0;var o,s=0,c=0;return o=0|I(c=(i|=0)<<2,i),i=0|d[(s=e+18704|0)>>1],a[s>>1]=0==(32768&i|0)?-32512:65535&(256|i),l[e+5608>>2]=1,r[e+18690>>0]=2,s=0|Ne(o+c|0),l[(i=e+18696|0)>>2]=s,s?(Er(0|s,0|t,0|o),Er((0|l[i>>2])+o|0,0|n,0|c),0|(c=1)):0|(c=0)},_opj_set_decode_area:function(e,t,n,i,r,o){return t|=0,n|=0,i|=0,r|=0,o|=0,(e|=0)&&0|l[e+68>>2]?0|(o=0|Qr[3&l[e+28>>2]](0|l[e+40>>2],t,n,i,r,o,e+44|0)):0|(o=0)},_opj_set_decoded_resolution_factor:function(e,t){return t|=0,(e|=0)?0|(t=0|Yr[63&l[e+36>>2]](0|l[e+40>>2],t,e+44|0)):0|(t=0)},_opj_set_default_decoder_parameters:Ie,_opj_set_default_encoder_parameters:Ce,_opj_set_error_handler:Pe,_opj_set_info_handler:Le,_opj_set_warning_handler:Re,_opj_setup_decoder:Be,_opj_setup_encoder:De,_opj_start_compress:Oe,_opj_stream_create:Z,_opj_stream_create_buffer_stream:Fe,_opj_stream_create_default_file_stream:function(e,t){return 0|Ge(e|=0,1048576,t|=0)},_opj_stream_create_file_stream:Ge,_opj_stream_default_create:Y,_opj_stream_destroy:X,_opj_stream_set_read_function:J,_opj_stream_set_seek_function:q,_opj_stream_set_skip_function:Q,_opj_stream_set_user_data:K,_opj_stream_set_user_data_length:$,_opj_stream_set_write_function:ee,_opj_version:function(){return 4427},_opj_write_tile:function(e,t,n,i,r){return t|=0,i|=0,0!=(0|(n|=0))&0!=(0|(e|=0))&0!=(0|(r|=0))?0|l[e+68>>2]?0|(r=0):0|(r=0|qr[7&l[e+8>>2]](0|l[e+40>>2],t,n,i,r,e+44|0)):0|(r=0)},_rintf:Ir,_sbrk:Cr,dynCall_di:function(e,t){return t|=0,+Vr[3&(e|=0)](0|t)},dynCall_ii:function(e,t){return t|=0,0|Wr[15&(e|=0)](0|t)},dynCall_iii:function(e,t,n){return t|=0,n|=0,0|Zr[7&(e|=0)](0|t,0|n)},dynCall_iiii:function(e,t,n,i){return t|=0,n|=0,i|=0,0|Yr[63&(e|=0)](0|t,0|n,0|i)},dynCall_iiiii:function(e,t,n,i,r){return t|=0,n|=0,i|=0,r|=0,0|Xr[63&(e|=0)](0|t,0|n,0|i,0|r)},dynCall_iiiiii:function(e,t,n,i,r,o){return t|=0,n|=0,i|=0,r|=0,o|=0,0|Jr[3&(e|=0)](0|t,0|n,0|i,0|r,0|o)},dynCall_iiiiiii:function(e,t,n,i,r,o,a){return t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,0|qr[7&(e|=0)](0|t,0|n,0|i,0|r,0|o,0|a)},dynCall_iiiiiiii:function(e,t,n,i,r,o,a,s){return t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,0|Qr[3&(e|=0)](0|t,0|n,0|i,0|r,0|o,0|a,0|s)},dynCall_iiiiiiiiiiii:function(e,t,n,i,r,o,a,s,l,c,h,u){return t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0,l|=0,c|=0,h|=0,u|=0,0|Kr[3&(e|=0)](0|t,0|n,0|i,0|r,0|o,0|a,0|s,0|l,0|c,0|h,0|u)},dynCall_vi:function(e,t){t|=0,$r[7&(e|=0)](0|t)},dynCall_vii:function(e,t,n){t|=0,n|=0,eo[7&(e|=0)](0|t,0|n)},dynCall_viii:function(e,t,n,i){t|=0,n|=0,i|=0,to[15&(e|=0)](0|t,0|n,0|i)},dynCall_viiii:function(e,t,n,i,r){t|=0,n|=0,i|=0,r|=0,no[3&(e|=0)](0|t,0|n,0|i,0|r)},establishStackSpace:function(e,t){w=e|=0},getTempRet0:function(){return 0|S},runPostSets:function(){},setTempRet0:function(e){S=e|=0},setThrew:function(e,t){A||(A=e|=0)},stackAlloc:function(e){var t;return t=w,w=15+(w=w+(e|=0)|0)&-16,0|t},stackRestore:function(e){w=e|=0},stackSave:function(){return 0|w}}}(o.asmGlobalArg,o.asmLibraryArg,O),wt=(o.___muldi3=bt.___muldi3,o.___udivdi3=bt.___udivdi3,o.___uremdi3=bt.___uremdi3,o._bitshift64Ashr=bt._bitshift64Ashr,o._bitshift64Lshr=bt._bitshift64Lshr,o._bitshift64Shl=bt._bitshift64Shl,o._emscripten_replace_memory=bt._emscripten_replace_memory),xt=(o._free=bt._free,o._i64Add=bt._i64Add,o._i64Subtract=bt._i64Subtract,o._jp2_decode=bt._jp2_decode,o._jp2_encode=bt._jp2_encode,o._jp2_version=bt._jp2_version,o._llvm_bswap_i32=bt._llvm_bswap_i32,o._malloc=bt._malloc),At=(o._memcpy=bt._memcpy,o._memset=bt._memset,o._opj_create_compress=bt._opj_create_compress,o._opj_create_decompress=bt._opj_create_decompress,o._opj_decode=bt._opj_decode,o._opj_decode_tile_data=bt._opj_decode_tile_data,o._opj_destroy_codec=bt._opj_destroy_codec,o._opj_destroy_cstr_index=bt._opj_destroy_cstr_index,o._opj_destroy_cstr_info=bt._opj_destroy_cstr_info,o._opj_dump_codec=bt._opj_dump_codec,o._opj_encode=bt._opj_encode,o._opj_end_compress=bt._opj_end_compress,o._opj_end_decompress=bt._opj_end_decompress,o._opj_get_cstr_index=bt._opj_get_cstr_index,o._opj_get_cstr_info=bt._opj_get_cstr_info,o._opj_get_decoded_tile=bt._opj_get_decoded_tile,o._opj_image_create=bt._opj_image_create,o._opj_image_destroy=bt._opj_image_destroy,o._opj_image_tile_create=bt._opj_image_tile_create,o._opj_read_header=bt._opj_read_header,o._opj_read_tile_header=bt._opj_read_tile_header,o._opj_set_MCT=bt._opj_set_MCT,o._opj_set_decode_area=bt._opj_set_decode_area,o._opj_set_decoded_resolution_factor=bt._opj_set_decoded_resolution_factor,o._opj_set_default_decoder_parameters=bt._opj_set_default_decoder_parameters,o._opj_set_default_encoder_parameters=bt._opj_set_default_encoder_parameters,o._opj_set_error_handler=bt._opj_set_error_handler,o._opj_set_info_handler=bt._opj_set_info_handler,o._opj_set_warning_handler=bt._opj_set_warning_handler,o._opj_setup_decoder=bt._opj_setup_decoder,o._opj_setup_encoder=bt._opj_setup_encoder,o._opj_start_compress=bt._opj_start_compress,o._opj_stream_create=bt._opj_stream_create,o._opj_stream_create_buffer_stream=bt._opj_stream_create_buffer_stream,o._opj_stream_create_default_file_stream=bt._opj_stream_create_default_file_stream,o._opj_stream_create_file_stream=bt._opj_stream_create_file_stream,o._opj_stream_default_create=bt._opj_stream_default_create,o._opj_stream_destroy=bt._opj_stream_destroy,o._opj_stream_set_read_function=bt._opj_stream_set_read_function,o._opj_stream_set_seek_function=bt._opj_stream_set_seek_function,o._opj_stream_set_skip_function=bt._opj_stream_set_skip_function,o._opj_stream_set_user_data=bt._opj_stream_set_user_data,o._opj_stream_set_user_data_length=bt._opj_stream_set_user_data_length,o._opj_stream_set_write_function=bt._opj_stream_set_write_function,o._opj_version=bt._opj_version,o._opj_write_tile=bt._opj_write_tile,o._rintf=bt._rintf,o._sbrk=bt._sbrk,o.establishStackSpace=bt.establishStackSpace,o.getTempRet0=bt.getTempRet0,o.runPostSets=bt.runPostSets,o.setTempRet0=bt.setTempRet0,o.setThrew=bt.setThrew,o.stackAlloc=bt.stackAlloc),St=o.stackRestore=bt.stackRestore,Mt=o.stackSave=bt.stackSave;if(o.dynCall_di=bt.dynCall_di,o.dynCall_ii=bt.dynCall_ii,o.dynCall_iii=bt.dynCall_iii,o.dynCall_iiii=bt.dynCall_iiii,o.dynCall_iiiii=bt.dynCall_iiiii,o.dynCall_iiiiii=bt.dynCall_iiiiii,o.dynCall_iiiiiii=bt.dynCall_iiiiiii,o.dynCall_iiiiiiii=bt.dynCall_iiiiiiii,o.dynCall_iiiiiiiiiiii=bt.dynCall_iiiiiiiiiiii,o.dynCall_vi=bt.dynCall_vi,o.dynCall_vii=bt.dynCall_vii,o.dynCall_viii=bt.dynCall_viii,o.dynCall_viiii=bt.dynCall_viiii,o.asm=bt,o.ccall=S,o.getValue=E,o.writeArrayToMemory=xe,Re)if(De(Re)||("function"==typeof o.locateFile?Re=o.locateFile(Re):o.memoryInitializerPrefixURL&&(Re=o.memoryInitializerPrefixURL+Re)),u||d){var Et=o.readBinary(Re);G.set(Et,y)}else{Pe();var Tt=function(e){e.byteLength&&(e=new Uint8Array(e)),G.set(e,y),o.memoryInitializerRequest&&delete o.memoryInitializerRequest.response,Le()};function kt(){o.readAsync(Re,Tt,(function(){throw"could not load memory initializer "+Re}))}var It=ot(Re);if(It)Tt(It.buffer);else if(o.memoryInitializerRequest){function Ct(){var e=o.memoryInitializerRequest,t=e.response;if(200!==e.status&&0!==e.status){var n=ot(o.memoryInitializerRequestURL);if(!n)return console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+e.status+", retrying "+Re),void kt();t=n.buffer}Tt(t)}o.memoryInitializerRequest.response?setTimeout(Ct,0):o.memoryInitializerRequest.addEventListener("load",Ct)}else kt()}function Pt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Lt(e){function t(){o.calledRun||(o.calledRun=!0,v||(ge(),_e(),o.onRuntimeInitialized&&o.onRuntimeInitialized(),ve()))}e=e||o.arguments,ke>0||(me(),ke>0||o.calledRun||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t()))}function Rt(e,n){n&&o.noExitRuntime&&0===e||(o.noExitRuntime||(v=!0,Z=vt,ye(),o.onExit&&o.onExit(e)),u&&t.exit(e),o.quit(e,new Pt(e)))}function Bt(e){throw o.onAbort&&o.onAbort(e),void 0!==e?(o.print(e),o.printErr(e),e=JSON.stringify(e)):e="",v=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(o.then=function(e){if(o.calledRun)e(o);else{var t=o.onRuntimeInitialized;o.onRuntimeInitialized=function(){t&&t(),e(o)}}return o},Pt.prototype=new Error,Pt.prototype.constructor=Pt,Ce=function e(){o.calledRun||Lt(),o.calledRun||(Ce=e)},o.run=Lt,o.exit=Rt,o.abort=Bt,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return o.noExitRuntime=!0,Lt(),e}}).call(this,n("./node_modules/process/browser.js"),n("./node_modules/buffer/index.js").Buffer)},"./node_modules/assert/assert.js":function(e,t,n){"use strict";(function(t){function i(e,t){if(e===t)return 0;for(var n=e.length,i=t.length,r=0,o=Math.min(n,i);r=0;c--)if(h[c]!==u[c])return!1;for(c=h.length-1;c>=0;c--)if(!y(e[l=h[c]],t[l],n,i))return!1;return!0}(e,t,n,a))}return n?e===t:e==t}function v(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function b(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,n,i){var r;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(i=n,n=null),r=function(e){var t;try{e()}catch(e){t=e}return t}(t),i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!r&&g(r,n,"Missing expected exception"+i);var a="string"==typeof i,s=!e&&r&&!n;if((!e&&o.isError(r)&&a&&b(r,n)||s)&&g(r,n,"Got unwanted exception"+i),e&&r&&n&&!b(r,n)||!e&&r)throw r}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return p(m(e.actual),128)+" "+e.operator+" "+p(m(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||g;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var i=n.stack,r=f(t),o=i.indexOf("\n"+r);if(o>=0){var a=i.indexOf("\n",o+1);i=i.substring(a+1)}this.stack=i}}},o.inherits(u.AssertionError,Error),u.fail=g,u.ok=_,u.equal=function(e,t,n){e!=t&&g(e,t,n,"==",u.equal)},u.notEqual=function(e,t,n){e==t&&g(e,t,n,"!=",u.notEqual)},u.deepEqual=function(e,t,n){y(e,t,!1)||g(e,t,n,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,n){y(e,t,!0)||g(e,t,n,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,n){y(e,t,!1)&&g(e,t,n,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,n,i){y(t,n,!0)&&g(t,n,i,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,n){e!==t&&g(e,t,n,"===",u.strictEqual)},u.notStrictEqual=function(e,t,n){e===t&&g(e,t,n,"!==",u.notStrictEqual)},u.throws=function(e,t,n){w(!0,e,t,n)},u.doesNotThrow=function(e,t,n){w(!1,e,t,n)},u.ifError=function(e){if(e)throw e};var x=Object.keys||function(e){var t=[];for(var n in e)a.call(e,n)&&t.push(n);return t}}).call(this,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/base64-js/index.js":function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],i=t[1];return 3*(n+i)/4-i},t.toByteArray=function(e){for(var t,n=c(e),i=n[0],a=n[1],s=new o(function(e,t,n){return 3*(t+n)/4-n}(0,i,a)),l=0,h=a>0?i-4:i,u=0;u>16&255,s[l++]=t>>8&255,s[l++]=255&t;return 2===a&&(t=r[e.charCodeAt(u)]<<2|r[e.charCodeAt(u+1)]>>4,s[l++]=255&t),1===a&&(t=r[e.charCodeAt(u)]<<10|r[e.charCodeAt(u+1)]<<4|r[e.charCodeAt(u+2)]>>2,s[l++]=t>>8&255,s[l++]=255&t),s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,o=[],a=16383,s=0,l=n-r;sl?l:s+a));return 1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"=")),o.join("")};for(var i=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function h(e,t,n){for(var r,o,a=[],s=t;s>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},"./node_modules/buffer/index.js":function(e,t,n){"use strict";(function(e){var i=n("./node_modules/base64-js/index.js"),r=n("./node_modules/ieee754/index.js"),o=n("./node_modules/isarray/index.js");function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(e).length;default:if(i)return j(e).length;t=(""+t).toLowerCase(),i=!0}}function m(e,t,n){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,n);case"utf8":case"utf-8":return E(this,t,n);case"ascii":return k(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return M(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function g(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}function _(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,i,r);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,i,r){var o,a=1,s=e.length,l=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var h=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var u=!0,d=0;dr&&(i=r):i=r;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var a=0;a>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function M(e,t,n){return 0===t&&n===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,n))}function E(e,t,n){n=Math.min(e.length,n);for(var i=[],r=t;r239?4:c>223?3:c>191?2:1;if(r+u<=n)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&c)<<6|63&o)>127&&(h=l);break;case 3:o=e[r+1],a=e[r+2],128==(192&o)&&128==(192&a)&&(l=(15&c)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:o=e[r+1],a=e[r+2],s=e[r+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h),r+=u}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);for(var n="",i=0;i0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,i,r){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),c=this.slice(i,r),h=e.slice(t,n),u=0;ur)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return b(this,e,t,n);case"ascii":return w(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return A(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function k(e,t,n){var i="";n=Math.min(e.length,n);for(var r=t;rr)&&(n=r);for(var o="",a=t;an)throw new RangeError("Trying to access beyond buffer length")}function R(e,t,n,i,r,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function B(e,t,n,i){t<0&&(t=65535+t+1);for(var r=0,o=Math.min(e.length-n,2);r>>8*(i?r:1-r)}function D(e,t,n,i){t<0&&(t=4294967295+t+1);for(var r=0,o=Math.min(e.length-n,4);r>>8*(i?r:3-r)&255}function O(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(e,t,n,i,o){return o||O(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function G(e,t,n,i,o){return o||O(e,0,n,8),r.write(e,t,n,i,52,8),n+8}l.prototype.slice=function(e,t){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t0&&(r*=256);)i+=this[e+--t]*r;return i},l.prototype.readUInt8=function(e,t){return t||L(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||L(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||L(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||L(e,t,this.length);for(var i=this[e],r=1,o=0;++o=(r*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||L(e,t,this.length);for(var i=t,r=1,o=this[e+--i];i>0&&(r*=256);)o+=this[e+--i]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||L(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||L(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||L(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||L(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,i){e=+e,t|=0,n|=0,i||R(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+r]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):B(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):B(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);R(this,e,t,n,r-1,-r)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);R(this,e,t,n,r-1,-r)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):B(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):B(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return F(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return F(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return G(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return G(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,i){if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--r)e[r+t]=this[r+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(e){return i.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,i){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}}).call(this,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/const-ninf-float32/lib/index.js":function(e,t,n){"use strict";var i=new Float32Array(1);new Uint32Array(i.buffer)[0]=4286578688,e.exports=i[0]},"./node_modules/const-pinf-float32/lib/index.js":function(e,t,n){"use strict";var i=new Float32Array(1);new Uint32Array(i.buffer)[0]=2139095040,e.exports=i[0]},"./node_modules/dicom-parser/dist/dicomParser.min.js":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=79)}([function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(e){var i=n(73),r=n(72),o=n(38);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(e).length;default:if(i)return j(e).length;t=(""+t).toLowerCase(),i=!0}}function m(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}function g(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:_(e,t,n,i,r);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):_(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function _(e,t,n,i,r){var o,a=1,s=e.length,l=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var h=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var u=!0,d=0;dr&&(i=r):i=r;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var a=0;a>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function S(e,t,n){return 0===t&&n===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,n))}function M(e,t,n){n=Math.min(e.length,n);for(var i=[],r=t;r239?4:c>223?3:c>191?2:1;if(r+u<=n)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&c)<<6|63&o)>127&&(h=l);break;case 3:o=e[r+1],a=e[r+2],128==(192&o)&&128==(192&a)&&(l=(15&c)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:o=e[r+1],a=e[r+2],s=e[r+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h),r+=u}return function(e){var t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);for(var n="",i=0;ithis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,n);case"utf8":case"utf-8":return M(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return k(this,t,n);case"base64":return S(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,i,r){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),c=this.slice(i,r),h=e.slice(t,n),u=0;ur)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return y(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return w(this,e,t,n);case"base64":return x(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var E=4096;function T(e,t,n){var i="";n=Math.min(e.length,n);for(var r=t;ri)&&(n=i);for(var r="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,i,r,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function R(e,t,n,i){t<0&&(t=65535+t+1);for(var r=0,o=Math.min(e.length-n,2);r>>8*(i?r:1-r)}function B(e,t,n,i){t<0&&(t=4294967295+t+1);for(var r=0,o=Math.min(e.length-n,4);r>>8*(i?r:3-r)&255}function D(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function O(e,t,n,i,o){return o||D(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function F(e,t,n,i,o){return o||D(e,0,n,8),r.write(e,t,n,i,52,8),n+8}l.prototype.slice=function(e,t){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t0&&(r*=256);)i+=this[e+--t]*r;return i},l.prototype.readUInt8=function(e,t){return t||P(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||P(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||P(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||P(e,t,this.length);for(var i=this[e],r=1,o=0;++o=(r*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||P(e,t,this.length);for(var i=t,r=1,o=this[e+--i];i>0&&(r*=256);)o+=this[e+--i]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||P(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||P(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||P(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||P(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||P(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||P(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,i){e=+e,t|=0,n|=0,i||L(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+r]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):B(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):B(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);L(this,e,t,n,r-1,-r)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):B(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):B(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return O(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return O(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return F(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return F(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,i){if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--r)e[r+t]=this[r+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(e){return i.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(G,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,i){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}}).call(this,n(0))},function(e,t,n){"use strict";var i=n(10),r=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=u;var o=n(6);o.inherits=n(5);var a=n(35),s=n(18);o.inherits(u,a);for(var l=r(s.prototype),c=0;c1)for(var n=1;n0){var n=(0,r.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\/g);return null===n?1:n.length+1}}},{key:"string",value:function(e,t){var n=this.elements[e];if(n&&n.length>0){var i=(0,r.readFixedString)(this.byteArray,n.dataOffset,n.length);return t>=0?i.split("\\")[t].trim():i.trim()}}},{key:"text",value:function(e,t){var n=this.elements[e];if(n&&n.length>0){var i=(0,r.readFixedString)(this.byteArray,n.dataOffset,n.length);return t>=0?i.split("\\")[t].replace(/ +$/,""):i.replace(/ +$/,"")}}},{key:"floatString",value:function(e,t){var n=this.elements[e];if(n&&n.length>0){t=void 0!==t?t:0;var i=this.string(e,t);if(void 0!==i)return parseFloat(i)}}},{key:"intString",value:function(e,t){var n=this.elements[e];if(n&&n.length>0){t=void 0!==t?t:0;var i=this.string(e,t);if(void 0!==i)return parseInt(i)}}},{key:"attributeTag",value:function(e){var t=this.elements[e];if(t&&4===t.length){var n=o(t,this.byteArrayParser).readUint16,i=this.byteArray,r=t.dataOffset;return"x"+("00000000"+(256*n(i,r)*256+n(i,r+2)).toString(16)).substr(-8)}}}]),e}();t.default=a},function(e,t,n){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var i in n)r(n,i)&&(e[i]=n[i])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,n,i,r){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+i),r);else for(var o=0;o=i.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=n,this.byteArray=i,this.position=r||0,this.warnings=[]}return r(t,[{key:"seek",value:function(e){if(this.position+e<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=e}},{key:"readByteStream",value:function(e){if(this.position+e>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var n=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,n)}},{key:"readUint16",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:"readUint32",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:"readFixedString",value:function(e){var t=(0,a.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=s}).call(this,n(1).Buffer)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(void 0===e)throw"dicomParser.readSequenceItem: missing required parameter 'byteStream'";var t={tag:(0,r.default)(e),length:e.readUint32(),dataOffset:e.position};if("xfffee000"!==t.tag)throw"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset "+e.position;return t};var i,r=(i=n(4))&&i.__esModule?i:{default:i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readFixedString=function(e,t,n){if(n<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(t+n>e.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var i,r="",o=0;o3&&void 0!==arguments[3]?arguments[3]:{};if(n=void 0===n?t.byteArray.length:n,void 0===t)throw"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'";if(nt.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var o=e.elements;t.positionn)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"},t.parseDicomDataSetImplicit=function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(n=void 0===n?e.byteArray.length:n,void 0===t)throw"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'";if(nt.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var o=e.elements;t.position= 0";if(n>=t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(s<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(n+s>t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var h=new r.default(e.byteArrayParser,e.byteArray,t.dataOffset),u=(0,o.default)(h);if("xfffee000"!==u.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";h.seek(u.length);var d=h.position;if(1===s)return(0,a.default)(h.byteArray,d+c[n].offset+8,c[n].length);for(var f=l(c,n,s),p=(0,i.default)(h.byteArray,f),m=0,g=n;g-1?i:o.nextTick;y.WritableState=_;var c=n(6);c.inherits=n(5);var h,u={deprecate:n(61)},d=n(34),f=n(9).Buffer,p=r.Uint8Array||function(){},m=n(33);function g(){}function _(e,t){s=s||n(2),e=e||{};var i=t instanceof s;this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,c=e.writableHighWaterMark,h=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(c||0===c)?c:h,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,i=n.sync,r=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,i,r){--t.pendingcb,n?(o.nextTick(r,i),o.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit("error",i)):(r(i),e._writableState.errorEmitted=!0,e.emit("error",i),S(e,t))}(e,n,i,t,r);else{var a=x(n);a||n.corked||n.bufferProcessing||!n.bufferedRequest||w(e,n),i?l(b,e,n,a,r):b(e,n,a,r)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function y(e){if(s=s||n(2),!(h.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),d.call(this)}function v(e,t,n,i,r,o,a){t.writelen=i,t.writecb=a,t.writing=!0,t.sync=!0,n?e._writev(r,t.onwrite):e._write(r,o,t.onwrite),t.sync=!1}function b(e,t,n,i){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,i(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var i=t.bufferedRequestCount,r=new Array(i),o=t.corkedRequestsFree;o.entry=n;for(var s=0,l=!0;n;)r[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;r.allBuffers=l,v(e,t,!0,t.length,r,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,h=n.encoding,u=n.callback;if(v(e,t,!1,t.objectMode?1:c.length,c,h,u),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function x(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),S(e,t)}))}function S(e,t){var n=x(t);return n&&(function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(A,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}c.inherits(y,d),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,"buffer",{get:u.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(h=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!h.call(this,e)||this===y&&e&&e._writableState instanceof _}})):h=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,t,n){var i,r=this._writableState,a=!1,s=!r.objectMode&&(i=e,f.isBuffer(i)||i instanceof p);return s&&!f.isBuffer(e)&&(e=function(e){return f.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=r.defaultEncoding),"function"!=typeof n&&(n=g),r.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),o.nextTick(t,n)}(this,n):(s||function(e,t,n,i){var r=!0,a=!1;return null===n?a=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),o.nextTick(i,a),r=!1),r}(this,r,e,n))&&(r.pendingcb++,a=function(e,t,n,i,r,o){if(!n){var a=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=f.from(t,n)),t}(t,i,r);i!==a&&(n=!0,r="buffer",i=a)}var s=t.objectMode?1:i.length;t.length+=s;var l=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,t,n){var i=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||function(e,t,n){t.ending=!0,S(e,t),n&&(t.finished?o.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,i,n)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=m.destroy,y.prototype._undestroy=m.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(3),n(63).setImmediate,n(0))},function(e,t,n){(t=e.exports=n(35)).Stream=t,t.Readable=t,t.Writable=n(18),t.Duplex=n(2),t.Transform=n(31),t.PassThrough=n(60)},function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function r(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,a,s,l,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(o(n=this._events[e]))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(r(n))for(s=Array.prototype.slice.call(arguments,1),a=(c=n.slice()).length,l=0;l0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!i(t))throw TypeError("listener must be a function");var n=!1;function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var n,o,a,s;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,o=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(r(n)){for(s=a;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){o=s;break}if(o<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(o,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(i(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>e.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>e.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";var n=e[t]+(e[t+1]<<8);return 32768&n&&(n=n-65535-1),n},readUint32:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var n=new Uint8Array(4);return n[0]=e[t],n[1]=e[t+1],n[2]=e[t+2],n[3]=e[t+3],new Float32Array(n.buffer)[0]},readDouble:function(e,t){if(t<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>e.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var n=new Uint8Array(8);return n[0]=e[t],n[1]=e[t+1],n[2]=e[t+2],n[3]=e[t+3],n[4]=e[t+4],n[5]=e[t+5],n[6]=e[t+6],n[7]=e[t+7],new Float64Array(n.buffer)[0]}}},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(t,n){if(void 0!==e&&t instanceof e)return e.alloc(n);if(t instanceof Uint8Array)return new Uint8Array(n);throw"dicomParser.alloc: unknown type for byteArray"}}).call(this,n(1).Buffer)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){if(void 0===e)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";var a={tag:(0,o.default)(e),length:e.readUint32(),dataOffset:e.position};return 4294967295===a.length&&(a.hadUndefinedLength=!0),a.tag===t?a:s(a,e,n)?((0,r.default)(e,a),a):a.hadUndefinedLength?((0,i.default)(e,a),a):(e.seek(a.length),a)};var i=a(n(24)),r=a(n(39)),o=a(n(4));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,n){if(void 0!==n)return"SQ"===n(e.tag);if(t.position+4<=t.byteArray.length){var i=(0,o.default)(t);return t.seek(-4),"xfffee000"===i||"xfffee0dd"===i}return t.warnings.push("eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR"),!1}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(void 0===e)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";for(var n=e.byteArray.length-8;e.position<=n;)if(65534===e.readUint16()&&57357===e.readUint16())return 0!==e.readUint32()&&e.warnings("encountered non zero length following item delimiter at position "+(e.position-4)+" while reading element of undefined length with tag "+t.tag),void(t.length=e.position-t.dataOffset);t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return i[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split("^");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,i,s){if(i=i||t.basicOffsetTable,s=s||t.fragments,void 0===e)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'";if(void 0===n)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'";if(void 0===i)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments";if(0===i.length)throw"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries";if(n<0)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0";if(n>=i.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var l=i[n],c=o(s,l);if(void 0===c)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";var h=a(n,i,s,c);return(0,r.default)(e,t,c,h,s)};var i,r=(i=n(17))&&i.__esModule?i:{default:i},o=function(e,t){for(var n=0;n>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,r){var o=i,a=r+n;e^=-1;for(var s=r;s>>8^o[255&(e^t[s])];return-1^e}},function(e,t,n){"use strict";e.exports=function(e,t,n,i){for(var r=65535&e|0,o=e>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(r=r+t[i++]|0)|0}while(--a);r%=65521,o%=65521}return r|o<<16|0}},function(e,t,n){(function(e,i){var r=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],n=0;n=o)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),l=i[n];n=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),p(n)?i.showHidden=n:n&&t._extend(i,n),y(i.showHidden)&&(i.showHidden=!1),y(i.depth)&&(i.depth=2),y(i.colors)&&(i.colors=!1),y(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),h(i,e,i.depth)}function l(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function c(e,t){return e}function h(e,n,i){if(e.customInspect&&n&&A(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var r=n.inspect(i,e);return _(r)||(r=h(e,r,i)),r}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(_(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return g(t)?e.stylize(""+t,"number"):p(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}(e,n);if(o)return o;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),x(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return u(n);if(0===a.length){if(A(n)){var l=n.name?": "+n.name:"";return e.stylize("[Function"+l+"]","special")}if(v(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return e.stylize(Date.prototype.toString.call(n),"date");if(x(n))return u(n)}var c,b="",S=!1,M=["{","}"];return f(n)&&(S=!0,M=["[","]"]),A(n)&&(b=" [Function"+(n.name?": "+n.name:"")+"]"),v(n)&&(b=" "+RegExp.prototype.toString.call(n)),w(n)&&(b=" "+Date.prototype.toUTCString.call(n)),x(n)&&(b=" "+u(n)),0!==a.length||S&&0!=n.length?i<0?v(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=S?function(e,t,n,i,r){for(var o=[],a=0,s=t.length;a60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}(c,b,M)):M[0]+b+M[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,i,r,o){var a,s,l;if((l=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),T(i,r)||(a="["+r+"]"),s||(e.seen.indexOf(l.value)<0?(s=m(n)?h(e,l.value,null):h(e,l.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&r.match(/^\d+$/))return s;(a=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function m(e){return null===e}function g(e){return"number"==typeof e}function _(e){return"string"==typeof e}function y(e){return void 0===e}function v(e){return b(e)&&"[object RegExp]"===S(e)}function b(e){return"object"==typeof e&&null!==e}function w(e){return b(e)&&"[object Date]"===S(e)}function x(e){return b(e)&&("[object Error]"===S(e)||e instanceof Error)}function A(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function M(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(o)&&(o=i.env.NODE_DEBUG||""),e=e.toUpperCase(),!a[e])if(new RegExp("\\b"+e+"\\b","i").test(o)){var n=i.pid;a[e]=function(){var i=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,i)}}else a[e]=function(){};return a[e]},t.inspect=s,s.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]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=m,t.isNullOrUndefined=function(e){return null==e},t.isNumber=g,t.isString=_,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=v,t.isObject=b,t.isDate=w,t.isError=x,t.isFunction=A,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n(54);var E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function T(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,n;console.log("%s - %s",(n=[M((e=new Date).getHours()),M(e.getMinutes()),M(e.getSeconds())].join(":"),[e.getDate(),E[e.getMonth()],n].join(" ")),t.format.apply(t,arguments))},t.inherits=n(53),t._extend=function(e,t){if(!t||!b(t))return e;for(var n=Object.keys(t),i=n.length;i--;)e[n[i]]=t[n[i]];return e}}).call(this,n(0),n(3))},function(e,t,n){"use strict";(function(t){function i(e,t){if(e===t)return 0;for(var n=e.length,i=t.length,r=0,o=Math.min(n,i);r=0;c--)if(h[c]!==u[c])return!1;for(c=h.length-1;c>=0;c--)if(!y(e[l=h[c]],t[l],n,i))return!1;return!0}(e,t,n,a))}return n?e===t:e==t}function v(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function b(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,n,i){var r;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(i=n,n=null),r=function(e){var t;try{e()}catch(e){t=e}return t}(t),i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!r&&g(r,n,"Missing expected exception"+i);var a="string"==typeof i,s=!e&&r&&!n;if((!e&&o.isError(r)&&a&&b(r,n)||s)&&g(r,n,"Got unwanted exception"+i),e&&r&&n&&!b(r,n)||!e&&r)throw r}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(m(this.actual),128)+" "+this.operator+" "+p(m(this.expected),128),this.generatedMessage=!0);var t=e.stackStartFunction||g;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var i=n.stack,r=f(t),o=i.indexOf("\n"+r);if(o>=0){var a=i.indexOf("\n",o+1);i=i.substring(a+1)}this.stack=i}}},o.inherits(u.AssertionError,Error),u.fail=g,u.ok=_,u.equal=function(e,t,n){e!=t&&g(e,t,n,"==",u.equal)},u.notEqual=function(e,t,n){e==t&&g(e,t,n,"!=",u.notEqual)},u.deepEqual=function(e,t,n){y(e,t,!1)||g(e,t,n,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,n){y(e,t,!0)||g(e,t,n,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,n){y(e,t,!1)&&g(e,t,n,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,n,i){y(t,n,!0)&&g(t,n,i,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,n){e!==t&&g(e,t,n,"===",u.strictEqual)},u.notStrictEqual=function(e,t,n){e===t&&g(e,t,n,"!==",u.notStrictEqual)},u.throws=function(e,t,n){w(!0,e,t,n)},u.doesNotThrow=function(e,t,n){w(!1,e,t,n)},u.ifError=function(e){if(e)throw e};var x=Object.keys||function(e){var t=[];for(var n in e)a.call(e,n)&&t.push(n);return t}}).call(this,n(0))},function(e,t,n){"use strict";e.exports=o;var i=n(2),r=n(6);function o(e){if(!(this instanceof o))return new o(e);i.call(this,e),this._transformState={afterTransform:function(e,t){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(!i)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),i(e);var r=this._readableState;r.reading=!1,(r.needReadable||r.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�".repeat(n);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�".repeat(n+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�".repeat(n+2)}}(this,e,t);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var i=n.charCodeAt(n.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function h(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0?(r>0&&(e.lastNeed=r-1),r):--i=0?(r>0&&(e.lastNeed=r-2),r):--i=0?(r>0&&(2===r?r=0:e.lastNeed=r-3),r):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var i=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";var i=n(10);function r(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||i.nextTick(r,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(i.nextTick(r,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){e.exports=n(20).EventEmitter},function(e,t,n){"use strict";(function(t,i){var r=n(10);e.exports=v;var o,a=n(38);v.ReadableState=y,n(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=n(34),c=n(9).Buffer,h=t.Uint8Array||function(){},u=n(6);u.inherits=n(5);var d=n(66),f=void 0;f=d&&d.debuglog?d.debuglog("stream"):function(){};var p,m=n(65),g=n(33);u.inherits(v,l);var _=["error","close","destroy","pause","resume"];function y(e,t){e=e||{};var i=t instanceof(o=o||n(2));this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,a=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new m,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=n(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function v(e){if(o=o||n(2),!(this instanceof v))return new v(e);this._readableState=new y(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function b(e,t,n,i,r){var o,a=e._readableState;return null===t?(a.reading=!1,function(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,S(e)}}(e,a)):(r||(o=function(e,t){var n,i;return i=t,c.isBuffer(i)||i instanceof h||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}(a,t)),o?e.emit("error",o):a.objectMode||t&&t.length>0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),i?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(t=a.decoder.write(t),a.objectMode||0!==t.length?w(e,a,t,!1):E(e,a)):w(e,a,t,!1))):i||(a.reading=!1)),function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=x?e=x:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(f("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?r.nextTick(M,e):M(e))}function M(e){f("emit readable"),e.emit("readable"),C(e)}function E(e,t){t.readingMore||(t.readingMore=!0,r.nextTick(T,e,t))}function T(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var i;return eo.length?o.length:e;if(a===o.length?r+=o:r+=o.slice(0,e),0==(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t):function(e,t){var n=c.allocUnsafe(e),i=t.head,r=1;for(i.data.copy(n),e-=i.data.length;i=i.next;){var o=i.data,a=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,a),0==(e-=a)){a===o.length?(++r,i.next?t.head=i.next:t.head=t.tail=null):(t.head=i,i.data=o.slice(a));break}++r}return t.length-=r,n}(e,t),i}(e,t.buffer,t.decoder),n);var n}function L(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,r.nextTick(R,t,e))}function R(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function B(e,t){for(var n=0,i=e.length;n=t.highWaterMark||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?L(this):S(this),null;if(0===(e=A(e,t))&&t.ended)return 0===t.length&&L(this),null;var i,r=t.needReadable;return f("need readable",r),(0===t.length||t.length-e0?P(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&L(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},v.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,f("pipe count=%d opts=%j",o.pipesCount,t);var l=t&&!1===t.end||e===i.stdout||e===i.stderr?y:c;function c(){f("onend"),e.end()}o.endEmitted?r.nextTick(l):n.once("end",l),e.on("unpipe",(function t(i,r){f("onunpipe"),i===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,f("cleanup"),e.removeListener("close",g),e.removeListener("finish",_),e.removeListener("drain",h),e.removeListener("error",m),e.removeListener("unpipe",t),n.removeListener("end",c),n.removeListener("end",y),n.removeListener("data",p),u=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}));var h=function(e){return function(){var t=e._readableState;f("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,C(e))}}(n);e.on("drain",h);var u=!1,d=!1;function p(t){f("ondata"),d=!1,!1!==e.write(t)||d||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==B(o.pipes,e))&&!u&&(f("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,d=!0),n.pause())}function m(t){f("onerror",t),y(),e.removeListener("error",m),0===s(e,"error")&&e.emit("error",t)}function g(){e.removeListener("finish",_),y()}function _(){f("onfinish"),e.removeListener("close",g),y()}function y(){f("unpipe"),n.unpipe(e)}return n.on("data",p),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",m),e.once("close",g),e.once("finish",_),e.emit("pipe",n),o.flowing||(f("pipe resume"),n.resume()),e},v.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var i=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o"x0002ffff"){n.position=i;break}s.parser=o.default,t[s.tag]=s}var l=new r.default(n.byteArrayParser,n.byteArray,t);return l.warnings=n.warnings,l.position=n.position,l}()};var i=s(n(12)),r=s(n(7)),o=s(n(21)),a=s(n(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>e.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>e.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";var n=(e[t]<<8)+e[t+1];return 32768&n&&(n=n-65535-1),n},readUint32:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var n=new Uint8Array(4);return n[3]=e[t],n[2]=e[t+1],n[1]=e[t+2],n[0]=e[t+3],new Float32Array(n.buffer)[0]},readDouble:function(e,t){if(t<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>e.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var n=new Uint8Array(8);return n[7]=e[t],n[6]=e[t+1],n[5]=e[t+2],n[4]=e[t+3],n[3]=e[t+4],n[2]=e[t+5],n[1]=e[t+6],n[0]=e[t+7],new Float64Array(n.buffer)[0]}}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){if(void 0===e)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'";t.items=[],4294967295===t.length?function(e,t,n){for(;e.position+4<=e.byteArray.length;){var i=(0,a.default)(e);if(e.seek(-4),"xfffee0dd"===i)return t.length=e.position-t.dataOffset,e.seek(8),t;var r=c(e,n);t.items.push(r)}e.warnings.push("eof encountered before finding sequence delimiter in sequence of undefined length"),t.length=e.byteArray.length-t.dataOffset}(e,t,n):function(e,t,n){for(var i=t.dataOffset+t.length;e.positione.byteArray.length-e.position&&(c=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:c}),e.seek(c),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:c}),e.seek(c)}n&&n.push("pixel data element "+t.tag+" missing sequence delimiter tag xfffee0dd")};var i,r=(i=n(4))&&i.__esModule?i:{default:i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw"dicomParser.explicitElementToString: missing required parameters";if(void 0===t.vr)throw"dicomParser.explicitElementToString: cannot convert implicit element to string";var n,r=t.vr,o=t.tag;function a(t,n){for(var i="",r=0;r= 0";return 0!==t.basicOffsetTable.length?(0,i.default)(e,t,n):(0,r.default)(e,t,0,t.fragments.length)};var i=o(n(26)),r=o(n(17));function o(e){return e&&e.__esModule?e:{default:e}}var a=!1},function(e,t,n){"use strict";e.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}},function(e,t,n){"use strict";var i=n(8),r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,n,l,c,h,u,d){var f,p,m,g,_,y,v,b,w,x=d.bits,A=0,S=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=null,B=0,D=new i.Buf16(16),O=new i.Buf16(16),F=null,G=0;for(A=0;A<=15;A++)D[A]=0;for(S=0;S=1&&0===D[E];E--);if(T>E&&(T=E),0===E)return c[h++]=20971520,c[h++]=20971520,d.bits=1,0;for(M=1;M0&&(0===e||1!==E))return-1;for(O[1]=0,A=1;A<15;A++)O[A+1]=O[A]+D[A];for(S=0;S852||2===e&&P>592)return 1;for(;;){v=A-I,u[S]y?(b=F[G+u[S]],w=R[B+u[S]]):(b=96,w=0),f=1<>I)+(p-=f)]=v<<24|b<<16|w|0}while(0!==p);for(f=1<>=1;if(0!==f?(L&=f-1,L+=f):L=0,S++,0==--D[A]){if(A===E)break;A=t[n+u[S]]}if(A>T&&(L&g)!==m){for(0===I&&(I=T),_+=M,C=1<<(k=A-I);k+I852||2===e&&P>592)return 1;c[m=L&g]=T<<24|k<<16|_-h|0}}return 0!==L&&(c[_+L]=A-I<<24|64<<16|0),d.bits=T,0}},function(e,t,n){"use strict";e.exports=function(e,t){var n,i,r,o,a,s,l,c,h,u,d,f,p,m,g,_,y,v,b,w,x,A,S,M,E;n=e.state,i=e.next_in,M=e.input,r=i+(e.avail_in-5),o=e.next_out,E=e.output,a=o-(t-e.avail_out),s=o+(e.avail_out-257),l=n.dmax,c=n.wsize,h=n.whave,u=n.wnext,d=n.window,f=n.hold,p=n.bits,m=n.lencode,g=n.distcode,_=(1<>>=b=v>>>24,p-=b,0==(b=v>>>16&255))E[o++]=65535&v;else{if(!(16&b)){if(0==(64&b)){v=m[(65535&v)+(f&(1<>>=b,p-=b),p<15&&(f+=M[i++]<>>=b=v>>>24,p-=b,!(16&(b=v>>>16&255))){if(0==(64&b)){v=g[(65535&v)+(f&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(f>>>=b,p-=b,x>(b=o-a)){if((b=x-b)>h&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(A=0,S=d,0===u){if(A+=c-b,b2;)E[o++]=S[A++],E[o++]=S[A++],E[o++]=S[A++],w-=3;w&&(E[o++]=S[A++],w>1&&(E[o++]=S[A++]))}else{A=o-x;do{E[o++]=E[A++],E[o++]=E[A++],E[o++]=E[A++],w-=3}while(w>2);w&&(E[o++]=E[A++],w>1&&(E[o++]=E[A++]))}break}}break}}while(i>3,f&=(1<<(p-=w<<3))-1,e.next_in=i,e.next_out=o,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(852),t.distcode=t.distdyn=new i.Buf32(592),t.sane=1,t.back=-1,0):l}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,d(e)):l}function p(e,t){var n,i;return e&&e.state?(i=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?l:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,f(e))):l}function m(e,t){var n,r;return e?(r=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=r,r.window=null,0!==(n=p(e,t))&&(e.state=null),n):l}var g,_,y=!0;function v(e){if(y){var t;for(g=new i.Buf32(512),_=new i.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,g,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,_,0,e.work,{bits:5}),y=!1}e.lencode=g,e.lenbits=9,e.distcode=_,e.distbits=5}function b(e,t,n,r){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(i.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>r&&(o=r),i.arraySet(a.window,t,n-r,o,a.wnext),(r-=o)?(i.arraySet(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=o(n.check,G,2,0),y=0,w=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",n.mode=h;break}if(8!=(15&y)){e.msg="unknown compression method",n.mode=h;break}if(w-=4,R=8+(15&(y>>>=4)),0===n.wbits)n.wbits=R;else if(R>n.wbits){e.msg="invalid window size",n.mode=h;break}n.dmax=1<>8&1),512&n.flags&&(G[0]=255&y,G[1]=y>>>8&255,n.check=o(n.check,G,2,0)),y=0,w=0,n.mode=3;case 3:for(;w<32;){if(0===g)break e;g--,y+=d[p++]<>>8&255,G[2]=y>>>16&255,G[3]=y>>>24&255,n.check=o(n.check,G,4,0)),y=0,w=0,n.mode=4;case 4:for(;w<16;){if(0===g)break e;g--,y+=d[p++]<>8),512&n.flags&&(G[0]=255&y,G[1]=y>>>8&255,n.check=o(n.check,G,2,0)),y=0,w=0,n.mode=5;case 5:if(1024&n.flags){for(;w<16;){if(0===g)break e;g--,y+=d[p++]<>>8&255,n.check=o(n.check,G,2,0)),y=0,w=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((S=n.length)>g&&(S=g),S&&(n.head&&(R=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),i.arraySet(n.head.extra,d,p,S,R)),512&n.flags&&(n.check=o(n.check,d,S,p)),g-=S,p+=S,n.length-=S),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===g)break e;S=0;do{R=d[p+S++],n.head&&R&&n.length<65536&&(n.head.name+=String.fromCharCode(R))}while(R&&S>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=c;break;case 10:for(;w<32;){if(0===g)break e;g--,y+=d[p++]<>>=7&w,w-=7&w,n.mode=27;break}for(;w<3;){if(0===g)break e;g--,y+=d[p++]<>>=1)){case 0:n.mode=14;break;case 1:if(v(n),n.mode=20,6===t){y>>>=2,w-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=h}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===g)break e;g--,y+=d[p++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=h;break}if(n.length=65535&y,y=0,w=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(S=n.length){if(S>g&&(S=g),S>_&&(S=_),0===S)break e;i.arraySet(f,d,p,S,m),g-=S,p+=S,_-=S,m+=S,n.length-=S;break}n.mode=c;break;case 17:for(;w<14;){if(0===g)break e;g--,y+=d[p++]<>>=5,w-=5,n.ndist=1+(31&y),y>>>=5,w-=5,n.ncode=4+(15&y),y>>>=4,w-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=h;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,w-=3}for(;n.have<19;)n.lens[N[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,D={bits:n.lenbits},B=s(0,n.lens,0,19,n.lencode,0,n.work,D),n.lenbits=D.bits,B){e.msg="invalid code lengths set",n.mode=h;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,I=65535&F,!((T=F>>>24)<=w);){if(0===g)break e;g--,y+=d[p++]<>>=T,w-=T,n.lens[n.have++]=I;else{if(16===I){for(O=T+2;w>>=T,w-=T,0===n.have){e.msg="invalid bit length repeat",n.mode=h;break}R=n.lens[n.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===I){for(O=T+3;w>>=T)),y>>>=3,w-=3}else{for(O=T+7;w>>=T)),y>>>=7,w-=7}if(n.have+S>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=h;break}for(;S--;)n.lens[n.have++]=R}}if(n.mode===h)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=h;break}if(n.lenbits=9,D={bits:n.lenbits},B=s(1,n.lens,0,n.nlen,n.lencode,0,n.work,D),n.lenbits=D.bits,B){e.msg="invalid literal/lengths set",n.mode=h;break}if(n.distbits=6,n.distcode=n.distdyn,D={bits:n.distbits},B=s(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,D),n.distbits=D.bits,B){e.msg="invalid distances set",n.mode=h;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(g>=6&&_>=258){e.next_out=m,e.avail_out=_,e.next_in=p,e.avail_in=g,n.hold=y,n.bits=w,a(e,A),m=e.next_out,f=e.output,_=e.avail_out,p=e.next_in,d=e.input,g=e.avail_in,y=n.hold,w=n.bits,n.mode===c&&(n.back=-1);break}for(n.back=0;k=(F=n.lencode[y&(1<>>16&255,I=65535&F,!((T=F>>>24)<=w);){if(0===g)break e;g--,y+=d[p++]<>C)])>>>16&255,I=65535&F,!(C+(T=F>>>24)<=w);){if(0===g)break e;g--,y+=d[p++]<>>=C,w-=C,n.back+=C}if(y>>>=T,w-=T,n.back+=T,n.length=I,0===k){n.mode=26;break}if(32&k){n.back=-1,n.mode=c;break}if(64&k){e.msg="invalid literal/length code",n.mode=h;break}n.extra=15&k,n.mode=22;case 22:if(n.extra){for(O=n.extra;w>>=n.extra,w-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;k=(F=n.distcode[y&(1<>>16&255,I=65535&F,!((T=F>>>24)<=w);){if(0===g)break e;g--,y+=d[p++]<>C)])>>>16&255,I=65535&F,!(C+(T=F>>>24)<=w);){if(0===g)break e;g--,y+=d[p++]<>>=C,w-=C,n.back+=C}if(y>>>=T,w-=T,n.back+=T,64&k){e.msg="invalid distance code",n.mode=h;break}n.offset=I,n.extra=15&k,n.mode=24;case 24:if(n.extra){for(O=n.extra;w>>=n.extra,w-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=h;break}n.mode=25;case 25:if(0===_)break e;if(S=A-_,n.offset>S){if((S=n.offset-S)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=h;break}S>n.wnext?(S-=n.wnext,M=n.wsize-S):M=n.wnext-S,S>n.length&&(S=n.length),E=n.window}else E=f,M=m-n.offset,S=n.length;S>_&&(S=_),_-=S,n.length-=S;do{f[m++]=E[M++]}while(--S);0===n.length&&(n.mode=21);break;case 26:if(0===_)break e;f[m++]=n.length,_--,n.mode=21;break;case 27:if(n.wrap){for(;w<32;){if(0===g)break e;g--,y|=d[p++]<=0;)e[t]=0}var o=256,a=286,s=30,l=15,c=[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],h=[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],u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],d=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=new Array(576);r(f);var p=new Array(60);r(p);var m=new Array(512);r(m);var g=new Array(256);r(g);var _=new Array(29);r(_);var y,v,b,w=new Array(s);function x(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}function A(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function S(e){return e<256?m[e]:m[256+(e>>>7)]}function M(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function E(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function I(e,t,n){var i,r,o=new Array(16),a=0;for(i=1;i<=l;i++)o[i]=a=a+n[i-1]<<1;for(r=0;r<=t;r++){var s=e[2*r+1];0!==s&&(e[2*r]=k(o[s]++,s))}}function C(e){var t;for(t=0;t8?M(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function L(e,t,n,i){var r=2*t,o=2*n;return e[r]>1;n>=1;n--)R(e,o,n);r=c;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],R(e,o,1),i=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=i,o[2*r]=o[2*n]+o[2*i],e.depth[r]=(e.depth[n]>=e.depth[i]?e.depth[n]:e.depth[i])+1,o[2*n+1]=o[2*i+1]=r,e.heap[1]=r++,R(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,i,r,o,a,s,c=t.dyn_tree,h=t.max_code,u=t.stat_desc.static_tree,d=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,m=t.stat_desc.max_length,g=0;for(o=0;o<=l;o++)e.bl_count[o]=0;for(c[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(o=c[2*c[2*(i=e.heap[n])+1]+1]+1)>m&&(o=m,g++),c[2*i+1]=o,i>h||(e.bl_count[o]++,a=0,i>=p&&(a=f[i-p]),s=c[2*i],e.opt_len+=s*(o+a),d&&(e.static_len+=s*(u[2*i+1]+a)));if(0!==g){do{for(o=m-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[m]--,g-=2}while(g>0);for(o=m;0!==o;o--)for(i=e.bl_count[o];0!==i;)(r=e.heap[--n])>h||(c[2*r+1]!==o&&(e.opt_len+=(o-c[2*r+1])*c[2*r],c[2*r+1]=o),i--)}}(e,t),I(o,h,e.bl_count)}function O(e,t,n){var i,r,o=-1,a=t[1],s=0,l=7,c=4;for(0===a&&(l=138,c=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)r=a,a=t[2*(i+1)+1],++s>=7;i0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t=3&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=r&&(r=a)):r=a=n+5,n+4<=r&&-1!==t?N(e,t,n,i):4===e.strategy||a===r?(E(e,2+(i?1:0),3),B(e,f,p)):(E(e,4+(i?1:0),3),function(e,t,n,i){var r;for(E(e,t-257,5),E(e,n-1,5),E(e,i-4,4),r=0;r>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(g[n]+o+1)]++,e.dyn_dtree[2*S(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){E(e,2,3),T(e,256,f),function(e){16===e.bi_valid?(M(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,n){"use strict";var i,r=n(8),o=n(50),a=n(28),s=n(27),l=n(49),c=-2,h=258,u=262,d=103,f=113,p=666;function m(e,t){return e.msg=l[t],t}function g(e){return(e<<1)-(e>4?9:0)}function _(e){for(var t=e.length;--t>=0;)e[t]=0}function y(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(r.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function v(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,y(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function w(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function x(e,t){var n,i,r=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-u?e.strstart-(e.w_size-u):0,c=e.window,d=e.w_mask,f=e.prev,p=e.strstart+h,m=c[o+a-1],g=c[o+a];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(n=t)+a]===g&&c[n+a-1]===m&&c[n]===c[o]&&c[++n]===c[o+1]){o+=2,n++;do{}while(c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&oa){if(e.match_start=t,a=i,i>=s)break;m=c[o+a-1],g=c[o+a]}}}while((t=f[t&d])>l&&0!=--r);return a<=e.lookahead?a:e.lookahead}function A(e){var t,n,i,o,l,c,h,d,f,p,m=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-u)){r.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=n=e.hash_size;do{i=e.head[--t],e.head[t]=i>=m?i-m:0}while(--n);t=n=m;do{i=e.prev[--t],e.prev[t]=i>=m?i-m:0}while(--n);o+=m}if(0===e.strm.avail_in)break;if(c=e.strm,h=e.window,d=e.strstart+e.lookahead,f=o,p=void 0,(p=c.avail_in)>f&&(p=f),n=0===p?0:(c.avail_in-=p,r.arraySet(h,c.input,c.next_in,p,d),1===c.state.wrap?c.adler=a(c.adler,h,p,d):2===c.state.wrap&&(c.adler=s(c.adler,h,p,d)),c.next_in+=p,c.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(i=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<15&&(s=2,i-=16),o<1||o>9||8!==n||i<8||i>15||t<0||t>9||a<0||a>4)return m(e,c);8===i&&(i=9);var l=new function(){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=8,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 r.Buf16(1146),this.dyn_dtree=new r.Buf16(122),this.bl_tree=new r.Buf16(78),_(this.dyn_ltree),_(this.dyn_dtree),_(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(16),this.heap=new r.Buf16(573),_(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(573),_(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};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=i,l.w_size=1<e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(A(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+n;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,v(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-u&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(v(e,!1),e.strm.avail_out),1)})),new E(4,4,8,4,S),new E(4,5,16,8,S),new E(4,6,32,32,S),new E(4,4,16,16,M),new E(8,16,32,32,M),new E(8,16,128,128,M),new E(8,32,128,256,M),new E(32,128,258,1024,M),new E(32,258,258,4096,M)],t.deflateInit=function(e,t){return I(e,t,8,15,8,0)},t.deflateInit2=I,t.deflateReset=k,t.deflateResetKeep=T,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},t.deflate=function(e,t){var n,r,a,l;if(!e||!e.state||t>5||t<0)return e?m(e,c):c;if(r=e.state,!e.output||!e.input&&0!==e.avail_in||r.status===p&&4!==t)return m(e,0===e.avail_out?-5:c);if(r.strm=e,n=r.last_flush,r.last_flush=t,42===r.status)if(2===r.wrap)e.adler=0,b(r,31),b(r,139),b(r,8),r.gzhead?(b(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),b(r,255&r.gzhead.time),b(r,r.gzhead.time>>8&255),b(r,r.gzhead.time>>16&255),b(r,r.gzhead.time>>24&255),b(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),b(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(b(r,255&r.gzhead.extra.length),b(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=s(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(b(r,0),b(r,0),b(r,0),b(r,0),b(r,0),b(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),b(r,3),r.status=f);else{var u=8+(r.w_bits-8<<4)<<8;u|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(u|=32),u+=31-u%31,r.status=f,w(r,u),0!==r.strstart&&(w(r,e.adler>>>16),w(r,65535&e.adler)),e.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending!==r.pending_buf_size));)b(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.status=d)}else r.status=d;if(r.status===d&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&y(e),r.pending+2<=r.pending_buf_size&&(b(r,255&e.adler),b(r,e.adler>>8&255),e.adler=0,r.status=f)):r.status=f),0!==r.pending){if(y(e),0===e.avail_out)return r.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(n)&&4!==t)return m(e,-5);if(r.status===p&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==r.lookahead||0!==t&&r.status!==p){var x=2===r.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(A(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(v(e,!1),0===e.strm.avail_out)?1:2}(r,t):3===r.strategy?function(e,t){for(var n,i,r,a,s=e.window;;){if(e.lookahead<=h){if(A(e),e.lookahead<=h&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[r=e.strstart-1])===s[++r]&&i===s[++r]&&i===s[++r]){a=e.strstart+h;do{}while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(v(e,!1),0===e.strm.avail_out)?1:2}(r,t):i[r.level].func(r,t);if(3!==x&&4!==x||(r.status=p),1===x||3===x)return 0===e.avail_out&&(r.last_flush=-1),0;if(2===x&&(1===t?o._tr_align(r):5!==t&&(o._tr_stored_block(r,0,0,!1),3===t&&(_(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),y(e),0===e.avail_out))return r.last_flush=-1,0}return 4!==t?0:r.wrap<=0?1:(2===r.wrap?(b(r,255&e.adler),b(r,e.adler>>8&255),b(r,e.adler>>16&255),b(r,e.adler>>24&255),b(r,255&e.total_in),b(r,e.total_in>>8&255),b(r,e.total_in>>16&255),b(r,e.total_in>>24&255)):(w(r,e.adler>>>16),w(r,65535&e.adler)),y(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==d&&t!==f&&t!==p?m(e,c):(e.state=null,t===f?m(e,-3):0):c},t.deflateSetDictionary=function(e,t){var n,i,o,s,l,h,u,d,f=t.length;if(!e||!e.state)return c;if(2===(s=(n=e.state).wrap)||1===s&&42!==n.status||n.lookahead)return c;for(1===s&&(e.adler=a(e.adler,t,f,0)),n.wrap=0,f>=n.w_size&&(0===s&&(_(n.head),n.strstart=0,n.block_start=0,n.insert=0),d=new r.Buf8(n.w_size),r.arraySet(d,t,f-n.w_size,n.w_size,0),t=d,f=n.w_size),l=e.avail_in,h=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,A(n);n.lookahead>=3;){i=n.strstart,o=n.lookahead-2;do{n.ins_h=(n.ins_h<t.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7,h.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,r(this.init_done,"close before init"),r(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},h.prototype.write=function(e,t,n,i,r,o,a){return this._write(!0,e,t,n,i,r,o,a)},h.prototype.writeSync=function(e,t,n,i,r,o,a){return this._write(!1,e,t,n,i,r,o,a)},h.prototype._write=function(n,o,a,s,l,c,h,u){if(r.equal(arguments.length,8),r(this.init_done,"write before init"),r(this.mode!==t.NONE,"already finalized"),r.equal(!1,this.write_in_progress,"write already in progress"),r.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,r.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==t.Z_NO_FLUSH&&o!==t.Z_PARTIAL_FLUSH&&o!==t.Z_SYNC_FLUSH&&o!==t.Z_FULL_FLUSH&&o!==t.Z_FINISH&&o!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==a&&(a=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=a,this.strm.next_in=s,this.strm.avail_out=u,this.strm.output=c,this.strm.next_out=h,this.flush=o,!n)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return i.nextTick((function(){d._process(),d._after()})),this},h.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},h.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},h.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},h.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},h.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},h.prototype.init=function(e,n,i,o,a){r(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),r(e>=8&&e<=15,"invalid windowBits"),r(n>=-1&&n<=9,"invalid compression level"),r(i>=1&&i<=9,"invalid memlevel"),r(o===t.Z_FILTERED||o===t.Z_HUFFMAN_ONLY||o===t.Z_RLE||o===t.Z_FIXED||o===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(n,e,i,o,a),this._setDictionary()},h.prototype.params=function(){throw new Error("deflateParams Not supported")},h.prototype.reset=function(){this._reset(),this._setDictionary()},h.prototype._init=function(e,n,i,r,l){switch(this.level=e,this.windowBits=n,this.memLevel=i,this.strategy=r,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},h.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},h.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=a.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=h}).call(this,n(1).Buffer,n(3))},function(e,t,n){e.exports=n(19).PassThrough},function(e,t,n){e.exports=n(19).Transform},function(e,t,n){e.exports=n(2)},function(e,t,n){e.exports=n(18)},function(e,t,n){"use strict";e.exports=o;var i=n(31),r=n(6);function o(e){if(!(this instanceof o))return new o(e);i.call(this,e)}r.inherits=n(5),r.inherits(o,i),o.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var i=!1;return function(){if(!i){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),i=!0}return e.apply(this,arguments)}}}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var i,r,o,a,s,l=1,c={},h=!1,u=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?i=function(e){t.nextTick((function(){p(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&p(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),i=function(t){e.postMessage(a+t,"*")}):e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){p(e.data)},i=function(e){o.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(r=u.documentElement,i=function(e){var t=u.createElement("script");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,r.removeChild(t),t=null},r.appendChild(t)}):i=function(e){setTimeout(p,0,e)},d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(62),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t){},function(e,t,n){"use strict";var i=n(9).Buffer,r=n(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var t,n,r=i.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=r,n=a,o.data.copy(t,n),a+=o.data.length,o=o.next;return r},e}(),r&&r.inspect&&r.inspect.custom&&(e.exports.prototype[r.inspect.custom]=function(){var e=r.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){e.exports=r;var i=n(20).EventEmitter;function r(){i.call(this)}n(5)(r,i),r.Readable=n(19),r.Writable=n(59),r.Duplex=n(58),r.Transform=n(57),r.PassThrough=n(56),r.Stream=r,r.prototype.pipe=function(e,t){var n=this;function r(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",r),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(h(),0===i.listenerCount(this,"error"))throw e}function h(){n.removeListener("data",r),e.removeListener("drain",o),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",c),e.removeListener("error",c),n.removeListener("end",h),n.removeListener("close",h),e.removeListener("close",h)}return n.on("error",c),e.on("error",c),n.on("end",h),n.on("close",h),e.on("close",h),e.emit("pipe",n),e}},function(e,t,n){"use strict";(function(e){var i=n(1).Buffer,r=n(67).Transform,o=n(55),a=n(29),s=n(30).ok,l=n(1).kMaxLength,c="Cannot create final Buffer. It would be larger than 0x"+l.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var h=Object.keys(o),u=0;u=l?a=new RangeError(c):t=i.concat(r,o),r=[],e.close(),n(a,t)}e.on("error",(function(t){e.removeListener("end",s),e.removeListener("readable",a),n(t)})),e.on("end",s),e.end(t),a()}function y(e,t){if("string"==typeof t&&(t=i.from(t)),!i.isBuffer(t))throw new TypeError("Not a string or buffer");var n=e._finishFlushFlag;return e._processChunk(t,n)}function v(e){if(!(this instanceof v))return new v(e);T.call(this,e,o.DEFLATE)}function b(e){if(!(this instanceof b))return new b(e);T.call(this,e,o.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);T.call(this,e,o.GZIP)}function x(e){if(!(this instanceof x))return new x(e);T.call(this,e,o.GUNZIP)}function A(e){if(!(this instanceof A))return new A(e);T.call(this,e,o.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);T.call(this,e,o.INFLATERAW)}function M(e){if(!(this instanceof M))return new M(e);T.call(this,e,o.UNZIP)}function E(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function T(e,n){var a=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,r.call(this,e),e.flush&&!E(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!E(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!i.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(n);var s=this;this._hadError=!1,this._handle.onerror=function(e,n){k(s),s._hadError=!0;var i=new Error(e);i.errno=n,i.code=t.codes[n],s.emit("error",i)};var l=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(l=e.level);var c=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(c=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,c,e.dictionary),this._buffer=i.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=c,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!a._handle},configurable:!0,enumerable:!0})}function k(t,n){n&&e.nextTick(n),t._handle&&(t._handle.close(),t._handle=null)}function I(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(f),writable:!1}),t.Deflate=v,t.Inflate=b,t.Gzip=w,t.Gunzip=x,t.DeflateRaw=A,t.InflateRaw=S,t.Unzip=M,t.createDeflate=function(e){return new v(e)},t.createInflate=function(e){return new b(e)},t.createDeflateRaw=function(e){return new A(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new x(e)},t.createUnzip=function(e){return new M(e)},t.deflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new v(t),e,n)},t.deflateSync=function(e,t){return y(new v(t),e)},t.gzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new w(t),e,n)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new A(t),e,n)},t.deflateRawSync=function(e,t){return y(new A(t),e)},t.unzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new M(t),e,n)},t.unzipSync=function(e,t){return y(new M(t),e)},t.inflate=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new b(t),e,n)},t.inflateSync=function(e,t){return y(new b(t),e)},t.gunzip=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new x(t),e,n)},t.gunzipSync=function(e,t){return y(new x(t),e)},t.inflateRaw=function(e,t,n){return"function"==typeof t&&(n=t,t={}),_(new S(t),e,n)},t.inflateRawSync=function(e,t){return y(new S(t),e)},a.inherits(T,r),T.prototype.params=function(n,i,r){if(nt.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+n);if(i!=t.Z_FILTERED&&i!=t.Z_HUFFMAN_ONLY&&i!=t.Z_RLE&&i!=t.Z_FIXED&&i!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+i);if(this._level!==n||this._strategy!==i){var a=this;this.flush(o.Z_SYNC_FLUSH,(function(){s(a._handle,"zlib binding closed"),a._handle.params(n,i),a._hadError||(a._level=n,a._strategy=i,r&&r())}))}else e.nextTick(r)},T.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},T.prototype._flush=function(e){this._transform(i.alloc(0),"",e)},T.prototype.flush=function(t,n){var r=this,a=this._writableState;("function"==typeof t||void 0===t&&!n)&&(n=t,t=o.Z_FULL_FLUSH),a.ended?n&&e.nextTick(n):a.ending?n&&this.once("end",n):a.needDrain?n&&this.once("drain",(function(){return r.flush(t,n)})):(this._flushFlag=t,this.write(i.alloc(0),"",n))},T.prototype.close=function(t){k(this,t),e.nextTick(I,this)},T.prototype._transform=function(e,t,n){var r,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||i.isBuffer(e)?this._handle?(s?r=this._finishFlushFlag:(r=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,r,n)):n(new Error("zlib binding closed")):n(new Error("invalid input"))},T.prototype._processChunk=function(e,t,n){var r=e&&e.length,o=this._chunkSize-this._offset,a=0,h=this,u="function"==typeof n;if(!u){var d,f=[],p=0;this.on("error",(function(e){d=e})),s(this._handle,"zlib binding closed");do{var m=this._handle.writeSync(t,e,a,r,this._buffer,this._offset,o)}while(!this._hadError&&y(m[0],m[1]));if(this._hadError)throw d;if(p>=l)throw k(this),new RangeError(c);var g=i.concat(f,p);return k(this),g}s(this._handle,"zlib binding closed");var _=this._handle.write(t,e,a,r,this._buffer,this._offset,o);function y(l,c){if(this&&(this.buffer=null,this.callback=null),!h._hadError){var d=o-c;if(s(d>=0,"have should not go down"),d>0){var m=h._buffer.slice(h._offset,h._offset+d);h._offset+=d,u?h.push(m):(f.push(m),p+=m.length)}if((0===c||h._offset>=h._chunkSize)&&(o=h._chunkSize,h._offset=0,h._buffer=i.allocUnsafe(h._chunkSize)),0===c){if(a+=r-l,r=l,!u)return!0;var g=h._handle.write(t,e,a,r,h._buffer,h._offset,h._chunkSize);return g.callback=y,void(g.buffer=e)}if(!u)return!1;n()}}_.buffer=e,_.callback=y},a.inherits(v,T),a.inherits(b,T),a.inherits(w,T),a.inherits(x,T),a.inherits(A,T),a.inherits(S,T),a.inherits(M,T)}).call(this,n(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(t,d){if(void 0===t)throw"dicomParser.parseDicom: missing required parameter 'byteArray'";return function(e,t){for(var n in e.elements)e.elements.hasOwnProperty(n)&&(t.elements[n]=e.elements[n]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(f=(0,l.default)(t,d),function(l){var f=function(e){if(void 0===e.elements.x00020010)throw"dicomParser.parseDicom: missing required meta header attribute 0002,0010";var n=e.elements.x00020010;return h.readFixedString(t,n.dataOffset,n.length)}(l),p=function(e){return"1.2.840.10008.1.2"!==e}(f),m=function(a,l){if("1.2.840.10008.1.2.1.99"===a){if(d&&d.inflater){var h=d.inflater(t,l);return new o.default(s.default,h,0)}if(void 0!==e&&this.module!==e){var u=n(68),f=(0,c.default)(t,l,t.length-l),p=u.inflateRawSync(f),m=(0,i.default)(t,p.length+l);return t.copy(m,0,0,l),p.copy(m,l),new o.default(s.default,m,0)}if("undefined"!=typeof pako){var g=t.slice(l),_=pako.inflateRaw(g),y=(0,i.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new o.default(s.default,y,0)}throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax"}return"1.2.840.10008.1.2.2"===a?new o.default(r.default,t,l):new o.default(s.default,t,l)}(f,l.position),g=new a.default(m.byteArrayParser,m.byteArray,{});g.warnings=m.warnings;try{p?u.parseDicomDataSetExplicit(g,m,m.byteArray.length,d):u.parseDicomDataSetImplicit(g,m,m.byteArray.length,d)}catch(e){var _={exception:e,dataSet:g};throw _}return g}(f));var f};var i=f(n(22)),r=f(n(37)),o=f(n(12)),a=f(n(7)),s=f(n(21)),l=f(n(36)),c=f(n(11)),h=d(n(14)),u=d(n(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function f(e){return e&&e.__esModule?e:{default:e}}}).call(this,n(69)(e))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="1.8.1"},function(e,t){t.read=function(e,t,n,i,r){var o,a,s=8*r-i-1,l=(1<>1,h=-7,u=n?r-1:0,d=n?-1:1,f=e[t+u];for(u+=d,o=f&(1<<-h)-1,f>>=-h,h+=s;h>0;o=256*o+e[t+u],u+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=i;h>0;a=256*a+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=c}return(f?-1:1)*a*Math.pow(2,o-i)},t.write=function(e,t,n,i,r,o){var a,s,l,c=8*o-r-1,h=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,p=i?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=h):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(a++,l/=2),a+u>=h?(s=0,a=h):a+u>=1?(s=(t*l-1)*Math.pow(2,r),a+=u):(s=t*Math.pow(2,u-1)*Math.pow(2,r),a=0));r>=8;e[n+f]=255&s,f+=p,s/=256,r-=8);for(a=a<0;e[n+f]=255&a,f+=p,a/=256,c-=8);e[n+f-p]|=128*m}},function(e,t,n){"use strict";t.byteLength=function(e){return 3*e.length/4-c(e)},t.toByteArray=function(e){var t,n,i,a,s,l=e.length;a=c(e),s=new o(3*l/4-a),n=a>0?l-4:l;var h=0;for(t=0;t>16&255,s[h++]=i>>8&255,s[h++]=255&i;return 2===a?(i=r[e.charCodeAt(t)]<<2|r[e.charCodeAt(t+1)]>>4,s[h++]=255&i):1===a&&(i=r[e.charCodeAt(t)]<<10|r[e.charCodeAt(t+1)]<<4|r[e.charCodeAt(t+2)]>>2,s[h++]=i>>8&255,s[h++]=255&i),s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,o="",a=[],s=0,l=n-r;sl?l:s+16383));return 1===r?(t=e[n-1],o+=i[t>>2],o+=i[t<<4&63],o+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],o+=i[t>>10],o+=i[t>>4&63],o+=i[t<<2&63],o+="="),a.push(o),a.join("")};for(var i=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function h(e,t,n){for(var r,o,a=[],s=t;s>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},function(e,t,n){"use strict";function i(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function r(e,t,n){var r=t.fragments[n];return!(!i(e,r.position+r.length-2)&&!i(e,r.position+r.length-3))}function o(e,t,n){for(var i=n;i0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,n)}(r,i,n))throw"invalid DA '"+e+"'";return{year:n,month:i,day:r}}if(t)throw"invalid DA '"+e+"'"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.length>=2){var n=parseInt(e.substring(0,2),10),i=e.length>=4?parseInt(e.substring(2,4),10):void 0,r=e.length>=6?parseInt(e.substring(4,6),10):void 0,o=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(n)||void 0!==i&&isNaN(i)||void 0!==r&&isNaN(r)||void 0!==o&&isNaN(o)||n<0||n>23||i&&(i<0||i>59)||r&&(r<0||r>59)||o&&(o<0||o>999999)))throw"invalid TM '"+e+"'";return{hours:n,minutes:i,seconds:r,fractionalSeconds:o}}if(t)throw"invalid TM '"+e+"'"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(25);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}));var r=n(77);Object.defineProperty(t,"parseTM",{enumerable:!0,get:function(){return c(r).default}});var o=n(76);Object.defineProperty(t,"parseDA",{enumerable:!0,get:function(){return c(o).default}});var a=n(43);Object.defineProperty(t,"explicitElementToString",{enumerable:!0,get:function(){return c(a).default}});var s=n(75);Object.defineProperty(t,"explicitDataSetToJS",{enumerable:!0,get:function(){return c(s).default}});var l=n(74);function c(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"createJPEGBasicOffsetTable",{enumerable:!0,get:function(){return c(l).default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(78);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}));var r=n(16);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o=n(14);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}})}));var a=n(22);Object.defineProperty(t,"alloc",{enumerable:!0,get:function(){return T(a).default}});var s=n(71);Object.defineProperty(t,"version",{enumerable:!0,get:function(){return T(s).default}});var l=n(37);Object.defineProperty(t,"bigEndianByteArrayParser",{enumerable:!0,get:function(){return T(l).default}});var c=n(12);Object.defineProperty(t,"ByteStream",{enumerable:!0,get:function(){return T(c).default}});var h=n(11);Object.defineProperty(t,"sharedCopy",{enumerable:!0,get:function(){return T(h).default}});var u=n(7);Object.defineProperty(t,"DataSet",{enumerable:!0,get:function(){return T(u).default}});var d=n(41);Object.defineProperty(t,"findAndSetUNElementLength",{enumerable:!0,get:function(){return T(d).default}});var f=n(42);Object.defineProperty(t,"findEndOfEncapsulatedElement",{enumerable:!0,get:function(){return T(f).default}});var p=n(24);Object.defineProperty(t,"findItemDelimitationItemAndSetElementLength",{enumerable:!0,get:function(){return T(p).default}});var m=n(21);Object.defineProperty(t,"littleEndianByteArrayParser",{enumerable:!0,get:function(){return T(m).default}});var g=n(70);Object.defineProperty(t,"parseDicom",{enumerable:!0,get:function(){return T(g).default}});var _=n(15);Object.defineProperty(t,"readDicomElementExplicit",{enumerable:!0,get:function(){return T(_).default}});var y=n(23);Object.defineProperty(t,"readDicomElementImplicit",{enumerable:!0,get:function(){return T(y).default}});var v=n(26);Object.defineProperty(t,"readEncapsulatedImageFrame",{enumerable:!0,get:function(){return T(v).default}});var b=n(44);Object.defineProperty(t,"readEncapsulatedPixelData",{enumerable:!0,get:function(){return T(b).default}});var w=n(17);Object.defineProperty(t,"readEncapsulatedPixelDataFromFragments",{enumerable:!0,get:function(){return T(w).default}});var x=n(36);Object.defineProperty(t,"readPart10Header",{enumerable:!0,get:function(){return T(x).default}});var A=n(40);Object.defineProperty(t,"readSequenceItemsExplicit",{enumerable:!0,get:function(){return T(A).default}});var S=n(39);Object.defineProperty(t,"readSequenceItemsImplicit",{enumerable:!0,get:function(){return T(S).default}});var M=n(13);Object.defineProperty(t,"readSequenceItem",{enumerable:!0,get:function(){return T(M).default}});var E=n(4);function T(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"readTag",{enumerable:!0,get:function(){return T(E).default}})}])},"./node_modules/events/events.js":function(e,t){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function r(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},n.prototype.emit=function(e){var t,n,a,s,l,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(o(n=this._events[e]))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(r(n))for(s=Array.prototype.slice.call(arguments,1),a=(c=n.slice()).length,l=0;l0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!i(t))throw TypeError("listener must be a function");var n=!1;function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}return r.listener=t,this.on(e,r),this},n.prototype.removeListener=function(e,t){var n,o,a,s;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,o=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(r(n)){for(s=a;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){o=s;break}if(o<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(o,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(i(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},"./node_modules/ieee754/index.js":function(e,t){t.read=function(e,t,n,i,r){var o,a,s=8*r-i-1,l=(1<>1,h=-7,u=n?r-1:0,d=n?-1:1,f=e[t+u];for(u+=d,o=f&(1<<-h)-1,f>>=-h,h+=s;h>0;o=256*o+e[t+u],u+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=i;h>0;a=256*a+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=c}return(f?-1:1)*a*Math.pow(2,o-i)},t.write=function(e,t,n,i,r,o){var a,s,l,c=8*o-r-1,h=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,p=i?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=h):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(a++,l/=2),a+u>=h?(s=0,a=h):a+u>=1?(s=(t*l-1)*Math.pow(2,r),a+=u):(s=t*Math.pow(2,u-1)*Math.pow(2,r),a=0));r>=8;e[n+f]=255&s,f+=p,s/=256,r-=8);for(a=a<0;e[n+f]=255&a,f+=p,a/=256,c-=8);e[n+f-p]|=128*m}},"./node_modules/inherits/inherits_browser.js":function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},"./node_modules/isarray/index.js":function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},"./node_modules/jpeg-lossless-decoder-js/src/component-spec.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.ComponentSpec=i.lossless.ComponentSpec||function(){this.hSamp=0,this.quantTableSel=0,this.vSamp=0},void 0!==e&&e.exports&&(e.exports=i.lossless.ComponentSpec)},"./node_modules/jpeg-lossless-decoder-js/src/data-stream.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.DataStream=i.lossless.DataStream||function(e,t,n){this.buffer=new DataView(e,t,n),this.index=0},i.lossless.DataStream.prototype.get16=function(){var e=this.buffer.getUint16(this.index,!1);return this.index+=2,e},i.lossless.DataStream.prototype.get8=function(){var e=this.buffer.getUint8(this.index);return this.index+=1,e},void 0!==e&&e.exports&&(e.exports=i.lossless.DataStream)},"./node_modules/jpeg-lossless-decoder-js/src/decoder.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.DataStream=i.lossless.DataStream||n("./node_modules/jpeg-lossless-decoder-js/src/data-stream.js"),i.lossless.HuffmanTable=i.lossless.HuffmanTable||n("./node_modules/jpeg-lossless-decoder-js/src/huffman-table.js"),i.lossless.QuantizationTable=i.lossless.QuantizationTable||n("./node_modules/jpeg-lossless-decoder-js/src/quantization-table.js"),i.lossless.ScanHeader=i.lossless.ScanHeader||n("./node_modules/jpeg-lossless-decoder-js/src/scan-header.js"),i.lossless.FrameHeader=i.lossless.FrameHeader||n("./node_modules/jpeg-lossless-decoder-js/src/frame-header.js"),i.lossless.Utils=i.lossless.Utils||n("./node_modules/jpeg-lossless-decoder-js/src/utils.js"),i.lossless.Decoder=i.lossless.Decoder||function(e,t){this.buffer=e,this.frame=new i.lossless.FrameHeader,this.huffTable=new i.lossless.HuffmanTable,this.quantTable=new i.lossless.QuantizationTable,this.scan=new i.lossless.ScanHeader,this.DU=i.lossless.Utils.createArray(10,4,64),this.HuffTab=i.lossless.Utils.createArray(4,2,12800),this.IDCT_Source=[],this.nBlock=[],this.acTab=i.lossless.Utils.createArray(10,1),this.dcTab=i.lossless.Utils.createArray(10,1),this.qTab=i.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=!1,this.mask=0,void 0!==t&&(this.numBytes=t)},i.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],i.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],i.lossless.Decoder.MAX_HUFFMAN_SUBTREE=50,i.lossless.Decoder.MSB=2147483648,i.lossless.Decoder.RESTART_MARKER_BEGIN=65488,i.lossless.Decoder.RESTART_MARKER_END=65495,i.lossless.Decoder.prototype.decompress=function(e,t,n){return this.decode(e,t,n).buffer},i.lossless.Decoder.prototype.decode=function(e,t,n,r){var o,a,s,l,c=0,h=[],u=[],d=[];if(void 0!==e&&(this.buffer=e),void 0!==r&&(this.numBytes=r),this.stream=new i.lossless.DataStream(this.buffer,t,n),this.buffer=null,this.xLoc=0,this.yLoc=0,65496!==(o=this.stream.get16()))throw new Error("Not a JPEG file");for(o=this.stream.get16();o>>4!=4092||65476===o;){switch(o){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,i.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(o>>8!=255)throw new Error("ERROR: format throw new IOException! (decode)")}o=this.stream.get16()}if(o<65472||o>65479)throw new Error("ERROR: could not handle arithmetic code!");this.frame.read(this.stream),o=this.stream.get16();do{for(;65498!==o;){switch(o){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,i.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(o>>8!=255)throw new Error("ERROR: format throw new IOException! (Parser.decode)")}o=this.stream.get16()}switch(this.precision=this.frame.precision,this.components=this.frame.components,this.numBytes||(this.numBytes=parseInt(Math.ceil(this.precision/8))),1==this.numBytes?this.mask=255:this.mask=65535,this.scan.read(this.stream),this.numComp=this.scan.numComp,this.selection=this.scan.selection,1===this.numBytes?3===this.numComp?(this.getter=this.getValueRGB,this.setter=this.setValueRGB,this.output=this.outputRGB):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle):(this.getter=this.getValue16,this.setter=this.setValue16,this.output=this.outputSingle),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}for(this.scanComps=this.scan.components,this.quantTables=this.quantTable.quantTables,a=0;a=i.lossless.Decoder.RESTART_MARKER_BEGIN&&o<=i.lossless.Decoder.RESTART_MARKER_END))break}65500===o&&1===c&&(this.readNumber(),o=this.stream.get16())}while(65497!==o&&this.xLoc>1)},i.lossless.Decoder.prototype.select6=function(e){return this.getPreviousY(e)+(this.getPreviousX(e)-this.getPreviousXY(e)>>1)},i.lossless.Decoder.prototype.select7=function(e){return(this.getPreviousX(e)+this.getPreviousY(e))/2},i.lossless.Decoder.prototype.decodeRGB=function(e,t,n){var r,o,a,s,l,c,h,u;for(e[0]=this.selector(0),e[1]=this.selector(1),e[2]=this.selector(2),l=0;l=65280)return r;for(e[l]=this.IDCT_Source[0]=e[l]+this.getn(n,r,t,n),this.IDCT_Source[0]*=s[0],u=1;u<64;u+=1){if((r=this.getHuffmanValue(o,t,n))>=65280)return r;if(u+=r>>4,0==(15&r)){if(r>>4==0)break}else this.IDCT_Source[i.lossless.Decoder.IDCT_P[u]]=this.getn(n,15&r,t,n)*s[u]}}return 0},i.lossless.Decoder.prototype.decodeSingle=function(e,t,n){var r,o,a,s;for(this.restarting?(this.restarting=!1,e[0]=1<=65280)return r;if((s=(a=this.getn(e,r,t,n))>>8)>=i.lossless.Decoder.RESTART_MARKER_BEGIN&&s<=i.lossless.Decoder.RESTART_MARKER_END)return s;e[0]+=a}return 0},i.lossless.Decoder.prototype.getHuffmanValue=function(e,t,n){var r,o;if(n[0]<8?(t[0]<<=8,255===(o=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=o):n[0]-=8,0!=((r=e[t[0]>>n[0]])&i.lossless.Decoder.MSB)){if(0!==this.markerIndex)return this.markerIndex=0,65280|this.marker;t[0]&=65535>>16-n[0],t[0]<<=8,255===(o=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=o,r=e[256*(255&r)+(t[0]>>n[0])],n[0]+=8}if(n[0]+=8-(r>>8),n[0]<0)throw new Error("index="+n[0]+" temp="+t[0]+" code="+r+" in HuffmanValue()");return n[0]>16-n[0],255&r)},i.lossless.Decoder.prototype.getn=function(e,t,n,i){var r,o;if(0===t)return 0;if(16===t)return e[0]>=0?-32768:32768;if(i[0]-=t,i[0]>=0){if(i[0]>i[0],n[0]&=65535>>16-i[0]}else{if(n[0]<<=8,255===(o=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),n[0]|=o,i[0]+=8,i[0]<0){if(0!==this.markerIndex)return this.markerIndex=0,(65280|this.marker)<<8;n[0]<<=8,255===(o=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),n[0]|=o,i[0]+=8}if(i[0]<0)throw new Error("index="+i[0]+" in getn()");if(i[0]>i[0],n[0]&=65535>>16-i[0]}return r<1<0?this.getter(this.yLoc*this.xDim+this.xLoc-1,e):this.yLoc>0?this.getPreviousY(e):1<0&&this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,e):this.getPreviousY(e)},i.lossless.Decoder.prototype.getPreviousY=function(e){return this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc,e):this.getPreviousX(e)},i.lossless.Decoder.prototype.isLastPixel=function(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1},i.lossless.Decoder.prototype.outputSingle=function(e){this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))},i.lossless.Decoder.prototype.outputRGB=function(e){var t=this.yLoc*this.xDim+this.xLoc;this.xLoc=this.xDim&&(this.yLoc+=1,this.xLoc=0))},i.lossless.Decoder.prototype.setValue16=function(e,t){this.outputData.setInt16(2*e,t,!0)},i.lossless.Decoder.prototype.getValue16=function(e){return this.outputData.getInt16(2*e,!0)},i.lossless.Decoder.prototype.setValue8=function(e,t){this.outputData.setInt8(e,t)},i.lossless.Decoder.prototype.getValue8=function(e){return this.outputData.getInt8(e)},i.lossless.Decoder.prototype.setValueRGB=function(e,t,n){this.outputData.setUint8(3*e+n,t)},i.lossless.Decoder.prototype.getValueRGB=function(e,t){return this.outputData.getUint8(3*e+t)},i.lossless.Decoder.prototype.readApp=function(){var e=0,t=this.stream.get16();for(e+=2;et)throw new Error("ERROR: frame format error");if(r=e.get8(),(a+=1)>=t)throw new Error("ERROR: frame format error [c>=Lf]");o=e.get8(),a+=1,this.components[r]||(this.components[r]=new i.lossless.ComponentSpec),this.components[r].hSamp=o>>4,this.components[r].vSamp=15&o,this.components[r].quantTableSel=e.get8(),a+=1}if(a!==t)throw new Error("ERROR: frame format error [Lf!=count]");return 1},void 0!==e&&e.exports&&(e.exports=i.lossless.FrameHeader)},"./node_modules/jpeg-lossless-decoder-js/src/huffman-table.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.DataStream=i.lossless.DataStream||n("./node_modules/jpeg-lossless-decoder-js/src/data-stream.js"),i.lossless.Utils=i.lossless.Utils||n("./node_modules/jpeg-lossless-decoder-js/src/utils.js"),i.lossless.HuffmanTable=i.lossless.HuffmanTable||function(){this.l=i.lossless.Utils.createArray(4,2,16),this.th=[],this.v=i.lossless.Utils.createArray(4,2,16,200),this.tc=i.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},i.lossless.HuffmanTable.MSB=2147483648,i.lossless.HuffmanTable.prototype.read=function(e,t){var n,i,r,o,a,s,l=0;for(n=e.get16(),l+=2;l3)throw new Error("ERROR: Huffman table ID > 3");if((o=i>>4)>2)throw new Error("ERROR: Huffman table [Table class > 2 ]");for(this.th[r]=1,this.tc[r][o]=1,a=0;a<16;a+=1)this.l[r][o][a]=e.get8(),l+=1;for(a=0;a<16;a+=1)for(s=0;sn)throw new Error("ERROR: Huffman table format error [count>Lh]");this.v[r][o][a][s]=e.get8(),l+=1}}if(l!==n)throw new Error("ERROR: Huffman table format error [count!=Lf]");for(a=0;a<4;a+=1)for(s=0;s<2;s+=1)0!==this.tc[a][s]&&this.buildHuffTable(t[a][s],this.l[a][s],this.v[a][s]);return 1},i.lossless.HuffmanTable.prototype.buildHuffTable=function(e,t,n){var r,o,a,s,l;for(o=0,a=0;a<8;a+=1)for(s=0;s>a+1;l+=1)e[o]=n[a][s]|a+1<<8,o+=1;for(a=1;o<256;a+=1,o+=1)e[o]=a|i.lossless.HuffmanTable.MSB;for(r=1,o=0,a=8;a<16;a+=1)for(s=0;s>a-7;l+=1)e[256*r+o]=n[a][s]|a+1<<8,o+=1;if(o>=256){if(o>256)throw new Error("ERROR: Huffman table error(1)!");o=0,r+=1}}},void 0!==e&&e.exports&&(e.exports=i.lossless.HuffmanTable)},"./node_modules/jpeg-lossless-decoder-js/src/main.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.ComponentSpec=i.lossless.ComponentSpec||n("./node_modules/jpeg-lossless-decoder-js/src/component-spec.js"),i.lossless.DataStream=i.lossless.DataStream||n("./node_modules/jpeg-lossless-decoder-js/src/data-stream.js"),i.lossless.Decoder=i.lossless.Decoder||n("./node_modules/jpeg-lossless-decoder-js/src/decoder.js"),i.lossless.FrameHeader=i.lossless.FrameHeader||n("./node_modules/jpeg-lossless-decoder-js/src/frame-header.js"),i.lossless.HuffmanTable=i.lossless.HuffmanTable||n("./node_modules/jpeg-lossless-decoder-js/src/huffman-table.js"),i.lossless.QuantizationTable=i.lossless.QuantizationTable||n("./node_modules/jpeg-lossless-decoder-js/src/quantization-table.js"),i.lossless.ScanComponent=i.lossless.ScanComponent||n("./node_modules/jpeg-lossless-decoder-js/src/scan-component.js"),i.lossless.ScanHeader=i.lossless.ScanHeader||n("./node_modules/jpeg-lossless-decoder-js/src/scan-header.js"),i.lossless.Utils=i.lossless.Utils||n("./node_modules/jpeg-lossless-decoder-js/src/utils.js"),void 0!==e&&e.exports&&(e.exports=i)},"./node_modules/jpeg-lossless-decoder-js/src/quantization-table.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.DataStream=i.lossless.DataStream||n("./node_modules/jpeg-lossless-decoder-js/src/data-stream.js"),i.lossless.Utils=i.lossless.Utils||n("./node_modules/jpeg-lossless-decoder-js/src/utils.js"),i.lossless.QuantizationTable=i.lossless.QuantizationTable||function(){this.precision=[],this.tq=[],this.quantTables=i.lossless.Utils.createArray(4,64),this.tq[0]=0,this.tq[1]=0,this.tq[2]=0,this.tq[3]=0},i.lossless.QuantizationTable.enhanceQuantizationTable=function(e,t){var n;for(n=0;n<8;n+=1)e[t[0+n]]*=90,e[t[32+n]]*=90,e[t[16+n]]*=118,e[t[48+n]]*=49,e[t[40+n]]*=71,e[t[8+n]]*=126,e[t[56+n]]*=25,e[t[24+n]]*=106;for(n=0;n<8;n+=1)e[t[0+8*n]]*=90,e[t[4+8*n]]*=90,e[t[2+8*n]]*=118,e[t[6+8*n]]*=49,e[t[5+8*n]]*=71,e[t[1+8*n]]*=126,e[t[7+8*n]]*=25,e[t[3+8*n]]*=106;for(n=0;n<64;n+=1)e[n]>>=6},i.lossless.QuantizationTable.prototype.read=function(e,t){var n,r,o,a,s=0;for(n=e.get16(),s+=2;s3)throw new Error("ERROR: Quantization table ID > 3");if(this.precision[o]=r>>4,0===this.precision[o])this.precision[o]=8;else{if(1!==this.precision[o])throw new Error("ERROR: Quantization table precision error");this.precision[o]=16}if(this.tq[o]=1,8===this.precision[o]){for(a=0;a<64;a+=1){if(s>n)throw new Error("ERROR: Quantization table format error");this.quantTables[o][a]=e.get8(),s+=1}i.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[o],t)}else{for(a=0;a<64;a+=1){if(s>n)throw new Error("ERROR: Quantization table format error");this.quantTables[o][a]=e.get16(),s+=2}i.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[o],t)}}if(s!==n)throw new Error("ERROR: Quantization table error [count!=Lq]");return 1},void 0!==e&&e.exports&&(e.exports=i.lossless.QuantizationTable)},"./node_modules/jpeg-lossless-decoder-js/src/scan-component.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.ScanComponent=i.lossless.ScanComponent||function(){this.acTabSel=0,this.dcTabSel=0,this.scanCompSel=0},void 0!==e&&e.exports&&(e.exports=i.lossless.ScanComponent)},"./node_modules/jpeg-lossless-decoder-js/src/scan-header.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.DataStream=i.lossless.DataStream||n("./node_modules/jpeg-lossless-decoder-js/src/data-stream.js"),i.lossless.ScanComponent=i.lossless.ScanComponent||n("./node_modules/jpeg-lossless-decoder-js/src/scan-component.js"),i.lossless.ScanHeader=i.lossless.ScanHeader||function(){this.ah=0,this.al=0,this.numComp=0,this.selection=0,this.spectralEnd=0,this.components=[]},i.lossless.ScanHeader.prototype.read=function(e){var t,n,r,o=0;for(t=e.get16(),o+=2,this.numComp=e.get8(),o+=1,n=0;nt)throw new Error("ERROR: scan header format error");this.components[n].scanCompSel=e.get8(),o+=1,r=e.get8(),o+=1,this.components[n].dcTabSel=r>>4,this.components[n].acTabSel=15&r}if(this.selection=e.get8(),o+=1,this.spectralEnd=e.get8(),o+=1,r=e.get8(),this.ah=r>>4,this.al=15&r,(o+=1)!==t)throw new Error("ERROR: scan header format error [count!=Ns]");return 1},void 0!==e&&e.exports&&(e.exports=i.lossless.ScanHeader)},"./node_modules/jpeg-lossless-decoder-js/src/utils.js":function(e,t,n){"use strict";var i=i||{};i.lossless=i.lossless||{},i.lossless.Utils=i.lossless.Utils||{},i.lossless.Utils.createArray=function(e){var t=new Array(e||0),n=e;if(arguments.length>1)for(var r=Array.prototype.slice.call(arguments,1);n--;)t[e-1-n]=i.lossless.Utils.createArray.apply(this,r);return t},i.lossless.Utils.makeCRCTable=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t},i.lossless.Utils.crc32=function(e){for(var t=i.lossless.Utils.crcTable||(i.lossless.Utils.crcTable=i.lossless.Utils.makeCRCTable()),n=-1,r=0;r>>8^t[255&(n^e.getUint8(r))];return(-1^n)>>>0},void 0!==e&&e.exports&&(e.exports=i.lossless.Utils)},"./node_modules/math-abs/lib/index.js":function(e,t,n){"use strict";e.exports=function(e){return e<0?-e:0===e?0:e}},"./node_modules/math-ceil/lib/index.js":function(e,t,n){"use strict";e.exports=Math.ceil},"./node_modules/math-float32-to-binary-string/lib/div2.js":function(e,t,n){"use strict";var i=n("./node_modules/math-floor/lib/index.js");e.exports=function(e){for(var t,n="";e>0;)n=(t=e/2)===(e=i(t))?"0"+n:"1"+n;return n}},"./node_modules/math-float32-to-binary-string/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/const-pinf-float32/lib/index.js"),r=n("./node_modules/const-ninf-float32/lib/index.js"),o=n("./node_modules/math-abs/lib/index.js"),a=n("./node_modules/math-floor/lib/index.js"),s=n("./node_modules/utils-right-pad-string/lib/index.js"),l=n("./node_modules/utils-left-pad-string/lib/index.js"),c=n("./node_modules/utils-repeat-string/lib/index.js"),h=n("./node_modules/math-float32-to-binary-string/lib/div2.js"),u=n("./node_modules/math-float32-to-binary-string/lib/mult2.js");e.exports=function(e){var t,n,d,f,p,m,g;if(n=e<0||1/e===r?"1":"0",e===i||e===r)return n+(f=c("1",8))+c("0",23);if(e!=e)return n+(f=c("1",8))+"1"+c("0",22);if(0===e)return n+(f=c("0",8))+c("0",23);if(m=(e=o(e))-(p=a(e)),p=h(p),m=u(m),p)f=p.length-1;else{for(g=0;g=1?(e=n-1,t+="1",149===r&&(r=i)):(e=n,t+="0"),!(1===n||i-r>24));i++);return t}},"./node_modules/math-floor/lib/index.js":function(e,t,n){"use strict";e.exports=Math.floor},"./node_modules/nifti-reader-js/src/nifti.js":function(e,t,n){"use strict";var i=i||{};i.NIFTI1=i.NIFTI1||n("./node_modules/nifti-reader-js/src/nifti1.js"),i.NIFTI2=i.NIFTI2||n("./node_modules/nifti-reader-js/src/nifti2.js"),i.Utils=i.Utils||n("./node_modules/nifti-reader-js/src/utilities.js");var r=r||n("./node_modules/pako/index.js");i.isNIFTI1=function(e){var t,n,r,o;return n=(t=new DataView(e)).getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION),r=t.getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION+1),o=t.getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION+2),!(n!==i.NIFTI1.MAGIC_NUMBER[0]||r!==i.NIFTI1.MAGIC_NUMBER[1]||o!==i.NIFTI1.MAGIC_NUMBER[2])},i.isNIFTI2=function(e){var t,n,r,o;return n=(t=new DataView(e)).getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION),r=t.getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION+1),o=t.getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION+2),!(n!==i.NIFTI2.MAGIC_NUMBER[0]||r!==i.NIFTI2.MAGIC_NUMBER[1]||o!==i.NIFTI2.MAGIC_NUMBER[2])},i.isNIFTI=function(e){return i.isNIFTI1(e)||i.isNIFTI2(e)},i.isCompressed=function(e){var t,n,r;if(e){if(n=(t=new DataView(e)).getUint8(0),r=t.getUint8(1),n===i.Utils.GUNZIP_MAGIC_COOKIE1)return!0;if(r===i.Utils.GUNZIP_MAGIC_COOKIE2)return!0}return!1},i.decompress=function(e){return r.inflate(e).buffer},i.readHeader=function(e){var t=null;return i.isCompressed(e)&&(e=i.decompress(e)),i.isNIFTI1(e)?t=new i.NIFTI1:i.isNIFTI2(e)&&(t=new i.NIFTI2),t?t.readHeader(e):console.error("That file does not appear to be NIFTI!"),t},i.hasExtension=function(e){return 0!=e.extensionFlag[0]},i.readImage=function(e,t){var n=e.vox_offset,i=1,r=1;e.dims[4]&&(i=e.dims[4]),e.dims[5]&&(r=e.dims[5]);var o=e.dims[1]*e.dims[2]*e.dims[3]*i*r*(e.numBitsPerVoxel/8);return t.slice(n,n+o)},i.readExtension=function(e,t){var n=e.getExtensionLocation(),i=e.extensionSize;return t.slice(n,n+i)},i.readExtensionData=function(e,t){var n=e.getExtensionLocation(),i=e.extensionSize;return t.slice(n+8,n+i-8)},void 0!==e&&e.exports&&(e.exports=i)},"./node_modules/nifti-reader-js/src/nifti1.js":function(e,t,n){"use strict";var i=i||{};i.Utils=i.Utils||n("./node_modules/nifti-reader-js/src/utilities.js"),i.NIFTI1=i.NIFTI1||function(){this.littleEndian=!1,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=!1,this.extensionFlag=[0,0,0,0],this.extensionSize=0,this.extensionCode=0},i.NIFTI1.TYPE_NONE=0,i.NIFTI1.TYPE_BINARY=1,i.NIFTI1.TYPE_UINT8=2,i.NIFTI1.TYPE_INT16=4,i.NIFTI1.TYPE_INT32=8,i.NIFTI1.TYPE_FLOAT32=16,i.NIFTI1.TYPE_COMPLEX64=32,i.NIFTI1.TYPE_FLOAT64=64,i.NIFTI1.TYPE_RGB24=128,i.NIFTI1.TYPE_INT8=256,i.NIFTI1.TYPE_UINT16=512,i.NIFTI1.TYPE_UINT32=768,i.NIFTI1.TYPE_INT64=1024,i.NIFTI1.TYPE_UINT64=1280,i.NIFTI1.TYPE_FLOAT128=1536,i.NIFTI1.TYPE_COMPLEX128=1792,i.NIFTI1.TYPE_COMPLEX256=2048,i.NIFTI1.XFORM_UNKNOWN=0,i.NIFTI1.XFORM_SCANNER_ANAT=1,i.NIFTI1.XFORM_ALIGNED_ANAT=2,i.NIFTI1.XFORM_TALAIRACH=3,i.NIFTI1.XFORM_MNI_152=4,i.NIFTI1.SPATIAL_UNITS_MASK=7,i.NIFTI1.TEMPORAL_UNITS_MASK=56,i.NIFTI1.UNITS_UNKNOWN=0,i.NIFTI1.UNITS_METER=1,i.NIFTI1.UNITS_MM=2,i.NIFTI1.UNITS_MICRON=3,i.NIFTI1.UNITS_SEC=8,i.NIFTI1.UNITS_MSEC=16,i.NIFTI1.UNITS_USEC=24,i.NIFTI1.UNITS_HZ=32,i.NIFTI1.UNITS_PPM=40,i.NIFTI1.UNITS_RADS=48,i.NIFTI1.MAGIC_COOKIE=348,i.NIFTI1.MAGIC_NUMBER_LOCATION=344,i.NIFTI1.MAGIC_NUMBER=[110,43,49],i.NIFTI1.MAGIC_NUMBER2=[110,105,49],i.NIFTI1.EXTENSION_HEADER_SIZE=8,i.NIFTI1.prototype.readHeader=function(e){var t,n,r,o,a=new DataView(e),s=i.Utils.getIntAt(a,0,this.littleEndian);if(s!==i.NIFTI1.MAGIC_COOKIE&&(this.littleEndian=!0,s=i.Utils.getIntAt(a,0,this.littleEndian)),s!==i.NIFTI1.MAGIC_COOKIE)throw new Error("This does not appear to be a NIFTI file!");for(this.dim_info=i.Utils.getByteAt(a,39),t=0;t<8;t+=1)o=40+2*t,this.dims[t]=i.Utils.getShortAt(a,o,this.littleEndian);for(this.intent_p1=i.Utils.getFloatAt(a,56,this.littleEndian),this.intent_p2=i.Utils.getFloatAt(a,60,this.littleEndian),this.intent_p3=i.Utils.getFloatAt(a,64,this.littleEndian),this.intent_code=i.Utils.getShortAt(a,68,this.littleEndian),this.datatypeCode=i.Utils.getShortAt(a,70,this.littleEndian),this.numBitsPerVoxel=i.Utils.getShortAt(a,72,this.littleEndian),this.slice_start=i.Utils.getShortAt(a,74,this.littleEndian),t=0;t<8;t+=1)o=76+4*t,this.pixDims[t]=i.Utils.getFloatAt(a,o,this.littleEndian);for(this.vox_offset=i.Utils.getFloatAt(a,108,this.littleEndian),this.scl_slope=i.Utils.getFloatAt(a,112,this.littleEndian),this.scl_inter=i.Utils.getFloatAt(a,116,this.littleEndian),this.slice_end=i.Utils.getShortAt(a,120,this.littleEndian),this.slice_code=i.Utils.getByteAt(a,122),this.xyzt_units=i.Utils.getByteAt(a,123),this.cal_max=i.Utils.getFloatAt(a,124,this.littleEndian),this.cal_min=i.Utils.getFloatAt(a,128,this.littleEndian),this.slice_duration=i.Utils.getFloatAt(a,132,this.littleEndian),this.toffset=i.Utils.getFloatAt(a,136,this.littleEndian),this.description=i.Utils.getStringAt(a,148,228),this.aux_file=i.Utils.getStringAt(a,228,252),this.qform_code=i.Utils.getShortAt(a,252,this.littleEndian),this.sform_code=i.Utils.getShortAt(a,254,this.littleEndian),this.quatern_b=i.Utils.getFloatAt(a,256,this.littleEndian),this.quatern_c=i.Utils.getFloatAt(a,260,this.littleEndian),this.quatern_d=i.Utils.getFloatAt(a,264,this.littleEndian),this.qoffset_x=i.Utils.getFloatAt(a,268,this.littleEndian),this.qoffset_y=i.Utils.getFloatAt(a,272,this.littleEndian),this.qoffset_z=i.Utils.getFloatAt(a,276,this.littleEndian),n=0;n<3;n+=1)for(r=0;r<4;r+=1)o=280+4*(4*n+r),this.affine[n][r]=i.Utils.getFloatAt(a,o,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=i.Utils.getStringAt(a,328,344),this.magic=i.Utils.getStringAt(a,344,348),this.isHDR=this.magic===i.NIFTI1.MAGIC_NUMBER2,a.byteLength>i.NIFTI1.MAGIC_COOKIE&&(this.extensionFlag[0]=i.Utils.getByteAt(a,348),this.extensionFlag[1]=i.Utils.getByteAt(a,349),this.extensionFlag[2]=i.Utils.getByteAt(a,350),this.extensionFlag[3]=i.Utils.getByteAt(a,351),this.extensionFlag[0]&&(this.extensionSize=this.getExtensionSize(a),this.extensionCode=this.getExtensionCode(a)))},i.NIFTI1.prototype.toFormattedString=function(){var e=i.Utils.formatNumber,t="";return t+="Dim Info = "+this.dim_info+"\n",t+="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",t+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+"\n",t+="Intent Code = "+this.intent_code+"\n",t+="Datatype = "+this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+")\n",t+="Bits Per Voxel = "+this.numBitsPerVoxel+"\n",t+="Slice Start = "+this.slice_start+"\n",t+="Voxel Dimensions (1-8): "+e(this.pixDims[0])+", "+e(this.pixDims[1])+", "+e(this.pixDims[2])+", "+e(this.pixDims[3])+", "+e(this.pixDims[4])+", "+e(this.pixDims[5])+", "+e(this.pixDims[6])+", "+e(this.pixDims[7])+"\n",t+="Image Offset = "+this.vox_offset+"\n",t+="Data Scale: Slope = "+e(this.scl_slope)+" Intercept = "+e(this.scl_inter)+"\n",t+="Slice End = "+this.slice_end+"\n",t+="Slice Code = "+this.slice_code+"\n",t+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(i.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(i.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+")\n",t+="Display Range: Max = "+e(this.cal_max)+" Min = "+e(this.cal_min)+"\n",t+="Slice Duration = "+this.slice_duration+"\n",t+="Time Axis Shift = "+this.toffset+"\n",t+='Description: "'+this.description+'"\n',t+='Auxiliary File: "'+this.aux_file+'"\n',t+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+")\n",t+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+")\n",t+="Quaternion Parameters: b = "+e(this.quatern_b)+" c = "+e(this.quatern_c)+" d = "+e(this.quatern_d)+"\n",t+="Quaternion Offsets: x = "+this.qoffset_x+" y = "+this.qoffset_y+" z = "+this.qoffset_z+"\n",t+="S-Form Parameters X: "+e(this.affine[0][0])+", "+e(this.affine[0][1])+", "+e(this.affine[0][2])+", "+e(this.affine[0][3])+"\n",t+="S-Form Parameters Y: "+e(this.affine[1][0])+", "+e(this.affine[1][1])+", "+e(this.affine[1][2])+", "+e(this.affine[1][3])+"\n",t+="S-Form Parameters Z: "+e(this.affine[2][0])+", "+e(this.affine[2][1])+", "+e(this.affine[2][2])+", "+e(this.affine[2][3])+"\n",t+='Intent Name: "'+this.intent_name+'"\n',this.extensionFlag[0]&&(t+="Extension: Size = "+this.extensionSize+" Code = "+this.extensionCode+"\n"),t},i.NIFTI1.prototype.getDatatypeCodeString=function(e){return e===i.NIFTI1.TYPE_UINT8?"1-Byte Unsigned Integer":e===i.NIFTI1.TYPE_INT16?"2-Byte Signed Integer":e===i.NIFTI1.TYPE_INT32?"4-Byte Signed Integer":e===i.NIFTI1.TYPE_FLOAT32?"4-Byte Float":e===i.NIFTI1.TYPE_FLOAT64?"8-Byte Float":e===i.NIFTI1.TYPE_RGB24?"RGB":e===i.NIFTI1.TYPE_INT8?"1-Byte Signed Integer":e===i.NIFTI1.TYPE_UINT16?"2-Byte Unsigned Integer":e===i.NIFTI1.TYPE_UINT32?"4-Byte Unsigned Integer":e===i.NIFTI1.TYPE_INT64?"8-Byte Signed Integer":e===i.NIFTI1.TYPE_UINT64?"8-Byte Unsigned Integer":"Unknown"},i.NIFTI1.prototype.getTransformCodeString=function(e){return e===i.NIFTI1.XFORM_SCANNER_ANAT?"Scanner":e===i.NIFTI1.XFORM_ALIGNED_ANAT?"Aligned":e===i.NIFTI1.XFORM_TALAIRACH?"Talairach":e===i.NIFTI1.XFORM_MNI_152?"MNI":"Unknown"},i.NIFTI1.prototype.getUnitsCodeString=function(e){return e===i.NIFTI1.UNITS_METER?"Meters":e===i.NIFTI1.UNITS_MM?"Millimeters":e===i.NIFTI1.UNITS_MICRON?"Microns":e===i.NIFTI1.UNITS_SEC?"Seconds":e===i.NIFTI1.UNITS_MSEC?"Milliseconds":e===i.NIFTI1.UNITS_USEC?"Microseconds":e===i.NIFTI1.UNITS_HZ?"Hz":e===i.NIFTI1.UNITS_PPM?"PPM":e===i.NIFTI1.UNITS_RADS?"Rads":"Unknown"},i.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])},i.NIFTI1.prototype.convertNiftiQFormToNiftiSForm=function(e,t,n,i,r,o,a,s,l,c){var h,u,d,f,p=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],m=e,g=t,_=n;return p[3][0]=p[3][1]=p[3][2]=0,p[3][3]=1,(h=1-(m*m+g*g+_*_))<1e-7?(m*=h=1/Math.sqrt(m*m+g*g+_*_),g*=h,_*=h,h=0):h=Math.sqrt(h),u=a>0?a:1,d=s>0?s:1,f=l>0?l:1,c<0&&(f=-f),p[0][0]=(h*h+m*m-g*g-_*_)*u,p[0][1]=2*(m*g-h*_)*d,p[0][2]=2*(m*_+h*g)*f,p[1][0]=2*(m*g+h*_)*u,p[1][1]=(h*h+g*g-m*m-_*_)*d,p[1][2]=2*(g*_-h*m)*f,p[2][0]=2*(m*_-h*g)*u,p[2][1]=2*(g*_+h*m)*d,p[2][2]=(h*h+_*_-g*g-m*m)*f,p[0][3]=i,p[1][3]=r,p[2][3]=o,p},i.NIFTI1.prototype.convertNiftiSFormToNEMA=function(e){var t,n,i,r,o,a,s,l,c,h,u,d,f,p,m,g,_,y,v,b,w,x,A,S,M,E,T,k,I,C,P,L,R;if(p=0,E=[[0,0,0],[0,0,0],[0,0,0]],T=[[0,0,0],[0,0,0],[0,0,0]],t=e[0][0],n=e[0][1],i=e[0][2],r=e[1][0],o=e[1][1],a=e[1][2],s=e[2][0],l=e[2][1],c=e[2][2],0===(h=Math.sqrt(t*t+r*r+s*s)))return null;if(t/=h,r/=h,s/=h,0===(h=Math.sqrt(n*n+o*o+l*l)))return null;if(h=t*(n/=h)+r*(o/=h)+s*(l/=h),Math.abs(h)>1e-4){if(n-=h*t,o-=h*r,l-=h*s,0===(h=Math.sqrt(n*n+o*o+l*l)))return null;n/=h,o/=h,l/=h}if(0===(h=Math.sqrt(i*i+a*a+c*c))?(i=r*l-s*o,a=s*n-l*t,c=t*o-r*n):(i/=h,a/=h,c/=h),h=t*i+r*a+s*c,Math.abs(h)>1e-4){if(i-=h*t,a-=h*r,c-=h*s,0===(h=Math.sqrt(i*i+a*a+c*c)))return null;i/=h,a/=h,c/=h}if(h=n*i+o*a+l*c,Math.abs(h)>1e-4){if(i-=h*n,a-=h*o,c-=h*l,0===(h=Math.sqrt(i*i+a*a+c*c)))return null;i/=h,a/=h,c/=h}if(E[0][0]=t,E[0][1]=n,E[0][2]=i,E[1][0]=r,E[1][1]=o,E[1][2]=a,E[2][0]=s,E[2][1]=l,E[2][2]=c,0===(u=this.nifti_mat33_determ(E)))return null;for(M=-666,y=w=x=A=1,v=2,b=3,d=1;d<=3;d+=1)for(f=1;f<=3;f+=1)if(d!==f)for(p=1;p<=3;p+=1)if(d!==p&&f!==p)for(T[0][0]=T[0][1]=T[0][2]=T[1][0]=T[1][1]=T[1][2]=T[2][0]=T[2][1]=T[2][2]=0,m=-1;m<=1;m+=2)for(g=-1;g<=1;g+=2)for(_=-1;_<=1;_+=2)T[0][d-1]=m,T[1][f-1]=g,T[2][p-1]=_,this.nifti_mat33_determ(T)*u>0&&(h=(S=this.nifti_mat33_mul(T,E))[0][0]+S[1][1]+S[2][2])>M&&(M=h,y=d,v=f,b=p,w=m,x=g,A=_);switch(k=I=C=P=L=R=0,y*w){case 1:k="X",P="+";break;case-1:k="X",P="-";break;case 2:k="Y",P="+";break;case-2:k="Y",P="-";break;case 3:k="Z",P="+";break;case-3:k="Z",P="-"}switch(v*x){case 1:I="X",L="+";break;case-1:I="X",L="-";break;case 2:I="Y",L="+";break;case-2:I="Y",L="-";break;case 3:I="Z",L="+";break;case-3:I="Z",L="-"}switch(b*A){case 1:C="X",R="+";break;case-1:C="X",R="-";break;case 2:C="Y",R="+";break;case-2:C="Y",R="-";break;case 3:C="Z",R="+";break;case-3:C="Z",R="-"}return k+I+C+P+L+R},i.NIFTI1.prototype.nifti_mat33_mul=function(e,t){var n,i,r=[[0,0,0],[0,0,0],[0,0,0]];for(n=0;n<3;n+=1)for(i=0;i<3;i+=1)r[n][i]=e[n][0]*t[0][i]+e[n][1]*t[1][i]+e[n][2]*t[2][i];return r},i.NIFTI1.prototype.nifti_mat33_determ=function(e){var t,n,i,r,o,a,s,l,c;return t=e[0][0],n=e[0][1],i=e[0][2],r=e[1][0],o=e[1][1],a=e[1][2],s=e[2][0],l=e[2][1],t*o*(c=e[2][2])-t*l*a-r*n*c+r*l*i+s*n*a-s*o*i},i.NIFTI1.prototype.getExtensionLocation=function(){return i.NIFTI1.MAGIC_COOKIE+4},i.NIFTI1.prototype.getExtensionSize=function(e){return i.Utils.getIntAt(e,this.getExtensionLocation(),this.littleEndian)},i.NIFTI1.prototype.getExtensionCode=function(e){return i.Utils.getIntAt(e,this.getExtensionLocation()+4,this.littleEndian)},void 0!==e&&e.exports&&(e.exports=i.NIFTI1)},"./node_modules/nifti-reader-js/src/nifti2.js":function(e,t,n){"use strict";var i=i||{};i.Utils=i.Utils||n("./node_modules/nifti-reader-js/src/utilities.js"),i.NIFTI1=i.NIFTI1||n("./node_modules/nifti-reader-js/src/nifti1.js"),i.NIFTI2=i.NIFTI2||function(){this.littleEndian=!1,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]},i.NIFTI2.MAGIC_COOKIE=540,i.NIFTI2.MAGIC_NUMBER_LOCATION=4,i.NIFTI2.MAGIC_NUMBER=[110,43,50,0,13,10,26,10],i.NIFTI2.prototype.readHeader=function(e){var t,n,r,o,a=new DataView(e),s=i.Utils.getIntAt(a,0,this.littleEndian);if(s!==i.NIFTI2.MAGIC_COOKIE&&(this.littleEndian=!0,s=i.Utils.getIntAt(a,0,this.littleEndian)),s!==i.NIFTI2.MAGIC_COOKIE)throw new Error("This does not appear to be a NIFTI file!");for(this.datatypeCode=i.Utils.getShortAt(a,12,this.littleEndian),this.numBitsPerVoxel=i.Utils.getShortAt(a,14,this.littleEndian),t=0;t<8;t+=1)o=16+8*t,this.dims[t]=i.Utils.getLongAt(a,o,this.littleEndian);for(this.intent_p1=i.Utils.getDoubleAt(a,80,this.littleEndian),this.intent_p2=i.Utils.getDoubleAt(a,88,this.littleEndian),this.intent_p3=i.Utils.getDoubleAt(a,96,this.littleEndian),t=0;t<8;t+=1)o=104+8*t,this.pixDims[t]=i.Utils.getDoubleAt(a,o,this.littleEndian);for(this.vox_offset=i.Utils.getLongAt(a,168,this.littleEndian),this.scl_slope=i.Utils.getDoubleAt(a,176,this.littleEndian),this.scl_inter=i.Utils.getDoubleAt(a,184,this.littleEndian),this.cal_max=i.Utils.getDoubleAt(a,192,this.littleEndian),this.cal_min=i.Utils.getDoubleAt(a,200,this.littleEndian),this.slice_duration=i.Utils.getDoubleAt(a,208,this.littleEndian),this.toffset=i.Utils.getDoubleAt(a,216,this.littleEndian),this.slice_start=i.Utils.getLongAt(a,224,this.littleEndian),this.slice_end=i.Utils.getLongAt(a,232,this.littleEndian),this.description=i.Utils.getStringAt(a,240,320),this.aux_file=i.Utils.getStringAt(a,320,344),this.qform_code=i.Utils.getIntAt(a,344,this.littleEndian),this.sform_code=i.Utils.getIntAt(a,348,this.littleEndian),this.quatern_b=i.Utils.getDoubleAt(a,352,this.littleEndian),this.quatern_c=i.Utils.getDoubleAt(a,360,this.littleEndian),this.quatern_d=i.Utils.getDoubleAt(a,368,this.littleEndian),this.qoffset_x=i.Utils.getDoubleAt(a,376,this.littleEndian),this.qoffset_y=i.Utils.getDoubleAt(a,384,this.littleEndian),this.qoffset_z=i.Utils.getDoubleAt(a,392,this.littleEndian),n=0;n<3;n+=1)for(r=0;r<4;r+=1)o=400+8*(4*n+r),this.affine[n][r]=i.Utils.getDoubleAt(a,o,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=i.Utils.getIntAt(a,496,this.littleEndian),this.xyzt_units=i.Utils.getIntAt(a,500,this.littleEndian),this.intent_code=i.Utils.getIntAt(a,504,this.littleEndian),this.intent_name=i.Utils.getStringAt(a,508,524),this.dim_info=i.Utils.getByteAt(a,524),a.byteLength>i.NIFTI2.MAGIC_COOKIE&&(this.extensionFlag[0]=i.Utils.getByteAt(a,540),this.extensionFlag[1]=i.Utils.getByteAt(a,541),this.extensionFlag[2]=i.Utils.getByteAt(a,542),this.extensionFlag[3]=i.Utils.getByteAt(a,543),this.extensionFlag[0]&&(this.extensionSize=this.getExtensionSize(a),this.extensionCode=this.getExtensionCode(a)))},i.NIFTI2.prototype.toFormattedString=function(){var e=i.Utils.formatNumber,t="";return t+="Datatype = "+ +this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+")\n",t+="Bits Per Voxel = = "+this.numBitsPerVoxel+"\n",t+="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",t+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+"\n",t+="Voxel Dimensions (1-8): "+e(this.pixDims[0])+", "+e(this.pixDims[1])+", "+e(this.pixDims[2])+", "+e(this.pixDims[3])+", "+e(this.pixDims[4])+", "+e(this.pixDims[5])+", "+e(this.pixDims[6])+", "+e(this.pixDims[7])+"\n",t+="Image Offset = "+this.vox_offset+"\n",t+="Data Scale: Slope = "+e(this.scl_slope)+" Intercept = "+e(this.scl_inter)+"\n",t+="Display Range: Max = "+e(this.cal_max)+" Min = "+e(this.cal_min)+"\n",t+="Slice Duration = "+this.slice_duration+"\n",t+="Time Axis Shift = "+this.toffset+"\n",t+="Slice Start = "+this.slice_start+"\n",t+="Slice End = "+this.slice_end+"\n",t+='Description: "'+this.description+'"\n',t+='Auxiliary File: "'+this.aux_file+'"\n',t+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+")\n",t+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+")\n",t+="Quaternion Parameters: b = "+e(this.quatern_b)+" c = "+e(this.quatern_c)+" d = "+e(this.quatern_d)+"\n",t+="Quaternion Offsets: x = "+this.qoffset_x+" y = "+this.qoffset_y+" z = "+this.qoffset_z+"\n",t+="S-Form Parameters X: "+e(this.affine[0][0])+", "+e(this.affine[0][1])+", "+e(this.affine[0][2])+", "+e(this.affine[0][3])+"\n",t+="S-Form Parameters Y: "+e(this.affine[1][0])+", "+e(this.affine[1][1])+", "+e(this.affine[1][2])+", "+e(this.affine[1][3])+"\n",t+="S-Form Parameters Z: "+e(this.affine[2][0])+", "+e(this.affine[2][1])+", "+e(this.affine[2][2])+", "+e(this.affine[2][3])+"\n",t+="Slice Code = "+this.slice_code+"\n",t+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(i.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(i.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+")\n",t+="Intent Code = "+this.intent_code+"\n",(t+='Intent Name: "'+this.intent_name+'"\n')+"Dim Info = "+this.dim_info+"\n"},i.NIFTI2.prototype.getExtensionLocation=function(){return i.NIFTI2.MAGIC_COOKIE+4},i.NIFTI2.prototype.getExtensionSize=i.NIFTI1.prototype.getExtensionSize,i.NIFTI2.prototype.getExtensionCode=i.NIFTI1.prototype.getExtensionCode,i.NIFTI2.prototype.getDatatypeCodeString=i.NIFTI1.prototype.getDatatypeCodeString,i.NIFTI2.prototype.getTransformCodeString=i.NIFTI1.prototype.getTransformCodeString,i.NIFTI2.prototype.getUnitsCodeString=i.NIFTI1.prototype.getUnitsCodeString,i.NIFTI2.prototype.getQformMat=i.NIFTI1.prototype.getQformMat,i.NIFTI2.prototype.convertNiftiQFormToNiftiSForm=i.NIFTI1.prototype.convertNiftiQFormToNiftiSForm,i.NIFTI2.prototype.convertNiftiSFormToNEMA=i.NIFTI1.prototype.convertNiftiSFormToNEMA,i.NIFTI2.prototype.nifti_mat33_mul=i.NIFTI1.prototype.nifti_mat33_mul,i.NIFTI2.prototype.nifti_mat33_determ=i.NIFTI1.prototype.nifti_mat33_determ,void 0!==e&&e.exports&&(e.exports=i.NIFTI2)},"./node_modules/nifti-reader-js/src/utilities.js":function(e,t,n){"use strict";var i=i||{};i.Utils=i.Utils||{},i.Utils.crcTable=null,i.Utils.GUNZIP_MAGIC_COOKIE1=31,i.Utils.GUNZIP_MAGIC_COOKIE2=139,i.Utils.getStringAt=function(e,t,n){var i,r,o="";for(i=t;i=0;r--)a=256*a+o[r];return a},i.Utils.toArrayBuffer=function(e){var t,n,i;for(t=new ArrayBuffer(e.length),n=new Uint8Array(t),i=0;i>>1:e>>>1;t[n]=e}return t},i.Utils.crc32=function(e){for(var t=i.Utils.crcTable||(i.Utils.crcTable=i.Utils.makeCRCTable()),n=-1,r=0;r>>8^t[255&(n^e.getUint8(r))];return(-1^n)>>>0},void 0!==e&&e.exports&&(e.exports=i.Utils)},"./node_modules/node-libs-browser/mock/empty.js":function(e,t){},"./node_modules/nrrd-js/nrrd.js":function(e,t,n){"use strict";var i=n("./node_modules/assert/assert.js"),r=/[ \f\t\v]*\r?\n/,o=/^NRRD\d{4}$/,a=/^([^:]*)(:[ =])(.*)$/,s=/^LIST(?: (\d+))?$/;function l(e,t,n,r){var o,a,s=(a=e)in u?u[a]:a;switch(e){case"data":case"buffer":case"keys":case"version":break;case"content":case"number":case"sampleUnits":case"space":o=s+": "+t;break;case"blockSize":case"lineSkip":case"byteSkip":case"dimension":case"spaceDimension":i("number"==typeof t||t instanceof Number,"Field "+e+" should at least contain a number!"),o=s+": "+t;break;case"min":case"max":case"oldMin":case"oldMax":i("number"==typeof t||t instanceof Number,"Field "+e+" should contain a number!"),o=s+": "+t;break;case"spaceOrigin":i(t.length===r,"Field "+e+" should be a list with length equal to the space dimension!"),t.forEach((function(t){i("number"==typeof t||t instanceof Number,"Field "+e+" should be a list of numbers!")})),o=s+": ("+t.join(",")+")";break;case"labels":case"units":case"spaceUnits":i(void 0!==t.length&&t.length==n,"Field "+e+" should be a list with length equal to the dimension!"),t.forEach((function(t){i("string"==typeof t||t instanceof String,"Field "+e+" should be a list of numbers!")})),o=s+": "+t.map(g).join(" ");break;case"sizes":case"spacings":case"thicknesses":case"axisMins":case"axisMaxs":i(void 0!==t.length&&t.length==n,"Field "+e+" should be a list with length equal to the dimension!"),t.forEach((function(t){i("number"==typeof t||t instanceof Number,"Field "+e+" should be a list of numbers!")})),o=s+": "+t.join(" ");break;case"spaceDirections":i(void 0!==t.length&&t.length===n,"Field "+e+" should be a list with length equal to the dimension!"),t.forEach((function(t){i(null===t||void 0!==t.length&&t.length===r,"The elements of field "+e+" should be lists with length equal to the space dimension!"),null!==t&&t.forEach((function(t){i("number"==typeof t||t instanceof Number,"The elements of field "+e+" should be lists of numbers!")}))})),o=s+": "+t.map((function(e){return null===e?"none":"("+e.join(",")+")"})).join(" ");break;case"measurementFrame":i(void 0!==t.length&&t.length===r,"Field "+e+" should be a list with length equal to the space dimension!"),t.forEach((function(t){i(null===t||void 0!==t.length&&t.length===r,"The elements of field "+e+" should be lists with length equal to the space dimension!"),null!==t&&t.forEach((function(t){i("number"==typeof t||t instanceof Number,"The elements of field "+e+" should be lists of numbers!")}))})),o=s+": "+t.map((function(e){return null===e?"none":"("+e.join(",")+")"})).join(" ");break;case"type":case"encoding":case"endian":i("string"==typeof t||t instanceof String,"Field "+e+" should contain a string!"),o=s+": "+t;break;case"dataFile":t.length||t.files&&"subdim"in t||(o=s+": "+function(e){if("string"==typeof e||e instanceof String)return e;if("format"in e&&"min"in e&&"max"in e&&"step"in e)return"subdim"in e?e.format+" "+e.min+" "+e.max+" "+e.step+" "+e.subdim:e.format+" "+e.min+" "+e.max+" "+e.step;throw new Error("Unrecognized data file format!")}(t));break;case"centers":case"kinds":i(void 0!==t.length&&t.length==n,"Field "+e+" should be a list with length equal to the dimension!"),o=s+": "+t.map(E).join(" ");break;default:console.warn("Unrecognized NRRD field: "+e+", skipping.")}return o}function c(e,t){switch(e){case"content":case"number":case"sampleUnits":break;case"dimension":case"blockSize":case"lineSkip":case"byteSkip":case"spaceDimension":t=d(t);break;case"min":case"max":case"oldMin":case"oldMax":t=f(t);break;case"spaceOrigin":t=p(t);break;case"labels":case"units":case"spaceUnits":t=y(t,m);break;case"sizes":t=y(t,d);break;case"spacings":case"thicknesses":case"axisMins":case"axisMaxs":t=y(t,f);break;case"spaceDirections":case"measurementFrame":t=y(t,p);break;case"type":t=v(t);break;case"encoding":t=b(t);break;case"endian":t=w(t);break;case"dataFile":n=t,t=(i=x.exec(n))?5==i.length&&i[4]?{format:n.substring(0,i.index),min:d(i[1]),max:d(i[2]),step:d(i[3]),subdim:d(i[4])}:{format:n.substring(0,i.index),min:d(i[1]),max:d(i[2]),step:d(i[3])}:n;break;case"centers":t=y(t,A);break;case"kinds":t=y(t,M);break;case"space":t=function(e){switch(e.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:return console.warn("Unrecognized space: "+e),e}}(t);break;default:console.warn("Unrecognized NRRD field: "+e)}var n,i;return t}e.exports.serialize=function(e){var t,n,i,r,o,a,s,c,h,u,d=1,f={},p=[];for(r in e)f[r]=e[r];if(void 0===f.sizes)throw new Error("Sizes missing from NRRD file!");if(void 0===f.dimension&&(f.dimension=f.sizes.length),f.data instanceof Int8Array?o="int8":f.data instanceof Uint8Array?o="uint8":f.data instanceof Int16Array?o="int16":f.data instanceof Uint16Array?o="uint16":f.data instanceof Int32Array?o="int32":f.data instanceof Uint32Array?o="uint32":f.data instanceof Float32Array?o="float":f.data instanceof Float64Array&&(o="double"),void 0===f.type&&void 0!==o)f.type=o;else{if(void 0===f.type)throw new Error("Type of data is not given and cannot be inferred!");("string"==typeof f.type||f.type instanceof String)&&(f.type=v(f.type))}void 0===f.encoding?f.encoding="raw":("string"==typeof f.encoding||f.encoding instanceof String)&&(f.encoding=b(f.encoding)),f.data&&"block"!=f.type&&"int8"!=f.type&&"uint8"!=f.type&&"ascii"!=f.encoding?f.endian=C:"block"==f.type||"int8"==f.type||"uint8"==f.type||"ascii"==f.encoding?f.endian=void 0:("string"==typeof f.endian||f.endian instanceof String)&&(f.endian=w(f.endian));var m=void 0;if(void 0!==f.spaceDimension)m=f.spaceDimension;else if(void 0!==f.space)switch(f.space){case"right-anterior-superior":case"RAS":case"left-anterior-superior":case"LAS":case"left-posterior-superior":case"LPS":case"scanner-xyz":case"3D-right-handed":case"3D-left-handed":m=3;break;case"right-anterior-superior-time":case"RAST":case"left-anterior-superior-time":case"LAST":case"left-posterior-superior-time":case"LPST":case"scanner-xyz-time":case"3D-right-handed-time":case"3D-left-handed-time":m=4;break;default:console.warn("Unrecognized space: "+f.space)}for(R(f),t=0;t0) integers!");d*=f.sizes[t]}if(f.data){if(f.data.length=0||void 0!==(h=l(r,f[r],f.dimension,m))&&p.push(h));if(f.keys)for(r in f.keys){if(r.indexOf(":=")>=0)throw new Error("The combination ':=' is not allowed in an NRRD key!");p.push(r+":="+f[r].replace("\\","\\\\").replace("\n","\\n"))}if(f.dataFile&&f.dataFile.length?(p.push("data file: LIST"),Array.prototype.push.apply(p,f.dataFile)):f.dataFile&&f.dataFile.files&&"subdim"in f.dataFile&&(p.push("data file: LIST "+f.dataFile.subdim),Array.prototype.push.apply(p,f.dataFile.files)),s&&!("dataFile"in f)){for(p.push(""),p.push(""),u=p.join("\n"),n=new ArrayBuffer(u.length+s.byteLength),i=new Uint8Array(n),t=0;t0&&"#"!=e[0]})),!o.test(l[0]))throw new Error("File is not an NRRD file!");for(g.version=parseInt(l[0].substring(4,8),10),g.version>5&&console.warn("Reading an unsupported version of the NRRD format; things may go haywire."),t=1;t0) integers!");s*=n[r]}if("block"==t)return e.slice(0,s*i.blockSize);if("int8"==t||"uint8"==t||i.endian==C)switch(t){case"int8":return l(1),new Int8Array(e.slice(0,s));case"uint8":return l(1),new Uint8Array(e.slice(0,s));case"int16":return l(2),new Int16Array(e.slice(0,2*s));case"uint16":return l(2),new Uint16Array(e.slice(0,2*s));case"int32":return l(4),new Int32Array(e.slice(0,4*s));case"uint32":return l(4),new Uint32Array(e.slice(0,4*s));case"float":return l(4),new Float32Array(e.slice(0,4*s));case"double":return l(8),new Float64Array(e.slice(0,8*s));default:return void console.warn("Unsupported NRRD type: "+t+", returning raw buffer.")}else{switch(i.endian){case"big":case"little":break;default:return void console.warn("Unsupported endianness in NRRD file: "+i.endian)}switch(a=new DataView(e),t){case"int8":for(o=new Int8Array(s),r=0;r0) integers!");a*=n[i]}if(r=new Uint8Array(e),(o=String.fromCharCode.apply(null,r).split(P)).lengtha&&(""===o[0]&&(o=o.slice(1)),o=o.slice(0,a)),t){case"int8":return new Int8Array(o.map(d));case"uint8":return new Uint8Array(o.map(d));case"int16":return new Int16Array(o.map(d));case"uint16":return new Uint16Array(o.map(d));case"int32":return new Int32Array(o.map(d));case"uint32":return new Uint32Array(o.map(d));case"float":return new Float32Array(o.map(f));case"double":return new Float64Array(o.map(f));default:return void console.warn("Unsupported NRRD type: "+t+".")}}(g.buffer,g.type,g.sizes);break;default:console.warn("Unsupported NRRD encoding: "+g.encoding)}return g};var h={"block size":"blockSize",blocksize:"blockSize","old min":"oldMin",oldmin:"oldMin","old max":"oldMax",oldmax:"oldMax","data file":"dataFile",datafile:"dataFile","line skip":"lineSkip",lineskip:"lineSkip","byte skip":"byteSkip",byteskip:"byteSkip","sample units":"sampleUnits",sampleunits:"sampleUnits","axis mins":"axisMins","axis maxs":"axisMaxs",centers:"centers",centerings:"centers","space dimension":"spaceDimension","space units":"spaceUnits","space origin":"spaceOrigin","space directions":"spaceDirections","measurement frame":"measurementFrame"},u=function(){var e,t={};for(e in h)t[h[e]]=e;return t}();function d(e){var t=parseInt(e,10);if(Number.isNaN(t))throw new Error("Malformed NRRD integer: "+e);return t}function f(e){if((e=e.toLowerCase()).indexOf("nan")>=0)return NaN;if(e.indexOf("-inf")>=0)return-1/0;if(e.indexOf("inf")>=0)return 1/0;var t=parseFloat(e);if(Number.isNaN(t))throw new Error("Malformed NRRD float: "+e);return t}function p(e){if("none"==e)return null;if(e.length<2||"("!==e[0]||")"!==e[e.length-1])throw new Error("Malformed NRRD vector: "+e);return e.slice(1,-1).split(",").map(f)}function m(e){if(length<2||'"'!=e[0]||'"'!=e[e.length-1])throw new Error("Invalid NRRD quoted string: "+e);return e.slice(1,-1).replace('\\"','"')}function g(e){return'"'+e.replace('"','\\"')+'"'}var _=/[ \t]+/;function y(e,t){return e.split(_).map(t)}function v(e){switch(e.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:return console.warn("Unrecognized NRRD type: "+e),e}}function b(e){switch(e.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:return console.warn("Unrecognized NRRD encoding: "+e),e}}function w(e){switch(e.toLowerCase()){case"little":return"little";case"big":return"big";default:return console.warn("Unrecognized NRRD endianness: "+e),e}}var x=/ (-?\d+) (-?\d+) (-?\d+)(?: (\d+))?$/;function A(e){switch(e.toLowerCase()){case"cell":return"cell";case"node":return"node";case"???":case"none":return null;default:return console.warn("Unrecognized NRRD center: "+e),e}}var S={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 M(e){var t=e.toLowerCase();return t in S?S[t]:(console.warn("Unrecognized NRRD kind: "+e),e)}function E(e){return null===e?"???":e}var T,k,I,C=(T=new ArrayBuffer(4),k=new Uint32Array(T),I=new Uint8Array(T),k[0]=16909060,1==I[0]&&2==I[1]&&3==I[2]&&4==I[3]?"big":4==I[0]&&3==I[1]&&2==I[2]&&1==I[3]?"little":void console.warn("Unrecognized system endianness!")),P=/[ \t\n\r\v\f]+/;function L(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float":return 4;case"int64":case"uint64":case"double":return 8;default:throw new Error("Do not know the size of NRRD type: "+e)}}function R(e){if(void 0===e.dimension)throw new Error("Dimension missing from NRRD file!");if(void 0===e.type)throw new Error("Type missing from NRRD file!");if(void 0===e.encoding)throw new Error("Encoding missing from NRRD file!");if(void 0===e.sizes)throw new Error("Sizes missing from NRRD file!");if("block"!=e.type&&"int8"!=e.type&&"uint8"!=e.type&&"ascii"!=e.encoding&&void 0===e.endian)throw new Error("Endianness missing from NRRD file!");if("block"==e.type&&void 0===e.blockSize)throw new Error("Missing block size in NRRD file!");if(0===e.dimension)throw new Error("Zero-dimensional NRRD file?");if(e.dimension!=e.sizes.length)throw new Error("Length of 'sizes' is different from 'dimension' in an NRRD file!");if(e.spacings&&e.dimension!=e.spacings.length)throw new Error("Length of 'spacings' is different from 'dimension' in an NRRD file!");if(e.thicknesses&&e.dimension!=e.thicknesses.length)throw new Error("Length of 'thicknesses' is different from 'dimension' in an NRRD file!");if(e.axisMins&&e.dimension!=e.axisMins.length)throw new Error("Length of 'axis mins' is different from 'dimension' in an NRRD file!");if(e.axisMaxs&&e.dimension!=e.axisMaxs.length)throw new Error("Length of 'axis maxs' is different from 'dimension' in an NRRD file!");if(e.centers&&e.dimension!=e.centers.length)throw new Error("Length of 'centers' is different from 'dimension' in an NRRD file!");if(e.labels&&e.dimension!=e.labels.length)throw new Error("Length of 'labels' is different from 'dimension' in an NRRD file!");if(e.units&&e.dimension!=e.units.length)throw new Error("Length of 'units' is different from 'dimension' in an NRRD file!");if(e.kinds&&e.dimension!=e.kinds.length)throw new Error("Length of 'kinds' is different from 'dimension' in an NRRD file!");if(!(void 0!==e.data&&0!==e.data.length||void 0!==e.buffer&&0!==e.buffer.byteLength||void 0!==e.dataFile))throw new Error("NRRD file has neither inline or external data!")}function B(e,t){switch(t){case"int8":return new Int8Array(e);case"uint8":return new Uint8Array(e);case"int16":return new Int16Array(e);case"uint16":return new Uint16Array(e);case"int32":return new Int32Array(e);case"uint32":return new Uint32Array(e);case"float":return new Float32Array(e);case"double":return new Float64Array(e);default:throw new Error("Cannot cast to NRRD type: "+t)}}function D(e){var t,n,i,r,o=new Array(e.length);for(t=0;t0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var n=i.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw new Error(a[n]);if(t.header&&i.deflateSetHeader(this.strm,t.header),t.dictionary){var h;if(h="string"==typeof t.dictionary?o.string2buf(t.dictionary):"[object ArrayBuffer]"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(n=i.deflateSetDictionary(this.strm,h)))throw new Error(a[n]);this._dict_set=!0}}function h(e,t){var n=new c(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}c.prototype.push=function(e,t){var n,a,s=this.strm,c=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,"string"==typeof e?s.input=o.string2buf(e):"[object ArrayBuffer]"===l.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new r.Buf8(c),s.next_out=0,s.avail_out=c),1!==(n=i.deflate(s,a))&&0!==n)return this.onEnd(n),this.ended=!0,!1;0!==s.avail_out&&(0!==s.avail_in||4!==a&&2!==a)||("string"===this.options.to?this.onData(o.buf2binstring(r.shrinkBuf(s.output,s.next_out))):this.onData(r.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&1!==n);return 4===a?(n=i.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n):2!==a||(this.onEnd(0),s.avail_out=0,!0)},c.prototype.onData=function(e){this.chunks.push(e)},c.prototype.onEnd=function(e){0===e&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=c,t.deflate=h,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,h(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,h(e,t)}},"./node_modules/pako/lib/inflate.js":function(e,t,n){"use strict";var i=n("./node_modules/pako/lib/zlib/inflate.js"),r=n("./node_modules/pako/lib/utils/common.js"),o=n("./node_modules/pako/lib/utils/strings.js"),a=n("./node_modules/pako/lib/zlib/constants.js"),s=n("./node_modules/pako/lib/zlib/messages.js"),l=n("./node_modules/pako/lib/zlib/zstream.js"),c=n("./node_modules/pako/lib/zlib/gzheader.js"),h=Object.prototype.toString;function u(e){if(!(this instanceof u))return new u(e);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var n=i.inflateInit2(this.strm,t.windowBits);if(n!==a.Z_OK)throw new Error(s[n]);this.header=new c,i.inflateGetHeader(this.strm,this.header)}function d(e,t){var n=new u(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}u.prototype.push=function(e,t){var n,s,l,c,u,d,f=this.strm,p=this.options.chunkSize,m=this.options.dictionary,g=!1;if(this.ended)return!1;s=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,"string"==typeof e?f.input=o.binstring2buf(e):"[object ArrayBuffer]"===h.call(e)?f.input=new Uint8Array(e):f.input=e,f.next_in=0,f.avail_in=f.input.length;do{if(0===f.avail_out&&(f.output=new r.Buf8(p),f.next_out=0,f.avail_out=p),(n=i.inflate(f,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&m&&(d="string"==typeof m?o.string2buf(m):"[object ArrayBuffer]"===h.call(m)?new Uint8Array(m):m,n=i.inflateSetDictionary(this.strm,d)),n===a.Z_BUF_ERROR&&!0===g&&(n=a.Z_OK,g=!1),n!==a.Z_STREAM_END&&n!==a.Z_OK)return this.onEnd(n),this.ended=!0,!1;f.next_out&&(0!==f.avail_out&&n!==a.Z_STREAM_END&&(0!==f.avail_in||s!==a.Z_FINISH&&s!==a.Z_SYNC_FLUSH)||("string"===this.options.to?(l=o.utf8border(f.output,f.next_out),c=f.next_out-l,u=o.buf2string(f.output,l),f.next_out=c,f.avail_out=p-c,c&&r.arraySet(f.output,f.output,l,c,0),this.onData(u)):this.onData(r.shrinkBuf(f.output,f.next_out)))),0===f.avail_in&&0===f.avail_out&&(g=!0)}while((f.avail_in>0||0===f.avail_out)&&n!==a.Z_STREAM_END);return n===a.Z_STREAM_END&&(s=a.Z_FINISH),s===a.Z_FINISH?(n=i.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===a.Z_OK):s!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),f.avail_out=0,!0)},u.prototype.onData=function(e){this.chunks.push(e)},u.prototype.onEnd=function(e){e===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=u,t.inflate=d,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,d(e,t)},t.ungzip=d},"./node_modules/pako/lib/utils/common.js":function(e,t,n){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var i in n)n.hasOwnProperty(i)&&(e[i]=n[i])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var r={arraySet:function(e,t,n,i,r){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+i),r);else for(var o=0;o=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;function l(e,t){if(t<65537&&(e.subarray&&o||!e.subarray&&r))return String.fromCharCode.apply(null,i.shrinkBuf(e,t));for(var n="",a=0;a>>6,t[a++]=128|63&n):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|63&n):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|63&n);return t},t.buf2binstring=function(e){return l(e,e.length)},t.binstring2buf=function(e){for(var t=new i.Buf8(e.length),n=0,r=t.length;n4)c[i++]=65533,n+=o-1;else{for(r&=2===o?31:3===o?15:7;o>1&&n1?c[i++]=65533:r<65536?c[i++]=r:(r-=65536,c[i++]=55296|r>>10&1023,c[i++]=56320|1023&r)}return l(c,i)},t.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},"./node_modules/pako/lib/zlib/adler32.js":function(e,t,n){"use strict";e.exports=function(e,t,n,i){for(var r=65535&e|0,o=e>>>16&65535|0,a=0;0!==n;){n-=a=n>2e3?2e3:n;do{o=o+(r=r+t[i++]|0)|0}while(--a);r%=65521,o%=65521}return r|o<<16|0}},"./node_modules/pako/lib/zlib/constants.js":function(e,t,n){"use strict";e.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}},"./node_modules/pako/lib/zlib/crc32.js":function(e,t,n){"use strict";var i=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();e.exports=function(e,t,n,r){var o=i,a=r+n;e^=-1;for(var s=r;s>>8^o[255&(e^t[s])];return-1^e}},"./node_modules/pako/lib/zlib/deflate.js":function(e,t,n){"use strict";var i,r=n("./node_modules/pako/lib/utils/common.js"),o=n("./node_modules/pako/lib/zlib/trees.js"),a=n("./node_modules/pako/lib/zlib/adler32.js"),s=n("./node_modules/pako/lib/zlib/crc32.js"),l=n("./node_modules/pako/lib/zlib/messages.js"),c=-2,h=258,u=262,d=103,f=113,p=666;function m(e,t){return e.msg=l[t],t}function g(e){return(e<<1)-(e>4?9:0)}function _(e){for(var t=e.length;--t>=0;)e[t]=0}function y(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(r.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function v(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,y(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function w(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function x(e,t){var n,i,r=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-u?e.strstart-(e.w_size-u):0,c=e.window,d=e.w_mask,f=e.prev,p=e.strstart+h,m=c[o+a-1],g=c[o+a];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(n=t)+a]===g&&c[n+a-1]===m&&c[n]===c[o]&&c[++n]===c[o+1]){o+=2,n++;do{}while(c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&oa){if(e.match_start=t,a=i,i>=s)break;m=c[o+a-1],g=c[o+a]}}}while((t=f[t&d])>l&&0!=--r);return a<=e.lookahead?a:e.lookahead}function A(e){var t,n,i,o,l,c,h,d,f,p,m=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-u)){r.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=n=e.hash_size;do{i=e.head[--t],e.head[t]=i>=m?i-m:0}while(--n);t=n=m;do{i=e.prev[--t],e.prev[t]=i>=m?i-m:0}while(--n);o+=m}if(0===e.strm.avail_in)break;if(c=e.strm,h=e.window,d=e.strstart+e.lookahead,f=o,p=void 0,(p=c.avail_in)>f&&(p=f),n=0===p?0:(c.avail_in-=p,r.arraySet(h,c.input,c.next_in,p,d),1===c.state.wrap?c.adler=a(c.adler,h,p,d):2===c.state.wrap&&(c.adler=s(c.adler,h,p,d)),c.next_in+=p,c.total_in+=p,p),e.lookahead+=n,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(i=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<15&&(s=2,i-=16),o<1||o>9||8!==n||i<8||i>15||t<0||t>9||a<0||a>4)return m(e,c);8===i&&(i=9);var l=new T;return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=i,l.w_size=1<>1,l.l_buf=3*l.lit_bufsize,l.level=t,l.strategy=a,l.method=n,I(e)}i=[new E(0,0,0,0,(function(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(A(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+n;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,v(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-u&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(v(e,!1),e.strm.avail_out),1)})),new E(4,4,8,4,S),new E(4,5,16,8,S),new E(4,6,32,32,S),new E(4,4,16,16,M),new E(8,16,32,32,M),new E(8,16,128,128,M),new E(8,32,128,256,M),new E(32,128,258,1024,M),new E(32,258,258,4096,M)],t.deflateInit=function(e,t){return C(e,t,8,15,8,0)},t.deflateInit2=C,t.deflateReset=I,t.deflateResetKeep=k,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},t.deflate=function(e,t){var n,r,a,l;if(!e||!e.state||t>5||t<0)return e?m(e,c):c;if(r=e.state,!e.output||!e.input&&0!==e.avail_in||r.status===p&&4!==t)return m(e,0===e.avail_out?-5:c);if(r.strm=e,n=r.last_flush,r.last_flush=t,42===r.status)if(2===r.wrap)e.adler=0,b(r,31),b(r,139),b(r,8),r.gzhead?(b(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),b(r,255&r.gzhead.time),b(r,r.gzhead.time>>8&255),b(r,r.gzhead.time>>16&255),b(r,r.gzhead.time>>24&255),b(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),b(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(b(r,255&r.gzhead.extra.length),b(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=s(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(b(r,0),b(r,0),b(r,0),b(r,0),b(r,0),b(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),b(r,3),r.status=f);else{var u=8+(r.w_bits-8<<4)<<8;u|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(u|=32),u+=31-u%31,r.status=f,w(r,u),0!==r.strstart&&(w(r,e.adler>>>16),w(r,65535&e.adler)),e.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending!==r.pending_buf_size));)b(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),y(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=s(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.status=d)}else r.status=d;if(r.status===d&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&y(e),r.pending+2<=r.pending_buf_size&&(b(r,255&e.adler),b(r,e.adler>>8&255),e.adler=0,r.status=f)):r.status=f),0!==r.pending){if(y(e),0===e.avail_out)return r.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(n)&&4!==t)return m(e,-5);if(r.status===p&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==r.lookahead||0!==t&&r.status!==p){var x=2===r.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(A(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(v(e,!1),0===e.strm.avail_out)?1:2}(r,t):3===r.strategy?function(e,t){for(var n,i,r,a,s=e.window;;){if(e.lookahead<=h){if(A(e),e.lookahead<=h&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[r=e.strstart-1])===s[++r]&&i===s[++r]&&i===s[++r]){a=e.strstart+h;do{}while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(v(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(v(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(v(e,!1),0===e.strm.avail_out)?1:2}(r,t):i[r.level].func(r,t);if(3!==x&&4!==x||(r.status=p),1===x||3===x)return 0===e.avail_out&&(r.last_flush=-1),0;if(2===x&&(1===t?o._tr_align(r):5!==t&&(o._tr_stored_block(r,0,0,!1),3===t&&(_(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),y(e),0===e.avail_out))return r.last_flush=-1,0}return 4!==t?0:r.wrap<=0?1:(2===r.wrap?(b(r,255&e.adler),b(r,e.adler>>8&255),b(r,e.adler>>16&255),b(r,e.adler>>24&255),b(r,255&e.total_in),b(r,e.total_in>>8&255),b(r,e.total_in>>16&255),b(r,e.total_in>>24&255)):(w(r,e.adler>>>16),w(r,65535&e.adler)),y(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==d&&t!==f&&t!==p?m(e,c):(e.state=null,t===f?m(e,-3):0):c},t.deflateSetDictionary=function(e,t){var n,i,o,s,l,h,u,d,f=t.length;if(!e||!e.state)return c;if(2===(s=(n=e.state).wrap)||1===s&&42!==n.status||n.lookahead)return c;for(1===s&&(e.adler=a(e.adler,t,f,0)),n.wrap=0,f>=n.w_size&&(0===s&&(_(n.head),n.strstart=0,n.block_start=0,n.insert=0),d=new r.Buf8(n.w_size),r.arraySet(d,t,f-n.w_size,n.w_size,0),t=d,f=n.w_size),l=e.avail_in,h=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,A(n);n.lookahead>=3;){i=n.strstart,o=n.lookahead-2;do{n.ins_h=(n.ins_h<>>=b=v>>>24,p-=b,0==(b=v>>>16&255))E[o++]=65535&v;else{if(!(16&b)){if(0==(64&b)){v=m[(65535&v)+(f&(1<>>=b,p-=b),p<15&&(f+=M[i++]<>>=b=v>>>24,p-=b,!(16&(b=v>>>16&255))){if(0==(64&b)){v=g[(65535&v)+(f&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(f>>>=b,p-=b,x>(b=o-a)){if((b=x-b)>h&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(A=0,S=d,0===u){if(A+=c-b,b2;)E[o++]=S[A++],E[o++]=S[A++],E[o++]=S[A++],w-=3;w&&(E[o++]=S[A++],w>1&&(E[o++]=S[A++]))}else{A=o-x;do{E[o++]=E[A++],E[o++]=E[A++],E[o++]=E[A++],w-=3}while(w>2);w&&(E[o++]=E[A++],w>1&&(E[o++]=E[A++]))}break}}break}}while(i>3,f&=(1<<(p-=w<<3))-1,e.next_in=i,e.next_out=o,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(852),t.distcode=t.distdyn=new i.Buf32(592),t.sane=1,t.back=-1,0):l}function p(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):l}function m(e,t){var n,i;return e&&e.state?(i=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?l:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,p(e))):l}function g(e,t){var n,i;return e?(i=new d,e.state=i,i.window=null,0!==(n=m(e,t))&&(e.state=null),n):l}var _,y,v=!0;function b(e){if(v){var t;for(_=new i.Buf32(512),y=new i.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,_,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,y,0,e.work,{bits:5}),v=!1}e.lencode=_,e.lenbits=9,e.distcode=y,e.distbits=5}function w(e,t,n,r){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(i.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>r&&(o=r),i.arraySet(a.window,t,n-r,o,a.wnext),(r-=o)?(i.arraySet(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=o(n.check,G,2,0),y=0,v=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",n.mode=h;break}if(8!=(15&y)){e.msg="unknown compression method",n.mode=h;break}if(v-=4,R=8+(15&(y>>>=4)),0===n.wbits)n.wbits=R;else if(R>n.wbits){e.msg="invalid window size",n.mode=h;break}n.dmax=1<>8&1),512&n.flags&&(G[0]=255&y,G[1]=y>>>8&255,n.check=o(n.check,G,2,0)),y=0,v=0,n.mode=3;case 3:for(;v<32;){if(0===g)break e;g--,y+=d[p++]<>>8&255,G[2]=y>>>16&255,G[3]=y>>>24&255,n.check=o(n.check,G,4,0)),y=0,v=0,n.mode=4;case 4:for(;v<16;){if(0===g)break e;g--,y+=d[p++]<>8),512&n.flags&&(G[0]=255&y,G[1]=y>>>8&255,n.check=o(n.check,G,2,0)),y=0,v=0,n.mode=5;case 5:if(1024&n.flags){for(;v<16;){if(0===g)break e;g--,y+=d[p++]<>>8&255,n.check=o(n.check,G,2,0)),y=0,v=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((S=n.length)>g&&(S=g),S&&(n.head&&(R=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),i.arraySet(n.head.extra,d,p,S,R)),512&n.flags&&(n.check=o(n.check,d,S,p)),g-=S,p+=S,n.length-=S),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===g)break e;S=0;do{R=d[p+S++],n.head&&R&&n.length<65536&&(n.head.name+=String.fromCharCode(R))}while(R&&S>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=c;break;case 10:for(;v<32;){if(0===g)break e;g--,y+=d[p++]<>>=7&v,v-=7&v,n.mode=27;break}for(;v<3;){if(0===g)break e;g--,y+=d[p++]<>>=1)){case 0:n.mode=14;break;case 1:if(b(n),n.mode=20,6===t){y>>>=2,v-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=h}y>>>=2,v-=2;break;case 14:for(y>>>=7&v,v-=7&v;v<32;){if(0===g)break e;g--,y+=d[p++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=h;break}if(n.length=65535&y,y=0,v=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(S=n.length){if(S>g&&(S=g),S>_&&(S=_),0===S)break e;i.arraySet(f,d,p,S,m),g-=S,p+=S,_-=S,m+=S,n.length-=S;break}n.mode=c;break;case 17:for(;v<14;){if(0===g)break e;g--,y+=d[p++]<>>=5,v-=5,n.ndist=1+(31&y),y>>>=5,v-=5,n.ncode=4+(15&y),y>>>=4,v-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=h;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,v-=3}for(;n.have<19;)n.lens[N[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,D={bits:n.lenbits},B=s(0,n.lens,0,19,n.lencode,0,n.work,D),n.lenbits=D.bits,B){e.msg="invalid code lengths set",n.mode=h;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,I=65535&F,!((T=F>>>24)<=v);){if(0===g)break e;g--,y+=d[p++]<>>=T,v-=T,n.lens[n.have++]=I;else{if(16===I){for(O=T+2;v>>=T,v-=T,0===n.have){e.msg="invalid bit length repeat",n.mode=h;break}R=n.lens[n.have-1],S=3+(3&y),y>>>=2,v-=2}else if(17===I){for(O=T+3;v>>=T)),y>>>=3,v-=3}else{for(O=T+7;v>>=T)),y>>>=7,v-=7}if(n.have+S>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=h;break}for(;S--;)n.lens[n.have++]=R}}if(n.mode===h)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=h;break}if(n.lenbits=9,D={bits:n.lenbits},B=s(1,n.lens,0,n.nlen,n.lencode,0,n.work,D),n.lenbits=D.bits,B){e.msg="invalid literal/lengths set",n.mode=h;break}if(n.distbits=6,n.distcode=n.distdyn,D={bits:n.distbits},B=s(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,D),n.distbits=D.bits,B){e.msg="invalid distances set",n.mode=h;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(g>=6&&_>=258){e.next_out=m,e.avail_out=_,e.next_in=p,e.avail_in=g,n.hold=y,n.bits=v,a(e,A),m=e.next_out,f=e.output,_=e.avail_out,p=e.next_in,d=e.input,g=e.avail_in,y=n.hold,v=n.bits,n.mode===c&&(n.back=-1);break}for(n.back=0;k=(F=n.lencode[y&(1<>>16&255,I=65535&F,!((T=F>>>24)<=v);){if(0===g)break e;g--,y+=d[p++]<>C)])>>>16&255,I=65535&F,!(C+(T=F>>>24)<=v);){if(0===g)break e;g--,y+=d[p++]<>>=C,v-=C,n.back+=C}if(y>>>=T,v-=T,n.back+=T,n.length=I,0===k){n.mode=26;break}if(32&k){n.back=-1,n.mode=c;break}if(64&k){e.msg="invalid literal/length code",n.mode=h;break}n.extra=15&k,n.mode=22;case 22:if(n.extra){for(O=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;k=(F=n.distcode[y&(1<>>16&255,I=65535&F,!((T=F>>>24)<=v);){if(0===g)break e;g--,y+=d[p++]<>C)])>>>16&255,I=65535&F,!(C+(T=F>>>24)<=v);){if(0===g)break e;g--,y+=d[p++]<>>=C,v-=C,n.back+=C}if(y>>>=T,v-=T,n.back+=T,64&k){e.msg="invalid distance code",n.mode=h;break}n.offset=I,n.extra=15&k,n.mode=24;case 24:if(n.extra){for(O=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=h;break}n.mode=25;case 25:if(0===_)break e;if(S=A-_,n.offset>S){if((S=n.offset-S)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=h;break}S>n.wnext?(S-=n.wnext,M=n.wsize-S):M=n.wnext-S,S>n.length&&(S=n.length),E=n.window}else E=f,M=m-n.offset,S=n.length;S>_&&(S=_),_-=S,n.length-=S;do{f[m++]=E[M++]}while(--S);0===n.length&&(n.mode=21);break;case 26:if(0===_)break e;f[m++]=n.length,_--,n.mode=21;break;case 27:if(n.wrap){for(;v<32;){if(0===g)break e;g--,y|=d[p++]<=1&&0===D[E];E--);if(T>E&&(T=E),0===E)return c[h++]=20971520,c[h++]=20971520,d.bits=1,0;for(M=1;M0&&(0===e||1!==E))return-1;for(O[1]=0,A=1;A<15;A++)O[A+1]=O[A]+D[A];for(S=0;S852||2===e&&P>592)return 1;for(;;){v=A-I,u[S]y?(b=F[G+u[S]],w=R[B+u[S]]):(b=96,w=0),f=1<>I)+(p-=f)]=v<<24|b<<16|w|0}while(0!==p);for(f=1<>=1;if(0!==f?(L&=f-1,L+=f):L=0,S++,0==--D[A]){if(A===E)break;A=t[n+u[S]]}if(A>T&&(L&g)!==m){for(0===I&&(I=T),_+=M,C=1<<(k=A-I);k+I852||2===e&&P>592)return 1;c[m=L&g]=T<<24|k<<16|_-h|0}}return 0!==L&&(c[_+L]=A-I<<24|64<<16|0),d.bits=T,0}},"./node_modules/pako/lib/zlib/messages.js":function(e,t,n){"use strict";e.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"}},"./node_modules/pako/lib/zlib/trees.js":function(e,t,n){"use strict";var i=n("./node_modules/pako/lib/utils/common.js");function r(e){for(var t=e.length;--t>=0;)e[t]=0}var o=[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],a=[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],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],c=new Array(576);r(c);var h=new Array(60);r(h);var u=new Array(512);r(u);var d=new Array(256);r(d);var f=new Array(29);r(f);var p,m,g,_=new Array(30);function y(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}function v(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function b(e){return e<256?u[e]:u[256+(e>>>7)]}function w(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function x(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function M(e,t,n){var i,r,o=new Array(16),a=0;for(i=1;i<=15;i++)o[i]=a=a+n[i-1]<<1;for(r=0;r<=t;r++){var s=e[2*r+1];0!==s&&(e[2*r]=S(o[s]++,s))}}function E(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function T(e){e.bi_valid>8?w(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function k(e,t,n,i){var r=2*t,o=2*n;return e[r]>1;n>=1;n--)I(e,o,n);r=l;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,o,1),i=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=i,o[2*r]=o[2*n]+o[2*i],e.depth[r]=(e.depth[n]>=e.depth[i]?e.depth[n]:e.depth[i])+1,o[2*n+1]=o[2*i+1]=r,e.heap[1]=r++,I(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,i,r,o,a,s,l=t.dyn_tree,c=t.max_code,h=t.stat_desc.static_tree,u=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,f=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(o=0;o<=15;o++)e.bl_count[o]=0;for(l[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(o=l[2*l[2*(i=e.heap[n])+1]+1]+1)>p&&(o=p,m++),l[2*i+1]=o,i>c||(e.bl_count[o]++,a=0,i>=f&&(a=d[i-f]),s=l[2*i],e.opt_len+=s*(o+a),u&&(e.static_len+=s*(h[2*i+1]+a)));if(0!==m){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,m-=2}while(m>0);for(o=p;0!==o;o--)for(i=e.bl_count[o];0!==i;)(r=e.heap[--n])>c||(l[2*r+1]!==o&&(e.opt_len+=(o-l[2*r+1])*l[2*r],l[2*r+1]=o),i--)}}(e,t),M(o,c,e.bl_count)}function L(e,t,n){var i,r,o=-1,a=t[1],s=0,l=7,c=4;for(0===a&&(l=138,c=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)r=a,a=t[2*(i+1)+1],++s>=7;i<30;i++)for(_[i]=r<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),P(e,e.l_desc),P(e,e.d_desc),a=function(e){var t;for(L(e,e.dyn_ltree,e.l_desc.max_code),L(e,e.dyn_dtree,e.d_desc.max_code),P(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*l[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=n+5,n+4<=r&&-1!==t?D(e,t,n,i):4===e.strategy||o===r?(x(e,2+(i?1:0),3),C(e,c,h)):(x(e,4+(i?1:0),3),function(e,t,n,i){var r;for(x(e,t-257,5),x(e,n-1,5),x(e,i-4,4),r=0;r>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(d[n]+256+1)]++,e.dyn_dtree[2*b(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){x(e,2,3),A(e,256,c),function(e){16===e.bi_valid?(w(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},"./node_modules/pako/lib/zlib/zstream.js":function(e,t,n){"use strict";e.exports=function(){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}},"./node_modules/path-browserify/index.js":function(e,t,n){(function(e){function n(e,t){for(var n=0,i=e.length-1;i>=0;i--){var r=e[i];"."===r?e.splice(i,1):".."===r?(e.splice(i,1),n++):n&&(e.splice(i,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var i=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,r=function(e){return i.exec(e).slice(1)};function o(e,t){if(e.filter)return e.filter(t);for(var n=[],i=0;i=-1&&!i;r--){var a=r>=0?arguments[r]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,i="/"===a.charAt(0))}return(i?"/":"")+(t=n(o(t.split("/"),(function(e){return!!e})),!i).join("/"))||"."},t.normalize=function(e){var i=t.isAbsolute(e),r="/"===a(e,-1);return(e=n(o(e.split("/"),(function(e){return!!e})),!i).join("/"))||i||(e="."),e&&r&&(e+="/"),(i?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(o(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,n){function i(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var r=i(e.split("/")),o=i(n.split("/")),a=Math.min(r.length,o.length),s=a,l=0;l1)for(var n=1;nr&&(r=c),h>o&&(o=h),u>a&&(a=u)}return this.min.set(t,n,i),this.max.set(r,o,a),this},setFromBufferAttribute:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0,s=0,l=e.count;sr&&(r=c),h>o&&(o=h),u>a&&(a=u)}return this.min.set(t,n,i),this.max.set(r,o,a),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new a.Vector3),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:(r=new a.Vector3,function(e){return this.clampPoint(e.center,r),r.distanceToSquared(e.center)<=e.radius*e.radius}),intersectsPlane:function(e){var t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant},intersectsTriangle:function(){var e=new a.Vector3,t=new a.Vector3,n=new a.Vector3,i=new a.Vector3,r=new a.Vector3,o=new a.Vector3,s=new a.Vector3,l=new a.Vector3,c=new a.Vector3,h=new a.Vector3;function u(i){var r,o;for(r=0,o=i.length-3;r<=o;r+=3){s.fromArray(i,r);var a=c.x*Math.abs(s.x)+c.y*Math.abs(s.y)+c.z*Math.abs(s.z),l=e.dot(s),h=t.dot(s),u=n.dot(s);if(Math.max(-Math.max(l,h,u),Math.min(l,h,u))>a)return!1}return!0}return function(a){if(this.isEmpty())return!1;this.getCenter(l),c.subVectors(this.max,l),e.subVectors(a.a,l),t.subVectors(a.b,l),n.subVectors(a.c,l),i.subVectors(t,e),r.subVectors(n,t),o.subVectors(e,n);var s=[0,-i.z,i.y,0,-r.z,r.y,0,-o.z,o.y,i.z,0,-i.x,r.z,0,-r.x,o.z,0,-o.x,-i.y,i.x,0,-r.y,r.x,0,-o.y,o.x,0];return!!u(s)&&!!u(s=[1,0,0,0,1,0,0,0,1])&&(h.crossVectors(i,r),u(s=[h.x,h.y,h.z]))}}(),clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new a.Vector3),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new a.Vector3;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var e=new a.Vector3;return function(t){return void 0===t&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),t=new s.Sphere),this.getCenter(t.center),t.radius=.5*this.getSize(e).length(),t}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(i=[new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3,new a.Vector3],function(e){return this.isEmpty()||(i[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),i[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),i[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),i[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),i[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),i[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),i[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),i[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(i)),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}})},"./node_modules/three/src/math/Math.js":function(e,t,n){"use strict";n.r(t),n.d(t,"_Math",(function(){return i}));var i={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){for(var e=[],t=0;t<256;t++)e[t]=(t<16?"0":"")+t.toString(16);return function(){var t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0,r=4294967295*Math.random()|0;return(e[255&t]+e[t>>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&n]+e[n>>8&255]+"-"+e[n>>16&15|64]+e[n>>24&255]+"-"+e[63&i|128]+e[i>>8&255]+"-"+e[i>>16&255]+e[i>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]).toUpperCase()}}(),clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(e){return e*i.DEG2RAD},radToDeg:function(e){return e*i.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}}},"./node_modules/three/src/math/Matrix4.js":function(e,t,n){"use strict";n.r(t),n.d(t,"Matrix4",(function(){return d}));var i,r,o,a,s,l,c,h,u=n("./node_modules/three/src/math/Vector3.js");function d(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(d.prototype,{isMatrix4:!0,set:function(e,t,n,i,r,o,a,s,l,c,h,u,d,f,p,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=o,g[9]=a,g[13]=s,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new d).fromArray(this.elements)},copy:function(e){var t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this},copyPosition:function(e){var t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this},extractBasis:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this},extractRotation:(h=new u.Vector3,function(e){var t=this.elements,n=e.elements,i=1/h.setFromMatrixColumn(e,0).length(),r=1/h.setFromMatrixColumn(e,1).length(),o=1/h.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}),makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,n=e.x,i=e.y,r=e.z,o=Math.cos(n),a=Math.sin(n),s=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){var u=o*c,d=o*h,f=a*c,p=a*h;t[0]=s*c,t[4]=-s*h,t[8]=l,t[1]=d+f*l,t[5]=u-p*l,t[9]=-a*s,t[2]=p-u*l,t[6]=f+d*l,t[10]=o*s}else if("YXZ"===e.order){var m=s*c,g=s*h,_=l*c,y=l*h;t[0]=m+y*a,t[4]=_*a-g,t[8]=o*l,t[1]=o*h,t[5]=o*c,t[9]=-a,t[2]=g*a-_,t[6]=y+m*a,t[10]=o*s}else if("ZXY"===e.order)m=s*c,g=s*h,_=l*c,y=l*h,t[0]=m-y*a,t[4]=-o*h,t[8]=_+g*a,t[1]=g+_*a,t[5]=o*c,t[9]=y-m*a,t[2]=-o*l,t[6]=a,t[10]=o*s;else if("ZYX"===e.order)u=o*c,d=o*h,f=a*c,p=a*h,t[0]=s*c,t[4]=f*l-d,t[8]=u*l+p,t[1]=s*h,t[5]=p*l+u,t[9]=d*l-f,t[2]=-l,t[6]=a*s,t[10]=o*s;else if("YZX"===e.order){var v=o*s,b=o*l,w=a*s,x=a*l;t[0]=s*c,t[4]=x-v*h,t[8]=w*h+b,t[1]=h,t[5]=o*c,t[9]=-a*c,t[2]=-l*c,t[6]=b*h+w,t[10]=v-x*h}else"XZY"===e.order&&(v=o*s,b=o*l,w=a*s,x=a*l,t[0]=s*c,t[4]=-h,t[8]=l*c,t[1]=v*h+x,t[5]=o*c,t[9]=b*h-w,t[2]=w*h-b,t[6]=a*c,t[10]=x*h+v);return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:(l=new u.Vector3(0,0,0),c=new u.Vector3(1,1,1),function(e){return this.compose(l,e,c)}),lookAt:(o=new u.Vector3,a=new u.Vector3,s=new u.Vector3,function(e,t,n){var i=this.elements;return s.subVectors(e,t),0===s.lengthSq()&&(s.z=1),s.normalize(),o.crossVectors(n,s),0===o.lengthSq()&&(1===Math.abs(n.z)?s.x+=1e-4:s.z+=1e-4,s.normalize(),o.crossVectors(n,s)),o.normalize(),a.crossVectors(s,o),i[0]=o.x,i[4]=a.x,i[8]=s.x,i[1]=o.y,i[5]=a.y,i[9]=s.y,i[2]=o.z,i[6]=a.z,i[10]=s.z,this}),multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){var n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[4],s=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],f=n[2],p=n[6],m=n[10],g=n[14],_=n[3],y=n[7],v=n[11],b=n[15],w=i[0],x=i[4],A=i[8],S=i[12],M=i[1],E=i[5],T=i[9],k=i[13],I=i[2],C=i[6],P=i[10],L=i[14],R=i[3],B=i[7],D=i[11],O=i[15];return r[0]=o*w+a*M+s*I+l*R,r[4]=o*x+a*E+s*C+l*B,r[8]=o*A+a*T+s*P+l*D,r[12]=o*S+a*k+s*L+l*O,r[1]=c*w+h*M+u*I+d*R,r[5]=c*x+h*E+u*C+d*B,r[9]=c*A+h*T+u*P+d*D,r[13]=c*S+h*k+u*L+d*O,r[2]=f*w+p*M+m*I+g*R,r[6]=f*x+p*E+m*C+g*B,r[10]=f*A+p*T+m*P+g*D,r[14]=f*S+p*k+m*L+g*O,r[3]=_*w+y*M+v*I+b*R,r[7]=_*x+y*E+v*C+b*B,r[11]=_*A+y*T+v*P+b*D,r[15]=_*S+y*k+v*L+b*O,this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},applyToBufferAttribute:function(){var e=new u.Vector3;return function(t){for(var n=0,i=t.count;n=0?1:-1,y=1-g*g;if(y>Number.EPSILON){var v=Math.sqrt(y),b=Math.atan2(v,g*_);m=Math.sin(m*b)/v,a=Math.sin(a*b)/v}var w=a*_;if(s=s*m+u*w,l=l*m+d*w,c=c*m+f*w,h=h*m+p*w,m===1-a){var x=1/Math.sqrt(s*s+l*l+c*c+h*h);s*=x,l*=x,c*=x,h*=x}}e[t]=s,e[t+1]=l,e[t+2]=c,e[t+3]=h}}),Object.defineProperties(s.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this.onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this.onChangeCallback()}}}),Object.assign(s.prototype,{isQuaternion:!0,set:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this.onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=e._x,i=e._y,r=e._z,o=e.order,a=Math.cos,s=Math.sin,l=a(n/2),c=a(i/2),h=a(r/2),u=s(n/2),d=s(i/2),f=s(r/2);return"XYZ"===o?(this._x=u*c*h+l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h-u*d*f):"YXZ"===o?(this._x=u*c*h+l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h+u*d*f):"ZXY"===o?(this._x=u*c*h-l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h-u*d*f):"ZYX"===o?(this._x=u*c*h-l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h+u*d*f):"YZX"===o?(this._x=u*c*h+l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h-u*d*f):"XZY"===o&&(this._x=u*c*h-l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h+u*d*f),!1!==t&&this.onChangeCallback(),this},setFromAxisAngle:function(e,t){var n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this.onChangeCallback(),this},setFromRotationMatrix:function(e){var t,n=e.elements,i=n[0],r=n[4],o=n[8],a=n[1],s=n[5],l=n[9],c=n[2],h=n[6],u=n[10],d=i+s+u;return d>0?(t=.5/Math.sqrt(d+1),this._w=.25/t,this._x=(h-l)*t,this._y=(o-c)*t,this._z=(a-r)*t):i>s&&i>u?(t=2*Math.sqrt(1+i-s-u),this._w=(h-l)/t,this._x=.25*t,this._y=(r+a)/t,this._z=(o+c)/t):s>u?(t=2*Math.sqrt(1+s-i-u),this._w=(o-c)/t,this._x=(r+a)/t,this._y=.25*t,this._z=(l+h)/t):(t=2*Math.sqrt(1+u-i-s),this._w=(a-r)/t,this._x=(o+c)/t,this._y=(l+h)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:(r=new a.Vector3,function(e,t){return void 0===r&&(r=new a.Vector3),(i=e.dot(t)+1)<1e-6?(i=0,Math.abs(e.x)>Math.abs(e.z)?r.set(-e.y,e.x,0):r.set(0,-e.z,e.y)):r.crossVectors(e,t),this._x=r.x,this._y=r.y,this._z=r.z,this._w=i,this.normalize()}),angleTo:function(e){return 2*Math.acos(Math.abs(o._Math.clamp(this.dot(e),-1,1)))},rotateTowards:function(e,t){var n=this.angleTo(e);if(0===n)return this;var i=Math.min(1,t/n);return this.slerp(e,i),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var n=e._x,i=e._y,r=e._z,o=e._w,a=t._x,s=t._y,l=t._z,c=t._w;return this._x=n*c+o*a+i*l-r*s,this._y=i*c+o*s+r*a-n*l,this._z=r*c+o*l+n*s-i*a,this._w=o*c-n*a-i*s-r*l,this.onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var n=this._x,i=this._y,r=this._z,o=this._w,a=o*e._w+n*e._x+i*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=n,this._y=i,this._z=r,this;var s=1-a*a;if(s<=Number.EPSILON){var l=1-t;return this._w=l*o+t*this._w,this._x=l*n+t*this._x,this._y=l*i+t*this._y,this._z=l*r+t*this._z,this.normalize()}var c=Math.sqrt(s),h=Math.atan2(c,a),u=Math.sin((1-t)*h)/c,d=Math.sin(t*h)/c;return this._w=o*u+this._w*d,this._x=n*u+this._x*d,this._y=i*u+this._y*d,this._z=r*u+this._z*d,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){}})},"./node_modules/three/src/math/Ray.js":function(e,t,n){"use strict";n.r(t),n.d(t,"Ray",(function(){return c}));var i,r,o,a,s,l=n("./node_modules/three/src/math/Vector3.js");function c(e,t){this.origin=void 0!==e?e:new l.Vector3,this.direction=void 0!==t?t:new l.Vector3}Object.assign(c.prototype,{set:function(e,t){return this.origin.copy(e),this.direction.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this},at:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new l.Vector3),t.copy(this.direction).multiplyScalar(e).add(this.origin)},lookAt:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this},recast:(s=new l.Vector3,function(e){return this.origin.copy(this.at(e,s)),this}),closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new l.Vector3),t.subVectors(e,this.origin);var n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(e){return Math.sqrt(this.distanceSqToPoint(e))},distanceSqToPoint:function(){var e=new l.Vector3;return function(t){var n=e.subVectors(t,this.origin).dot(this.direction);return n<0?this.origin.distanceToSquared(t):(e.copy(this.direction).multiplyScalar(n).add(this.origin),e.distanceToSquared(t))}}(),distanceSqToSegment:(r=new l.Vector3,o=new l.Vector3,a=new l.Vector3,function(e,t,n,i){r.copy(e).add(t).multiplyScalar(.5),o.copy(t).sub(e).normalize(),a.copy(this.origin).sub(r);var s,l,c,h,u=.5*e.distanceTo(t),d=-this.direction.dot(o),f=a.dot(this.direction),p=-a.dot(o),m=a.lengthSq(),g=Math.abs(1-d*d);if(g>0)if(l=d*f-p,h=u*g,(s=d*p-f)>=0)if(l>=-h)if(l<=h){var _=1/g;c=(s*=_)*(s+d*(l*=_)+2*f)+l*(d*s+l+2*p)+m}else l=u,c=-(s=Math.max(0,-(d*l+f)))*s+l*(l+2*p)+m;else l=-u,c=-(s=Math.max(0,-(d*l+f)))*s+l*(l+2*p)+m;else l<=-h?c=-(s=Math.max(0,-(-d*u+f)))*s+(l=s>0?-u:Math.min(Math.max(-u,-p),u))*(l+2*p)+m:l<=h?(s=0,c=(l=Math.min(Math.max(-u,-p),u))*(l+2*p)+m):c=-(s=Math.max(0,-(d*u+f)))*s+(l=s>0?u:Math.min(Math.max(-u,-p),u))*(l+2*p)+m;else l=d>0?-u:u,c=-(s=Math.max(0,-(d*l+f)))*s+l*(l+2*p)+m;return n&&n.copy(this.direction).multiplyScalar(s).add(this.origin),i&&i.copy(o).multiplyScalar(l).add(r),c}),intersectSphere:function(){var e=new l.Vector3;return function(t,n){e.subVectors(t.center,this.origin);var i=e.dot(this.direction),r=e.dot(e)-i*i,o=t.radius*t.radius;if(r>o)return null;var a=Math.sqrt(o-r),s=i-a,l=i+a;return s<0&&l<0?null:s<0?this.at(l,n):this.at(s,n)}}(),intersectsSphere:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null},intersectPlane:function(e,t){var n=this.distanceToPlane(e);return null===n?null:this.at(n,t)},intersectsPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){var n,i,r,o,a,s,l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(e.min.x-u.x)*l,i=(e.max.x-u.x)*l):(n=(e.max.x-u.x)*l,i=(e.min.x-u.x)*l),c>=0?(r=(e.min.y-u.y)*c,o=(e.max.y-u.y)*c):(r=(e.max.y-u.y)*c,o=(e.min.y-u.y)*c),n>o||r>i?null:((r>n||n!=n)&&(n=r),(o=0?(a=(e.min.z-u.z)*h,s=(e.max.z-u.z)*h):(a=(e.max.z-u.z)*h,s=(e.min.z-u.z)*h),n>s||a>i?null:((a>n||n!=n)&&(n=a),(s=0?n:i,t)))},intersectsBox:(i=new l.Vector3,function(e){return null!==this.intersectBox(e,i)}),intersectTriangle:function(){var e=new l.Vector3,t=new l.Vector3,n=new l.Vector3,i=new l.Vector3;return function(r,o,a,s,l){t.subVectors(o,r),n.subVectors(a,r),i.crossVectors(t,n);var c,h=this.direction.dot(i);if(h>0){if(s)return null;c=1}else{if(!(h<0))return null;c=-1,h=-h}e.subVectors(this.origin,r);var u=c*this.direction.dot(n.crossVectors(e,n));if(u<0)return null;var d=c*this.direction.dot(t.cross(e));if(d<0)return null;if(u+d>h)return null;var f=-c*e.dot(i);return f<0?null:this.at(f/h,l)}}(),applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}})},"./node_modules/three/src/math/Sphere.js":function(e,t,n){"use strict";n.r(t),n.d(t,"Sphere",(function(){return a}));var i,r=n("./node_modules/three/src/math/Box3.js"),o=n("./node_modules/three/src/math/Vector3.js");function a(e,t){this.center=void 0!==e?e:new o.Vector3,this.radius=void 0!==t?t:0}Object.assign(a.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:(i=new r.Box3,function(e,t){var n=this.center;void 0!==t?n.copy(t):i.setFromPoints(e).getCenter(n);for(var r=0,o=0,a=e.length;othis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t},getBoundingBox:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new r.Box3),e.set(this.center,this.center),e.expandByScalar(this.radius),e},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}})},"./node_modules/three/src/math/Triangle.js":function(e,t,n){"use strict";n.r(t),n.d(t,"Triangle",(function(){return f}));var i,r,o,a,s,l,c,h,u,d=n("./node_modules/three/src/math/Vector3.js");function f(e,t,n){this.a=void 0!==e?e:new d.Vector3,this.b=void 0!==t?t:new d.Vector3,this.c=void 0!==n?n:new d.Vector3}Object.assign(f,{getNormal:(o=new d.Vector3,function(e,t,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new d.Vector3),i.subVectors(n,t),o.subVectors(e,t),i.cross(o);var r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}),getBarycoord:function(){var e=new d.Vector3,t=new d.Vector3,n=new d.Vector3;return function(i,r,o,a,s){e.subVectors(a,r),t.subVectors(o,r),n.subVectors(i,r);var l=e.dot(e),c=e.dot(t),h=e.dot(n),u=t.dot(t),f=t.dot(n),p=l*u-c*c;if(void 0===s&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),s=new d.Vector3),0===p)return s.set(-2,-1,-1);var m=1/p,g=(u*h-c*f)*m,_=(l*f-c*h)*m;return s.set(1-g-_,_,g)}}(),containsPoint:(r=new d.Vector3,function(e,t,n,i){return f.getBarycoord(e,t,n,i,r),r.x>=0&&r.y>=0&&r.x+r.y<=1}),getUV:(i=new d.Vector3,function(e,t,n,r,o,a,s,l){return this.getBarycoord(e,t,n,r,i),l.set(0,0),l.addScaledVector(o,i.x),l.addScaledVector(a,i.y),l.addScaledVector(s,i.z),l})}),Object.assign(f.prototype,{set:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this},setFromPointsAndIndices:function(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},getArea:function(){var e=new d.Vector3,t=new d.Vector3;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),getMidpoint:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new d.Vector3),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(e){return f.getNormal(this.a,this.b,this.c,e)},getPlane:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new d.Vector3),e.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(e,t){return f.getBarycoord(e,this.a,this.b,this.c,t)},containsPoint:function(e){return f.containsPoint(e,this.a,this.b,this.c)},getUV:function(e,t,n,i,r){return f.getUV(e,this.a,this.b,this.c,t,n,i,r)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:(a=new d.Vector3,s=new d.Vector3,l=new d.Vector3,c=new d.Vector3,h=new d.Vector3,u=new d.Vector3,function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new d.Vector3);var n,i,r=this.a,o=this.b,f=this.c;a.subVectors(o,r),s.subVectors(f,r),c.subVectors(e,r);var p=a.dot(c),m=s.dot(c);if(p<=0&&m<=0)return t.copy(r);h.subVectors(e,o);var g=a.dot(h),_=s.dot(h);if(g>=0&&_<=g)return t.copy(o);var y=p*_-g*m;if(y<=0&&p>=0&&g<=0)return n=p/(p-g),t.copy(r).addScaledVector(a,n);u.subVectors(e,f);var v=a.dot(u),b=s.dot(u);if(b>=0&&v<=b)return t.copy(f);var w=v*m-p*b;if(w<=0&&m>=0&&b<=0)return i=m/(m-b),t.copy(r).addScaledVector(s,i);var x=g*b-v*_;if(x<=0&&_-g>=0&&v-b>=0)return l.subVectors(f,o),i=(_-g)/(_-g+(v-b)),t.copy(o).addScaledVector(l,i);var A=1/(x+w+y);return n=w*A,i=y*A,t.copy(r).addScaledVector(a,n).addScaledVector(s,i)}),equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}})},"./node_modules/three/src/math/Vector2.js":function(e,t,n){"use strict";function i(e,t){this.x=e||0,this.y=t||0}var r,o;n.r(t),n.d(t,"Vector2",(function(){return i})),Object.defineProperties(i.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(i.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){var t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:(r=new i,o=new i,function(e,t){return r.set(e,e),o.set(t,t),this.clamp(r,o)}),clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},cross:function(e){return this.x*e.y-this.y*e.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y;return t*t+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){var n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*n-o*i+e.x,this.y=r*i+o*n+e.y,this}})},"./node_modules/three/src/math/Vector3.js":function(e,t,n){"use strict";n.r(t),n.d(t,"Vector3",(function(){return u}));var i,r,o,a,s,l=n("./node_modules/three/src/math/Math.js"),c=n("./node_modules/three/src/math/Matrix4.js"),h=n("./node_modules/three/src/math/Quaternion.js");function u(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0}Object.assign(u.prototype,{isVector3:!0,set:function(e,t,n){return this.x=e,this.y=t,this.z=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:(s=new h.Quaternion,function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(s.setFromEuler(e))}),applyAxisAngle:function(){var e=new h.Quaternion;return function(t,n){return this.applyQuaternion(e.setFromAxisAngle(t,n))}}(),applyMatrix3:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this},applyMatrix4:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements,o=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*o,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*o,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*o,this},applyQuaternion:function(e){var t=this.x,n=this.y,i=this.z,r=e.x,o=e.y,a=e.z,s=e.w,l=s*t+o*i-a*n,c=s*n+a*t-r*i,h=s*i+r*n-o*t,u=-r*t-o*n-a*i;return this.x=l*s+u*-r+c*-a-h*-o,this.y=c*s+u*-o+h*-r-l*-a,this.z=h*s+u*-a+l*-o-c*-r,this},project:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)},unproject:(a=new c.Matrix4,function(e){return this.applyMatrix4(a.getInverse(e.projectionMatrix)).applyMatrix4(e.matrixWorld)}),transformDirection:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:(r=new u,o=new u,function(e,t){return r.set(e,e,e),o.set(t,t,t),this.clamp(r,o)}),clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){var n=e.x,i=e.y,r=e.z,o=t.x,a=t.y,s=t.z;return this.x=i*s-r*a,this.y=r*o-n*s,this.z=n*a-i*o,this},projectOnVector:function(e){var t=e.dot(this)/e.lengthSq();return this.copy(e).multiplyScalar(t)},projectOnPlane:(i=new u,function(e){return i.copy(this).projectOnVector(e),this.sub(i)}),reflect:function(){var e=new u;return function(t){return this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/Math.sqrt(this.lengthSq()*e.lengthSq());return Math.acos(l._Math.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)},setFromSphericalCoords:function(e,t,n){var i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this},setFromCylindrical:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)},setFromCylindricalCoords:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this},setFromMatrixPosition:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){var t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}})},"./node_modules/util/support/isBufferBrowser.js":function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},"./node_modules/util/util.js":function(e,t,n){(function(e,i){var r=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],n=0;n=o)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),l=i[n];n=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),p(n)?i.showHidden=n:n&&t._extend(i,n),y(i.showHidden)&&(i.showHidden=!1),y(i.depth)&&(i.depth=2),y(i.colors)&&(i.colors=!1),y(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),h(i,e,i.depth)}function l(e,t){var n=s.styles[t];return n?"["+s.colors[n][0]+"m"+e+"["+s.colors[n][1]+"m":e}function c(e,t){return e}function h(e,n,i){if(e.customInspect&&n&&A(n.inspect)&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n)){var r=n.inspect(i,e);return _(r)||(r=h(e,r,i)),r}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(_(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return g(t)?e.stylize(""+t,"number"):p(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}(e,n);if(o)return o;var a=Object.keys(n),s=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(n)),x(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return u(n);if(0===a.length){if(A(n)){var l=n.name?": "+n.name:"";return e.stylize("[Function"+l+"]","special")}if(v(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return e.stylize(Date.prototype.toString.call(n),"date");if(x(n))return u(n)}var c,b="",S=!1,M=["{","}"];return f(n)&&(S=!0,M=["[","]"]),A(n)&&(b=" [Function"+(n.name?": "+n.name:"")+"]"),v(n)&&(b=" "+RegExp.prototype.toString.call(n)),w(n)&&(b=" "+Date.prototype.toUTCString.call(n)),x(n)&&(b=" "+u(n)),0!==a.length||S&&0!=n.length?i<0?v(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special"):(e.seen.push(n),c=S?function(e,t,n,i,r){for(var o=[],a=0,s=t.length;a60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}(c,b,M)):M[0]+b+M[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,i,r,o){var a,s,l;if((l=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),k(i,r)||(a="["+r+"]"),s||(e.seen.indexOf(l.value)<0?(s=m(n)?h(e,l.value,null):h(e,l.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&r.match(/^\d+$/))return s;(a=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function m(e){return null===e}function g(e){return"number"==typeof e}function _(e){return"string"==typeof e}function y(e){return void 0===e}function v(e){return b(e)&&"[object RegExp]"===S(e)}function b(e){return"object"==typeof e&&null!==e}function w(e){return b(e)&&"[object Date]"===S(e)}function x(e){return b(e)&&("[object Error]"===S(e)||e instanceof Error)}function A(e){return"function"==typeof e}function S(e){return Object.prototype.toString.call(e)}function M(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(o)&&(o=i.env.NODE_DEBUG||""),e=e.toUpperCase(),!a[e])if(new RegExp("\\b"+e+"\\b","i").test(o)){var n=i.pid;a[e]=function(){var i=t.format.apply(t,arguments);console.error("%s %d: %s",e,n,i)}}else a[e]=function(){};return a[e]},t.inspect=s,s.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]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=p,t.isNull=m,t.isNullOrUndefined=function(e){return null==e},t.isNumber=g,t.isString=_,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=v,t.isObject=b,t.isDate=w,t.isError=x,t.isFunction=A,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=n("./node_modules/util/support/isBufferBrowser.js");var E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function T(){var e=new Date,t=[M(e.getHours()),M(e.getMinutes()),M(e.getSeconds())].join(":");return[e.getDate(),E[e.getMonth()],t].join(" ")}function k(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",T(),t.format.apply(t,arguments))},t.inherits=n("./node_modules/inherits/inherits_browser.js"),t._extend=function(e,t){if(!t||!b(t))return e;for(var n=Object.keys(t),i=n.length;i--;)e[n[i]]=t[n[i]];return e}}).call(this,n("./node_modules/webpack/buildin/global.js"),n("./node_modules/process/browser.js"))},"./node_modules/utils-left-pad-string/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/validate.io-string-primitive/lib/index.js"),r=n("./node_modules/validate.io-nonnegative-integer/lib/index.js"),o=n("./node_modules/math-ceil/lib/index.js"),a=n("./node_modules/utils-repeat-string/lib/index.js"),s=9007199254740991;e.exports=function(e,t,n){var l,c;if(!i(e))throw new TypeError("invalid input argument. First argument must be a string. Value: `"+e+"`.");if(!r(t))throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+t+"`.");if(arguments.length>2){if(!i(c=n))throw new TypeError("invalid input argument. Third argument must be a string. Value: `"+c+"`.");if(0===c.length)throw new RangeError("invalid input argument. Pad string must not be an empty string.")}else c=" ";if(t>s)throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.");return(l=(t-e.length)/c.length)<=0?e:(l=o(l),a(c,l)+e)}},"./node_modules/utils-repeat-string/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/validate.io-string-primitive/lib/index.js"),r=n("./node_modules/validate.io-nonnegative-integer/lib/index.js");e.exports=function(e,t){var n,o;if(!i(e))throw new TypeError("invalid input argument. First argument must be a string. Value: `"+e+"`.");if(!r(t))throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+t+"`.");if(0===e.length||0===t)return"";if(e.length*t>9007199254740991)throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.");for(n="",o=t;1==(1&o)&&(n+=e),0!=(o>>>=1);)e+=e;return n}},"./node_modules/utils-right-pad-string/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/validate.io-string-primitive/lib/index.js"),r=n("./node_modules/validate.io-nonnegative-integer/lib/index.js"),o=n("./node_modules/math-ceil/lib/index.js"),a=n("./node_modules/utils-repeat-string/lib/index.js"),s=9007199254740991;e.exports=function(e,t,n){var l,c;if(!i(e))throw new TypeError("invalid input argument. First argument must be a string. Value: `"+e+"`.");if(!r(t))throw new TypeError("invalid input argument. Second argument must be a nonnegative integer. Value: `"+t+"`.");if(arguments.length>2){if(!i(c=n))throw new TypeError("invalid input argument. Third argument must be a string. Value: `"+c+"`.");if(0===c.length)throw new RangeError("invalid input argument. Pad string must not be an empty string.")}else c=" ";if(t>s)throw new RangeError("invalid input argument. Output string length exceeds maximum allowed string length.");return(l=(t-e.length)/c.length)<=0?e:(l=o(l),e+a(c,l))}},"./node_modules/validate.io-integer/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/validate.io-number/lib/index.js");e.exports=function(e){return i(e)&&e%1==0}},"./node_modules/validate.io-nonnegative-integer/lib/index.js":function(e,t,n){"use strict";var i=n("./node_modules/validate.io-integer/lib/index.js");e.exports=function(e){return i(e)&&e>=0}},"./node_modules/validate.io-number/lib/index.js":function(e,t,n){"use strict";e.exports=function(e){return("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))&&e.valueOf()==e.valueOf()}},"./node_modules/validate.io-string-primitive/lib/index.js":function(e,t,n){"use strict";e.exports=function(e){return"string"==typeof e}},"./node_modules/webpack/buildin/global.js":function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},"./package.json":function(e){e.exports={name:"ami.js",version:"0.33.0",main:"build/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:{gaKey:"UA-39303022-3",babel:"--module-bind js=babel-loader --colors --display-error-details"},"lint-staged":{"{{src/**,examples/**, lessons/**}/,}.{js,jsx,json,css,ts,tsx}":["prettier --write","git add"]},prettier:{printWidth:100,singleQuote:!0,trailingComma:"es5",overrides:[{files:"*.css",options:{useTabs:!1,tabWidth:2}}]},sideEffects:!1,dependencies:{"OpenJPEG.js":"joedrago/openjpeg#master","dicom-parser":"1.8.1","image-JPEG2000":"ReflexionMed/image-JPEG2000#master","jpeg-lossless-decoder-js":"1.2.3","math-float32-to-binary-string":"^1.0.0","nifti-reader-js":"v0.5.3","nrrd-js":"^0.2.1",pako:"1.0.1",three:"latest"},scripts:{precommit:"lint-staged","tslint-check":"tslint-config-prettier-check ./tslint.json","check-codestyle":"prettier-check 'src/**/*.{js,jsx,json,css,ts,tsx}'","fix-all-code-style":"prettier --write '{{src/**,examples/**, lessons/**}/,}*.{js,jsx,json,css,ts,tsx}'","build:ami":"webpack --config webpack.config.build.js --display-error-details","build:ami:prod":"cross-env NODE_ENV=production yarn build:ami","build:clean":"rimraf -rf build/*","build:clean:hot":"rimraf -rf build/*.hot-update.*","dev:ami":"webpack --config webpack.config.build.js --hot --watch --colors","dist:ami":"yarn build:clean && yarn build:ami && yarn build:ami:prod && yarn doc","dist:examples":"node ./scripts/buildDist.js && node ./scripts/router.js examples deploy","dist:clean":"rimraf -rf dist/*","analyze:ami":"cross-env NODE_WEBPACK_ANALYZE=true yarn build:ami","analyze:ami:prod":"cross-env NODE_WEBPACK_ANALYZE=true yarn build:ami:prod",clean:"yarn build:clean && yarn dist:clean",example:"node ./scripts/router.js examples","gen:index:examples":"node ./scripts/genIndexFiles.js examples","gen:index:examples:ga":"cross-env NODE_GA=true node ./scripts/genIndexFiles.js examples",test:"karma start",testExamples:"yarn dist:clean && yarn dist:examples",doc:"jsdoc -p -r -R README.md -c jsdoc.json -d dist/doc src",ami:"yarn dist:ami && yarn test",deploy:"yarn dist:clean && yarn build:clean && yarn dist:ami && yarn dist:examples && gh-pages -d dist"},devDependencies:{"@types/jasmine":"^3.3.2","@types/node":"^10.11.3","@types/three":"^0.93.13","babel-cli":"latest","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-env":"^1.6.0","babel-runtime":"^6.26.0","compression-webpack-plugin":"^1.0.1","cross-env":"^3.2.3","gh-pages":"^1.2.0",husky:"^1.1.3","jasmine-core":"^2.99.1",jsdoc:"jsdoc3/jsdoc#master",karma:"^2.0.5","karma-chrome-launcher":"^2.2.0","karma-jasmine":"^1.1.2","karma-sinon":"^1.0.5","karma-spec-reporter":"^0.0.32","karma-webpack":"3.0.0","lint-staged":"^8.0.4","live-server":"^1.1.0","node-pre-gyp":"^0.10.0",prettier:"^1.15.1","prettier-check":"^2.0.0",puppeteer:"^1.6.1",rimraf:"^2.6.1","rollup-plugin-node-builtins":"^2.1.2",shelljs:"^0.8.2",sinon:"^2.0.0","ts-loader":"^5.2.1",tslint:"^5.11.0","tslint-config-prettier":"^1.15.0","tslint-loader":"^3.6.0",typescript:"^3.1.1","uglifyjs-webpack-plugin":"^1.2.7",webpack:"^4.16.3","webpack-bundle-analyzer":"^2.9.0","webpack-cli":"^3.1.0","webpack-dev-server":"^3.1.5","webpack-watch-livereload-plugin":"^0.0.1"},engines:{node:">=6.9.0"}}},"./src/ami.ts":function(e,t,n){"use strict";function i(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),i(n("./src/cameras/cameras.js")),i(n("./src/controls/controls.js")),i(n("./src/core/core.js")),i(n("./src/geometries/geometries.js")),i(n("./src/helpers/helpers.js")),i(n("./src/loaders/loaders.js")),i(n("./src/models/models.js")),i(n("./src/parsers/parsers.js")),i(n("./src/presets/presets.js")),i(n("./src/shaders/shaders.js")),i(n("./src/widgets/widgets.js"));var r=n("./package.json").version,o=n("./node_modules/three/package.json").version;window.console.log("ami "+r+" (three "+o+")")},"./src/cameras/cameras.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/cameras/cameras.orthographic.js");n.d(t,"OrthographicCamera",(function(){return i.default})),n.d(t,"orthographicCameraFactory",(function(){return i.camerasOrthographic}))},"./src/cameras/cameras.orthographic.js":function(e,t,n){"use strict";n.r(t),n.d(t,"camerasOrthographic",(function(){return c}));var i=n("./src/core/core.intersections.js"),r=n("./src/core/core.validators.js"),o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.OrthographicCamera)return null;var t=e.OrthographicCamera;return function(t){function n(i,r,o,l,c,h){a(this,n);var u=s(this,t.call(this,i,r,o,l,c,h));return u._front=null,u._back=null,u._directions=[new e.Vector3(1,0,0),new e.Vector3(0,1,0),new e.Vector3(0,0,1)],u._directionsLabel=["A","P","L","R","I","S"],u._orientation="default",u._convention="radio",u._stackOrientation=0,u._right=null,u._up=null,u._direction=null,u._controls=null,u._box=null,u._canvas={width:null,height:null},u._fromFront=!0,u._angle=0,u}return l(n,t),n.prototype.init=function(t,n,o,a,s,l){if(window.console.warn("cameras.orthographic.init(...) is deprecated.\n Use .cosines, .controls, .box and .canvas instead."),!(r.default.vector3(t)&&r.default.vector3(n)&&r.default.vector3(o)&&r.default.box(s)&&a))return window.console.log("Invalid input provided."),!1;this._right=t,this._up=this._adjustTopDirection(t,n),this._direction=(new e.Vector3).crossVectors(this._right,this._up),this._controls=a,this._box=s,this._canvas=l;var c={position:this._box.center,direction:this._direction},h=this._orderIntersections(i.default.rayBox(c,this._box),this._direction);this._front=h[0],this._back=h[1],this.up.set(this._up.x,this._up.y,this._up.z),this._updateCanvas(),this._updatePositionAndTarget(this._front,this._back),this._updateMatrices(),this._updateDirections()},n.prototype.update=function(){if("default"===this._orientation)switch(this._getMaxIndex(this._directions[2])){case 0:this._orientation="sagittal";break;case 1:this._orientation="coronal";break;case 2:this._orientation="axial";break;default:this._orientation="free"}if("free"===this._orientation)this._right=this._directions[0],this._up=this._directions[1],this._direction=this._directions[2];else{var e=this.leftDirection(),t=this._directions[e],n=this.posteriorDirection(),r=this._directions[n],o=this.superiorDirection(),a=this._directions[o];if("radio"===this._convention)switch(this._orientation){case"axial":r.y>0&&r.negate(),a.z<0&&a.negate(),this._right=t,this._up=r,this._direction=a;break;case"coronal":a.z<0&&a.negate(),r.y<0&&r.negate(),this._right=t,this._up=a,this._direction=r;break;case"sagittal":a.z<0&&a.negate(),t.x>0&&t.negate(),this._right=r,this._up=a,this._direction=t;break;default:window.console.warn('"'+this._orientation+'" orientation is not valid.\n (choices: axial, coronal, sagittal)')}else if("neuro"===this._convention)switch(this._orientation){case"axial":r.y>0&&r.negate(),a.z>0&&a.negate(),this._right=t,this._up=r,this._direction=a;break;case"coronal":a.z<0&&a.negate(),r.y>0&&r.negate(),this._right=t,this._up=a,this._direction=r;break;case"sagittal":a.z<0&&a.negate(),t.x>0&&t.negate(),this._right=r,this._up=a,this._direction=t;break;default:window.console.warn('"'+this._orientation+'" orientation is not valid.\n (choices: axial, coronal, sagittal)')}else window.console.warn(this._convention+" is not valid (choices: radio, neuro)")}var s={position:this._box.center,direction:this._direction},l=this._orderIntersections(i.default.rayBox(s,this._box),this._direction);this._front=l[0],this._back=l[1],this.up.set(this._up.x,this._up.y,this._up.z),this._updateCanvas(),this._updatePositionAndTarget(this._front,this._back),this._updateMatrices(),this._updateDirections()},n.prototype.leftDirection=function(){return this._findMaxIndex(this._directions,0)},n.prototype.posteriorDirection=function(){return this._findMaxIndex(this._directions,1)},n.prototype.superiorDirection=function(){return this._findMaxIndex(this._directions,2)},n.prototype.invertRows=function(){this.up.multiplyScalar(-1),this.invertColumns(),this._updateDirections()},n.prototype.invertColumns=function(){this.center();var e=this._oppositePosition(this.position);this._updatePositionAndTarget(e,this.position.clone()),this._updateMatrices(),this._fromFront=!this._fromFront,this._angle%=360,this._angle=360-this._angle,this._updateDirections()},n.prototype.center=function(){this._fromFront?this._updatePositionAndTarget(this._front,this._back):this._updatePositionAndTarget(this._back,this._front),this._updateMatrices(),this._updateDirections()},n.prototype.rotate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.center();var n=90;null===t?(n*=-1,this._angle+=90):(n=360-(t-this._angle),this._angle=t),this._angle%=360;var i=(new e.Matrix4).makeRotationAxis(this._direction,n*Math.PI/180);this.up.applyMatrix4(i),this._updateMatrices(),this._updateDirections()},n.prototype.fitBox=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1.5,n=1;switch(e){case 0:n=t*this._computeZoom(this._canvas.width,this._right);break;case 1:n=t*this._computeZoom(this._canvas.height,this._up);break;case 2:n=t*Math.min(this._computeZoom(this._canvas.width,this._right),this._computeZoom(this._canvas.height,this._up))}if(!n)return!1;this.zoom=n,this.center()},n.prototype._adjustTopDirection=function(e,t){var n=this._getMaxIndex(t);return(2===n&&t.getComponent(n)<0||1===n&&t.getComponent(n)>0||0===n&&t.getComponent(n)>0)&&t.negate(),t},n.prototype._getMaxIndex=function(e){var t=Math.abs(e.x),n=0;return Math.abs(e.y)>t&&(t=Math.abs(e.y),n=1),Math.abs(e.z)>t&&(n=2),n},n.prototype._findMaxIndex=function(e,t){for(var n=this._getMaxIndices(e),i=0;i0))return window.console.log("Invalid dimension provided."),window.console.log(e),!1;var n={position:this._box.center.clone(),direction:t},r=i.default.rayBox(n,this._box);return r.length<2?(window.console.log("Can not adjust the camera ( < 2 intersections)."),window.console.log(n),window.console.log(this._box),!1):e/r[0].distanceTo(r[1])},n.prototype._updatePositionAndTarget=function(e,t){this.position.set(e.x,e.y,e.z),this.lookAt(t.x,t.y,t.z),this._controls.target.set(t.x,t.y,t.z)},n.prototype._updateMatrices=function(){this._controls.update(),this.updateProjectionMatrix(),this.updateMatrixWorld()},n.prototype._updateLabels=function(){this._directionsLabel=[this._vector2Label(this._up),this._vector2Label(this._up.clone().negate()),this._vector2Label(this._right),this._vector2Label(this._right.clone().negate()),this._vector2Label(this._direction),this._vector2Label(this._direction.clone().negate())]},n.prototype._vector2Label=function(e){for(var t=this._getMaxIndex(e),n=e.clone().divideScalar(Math.abs(e.getComponent(t))),i=.2,r="",o=0;o<3;o++)0===o&&(n.getComponent(o)+i>=1?r+="L":n.getComponent(o)-i<=-1&&(r+="R")),1===o&&(n.getComponent(o)+i>=1?r+="P":n.getComponent(o)-i<=-1&&(r+="A")),2===o&&(n.getComponent(o)+i>=1?r+="S":n.getComponent(o)-i<=-1&&(r+="I"));return r},n.prototype._updateDirections=function(){this._up=this.up.clone();var t=new e.Vector3(0,0,-1).applyMatrix4(this.matrixWorld);this._direction=t.sub(this.position).normalize(),this._right=(new e.Vector3).crossVectors(this._direction,this.up),this._updateLabels()},o(n,[{key:"controls",set:function(e){this._controls=e},get:function(){return this._controls}},{key:"box",set:function(e){this._box=e},get:function(){return this._box}},{key:"canvas",set:function(e){this._canvas=e,this._updateCanvas()},get:function(){return this._canvas}},{key:"angle",set:function(e){this.rotate(e)},get:function(){return this._angle}},{key:"directions",set:function(e){this._directions=e},get:function(){return this._directions}},{key:"convention",set:function(e){this._convention=e},get:function(){return this._convention}},{key:"orientation",set:function(e){this._orientation=e},get:function(){return this._orientation}},{key:"directionsLabel",set:function(e){this._directionsLabel=e},get:function(){return this._directionsLabel}},{key:"stackOrientation",set:function(e){if(this._stackOrientation=e,0===this._stackOrientation)this._orientation="default";else{var t=this._getMaxIndex(this._directions[(this._stackOrientation+2)%3]);0===t?this._orientation="sagittal":1===t?this._orientation="coronal":2===t&&(this._orientation="axial")}},get:function(){if("default"===this._orientation)this._stackOrientation=0;else{var e=this._getMaxIndex(this._direction);e===this._getMaxIndex(this._directions[2])?this._stackOrientation=0:e===this._getMaxIndex(this._directions[0])?this._stackOrientation=1:e===this._getMaxIndex(this._directions[1])&&(this._stackOrientation=2)}return this._stackOrientation}}]),n}(t)};t.default=c()},"./src/controls/controls.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/controls/controls.trackball.js");n.d(t,"TrackballControl",(function(){return i.default})),n.d(t,"trackballControlFactory",(function(){return i.trackball}));var r=n("./src/controls/controls.trackballortho.js");n.d(t,"TrackballOrthoControl",(function(){return r.default})),n.d(t,"trackballOrthoControlFactory",(function(){return r.trackballOrtho}));var o=n("./src/controls/controls.orbit.js");n.d(t,"OrbitControl",(function(){return o.default})),n.d(t,"orbitControlFactory",(function(){return o.orbit}))},"./src/controls/controls.orbit.js":function(e,t,n){"use strict";n.r(t),n.d(t,"orbit",(function(){return i}));var i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.EventDispatcher)return null;var t=function(t,n){var i,r,o,a,s;this.object=t,this.domElement=void 0!==n?n:document,this.enabled=!0,this.preventDefault=!0,this.target=new e.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.25,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={LEFT:e.MOUSE.LEFT,MIDDLE:e.MOUSE.MIDDLE,RIGHT:e.MOUSE.RIGHT},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=function(){return m.phi},this.getAzimuthalAngle=function(){return m.theta},this.saveState=function(){l.target0.copy(l.target),l.position0.copy(l.object.position),l.zoom0=l.object.zoom},this.reset=function(){l.target.copy(l.target0),l.object.position.copy(l.position0),l.object.zoom=l.zoom0,l.object.updateProjectionMatrix(),l.dispatchEvent(c),l.update(),f=d.NONE},this.handleResize=function(){},this.update=(i=new e.Vector3,r=(new e.Quaternion).setFromUnitVectors(t.up,new e.Vector3(0,1,0)),o=r.clone().inverse(),a=new e.Vector3,s=new e.Quaternion,function(){var e=l.object.position;return i.copy(e).sub(l.target),i.applyQuaternion(r),m.setFromVector3(i),l.autoRotate&&f===d.NONE&&C(2*Math.PI/60/60*l.autoRotateSpeed),m.theta+=g.theta,m.phi+=g.phi,m.theta=Math.max(l.minAzimuthAngle,Math.min(l.maxAzimuthAngle,m.theta)),m.phi=Math.max(l.minPolarAngle,Math.min(l.maxPolarAngle,m.phi)),m.makeSafe(),m.radius*=_,m.radius=Math.max(l.minDistance,Math.min(l.maxDistance,m.radius)),l.target.add(y),i.setFromSpherical(m),i.applyQuaternion(o),e.copy(l.target).add(i),l.object.lookAt(l.target),!0===l.enableDamping?(g.theta*=1-l.dampingFactor,g.phi*=1-l.dampingFactor,y.multiplyScalar(1-l.dampingFactor)):(g.set(0,0,0),y.set(0,0,0)),_=1,!!(v||a.distanceToSquared(l.object.position)>p||8*(1-s.dot(l.object.quaternion))>p)&&(l.dispatchEvent(c),a.copy(l.object.position),s.copy(l.object.quaternion),v=!1,!0)}),this.dispose=function(){l.domElement.removeEventListener("contextmenu",Y,!1),l.domElement.removeEventListener("mousedown",N,!1),l.domElement.removeEventListener("wheel",z,!1),l.domElement.removeEventListener("touchstart",V,!1),l.domElement.removeEventListener("touchend",Z,!1),l.domElement.removeEventListener("touchmove",W,!1),document.removeEventListener("mousemove",j,!1),document.removeEventListener("mouseup",H,!1),window.removeEventListener("keydown",U,!1)};var l=this,c={type:"change"},h={type:"start"},u={type:"end"},d={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY_PAN:4},f=d.NONE,p=1e-6,m=new e.Spherical,g=new e.Spherical,_=1,y=new e.Vector3,v=!1,b=new e.Vector2,w=new e.Vector2,x=new e.Vector2,A=new e.Vector2,S=new e.Vector2,M=new e.Vector2,E=new e.Vector2,T=new e.Vector2,k=new e.Vector2;function I(){return Math.pow(.95,l.zoomSpeed)}function C(e){g.theta-=e}function P(e){g.phi-=e}var L,R=(L=new e.Vector3,function(e,t){L.setFromMatrixColumn(t,0),L.multiplyScalar(-e),y.add(L)}),B=function(){var t=new e.Vector3;return function(e,n){!0===l.screenSpacePanning?t.setFromMatrixColumn(n,1):(t.setFromMatrixColumn(n,0),t.crossVectors(l.object.up,t)),t.multiplyScalar(e),y.add(t)}}(),D=function(){var t=new e.Vector3;return function(e,n){var i=l.domElement===document?l.domElement.body:l.domElement;if(l.object.isPerspectiveCamera){var r=l.object.position;t.copy(r).sub(l.target);var o=t.length();o*=Math.tan(l.object.fov/2*Math.PI/180),R(2*e*o/i.clientHeight,l.object.matrix),B(2*n*o/i.clientHeight,l.object.matrix)}else l.object.isOrthographicCamera?(R(e*(l.object.right-l.object.left)/l.object.zoom/i.clientWidth,l.object.matrix),B(n*(l.object.top-l.object.bottom)/l.object.zoom/i.clientHeight,l.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),l.enablePan=!1)}}();function O(e){l.object.isPerspectiveCamera?_/=e:l.object.isOrthographicCamera?(l.object.zoom=Math.max(l.minZoom,Math.min(l.maxZoom,l.object.zoom*e)),l.object.updateProjectionMatrix(),v=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),l.enableZoom=!1)}function F(e){l.object.isPerspectiveCamera?_*=e:l.object.isOrthographicCamera?(l.object.zoom=Math.max(l.minZoom,Math.min(l.maxZoom,l.object.zoom/e)),l.object.updateProjectionMatrix(),v=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),l.enableZoom=!1)}function G(e){A.set(e.clientX,e.clientY)}function N(e){if(!1!==l.enabled){switch(!0===l.preventDefault&&e.preventDefault(),e.button){case l.mouseButtons.LEFT:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===l.enablePan)return;G(e),f=d.PAN}else{if(!1===l.enableRotate)return;!function(e){b.set(e.clientX,e.clientY)}(e),f=d.ROTATE}break;case l.mouseButtons.MIDDLE:if(!1===l.enableZoom)return;!function(e){E.set(e.clientX,e.clientY)}(e),f=d.DOLLY;break;case l.mouseButtons.RIGHT:if(!1===l.enablePan)return;G(e),f=d.PAN}f!==d.NONE&&(document.addEventListener("mousemove",j,!1),document.addEventListener("mouseup",H,!1),l.dispatchEvent(h))}}function j(e){if(!1!==l.enabled)switch(!0===l.preventDefault&&e.preventDefault(),f){case d.ROTATE:if(!1===l.enableRotate)return;!function(e){w.set(e.clientX,e.clientY),x.subVectors(w,b).multiplyScalar(l.rotateSpeed);var t=l.domElement===document?l.domElement.body:l.domElement;C(2*Math.PI*x.x/t.clientHeight),P(2*Math.PI*x.y/t.clientHeight),b.copy(w),l.update()}(e);break;case d.DOLLY:if(!1===l.enableZoom)return;!function(e){T.set(e.clientX,e.clientY),k.subVectors(T,E),k.y>0?O(I()):k.y<0&&F(I()),E.copy(T),l.update()}(e);break;case d.PAN:if(!1===l.enablePan)return;!function(e){S.set(e.clientX,e.clientY),M.subVectors(S,A).multiplyScalar(l.panSpeed),D(M.x,M.y),A.copy(S),l.update()}(e)}}function H(e){!1!==l.enabled&&(document.removeEventListener("mousemove",j,!1),document.removeEventListener("mouseup",H,!1),l.dispatchEvent(u),f=d.NONE)}function z(e){!1===l.enabled||!1===l.enableZoom||f!==d.NONE&&f!==d.ROTATE||(!0===l.preventDefault&&(e.preventDefault(),e.stopPropagation()),l.dispatchEvent(h),function(e){e.deltaY<0?F(I()):e.deltaY>0&&O(I()),l.update()}(e),l.dispatchEvent(u))}function U(e){!1!==l.enabled&&!1!==l.enableKeys&&!1!==l.enablePan&&function(e){switch(e.keyCode){case l.keys.UP:D(0,l.keyPanSpeed),l.update();break;case l.keys.BOTTOM:D(0,-l.keyPanSpeed),l.update();break;case l.keys.LEFT:D(l.keyPanSpeed,0),l.update();break;case l.keys.RIGHT:D(-l.keyPanSpeed,0),l.update()}}(e)}function V(e){if(!1!==l.enabled){switch(!0===l.preventDefault&&e.preventDefault(),e.touches.length){case 1:if(!1===l.enableRotate)return;!function(e){b.set(e.touches[0].pageX,e.touches[0].pageY)}(e),f=d.TOUCH_ROTATE;break;case 2:if(!1===l.enableZoom&&!1===l.enablePan)return;!function(e){if(l.enableZoom){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+n*n);E.set(0,i)}if(l.enablePan){var r=.5*(e.touches[0].pageX+e.touches[1].pageX),o=.5*(e.touches[0].pageY+e.touches[1].pageY);A.set(r,o)}}(e),f=d.TOUCH_DOLLY_PAN;break;default:f=d.NONE}f!==d.NONE&&l.dispatchEvent(h)}}function W(e){if(!1!==l.enabled)switch(!0===l.preventDefault&&(e.preventDefault(),e.stopPropagation()),e.touches.length){case 1:if(!1===l.enableRotate)return;if(f!==d.TOUCH_ROTATE)return;!function(e){w.set(e.touches[0].pageX,e.touches[0].pageY),x.subVectors(w,b).multiplyScalar(l.rotateSpeed);var t=l.domElement===document?l.domElement.body:l.domElement;C(2*Math.PI*x.x/t.clientHeight),P(2*Math.PI*x.y/t.clientHeight),b.copy(w),l.update()}(e);break;case 2:if(!1===l.enableZoom&&!1===l.enablePan)return;if(f!==d.TOUCH_DOLLY_PAN)return;!function(e){if(l.enableZoom){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+n*n);T.set(0,i),k.set(0,Math.pow(T.y/E.y,l.zoomSpeed)),O(k.y),E.copy(T)}if(l.enablePan){var r=.5*(e.touches[0].pageX+e.touches[1].pageX),o=.5*(e.touches[0].pageY+e.touches[1].pageY);S.set(r,o),M.subVectors(S,A).multiplyScalar(l.panSpeed),D(M.x,M.y),A.copy(S)}l.update()}(e);break;default:f=d.NONE}}function Z(e){!1!==l.enabled&&(l.dispatchEvent(u),f=d.NONE)}function Y(e){!1!==l.enabled&&!0===l.preventDefault&&e.preventDefault()}l.domElement.addEventListener("contextmenu",Y,!1),l.domElement.addEventListener("mousedown",N,!1),l.domElement.addEventListener("wheel",z,!1),l.domElement.addEventListener("touchstart",V,!1),l.domElement.addEventListener("touchend",Z,!1),l.domElement.addEventListener("touchmove",W,!1),window.addEventListener("keydown",U,!1),this.update()};return t.prototype=Object.create(e.EventDispatcher.prototype),t.prototype.constructor=t,Object.defineProperties(t.prototype,{center:{get:function(){return console.warn("THREE.OrbitControls: .center has been renamed to .target"),this.target}},noZoom:{get:function(){return console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),!this.enableZoom},set:function(e){console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),this.enableZoom=!e}},noRotate:{get:function(){return console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),!this.enableRotate},set:function(e){console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),this.enableRotate=!e}},noPan:{get:function(){return console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),!this.enablePan},set:function(e){console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),this.enablePan=!e}},noKeys:{get:function(){return console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),!this.enableKeys},set:function(e){console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),this.enableKeys=!e}},staticMoving:{get:function(){return console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),!this.enableDamping},set:function(e){console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),this.enableDamping=!e}},dynamicDampingFactor:{get:function(){return console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor},set:function(e){console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor=e}}}),t};t.default=i()},"./src/controls/controls.trackball.js":function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.r(t),n.d(t,"trackball",(function(){return a}));var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.EventDispatcher)return null;var t=e.EventDispatcher;return function(t){function n(o,a){i(this,n);var s=r(this,t.call(this)),l=s,c=-1;s.object=o,s.domElement=void 0!==a?a:document,s.enabled=!0,s.screen={left:0,top:0,width:0,height:0},s.rotateSpeed=1,s.zoomSpeed=1.2,s.panSpeed=.3,s.noRotate=!1,s.noZoom=!1,s.noPan=!1,s.noCustom=!1,s.forceState=-1,s.staticMoving=!1,s.dynamicDampingFactor=.2,s.minDistance=0,s.maxDistance=1/0,s.keys=[65,83,68],s.target=new e.Vector3;var h=new e.Vector3,u=c,d=c,f=new e.Vector3,p=new e.Vector2,m=new e.Vector2,g=new e.Vector3,_=0,y=new e.Vector2,v=new e.Vector2,b=0,w=0,x=new e.Vector2,A=new e.Vector2,S=new e.Vector2,M=new e.Vector2;s.target0=s.target.clone(),s.position0=s.object.position.clone(),s.up0=s.object.up.clone();var E={type:"change"},T={type:"start"},k={type:"end"};s.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 e=this.domElement.getBoundingClientRect(),t=this.domElement.ownerDocument.documentElement;this.screen.left=e.left+window.pageXOffset-t.clientLeft,this.screen.top=e.top+window.pageYOffset-t.clientTop,this.screen.width=e.width,this.screen.height=e.height}},s.handleEvent=function(e){"function"==typeof this[e.type]&&this[e.type](e)};var I,C,P,L,R,B,D,O,F,G,N,j=(I=new e.Vector2,function(e,t){return I.set((e-l.screen.left)/l.screen.width,(t-l.screen.top)/l.screen.height),I}),H=function(){var t=new e.Vector2;return function(e,n){return t.set((e-.5*l.screen.width-l.screen.left)/(.5*l.screen.width),(l.screen.height+2*(l.screen.top-n))/l.screen.width),t}}();function z(e){!1!==l.enabled&&(window.removeEventListener("keydown",z),d=u,u===c&&(e.keyCode!==l.keys[0]||l.noRotate?e.keyCode!==l.keys[1]||l.noZoom?e.keyCode!==l.keys[2]||l.noPan||(u=2):u=1:u=0))}function U(e){!1!==l.enabled&&(u=d,window.addEventListener("keydown",z,!1))}function V(e){!1!==l.enabled&&(e.preventDefault(),e.stopPropagation(),u===c&&(u=e.button),0!==u||l.noRotate?1!==u||l.noZoom?2!==u||l.noPan?99!==u||l.noCustom||(S.copy(j(e.pageX,e.pageY)),M.copy(x)):(x.copy(j(e.pageX,e.pageY)),A.copy(x)):(y.copy(j(e.pageX,e.pageY)),v.copy(y)):(m.copy(H(e.pageX,e.pageY)),p.copy(m)),document.addEventListener("mousemove",W,!1),document.addEventListener("mouseup",Z,!1),l.dispatchEvent(T))}function W(e){!1!==l.enabled&&(e.preventDefault(),e.stopPropagation(),0!==u||l.noRotate?1!==u||l.noZoom?2!==u||l.noPan?99!==u||l.noCustom||M.copy(j(e.pageX,e.pageY)):A.copy(j(e.pageX,e.pageY)):v.copy(j(e.pageX,e.pageY)):(p.copy(m),m.copy(H(e.pageX,e.pageY))))}function Z(e){!1!==l.enabled&&(e.preventDefault(),e.stopPropagation(),-1===l.forceState&&(u=c),document.removeEventListener("mousemove",W),document.removeEventListener("mouseup",Z),l.dispatchEvent(k))}function Y(e){if(!1!==l.enabled&&!0!==l.noZoom){switch(e.preventDefault(),e.stopPropagation(),e.deltaMode){case 2:y.y-=.025*e.deltaY;break;case 1:y.y-=.01*e.deltaY;break;default:y.y-=25e-5*e.deltaY}l.dispatchEvent(T),l.dispatchEvent(k)}}function X(e){if(!1!==l.enabled){if(-1===l.forceState)switch(e.touches.length){case 1:u=3,m.copy(H(e.touches[0].pageX,e.touches[0].pageY)),p.copy(m);break;case 2:u=4;var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY;w=b=Math.sqrt(t*t+n*n);var i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2;x.copy(j(i,r)),A.copy(x);break;default:u=c}else switch(u){case 0:u=3,m.copy(H(e.touches[0].pageX,e.touches[0].pageY)),p.copy(m);break;case 1:case 4:e.touches.length>=2?(u=4,t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,w=b=Math.sqrt(t*t+n*n)):(u=1,y.copy(j(e.touches[0].pageX,e.touches[0].pageY)),v.copy(y));break;case 2:case 5:e.touches.length>=2?(u=5,i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2,x.copy(j(i,r)),A.copy(x)):(u=2,x.copy(j(e.touches[0].pageX,e.touches[0].pageY)),A.copy(x));break;case 99:u=99,i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2,S.copy(j(i,r)),M.copy(S);break;default:u=c}l.dispatchEvent(T)}}function J(e){if(!1!==l.enabled)if(e.preventDefault(),e.stopPropagation(),-1===l.forceState)switch(e.touches.length){case 1:p.copy(m),m.copy(H(e.touches[0].pageX,e.touches[0].pageY));break;case 2:var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY;w=Math.sqrt(t*t+n*n);var i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2;A.copy(j(i,r));break;default:u=c}else switch(u){case 0:p.copy(m),m.copy(H(e.touches[0].pageX,e.touches[0].pageY));break;case 1:v.copy(j(e.touches[0].pageX,e.touches[0].pageY));break;case 2:A.copy(j(e.touches[0].pageX,e.touches[0].pageY));break;case 4:t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,w=Math.sqrt(t*t+n*n);break;case 5:i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2,A.copy(j(i,r));break;case 99:i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2,M.copy(j(i,r));break;default:u=c}}function q(e){if(!1!==l.enabled){if(-1===l.forceState){switch(e.touches.length){case 1:p.copy(m),m.copy(H(e.touches[0].pageX,e.touches[0].pageY));break;case 2:b=w=0;var t=(e.touches[0].pageX+e.touches[1].pageX)/2,n=(e.touches[0].pageY+e.touches[1].pageY)/2;A.copy(j(t,n)),x.copy(A)}u=c}else switch(u){case 0:p.copy(m),m.copy(H(e.touches[0].pageX,e.touches[0].pageY));break;case 1:case 2:break;case 4:b=w=0,u=1;break;case 5:e.touches.length>=2&&(t=(e.touches[0].pageX+e.touches[1].pageX)/2,n=(e.touches[0].pageY+e.touches[1].pageY)/2,A.copy(j(t,n)),x.copy(A)),u=2;break;case 99:t=(e.touches[0].pageX+e.touches[1].pageX)/2,n=(e.touches[0].pageY+e.touches[1].pageY)/2,M.copy(j(t,n)),S.copy(M);break;default:u=c}l.dispatchEvent(k)}}function Q(e){e.preventDefault()}return s.rotateCamera=(C=new e.Vector3,P=new e.Quaternion,L=new e.Vector3,R=new e.Vector3,B=new e.Vector3,D=new e.Vector3,O=void 0,function(){D.set(m.x-p.x,m.y-p.y,0),(O=D.length())?(f.copy(l.object.position).sub(l.target),L.copy(f).normalize(),R.copy(l.object.up).normalize(),B.crossVectors(R,L).normalize(),R.setLength(m.y-p.y),B.setLength(m.x-p.x),D.copy(R.add(B)),C.crossVectors(D,f).normalize(),O*=l.rotateSpeed,P.setFromAxisAngle(C,O),f.applyQuaternion(P),l.object.up.applyQuaternion(P),g.copy(C),_=O):!l.staticMoving&&_&&(_*=Math.sqrt(1-l.dynamicDampingFactor),f.copy(l.object.position).sub(l.target),P.setFromAxisAngle(g,_),f.applyQuaternion(P),l.object.up.applyQuaternion(P)),p.copy(m)}),s.zoomCamera=function(){var e=void 0;4===u?(e=b/w,b=w,f.multiplyScalar(e)):1!=(e=1+(v.y-y.y)*l.zoomSpeed)&&e>0&&(f.multiplyScalar(e),l.staticMoving?y.copy(v):y.y+=(v.y-y.y)*this.dynamicDampingFactor)},s.panCamera=(F=new e.Vector2,G=new e.Vector3,N=new e.Vector3,function(){F.copy(A).sub(x),F.lengthSq()&&(F.multiplyScalar(f.length()*l.panSpeed),N.copy(f).cross(l.object.up).setLength(F.x),N.add(G.copy(l.object.up).setLength(F.y)),l.object.position.add(N),l.target.add(N),l.staticMoving?x.copy(A):x.add(F.subVectors(A,x).multiplyScalar(l.dynamicDampingFactor)))}),s.checkDistances=function(){l.noZoom&&l.noPan||(f.lengthSq()>l.maxDistance*l.maxDistance&&l.object.position.addVectors(l.target,f.setLength(l.maxDistance)),f.lengthSq()1e-6&&(l.dispatchEvent(E),h.copy(l.object.position))},s.reset=function(){u=c,d=c,l.target.copy(l.target0),l.object.position.copy(l.position0),l.object.up.copy(l.up0),f.subVectors(l.object.position,l.target),l.object.lookAt(l.target),l.dispatchEvent(E),h.copy(l.object.position)},s.setState=function(e){l.forceState=e,d=e,u=e},s.custom=function(e,t){},s.dispose=function(){this.domElement.removeEventListener("contextmenu",Q,!1),this.domElement.removeEventListener("mousedown",V,!1),this.domElement.removeEventListener("wheel",Y,!1),this.domElement.removeEventListener("touchstart",X,!1),this.domElement.removeEventListener("touchend",q,!1),this.domElement.removeEventListener("touchmove",J,!1),window.removeEventListener("keydown",z,!1),window.removeEventListener("keyup",U,!1)},s.domElement.addEventListener("contextmenu",Q,!1),s.domElement.addEventListener("mousedown",V,!1),s.domElement.addEventListener("wheel",Y,!1),s.domElement.addEventListener("touchstart",X,!1),s.domElement.addEventListener("touchend",q,!1),s.domElement.addEventListener("touchmove",J,!1),window.addEventListener("keydown",z,!1),window.addEventListener("keyup",U,!1),s.handleResize(),s.update(),s}return o(n,t),n}(t)};t.default=a()},"./src/controls/controls.trackballortho.js":function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.r(t),n.d(t,"trackballOrtho",(function(){return a}));var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.EventDispatcher)return null;var t=e.EventDispatcher;return function(t){function n(o,a){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{NONE:-1,ROTATE:1,ZOOM:2,PAN:0,SCROLL:4,TOUCH_ROTATE:4,TOUCH_ZOOM_PAN:5};i(this,n);var l=r(this,t.call(this)),c=l,h=s;l.object=o,l.domElement=void 0!==a?a:document,l.enabled=!0,l.screen={left:0,top:0,width:0,height:0},l.radius=0,l.zoomSpeed=1.2,l.noZoom=!1,l.noPan=!1,l.staticMoving=!1,l.dynamicDampingFactor=.2,l.keys=[65,83,68],l.target=new e.Vector3;var u=1e-6,d=!0,f=h.NONE,p=h.NONE,m=new e.Vector3,g=new e.Vector2,_=new e.Vector2,y=0,v=0,b=new e.Vector2,w=new e.Vector2;l.target0=l.target.clone(),l.position0=l.object.position.clone(),l.up0=l.object.up.clone(),l.left0=l.object.left,l.right0=l.object.right,l.top0=l.object.top,l.bottom0=l.object.bottom;var x={type:"change"},A={type:"start"},S={type:"end"};l.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 e=this.domElement.getBoundingClientRect(),t=this.domElement.ownerDocument.documentElement;this.screen.left=e.left+window.pageXOffset-t.clientLeft,this.screen.top=e.top+window.pageYOffset-t.clientTop,this.screen.width=e.width,this.screen.height=e.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},l.handleEvent=function(e){"function"==typeof this[e.type]&&this[e.type](e)};var M,E,T,k,I=(M=new e.Vector2,function(e,t){return M.set((e-c.screen.left)/c.screen.width,(t-c.screen.top)/c.screen.height),M});function C(e){!1!==c.enabled&&(window.removeEventListener("keydown",C),p=f,f===h.NONE&&(e.keyCode!==c.keys[h.ROTATE]||c.noRotate?e.keyCode!==c.keys[h.ZOOM]||c.noZoom?e.keyCode!==c.keys[h.PAN]||c.noPan||(f=h.PAN):f=h.ZOOM:f=h.ROTATE))}function P(e){!1!==c.enabled&&(f=p,window.addEventListener("keydown",C,!1))}function L(e){!1!==c.enabled&&(e.preventDefault(),e.stopPropagation(),f===h.NONE&&(f=e.button),(f!==h.ROTATE||c.noRotate)&&(f!==h.ZOOM||c.noZoom?f!==h.PAN||c.noPan||(b.copy(I(e.pageX,e.pageY)),w.copy(b)):(g.copy(I(e.pageX,e.pageY)),_.copy(g))),document.addEventListener("mousemove",R,!1),document.addEventListener("mouseup",B,!1),c.dispatchEvent(A))}function R(e){!1!==c.enabled&&(e.preventDefault(),e.stopPropagation(),(f!==h.ROTATE||c.noRotate)&&(f!==h.ZOOM||c.noZoom?f!==h.PAN||c.noPan||w.copy(I(e.pageX,e.pageY)):_.copy(I(e.pageX,e.pageY))))}function B(e){!1!==c.enabled&&(e.preventDefault(),e.stopPropagation(),f=h.NONE,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",B),c.dispatchEvent(S))}function D(e){!1!==c.enabled&&(e.preventDefault(),e.stopPropagation(),c.dispatchEvent({type:"OnScroll",delta:.01*e.deltaX+.01*e.deltaY}),c.dispatchEvent(A),c.dispatchEvent(S))}function O(e){if(!1!==c.enabled){switch(e.touches.length){case 1:f=h.TOUCH_ROTATE;break;case 2:f=h.TOUCH_ZOOM_PAN;var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY;v=y=Math.sqrt(t*t+n*n);var i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2;b.copy(I(i,r)),w.copy(b);break;default:f=h.NONE}c.dispatchEvent(A)}}function F(e){if(!1!==c.enabled)switch(e.preventDefault(),e.stopPropagation(),e.touches.length){case 1:break;case 2:var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY;v=Math.sqrt(t*t+n*n);var i=(e.touches[0].pageX+e.touches[1].pageX)/2,r=(e.touches[0].pageY+e.touches[1].pageY)/2;w.copy(I(i,r));break;default:f=h.NONE}}function G(e){if(!1!==c.enabled){switch(e.touches.length){case 1:break;case 2:y=v=0;var t=(e.touches[0].pageX+e.touches[1].pageX)/2,n=(e.touches[0].pageY+e.touches[1].pageY)/2;w.copy(I(t,n)),b.copy(w)}f=h.NONE,c.dispatchEvent(S)}}function N(e){e.preventDefault()}return l.zoomCamera=function(){if(f===h.TOUCH_ZOOM_PAN){var e=v/y;y=v,c.object.zoom*=e,d=!0}else e=1+(_.y-g.y)*c.zoomSpeed,Math.abs(e-1)>u&&e>0&&(c.object.zoom/=e,c.staticMoving?g.copy(_):g.y+=(_.y-g.y)*this.dynamicDampingFactor,d=!0)},l.panCamera=(E=new e.Vector2,T=new e.Vector3,k=new e.Vector3,function(){if(E.copy(w).sub(b),E.lengthSq()){var e=(c.object.right-c.object.left)/c.object.zoom,t=(c.object.top-c.object.bottom)/c.object.zoom;E.x*=e,E.y*=t,k.copy(m).cross(c.object.up).setLength(E.x),k.add(T.copy(c.object.up).setLength(E.y)),c.object.position.add(k),c.target.add(k),c.staticMoving?b.copy(w):b.add(E.subVectors(w,b).multiplyScalar(c.dynamicDampingFactor)),d=!0}}),l.update=function(){m.subVectors(c.object.position,c.target),c.noZoom||(c.zoomCamera(),d&&c.object.updateProjectionMatrix()),c.noPan||c.panCamera(),c.object.position.addVectors(c.target,m),c.object.lookAt(c.target),d&&(c.dispatchEvent(x),d=!1)},l.reset=function(){f=h.NONE,p=h.NONE,c.target.copy(c.target0),c.object.position.copy(c.position0),c.object.up.copy(c.up0),m.subVectors(c.object.position,c.target),c.object.left=c.left0,c.object.right=c.right0,c.object.top=c.top0,c.object.bottom=c.bottom0,c.object.lookAt(c.target),c.dispatchEvent(x),d=!1},l.dispose=function(){this.domElement.removeEventListener("contextmenu",N,!1),this.domElement.removeEventListener("mousedown",L,!1),this.domElement.removeEventListener("wheel",D,!1),this.domElement.removeEventListener("touchstart",O,!1),this.domElement.removeEventListener("touchend",G,!1),this.domElement.removeEventListener("touchmove",F,!1),window.removeEventListener("keydown",C,!1),window.removeEventListener("keyup",P,!1)},l.domElement.addEventListener("contextmenu",N,!1),l.domElement.addEventListener("mousedown",L,!1),l.domElement.addEventListener("wheel",D,!1),l.domElement.addEventListener("touchstart",O,!1),l.domElement.addEventListener("touchend",G,!1),l.domElement.addEventListener("touchmove",F,!1),window.addEventListener("keydown",C,!1),window.addEventListener("keyup",P,!1),l.handleResize(),l.update(),l}return o(n,t),n}(t)};t.default=a()},"./src/core/core.colors.ts":function(e,t,n){"use strict";var i;Object.defineProperty(t,"__esModule",{value:!0}),(i=t.COLORS||(t.COLORS={})).blue="#00B0FF",i.yellow="#FFEB3B",i.red="#F50057",i.green="#76FF03",i.white="#FFF",i.lightRed="#F77";var r=function(){function e(){}return e.cielab2XYZ=function(e,t,n){var i=(e+16)/116,r=t/500+i,o=i-n/200;return i=Math.pow(i,3)>.008856?Math.pow(i,3):(i-16/116)/7.787,[95.047*(r=Math.pow(r,3)>.008856?Math.pow(r,3):(r-16/116)/7.787),100*i,108.883*(o=Math.pow(o,3)>.008856?Math.pow(o,3):(o-16/116)/7.787)]},e.xyz2RGB=function(e,t,n){var i=3.2406*(e/=100)+-1.5372*(t/=100)+-.4986*(n/=100),r=-.9689*e+1.8758*t+.0415*n,o=.0557*e+-.204*t+1.057*n;return i>.0031308?i=1.055*Math.pow(i,1/2.4)-.055:i*=12.92,r>.0031308?r=1.055*Math.pow(r,1/2.4)-.055:r*=12.92,o>.0031308?o=1.055*Math.pow(o,1/2.4)-.055:o*=12.92,[i*=255,r*=255,o*=255]},e.cielab2RGB=function(e,t,n){if(void 0===e&&(e=50),void 0===t&&(t=0),void 0===n&&(n=0),!(e>=0&&e<=100))return null;var i=this.cielab2XYZ(e,t,n),r=i[0],o=i[1],a=i[2];return this.xyz2RGB(r,o,a)},e}();t.default=r},"./src/core/core.intersections.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/core/core.utils.js"),r=n("./src/core/core.validators.js"),o=n("./node_modules/three/src/math/Matrix4.js"),a=n("./node_modules/three/src/math/Vector3.js"),s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.aabbPlane=function(e,t){var n=[];if(!this.validateAabb(e)||!this.validatePlane(t))return window.console.log("Invalid aabb or plane provided."),!1;var r=new o.Matrix4;r.getInverse(e.toAABB);var s=t.direction.clone().applyMatrix4(e.toAABB),l=new a.Vector3(0,0,0).applyMatrix4(e.toAABB),c=this.posdir(t.position.clone().applyMatrix4(e.toAABB),new a.Vector3(s.x-l.x,s.y-l.y,s.z-l.z).normalize()),h=i.default.bbox(e.center,e.halfDimensions),u=new a.Vector3(new a.Vector3(1,0,0),new a.Vector3(0,1,0),new a.Vector3(0,0,1)),d=this.posdir(new a.Vector3(e.center.x-e.halfDimensions.x,e.center.y-e.halfDimensions.y,e.center.z-e.halfDimensions.z),u.x);this.rayPlaneInBBox(d,c,h,n),d.direction=u.y,this.rayPlaneInBBox(d,c,h,n),d.direction=u.z,this.rayPlaneInBBox(d,c,h,n);var f=this.posdir(new a.Vector3(e.center.x+e.halfDimensions.x,e.center.y+e.halfDimensions.y,e.center.z+e.halfDimensions.z),u.x);this.rayPlaneInBBox(f,c,h,n),f.direction=u.y,this.rayPlaneInBBox(f,c,h,n),f.direction=u.z,this.rayPlaneInBBox(f,c,h,n);var p=this.posdir(new a.Vector3(e.center.x+e.halfDimensions.x,e.center.y-e.halfDimensions.y,e.center.z-e.halfDimensions.z),u.y);this.rayPlaneInBBox(p,c,h,n),p.direction=u.z,this.rayPlaneInBBox(p,c,h,n);var m=this.posdir(new a.Vector3(e.center.x-e.halfDimensions.x,e.center.y+e.halfDimensions.y,e.center.z-e.halfDimensions.z),u.x);this.rayPlaneInBBox(m,c,h,n),m.direction=u.z,this.rayPlaneInBBox(m,c,h,n);var g=this.posdir(new a.Vector3(e.center.x-e.halfDimensions.x,e.center.y-e.halfDimensions.y,e.center.z+e.halfDimensions.z),u.x);return this.rayPlaneInBBox(g,c,h,n),g.direction=u.y,this.rayPlaneInBBox(g,c,h,n),n.map((function(e){return e.applyMatrix4(r)})),n},e.rayPlane=function(e,t){if(0!==e.direction.dot(t.direction)){var n=(t.direction.x*(t.position.x-e.position.x)+t.direction.y*(t.position.y-e.position.y)+t.direction.z*(t.position.z-e.position.z))/(t.direction.x*e.direction.x+t.direction.y*e.direction.y+t.direction.z*e.direction.z);return new a.Vector3(e.position.x+n*e.direction.x,e.position.y+n*e.direction.y,e.position.z+n*e.direction.z)}return null},e.rayBox=function(e,t){var n=[],r=i.default.bbox(t.center,t.halfDimensions),o=this.posdir(new a.Vector3(r.min.x,t.center.y,t.center.z),new a.Vector3(-1,0,0));return this.rayPlaneInBBox(e,o,r,n),o=this.posdir(new a.Vector3(r.max.x,t.center.y,t.center.z),new a.Vector3(1,0,0)),this.rayPlaneInBBox(e,o,r,n),o=this.posdir(new a.Vector3(t.center.x,r.min.y,t.center.z),new a.Vector3(0,-1,0)),this.rayPlaneInBBox(e,o,r,n),o=this.posdir(new a.Vector3(t.center.x,r.max.y,t.center.z),new a.Vector3(0,1,0)),this.rayPlaneInBBox(e,o,r,n),o=this.posdir(new a.Vector3(t.center.x,t.center.y,r.min.z),new a.Vector3(0,0,-1)),this.rayPlaneInBBox(e,o,r,n),o=this.posdir(new a.Vector3(t.center.x,t.center.y,r.max.z),new a.Vector3(0,0,1)),this.rayPlaneInBBox(e,o,r,n),n},e.rayPlaneInBBox=function(e,t,n,i){var r=this.rayPlane(e,t);r&&this.inBBox(r,n)&&(i.find(this.findIntersection(r))||i.push(r))},e.findIntersection=function(e){return function(t,n,i){return e.x===t.x&&e.y===t.y&&e.z===t.z}},e.inBBox=function(e,t){var n=1e-4;return!!(e&&e.x>=t.min.x-n&&e.y>=t.min.y-n&&e.z>=t.min.z-n&&e.x<=t.max.x+n&&e.y<=t.max.y+n&&e.z<=t.max.z+n)},e.posdir=function(e,t){return{position:e,direction:t}},e.validatePlane=function(e){return null===e?(window.console.log("Invalid plane."),window.console.log(e),!1):r.default.vector3(e.position)?!!r.default.vector3(e.direction)||(window.console.log("Invalid plane.direction."),window.console.log(e.direction),!1):(window.console.log("Invalid plane.position."),window.console.log(e.position),!1)},e.validateAabb=function(e){return null===e?(window.console.log("Invalid aabb."),window.console.log(e),!1):r.default.matrix4(e.toAABB)?r.default.vector3(e.center)?!!(r.default.vector3(e.halfDimensions)&&e.halfDimensions.x>=0&&e.halfDimensions.y>=0&&e.halfDimensions.z>=0)||(window.console.log("Invalid aabb.halfDimensions."),window.console.log(e.halfDimensions),!1):(window.console.log("Invalid aabb.center."),window.console.log(e.center),!1):(window.console.log("Invalid aabb.toAABB: "),window.console.log(e.toAABB),!1)},e}();t.default=s},"./src/core/core.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/core/core.colors.ts"),r=n.n(i);n.d(t,"ColorsCore",(function(){return r.a}));var o=n("./src/core/core.intersections.js");n.d(t,"IntersectionsCore",(function(){return o.default}));var a=n("./src/core/core.validators.js");n.d(t,"ValidatorsCore",(function(){return a.default}));var s=n("./src/core/core.utils.js");n.d(t,"UtilsCore",(function(){return s.default}))},"./src/core/core.utils.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/core/core.validators.js"),r=n("./node_modules/three/src/math/Box3.js"),o=n("./node_modules/three/src/core/Raycaster.js"),a=n("./node_modules/three/src/math/Triangle.js"),s=n("./node_modules/three/src/math/Matrix4.js"),l=n("./node_modules/three/src/math/Vector3.js"),c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.bbox=function(e,t){return i.default.vector3(e)&&i.default.vector3(t)?t.x>=0&&t.y>=0&&t.z>=0?{min:e.clone().sub(t),max:e.clone().add(t)}:(window.console.log("halfDimensions must be >= 0."),window.console.log(t),!1):(console.log("Invalid center or plane halfDimensions."),!1)},e.minMax=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[65535,-32768],n=e.length,i=0;i1?i.pop():"dicom",(!isNaN(n.extension)||-1!==["asp","aspx","go","gs","hs","jsp","js","php","pl","py","rb","htm","html"].indexOf(n.extension)||n.query&&n.query.includes("contentType=application%2Fdicom"))&&(n.extension="dicom"),n},e.ijk2LPS=function(e,t,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:new s.Matrix4,a=new s.Matrix4;return a.set(e.x*i.y,t.x*i.x,n.x*i.z,r.x,e.y*i.y,t.y*i.x,n.y*i.z,r.y,e.z*i.y,t.z*i.x,n.z*i.z,r.z,0,0,0,1),a.premultiply(o),a},e.aabb2LPS=function(e,t,n,i){var r=new s.Matrix4;return r.set(e.x,t.x,n.x,i.x,e.y,t.y,n.y,i.y,e.z,t.z,n.z,i.z,0,0,0,1),r},e.worldToData=function(e,t){var n=(new l.Vector3).copy(t).applyMatrix4(e);return n.addScalar(.5).floor(),n},e.value=function(e,t){window.console.warn("value is deprecated, please use getPixelData instead"),this.getPixelData(e,t)},e.getPixelData=function(e,t){return t.z>=0&&t.z=0&&t.z1e-4&&d.push(o[f]);return d},e.getRoI=function(t,n,i){t.geometry.computeBoundingBox();var a=(new r.Box3).setFromObject(t),s=a.min.clone().project(n),l=a.max.clone().project(n),c=n.controls.domElement.offsetWidth,h=n.controls.domElement.offsetHeight,u=new o.Raycaster,d=[];s.x=Math.round((s.x+1)*c/2),s.y=Math.round((1-s.y)*h/2),l.x=Math.round((l.x+1)*c/2),l.y=Math.round((1-l.y)*h/2);var f=[Math.min(s.x,l.x),Math.max(s.x,l.x)];s.x=f[0],l.x=f[1];var p=[Math.min(s.y,l.y),Math.max(s.y,l.y)];s.y=p[0],l.y=p[1];for(var m=[],g=null,_=s.x;_<=l.x;_++)for(var y=s.y;y<=l.y;y++)u.setFromCamera({x:_/c*2-1,y:-y/h*2+1},n),0!==(m=u.intersectObject(t)).length&&null!==(g=e.getPixelData(i,e.worldToData(i.lps2IJK,m[0].point)))&&1===i.numberOfChannels&&d.push(e.rescaleSlopeIntercept(g,i.rescaleSlope,i.rescaleIntercept));if(0===d.length)return null;var v=d.reduce((function(e,t){return e+t}))/d.length;return{min:d.reduce((function(e,t){return et?e:t})),mean:v,sd:Math.sqrt(d.reduce((function(e,t){return e+Math.pow(t-v,2)}),0)/d.length)}},e.getGeometryArea=function(e){if(e.faces.length<1)return 0;var t=0,n=e.vertices;return e.faces.forEach((function(e){t+=new a.Triangle(n[e.a],n[e.b],n[e.c]).getArea()})),t},e.stringToNumber=function(e){var t=Number(e);if(t!=t){var n=(e.match(/\./g)||[]).length;if(1===(e.match(/\,/g)||[]).length&&n<2){var i=0===n?".":"",r=e.replace(/,/g,i);t=Number(r)}t!=t&&(console.error("String could not be converted to number ("+e+'). Setting value to "1.0".'),t=1)}return t},e}();t.default=h},"./src/core/core.validators.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.matrix4=function(e){return!(null==e||!e.hasOwnProperty("elements")||16!==e.elements.length||"function"!=typeof e.identity||"function"!=typeof e.copy||"function"!=typeof e.determinant)},e.vector3=function(e){return!(!(null!=e&&e.hasOwnProperty("x")&&e.hasOwnProperty("y")&&e.hasOwnProperty("z"))||e.hasOwnProperty("w"))},e.box=function(e){return!!(null!=e&&e.hasOwnProperty("center")&&this.vector3(e.center)&&e.hasOwnProperty("halfDimensions")&&this.vector3(e.halfDimensions)&&e.halfDimensions.x>=0&&e.halfDimensions.y>=0&&e.halfDimensions.z>=0)},e.ray=function(e){return!!(null!=e&&e.hasOwnProperty("position")&&this.vector3(e.position)&&e.hasOwnProperty("direction")&&this.vector3(e.direction))},e}();t.default=i},"./src/decoders/decoders.rle.js":function(e,t,n){"use strict";n.r(t),n.d(t,"RLEDecoder",(function(){return i}));var i=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var n=t,i=e.rows*e.columns,r=new ArrayBuffer(i*e.samplesPerPixel),o=new DataView(n.buffer,n.byteOffset),a=new Int8Array(n.buffer,n.byteOffset),s=new Int8Array(r),l=0,c=o.getInt32(0,!0),h=0;h=0&&p<=127)for(var m=0;m=-127)for(var g=a[u++],_=0;_<1-p&&l=0&&p<=127)for(var m=0;m=-127)for(var g=a[u++],_=0;_<1-p&&l=0&&p<=127)for(var m=0;m=-127)for(var g=a[d++],_=0;_<1-p&&h0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.ShapeBufferGeometry)return null;var t=e.ShapeBufferGeometry;return function(t){function n(s,l,c,h){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:new e.Matrix4;o(this,n);var d={halfDimensions:s,center:l,toAABB:u},f={position:c,direction:h},p=i.default.aabbPlane(d,f);if(p.length<3){window.console.log("WARNING: Less than 3 intersections between AABB and Plane."),window.console.log("AABB"),window.console.log(d),window.console.log("Plane"),window.console.log(f),window.console.log("exiting...");var m=new Error("geometries.slice has less than 3 intersections, can not create a valid geometry.");throw m}var g=r.default.orderIntersections(p,h),_=new e.Shape;_.moveTo(g[0].xy.x,g[0].xy.y);var y=new Float32Array(3*g.length);y.set(g[0].toArray(),0);for(var v=1;v0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.BoxGeometry)return null;var t=e.BoxGeometry;return function(t){function n(i){r(this,n);var a=o(this,t.call(this,1,1,1));return a._location=i,a.applyMatrix((new e.Matrix4).makeTranslation(a._location.x,a._location.y,a._location.z)),a.verticesNeedUpdate=!0,a}return a(n,t),n.prototype.resetVertices=function(){this.vertices[0].set(.5,.5,.5),this.vertices[1].set(.5,.5,-.5),this.vertices[2].set(.5,-.5,.5),this.vertices[3].set(.5,-.5,-.5),this.vertices[4].set(-.5,.5,-.5),this.vertices[5].set(-.5,.5,.5),this.vertices[6].set(-.5,-.5,-.5),this.vertices[7].set(-.5,-.5,.5)},i(n,[{key:"location",set:function(t){this._location=t,this.vertices[0].set(.5,.5,.5),this.vertices[1].set(.5,.5,-.5),this.vertices[2].set(.5,-.5,.5),this.vertices[3].set(.5,-.5,-.5),this.vertices[4].set(-.5,.5,-.5),this.vertices[5].set(-.5,.5,.5),this.vertices[6].set(-.5,-.5,-.5),this.vertices[7].set(-.5,-.5,.5),this.applyMatrix((new e.Matrix4).makeTranslation(this._location.x,this._location.y,this._location.z)),this.verticesNeedUpdate=!0},get:function(){return this._location}}]),n}(t)};t.default=s()},"./src/helpers/helpers.border.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersBorder",(function(){return s}));var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e){r(this,n);var i=o(this,t.call(this));return i._helpersSlice=e,i._visible=!0,i._color=16711680,i._material=null,i._geometry=null,i._mesh=null,i._create(),i}return a(n,t),n.prototype._create=function(){if(this._material||(this._material=new e.LineBasicMaterial({color:this._color,linewidth:1})),this._helpersSlice.geometry.vertices){this._geometry=new e.BufferGeometry;var t=this._helpersSlice.geometry.vertices.length,n=new Float32Array(3*(t+1));n.set(this._helpersSlice.geometry.attributes.position.array,0),n.set(this._helpersSlice.geometry.vertices[0].toArray(),3*t),this._geometry.setAttribute("position",new e.Float32BufferAttribute(n,3)),this._mesh=new e.Line(this._geometry,this._material),"IJK"===this._helpersSlice.aabbSpace&&this._mesh.applyMatrix4(this._helpersSlice.stack.ijk2LPS),this._mesh.visible=this._visible,this.add(this._mesh)}},n.prototype._update=function(){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh=null),this._create()},n.prototype.dispose=function(){this._mesh.material.dispose(),this._mesh.material=null,this._geometry.dispose(),this._geometry=null,this._material.dispose(),this._material=null},i(n,[{key:"helpersSlice",set:function(e){this._helpersSlice=e,this._update()},get:function(){return this._helpersSlice}},{key:"visible",set:function(e){this._visible=e,this._mesh&&(this._mesh.visible=this._visible)},get:function(){return this._visible}},{key:"color",set:function(e){this._color=e,this._material&&this._material.color.set(this._color)},get:function(){return this._color}}]),n}(t)};t.default=s()},"./src/helpers/helpers.boundingbox.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersBoundingBox",(function(){return s}));var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e){r(this,n);var i=o(this,t.call(this));return i._stack=e,i._visible=!0,i._color=16777215,i._material=null,i._geometry=null,i._mesh=null,i._meshStack=null,i._create(),i}return a(n,t),n.prototype._create=function(){var t=this._stack.dimensionsIJK,n=this._stack.halfDimensionsIJK,i=new e.Vector3(-.5,-.5,-.5),r=new e.BoxGeometry(t.x,t.y,t.z);r.applyMatrix4((new e.Matrix4).makeTranslation(n.x+i.x,n.y+i.y,n.z+i.z)),this._geometry=r,this._material=new e.MeshBasicMaterial({wireframe:!0});var o=new e.Mesh(this._geometry,null);o.applyMatrix4(this._stack.ijk2LPS),o.visible=this._visible,this._meshStack=o,this._mesh=new e.BoxHelper(this._meshStack,this._color),this._material=this._mesh.material,this.add(this._mesh)},n.prototype._update=function(){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null),this._create()},n.prototype.dispose=function(){this._mesh.material.dispose(),this._mesh.material=null,this._geometry.dispose(),this._geometry=null,this._material.dispose(),this._material=null},i(n,[{key:"visible",set:function(e){this._visible=e,this._mesh&&(this._mesh.visible=this._visible)},get:function(){return this._visible}},{key:"color",set:function(e){this._color=e,this._material&&this._material.color.set(this._color)},get:function(){return this._color}}]),n}(t)};t.default=s()},"./src/helpers/helpers.contour.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersContour",(function(){return h}));var i=n("./src/shaders/shaders.contour.uniform.js"),r=n("./src/shaders/shaders.contour.vertex.js"),o=n("./src/shaders/shaders.contour.fragment.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e,a,c){s(this,n);var h=l(this,t.call(this));return h._stack=e,h._textureToFilter=c,h._contourWidth=1,h._contourOpacity=1,h._canvasWidth=0,h._canvasHeight=0,h._shadersFragment=o.default,h._shadersVertex=r.default,h._uniforms=i.default.uniforms(),h._material=null,h._geometry=a,h._create(),h}return c(n,t),n.prototype._create=function(){this._prepareMaterial(),this._mesh=new e.Mesh(this._geometry,this._material),this._mesh.applyMatrix4(this._stack._ijk2LPS),this.add(this._mesh)},n.prototype._prepareMaterial=function(){if(!this._material){this._uniforms.uWidth.value=this._contourWidth,this._uniforms.uOpacity.value=this._contourOpacity,this._uniforms.uCanvasWidth.value=this._canvasWidth,this._uniforms.uCanvasHeight.value=this._canvasHeight;var t=new o.default(this._uniforms),n=new r.default;this._material=new e.ShaderMaterial({side:e.DoubleSide,uniforms:this._uniforms,vertexShader:n.compute(),fragmentShader:t.compute(),transparent:!0})}},n.prototype.update=function(){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh=null),this._create()},n.prototype.dispose=function(){null!==this._textureToFilter&&(this._textureToFilter.dispose(),this._textureToFilter=null),this._shadersFragment=null,this._shadersVertex=null,this._uniforms=null,this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,this._stack=null},a(n,[{key:"geometry",get:function(){return this._geometry},set:function(e){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh=null,this._geometry.dispose(),this._geometry=null),this._geometry=e,this._create()}},{key:"textureToFilter",get:function(){return this._textureToFilter},set:function(e){this._textureToFilter=e,this._uniforms.uTextureFilled.value=e,this._material.needsUpdate=!0}},{key:"contourOpacity",get:function(){return this._contourOpacity},set:function(e){this._contourOpacity=e,this._uniforms.uOpacity.value=this._contourOpacity}},{key:"contourWidth",get:function(){return this._contourWidth},set:function(e){this._contourWidth=e,this._uniforms.uWidth.value=this._contourWidth}},{key:"canvasWidth",get:function(){return this._canvasWidth},set:function(e){this._canvasWidth=e,this._uniforms.uCanvasWidth.value=this._canvasWidth}},{key:"canvasHeight",get:function(){return this._canvasHeight},set:function(e){this._canvasHeight=e,this._uniforms.uCanvasHeight.value=this._canvasHeight}}]),n}(t)};t.default=h()},"./src/helpers/helpers.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/helpers/helpers.border.js");n.d(t,"BorderHelper",(function(){return i.default})),n.d(t,"borderHelperFactory",(function(){return i.helpersBorder}));var r=n("./src/helpers/helpers.boundingbox.js");n.d(t,"BoundingBoxHelper",(function(){return r.default})),n.d(t,"boundingBoxHelperFactory",(function(){return r.helpersBoundingBox}));var o=n("./src/helpers/helpers.contour.js");n.d(t,"ContourHelper",(function(){return o.default})),n.d(t,"contourHelperFactory",(function(){return o.helpersContour}));var a=n("./src/helpers/helpers.localizer.js");n.d(t,"LocalizerHelper",(function(){return a.default})),n.d(t,"localizerHelperFactory",(function(){return a.helpersLocalizer}));var s=n("./src/helpers/helpers.lut.js");n.d(t,"LutHelper",(function(){return s.default})),n.d(t,"lutHelperFactory",(function(){return s.helpersLut}));var l=n("./src/helpers/helpers.segmentationlut.js");n.d(t,"SegmentationLutHelper",(function(){return l.default}));var c=n("./src/helpers/helpers.progressbar.js");n.d(t,"ProgressBarHelper",(function(){return c.default}));var h=n("./src/helpers/helpers.progressbar.eventbased.js");n.d(t,"ProgressBarEventBasedHelper",(function(){return h.default}));var u=n("./src/helpers/helpers.slice.js");n.d(t,"SliceHelper",(function(){return u.default})),n.d(t,"sliceHelperFactory",(function(){return u.helpersSlice}));var d=n("./src/helpers/helpers.stack.js");n.d(t,"StackHelper",(function(){return d.default})),n.d(t,"stackHelperFactory",(function(){return d.helpersStack}));var f=n("./src/helpers/helpers.volumerendering.js");n.d(t,"VolumeRenderingHelper",(function(){return f.default})),n.d(t,"VolumeRenderingHelperFactory",(function(){return f.helpersVolumeRendering}))},"./src/helpers/helpers.localizer.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersLocalizer",(function(){return h}));var i=n("./src/shaders/shaders.localizer.uniform.js"),r=n("./src/shaders/shaders.localizer.vertex.js"),o=n("./src/shaders/shaders.localizer.fragment.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e,a,c){s(this,n);var h=l(this,t.call(this));return h._stack=e,h._referencePlane=c,h._plane1=null,h._color1=null,h._plane2=null,h._color2=null,h._plane3=null,h._color3=null,h._canvasWidth=0,h._canvasHeight=0,h._shadersFragment=o.default,h._shadersVertex=r.default,h._uniforms=i.default.uniforms(),h._material=null,h._geometry=a,h._create(),h}return c(n,t),n.prototype._create=function(){this._prepareMaterial(),this._mesh=new e.Mesh(this._geometry,this._material),this._mesh.applyMatrix(this._stack._ijk2LPS),this.add(this._mesh)},n.prototype._prepareMaterial=function(){if(!this._material){this._uniforms.uSlice.value=this._referencePlane,this._plane1&&(this._uniforms.uPlane1.value=this._plane1,this._uniforms.uPlaneColor1.value=this._color1),this._plane2&&(this._uniforms.uPlane2.value=this._plane2,this._uniforms.uPlaneColor2.value=this._color2),this._plane3&&(this._uniforms.uPlane3.value=this._plane3,this._uniforms.uPlaneColor3.value=this._color3),this._uniforms.uCanvasWidth.value=this._canvasWidth,this._uniforms.uCanvasHeight.value=this._canvasHeight;var t=new o.default(this._uniforms),n=new r.default;this._material=new e.ShaderMaterial({side:e.DoubleSide,uniforms:this._uniforms,vertexShader:n.compute(),fragmentShader:t.compute()}),this._material.transparent=!0}},n.prototype.update=function(){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh=null),this._create()},n.prototype.dispose=function(){this._referencePlane=null,this._plane1=null,this._color1=null,this._plane2=null,this._color2=null,this._plane3=null,this._color3=null,this._shadersFragment=null,this._shadersVertex=null,this._uniforms=null,this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,this._stack=null},a(n,[{key:"geometry",get:function(){return this._geometry},set:function(e){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh=null,this._geometry.dispose(),this._geometry=null),this._geometry=e,this._create()}},{key:"referencePlane",get:function(){return this._referencePlane},set:function(e){this._referencePlane=e,this._uniforms.uSlice.value=this._referencePlane}},{key:"plane1",get:function(){return this._plane1},set:function(e){this._plane1=e,this._uniforms.uPlane1.value=this._plane1}},{key:"color1",get:function(){return this._color1},set:function(e){this._color1=e,this._uniforms.uPlaneColor1.value=this._color1}},{key:"plane2",get:function(){return this._plane2},set:function(e){this._plane2=e,this._uniforms.uPlane2.value=this._plane2}},{key:"color2",get:function(){return this._color2},set:function(e){this._color2=e,this._uniforms.uPlaneColor2.value=this._color2}},{key:"plane3",get:function(){return this._plane3},set:function(e){this._plane3=e,this._uniforms.uPlane3.value=this._plane3}},{key:"color3",get:function(){return this._color3},set:function(e){this._color3=e,this._uniforms.uPlaneColor3.value=this._color3}},{key:"canvasWidth",get:function(){return this._canvasWidth},set:function(e){this._canvasWidth=e,this._uniforms.uCanvasWidth.value=this._canvasWidth}},{key:"canvasHeight",get:function(){return this._canvasHeight},set:function(e){this._canvasHeight=e,this._uniforms.uCanvasHeight.value=this._canvasHeight}}]),n}(t)};t.default=h()},"./src/helpers/helpers.lut.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersLut",(function(){return l}));var i=n("./src/core/core.utils.js"),r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e){var r,s,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"linear",h=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[[0,0,0,0],[1,1,1,1]],u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[[0,0],[1,1]],d=arguments.length>5&&void 0!==arguments[5]&&arguments[5];o(this,n);var f=a(this,t.call(this));return i.default.isString(e)?f._dom=document.getElementById(e):f._dom=e,f._discrete=d,f._color=h,f._lut=l,f._luts=((r={})[l]=h,r),f._opacity=u,f._lutO=c,f._lutsO=((s={})[c]=u,s),f.initCanvas(),f.paintCanvas(),f}return s(n,t),n.prototype.initCanvas=function(){this._canvasContainer=this.initCanvasContainer(this._dom),this._canvasBg=this.createCanvas(),this._canvasContainer.appendChild(this._canvasBg),this._canvas=this.createCanvas(),this._canvasContainer.appendChild(this._canvas)},n.prototype.initCanvasContainer=function(e){var t=e;return t.style.border="1px solid #F9F9F9",t},n.prototype.createCanvas=function(){var e=document.createElement("canvas");return e.height=1,e.width=256,e.style.width="256px",e.style.height="16px",e},n.prototype.paintCanvas=function(){var e=this._canvas.getContext("2d");if(e.clearRect(0,0,this._canvas.width,this._canvas.height),e.globalCompositeOperation="source-over",this._discrete){e.lineWidth=2*this._canvas.height;for(var t=0;t0&&(r=this._color[t-1][0]);var o=r+(n-r)/2,a=n+(i-n)/2,s=this._color[t],l=this._opacity[t]?this._opacity[t][1]:1;e.beginPath(),e.strokeStyle="rgba( "+Math.round(255*s[1])+", "+Math.round(255*s[2])+", "+Math.round(255*s[3])+", "+l+")",e.moveTo(o*this._canvas.width,0),e.lineTo(a*this._canvas.width,0),e.stroke(),e.closePath()}}else{for(var c=e.createLinearGradient(0,0,this._canvas.width,0),h=0;h0&&void 0!==arguments[0]?arguments[0]:"color",t=[],n=this._luts;for(var i in"color"!==e&&(n=this._lutsO),n)t.push(i);return t},n.presetLuts=function(){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]],muscle_bone:[[0,0,0,0],[.00392156862745098,.00784313725490196,0,0],[.00784313725490196,.0196078431372549,0,0],[.011764705882352941,.03137254901960784,0,0],[.01568627450980392,.0392156862745098,0,.00392156862745098],[.0196078431372549,.050980392156862744,.00392156862745098,.00392156862745098],[.023529411764705882,.06274509803921569,.00392156862745098,.00392156862745098],[.027450980392156862,.07058823529411765,.00392156862745098,.00784313725490196],[.03137254901960784,.08235294117647059,.00392156862745098,.00784313725490196],[.03529411764705882,.09411764705882353,.00784313725490196,.00784313725490196],[.0392156862745098,.10196078431372549,.00784313725490196,.00784313725490196],[.043137254901960784,.11372549019607843,.00784313725490196,.011764705882352941],[.047058823529411764,.12549019607843137,.00784313725490196,.011764705882352941],[.050980392156862744,.13333333333333333,.011764705882352941,.011764705882352941],[.054901960784313725,.1450980392156863,.011764705882352941,.01568627450980392],[.058823529411764705,.1568627450980392,.011764705882352941,.01568627450980392],[.06274509803921569,.16470588235294117,.011764705882352941,.01568627450980392],[.06666666666666667,.17647058823529413,.011764705882352941,.0196078431372549],[.07058823529411765,.18823529411764706,.01568627450980392,.0196078431372549],[.07450980392156863,.2,.01568627450980392,.0196078431372549],[.0784313725490196,.20784313725490197,.01568627450980392,.0196078431372549],[.08235294117647059,.2196078431372549,.01568627450980392,.023529411764705882],[.08627450980392157,.23137254901960785,.0196078431372549,.023529411764705882],[.09019607843137255,.23921568627450981,.0196078431372549,.023529411764705882],[.09411764705882353,.25098039215686274,.0196078431372549,.027450980392156862],[.09803921568627451,.2627450980392157,.0196078431372549,.027450980392156862],[.10196078431372549,.27058823529411763,.023529411764705882,.027450980392156862],[.10588235294117647,.2823529411764706,.023529411764705882,.027450980392156862],[.10980392156862745,.29411764705882354,.023529411764705882,.03137254901960784],[.11372549019607843,.30196078431372547,.023529411764705882,.03137254901960784],[.11764705882352941,.3137254901960784,.023529411764705882,.03137254901960784],[.12156862745098039,.3254901960784314,.027450980392156862,.03529411764705882],[.12549019607843137,.3333333333333333,.027450980392156862,.03529411764705882],[.12941176470588237,.34509803921568627,.027450980392156862,.03529411764705882],[.13333333333333333,.3568627450980392,.027450980392156862,.0392156862745098],[.13725490196078433,.36470588235294116,.03137254901960784,.0392156862745098],[.1411764705882353,.3764705882352941,.03137254901960784,.0392156862745098],[.1450980392156863,.38823529411764707,.03137254901960784,.0392156862745098],[.14901960784313725,.4,.03137254901960784,.043137254901960784],[.15294117647058825,.40784313725490196,.03529411764705882,.043137254901960784],[.1568627450980392,.4196078431372549,.03529411764705882,.043137254901960784],[.1607843137254902,.43137254901960786,.03529411764705882,.047058823529411764],[.16470588235294117,.4392156862745098,.03529411764705882,.047058823529411764],[.16862745098039217,.45098039215686275,.03529411764705882,.047058823529411764],[.17254901960784313,.4627450980392157,.0392156862745098,.047058823529411764],[.17647058823529413,.47058823529411764,.0392156862745098,.050980392156862744],[.1803921568627451,.4823529411764706,.0392156862745098,.050980392156862744],[.1843137254901961,.49411764705882355,.0392156862745098,.050980392156862744],[.18823529411764706,.5019607843137255,.043137254901960784,.054901960784313725],[.19215686274509805,.5137254901960784,.043137254901960784,.054901960784313725],[.19607843137254902,.5254901960784314,.043137254901960784,.054901960784313725],[.2,.5333333333333333,.043137254901960784,.058823529411764705],[.20392156862745098,.5450980392156862,.047058823529411764,.058823529411764705],[.20784313725490197,.5568627450980392,.047058823529411764,.058823529411764705],[.21176470588235294,.5647058823529412,.047058823529411764,.058823529411764705],[.21568627450980393,.5764705882352941,.047058823529411764,.06274509803921569],[.2196078431372549,.5882352941176471,.047058823529411764,.06274509803921569],[.2235294117647059,.6,.050980392156862744,.06274509803921569],[.22745098039215686,.6078431372549019,.050980392156862744,.06666666666666667],[.23137254901960785,.6196078431372549,.050980392156862744,.06666666666666667],[.23529411764705882,.6313725490196078,.050980392156862744,.06666666666666667],[.23921568627450981,.6392156862745098,.054901960784313725,.06666666666666667],[.24313725490196078,.6509803921568628,.054901960784313725,.07058823529411765],[.24705882352941178,.6627450980392157,.054901960784313725,.07058823529411765],[.25098039215686274,.6705882352941176,.054901960784313725,.07058823529411765],[.2549019607843137,.6823529411764706,.058823529411764705,.07450980392156863],[.25882352941176473,.6941176470588235,.058823529411764705,.07450980392156863],[.2627450980392157,.7019607843137254,.058823529411764705,.07450980392156863],[.26666666666666666,.7137254901960784,.058823529411764705,.0784313725490196],[.27058823529411763,.7254901960784313,.058823529411764705,.0784313725490196],[.27450980392156865,.7333333333333333,.06274509803921569,.0784313725490196],[.2784313725490196,.7450980392156863,.06274509803921569,.0784313725490196],[.2823529411764706,.7568627450980392,.06274509803921569,.08235294117647059],[.28627450980392155,.7647058823529411,.06274509803921569,.08235294117647059],[.2901960784313726,.7764705882352941,.06666666666666667,.08235294117647059],[.29411764705882354,.788235294117647,.06666666666666667,.08627450980392157],[.2980392156862745,.8,.06666666666666667,.08627450980392157],[.30196078431372547,.807843137254902,.06666666666666667,.08627450980392157],[.3058823529411765,.8196078431372549,.07058823529411765,.08627450980392157],[.30980392156862746,.8313725490196079,.07058823529411765,.09019607843137255],[.3137254901960784,.8392156862745098,.07058823529411765,.09019607843137255],[.3176470588235294,.8509803921568627,.07058823529411765,.09019607843137255],[.3215686274509804,.8627450980392157,.07058823529411765,.09411764705882353],[.3254901960784314,.8705882352941177,.07450980392156863,.09411764705882353],[.32941176470588235,.8823529411764706,.07450980392156863,.09411764705882353],[.3333333333333333,.8941176470588236,.07450980392156863,.09803921568627451],[.33725490196078434,.9019607843137255,.07450980392156863,.09803921568627451],[.3411764705882353,.9137254901960784,.0784313725490196,.09803921568627451],[.34509803921568627,.9254901960784314,.0784313725490196,.09803921568627451],[.34901960784313724,.9333333333333333,.0784313725490196,.10196078431372549],[.35294117647058826,.9450980392156862,.0784313725490196,.10196078431372549],[.3568627450980392,.9568627450980393,.08235294117647059,.10196078431372549],[.3607843137254902,.9647058823529412,.08235294117647059,.10588235294117647],[.36470588235294116,.9764705882352941,.08235294117647059,.10588235294117647],[.3686274509803922,.9882352941176471,.08235294117647059,.10588235294117647],[.37254901960784315,1,.08235294117647059,.10588235294117647],[.3764705882352941,1,.09411764705882353,.10588235294117647],[.3803921568627451,1,.10588235294117647,.10588235294117647],[.3843137254901961,1,.11764705882352941,.10196078431372549],[.38823529411764707,1,.12941176470588237,.10196078431372549],[.39215686274509803,1,.1411764705882353,.10196078431372549],[.396078431372549,1,.15294117647058825,.09803921568627451],[.4,1,.16470588235294117,.09803921568627451],[.403921568627451,1,.17647058823529413,.09803921568627451],[.40784313725490196,1,.18823529411764706,.09411764705882353],[.4117647058823529,1,.2,.09411764705882353],[.41568627450980394,1,.21176470588235294,.09411764705882353],[.4196078431372549,1,.2235294117647059,.09019607843137255],[.4235294117647059,1,.23529411764705882,.09019607843137255],[.42745098039215684,1,.24705882352941178,.08627450980392157],[.43137254901960786,1,.25882352941176473,.08627450980392157],[.43529411764705883,1,.27058823529411763,.08627450980392157],[.4392156862745098,1,.2823529411764706,.08235294117647059],[.44313725490196076,1,.29411764705882354,.08235294117647059],[.4470588235294118,1,.3058823529411765,.08235294117647059],[.45098039215686275,1,.3176470588235294,.0784313725490196],[.4549019607843137,1,.32941176470588235,.0784313725490196],[.4588235294117647,1,.3411764705882353,.0784313725490196],[.4627450980392157,1,.35294117647058826,.07450980392156863],[.4666666666666667,1,.36470588235294116,.07450980392156863],[.47058823529411764,1,.3764705882352941,.07450980392156863],[.4745098039215686,1,.38823529411764707,.07058823529411765],[.47843137254901963,1,.4,.07058823529411765],[.4823529411764706,1,.4117647058823529,.07058823529411765],[.48627450980392156,1,.4235294117647059,.06666666666666667],[.49019607843137253,1,.43529411764705883,.06666666666666667],[.49411764705882355,1,.4470588235294118,.06274509803921569],[.4980392156862745,1,.4588235294117647,.06274509803921569],[.5019607843137255,1,.47058823529411764,.06274509803921569],[.5058823529411764,1,.4823529411764706,.058823529411764705],[.5098039215686274,1,.49411764705882355,.058823529411764705],[.5137254901960784,1,.5058823529411764,.058823529411764705],[.5176470588235295,1,.5137254901960784,.054901960784313725],[.5215686274509804,1,.5254901960784314,.054901960784313725],[.5254901960784314,1,.5372549019607843,.054901960784313725],[.5294117647058824,1,.5490196078431373,.050980392156862744],[.5333333333333333,1,.5607843137254902,.050980392156862744],[.5372549019607843,1,.5725490196078431,.050980392156862744],[.5411764705882353,1,.5843137254901961,.047058823529411764],[.5450980392156862,1,.596078431372549,.047058823529411764],[.5490196078431373,1,.6078431372549019,.043137254901960784],[.5529411764705883,1,.6196078431372549,.043137254901960784],[.5568627450980392,1,.6313725490196078,.043137254901960784],[.5607843137254902,1,.6431372549019608,.0392156862745098],[.5647058823529412,1,.6549019607843137,.0392156862745098],[.5686274509803921,1,.6666666666666666,.0392156862745098],[.5725490196078431,1,.6784313725490196,.03529411764705882],[.5764705882352941,1,.6901960784313725,.03529411764705882],[.5803921568627451,1,.6941176470588235,.0392156862745098],[.5843137254901961,1,.7019607843137254,.0392156862745098],[.5882352941176471,1,.7058823529411765,.043137254901960784],[.592156862745098,1,.7098039215686275,.043137254901960784],[.596078431372549,1,.7137254901960784,.047058823529411764],[.6,1,.7176470588235294,.047058823529411764],[.6039215686274509,1,.7254901960784313,.050980392156862744],[.6078431372549019,1,.7294117647058823,.050980392156862744],[.611764705882353,1,.7333333333333333,.054901960784313725],[.615686274509804,1,.7372549019607844,.058823529411764705],[.6196078431372549,1,.7411764705882353,.058823529411764705],[.6235294117647059,1,.7490196078431373,.06274509803921569],[.6274509803921569,1,.7529411764705882,.06274509803921569],[.6313725490196078,1,.7568627450980392,.06666666666666667],[.6352941176470588,1,.7607843137254902,.06666666666666667],[.6392156862745098,1,.7647058823529411,.07058823529411765],[.6431372549019608,1,.7725490196078432,.07058823529411765],[.6470588235294118,1,.7764705882352941,.07450980392156863],[.6509803921568628,1,.7803921568627451,.07450980392156863],[.6549019607843137,1,.7843137254901961,.0784313725490196],[.6588235294117647,1,.788235294117647,.08235294117647059],[.6627450980392157,1,.796078431372549,.08235294117647059],[.6666666666666666,1,.8,.08627450980392157],[.6705882352941176,1,.803921568627451,.08627450980392157],[.6745098039215687,1,.807843137254902,.09019607843137255],[.6784313725490196,1,.8117647058823529,.09019607843137255],[.6823529411764706,1,.8196078431372549,.09411764705882353],[.6862745098039216,1,.8235294117647058,.09411764705882353],[.6901960784313725,1,.8274509803921568,.09803921568627451],[.6941176470588235,1,.8313725490196079,.10196078431372549],[.6980392156862745,1,.8352941176470589,.10196078431372549],[.7019607843137254,1,.8431372549019608,.10588235294117647],[.7058823529411765,1,.8470588235294118,.10588235294117647],[.7098039215686275,1,.8509803921568627,.10980392156862745],[.7137254901960784,1,.8549019607843137,.10980392156862745],[.7176470588235294,1,.8627450980392157,.11372549019607843],[.7215686274509804,1,.8666666666666667,.11372549019607843],[.7254901960784313,1,.8705882352941177,.11764705882352941],[.7294117647058823,1,.8745098039215686,.12156862745098039],[.7333333333333333,1,.8784313725490196,.12156862745098039],[.7372549019607844,1,.8862745098039215,.12549019607843137],[.7411764705882353,1,.8901960784313725,.12549019607843137],[.7450980392156863,1,.8941176470588236,.12941176470588237],[.7490196078431373,1,.8980392156862745,.12941176470588237],[.7529411764705882,1,.9019607843137255,.13333333333333333],[.7568627450980392,1,.9098039215686274,.13333333333333333],[.7607843137254902,1,.9137254901960784,.13725490196078433],[.7647058823529411,1,.9176470588235294,.1411764705882353],[.7686274509803922,1,.9215686274509803,.1411764705882353],[.7725490196078432,1,.9254901960784314,.1450980392156863],[.7764705882352941,1,.9333333333333333,.1450980392156863],[.7803921568627451,1,.9372549019607843,.14901960784313725],[.7843137254901961,1,.9411764705882353,.14901960784313725],[.788235294117647,1,.9450980392156862,.15294117647058825],[.792156862745098,1,.9450980392156862,.16862745098039217],[.796078431372549,1,.9490196078431372,.1843137254901961],[.8,1,.9490196078431372,.2],[.803921568627451,1,.9490196078431372,.21568627450980393],[.807843137254902,1,.9490196078431372,.22745098039215686],[.8117647058823529,1,.9529411764705882,.24313725490196078],[.8156862745098039,1,.9529411764705882,.25882352941176473],[.8196078431372549,1,.9529411764705882,.27450980392156865],[.8235294117647058,1,.9529411764705882,.2901960784313726],[.8274509803921568,1,.9568627450980393,.3058823529411765],[.8313725490196079,1,.9568627450980393,.3215686274509804],[.8352941176470589,1,.9568627450980393,.33725490196078434],[.8392156862745098,1,.9568627450980393,.35294117647058826],[.8431372549019608,1,.9607843137254902,.3686274509803922],[.8470588235294118,1,.9607843137254902,.3843137254901961],[.8509803921568627,1,.9607843137254902,.4],[.8549019607843137,1,.9607843137254902,.4117647058823529],[.8588235294117647,1,.9647058823529412,.42745098039215684],[.8627450980392157,1,.9647058823529412,.44313725490196076],[.8666666666666667,1,.9647058823529412,.4588235294117647],[.8705882352941177,1,.9647058823529412,.4745098039215686],[.8745098039215686,1,.9686274509803922,.49019607843137253],[.8784313725490196,1,.9686274509803922,.5058823529411764],[.8823529411764706,1,.9686274509803922,.5215686274509804],[.8862745098039215,1,.9686274509803922,.5372549019607843],[.8901960784313725,1,.9725490196078431,.5529411764705883],[.8941176470588236,1,.9725490196078431,.5686274509803921],[.8980392156862745,1,.9725490196078431,.5843137254901961],[.9019607843137255,1,.9725490196078431,.6],[.9058823529411765,1,.9725490196078431,.611764705882353],[.9098039215686274,1,.9764705882352941,.6274509803921569],[.9137254901960784,1,.9764705882352941,.6431372549019608],[.9176470588235294,1,.9764705882352941,.6588235294117647],[.9215686274509803,1,.9764705882352941,.6745098039215687],[.9254901960784314,1,.9803921568627451,.6901960784313725],[.9294117647058824,1,.9803921568627451,.7058823529411765],[.9333333333333333,1,.9803921568627451,.7215686274509804],[.9372549019607843,1,.9803921568627451,.7372549019607844],[.9411764705882353,1,.984313725490196,.7529411764705882],[.9450980392156862,1,.984313725490196,.7686274509803922],[.9490196078431372,1,.984313725490196,.7843137254901961],[.9529411764705882,1,.984313725490196,.8],[.9568627450980393,1,.9882352941176471,.8117647058823529],[.9607843137254902,1,.9882352941176471,.8274509803921568],[.9647058823529412,1,.9882352941176471,.8431372549019608],[.9686274509803922,1,.9882352941176471,.8588235294117647],[.9725490196078431,1,.9921568627450981,.8745098039215686],[.9764705882352941,1,.9921568627450981,.8901960784313725],[.9803921568627451,1,.9921568627450981,.9058823529411765],[.984313725490196,1,.9921568627450981,.9215686274509803],[.9882352941176471,1,.996078431372549,.9372549019607843],[.9921568627450981,1,.996078431372549,.9529411764705882],[.996078431372549,1,.996078431372549,.9686274509803922],[1,1,.996078431372549,.984313725490196]]}},n.presetLutsO=function(){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]],linear_full:[[0,0],[.00392156862745098,.00392156862745098],[.00784313725490196,.00784313725490196],[.011764705882352941,.011764705882352941],[.01568627450980392,.01568627450980392],[.0196078431372549,.0196078431372549],[.023529411764705882,.023529411764705882],[.027450980392156862,.027450980392156862],[.03137254901960784,.03137254901960784],[.03529411764705882,.03529411764705882],[.0392156862745098,.0392156862745098],[.043137254901960784,.043137254901960784],[.047058823529411764,.047058823529411764],[.050980392156862744,.050980392156862744],[.054901960784313725,.054901960784313725],[.058823529411764705,.058823529411764705],[.06274509803921569,.06274509803921569],[.06666666666666667,.06666666666666667],[.07058823529411765,.07058823529411765],[.07450980392156863,.07450980392156863],[.0784313725490196,.0784313725490196],[.08235294117647059,.08235294117647059],[.08627450980392157,.08627450980392157],[.09019607843137255,.09019607843137255],[.09411764705882353,.09411764705882353],[.09803921568627451,.09803921568627451],[.10196078431372549,.10196078431372549],[.10588235294117647,.10588235294117647],[.10980392156862745,.10980392156862745],[.11372549019607843,.11372549019607843],[.11764705882352941,.11764705882352941],[.12156862745098039,.12156862745098039],[.12549019607843137,.12549019607843137],[.12941176470588237,.12941176470588237],[.13333333333333333,.13333333333333333],[.13725490196078433,.13725490196078433],[.1411764705882353,.1411764705882353],[.1450980392156863,.1450980392156863],[.14901960784313725,.14901960784313725],[.15294117647058825,.15294117647058825],[.1568627450980392,.1568627450980392],[.1607843137254902,.1607843137254902],[.16470588235294117,.16470588235294117],[.16862745098039217,.16862745098039217],[.17254901960784313,.17254901960784313],[.17647058823529413,.17647058823529413],[.1803921568627451,.1803921568627451],[.1843137254901961,.1843137254901961],[.18823529411764706,.18823529411764706],[.19215686274509805,.19215686274509805],[.19607843137254902,.19607843137254902],[.2,.2],[.20392156862745098,.20392156862745098],[.20784313725490197,.20784313725490197],[.21176470588235294,.21176470588235294],[.21568627450980393,.21568627450980393],[.2196078431372549,.2196078431372549],[.2235294117647059,.2235294117647059],[.22745098039215686,.22745098039215686],[.23137254901960785,.23137254901960785],[.23529411764705882,.23529411764705882],[.23921568627450981,.23921568627450981],[.24313725490196078,.24313725490196078],[.24705882352941178,.24705882352941178],[.25098039215686274,.25098039215686274],[.2549019607843137,.2549019607843137],[.25882352941176473,.25882352941176473],[.2627450980392157,.2627450980392157],[.26666666666666666,.26666666666666666],[.27058823529411763,.27058823529411763],[.27450980392156865,.27450980392156865],[.2784313725490196,.2784313725490196],[.2823529411764706,.2823529411764706],[.28627450980392155,.28627450980392155],[.2901960784313726,.2901960784313726],[.29411764705882354,.29411764705882354],[.2980392156862745,.2980392156862745],[.30196078431372547,.30196078431372547],[.3058823529411765,.3058823529411765],[.30980392156862746,.30980392156862746],[.3137254901960784,.3137254901960784],[.3176470588235294,.3176470588235294],[.3215686274509804,.3215686274509804],[.3254901960784314,.3254901960784314],[.32941176470588235,.32941176470588235],[.3333333333333333,.3333333333333333],[.33725490196078434,.33725490196078434],[.3411764705882353,.3411764705882353],[.34509803921568627,.34509803921568627],[.34901960784313724,.34901960784313724],[.35294117647058826,.35294117647058826],[.3568627450980392,.3568627450980392],[.3607843137254902,.3607843137254902],[.36470588235294116,.36470588235294116],[.3686274509803922,.3686274509803922],[.37254901960784315,.37254901960784315],[.3764705882352941,.3764705882352941],[.3803921568627451,.3803921568627451],[.3843137254901961,.3843137254901961],[.38823529411764707,.38823529411764707],[.39215686274509803,.39215686274509803],[.396078431372549,.396078431372549],[.4,.4],[.403921568627451,.403921568627451],[.40784313725490196,.40784313725490196],[.4117647058823529,.4117647058823529],[.41568627450980394,.41568627450980394],[.4196078431372549,.4196078431372549],[.4235294117647059,.4235294117647059],[.42745098039215684,.42745098039215684],[.43137254901960786,.43137254901960786],[.43529411764705883,.43529411764705883],[.4392156862745098,.4392156862745098],[.44313725490196076,.44313725490196076],[.4470588235294118,.4470588235294118],[.45098039215686275,.45098039215686275],[.4549019607843137,.4549019607843137],[.4588235294117647,.4588235294117647],[.4627450980392157,.4627450980392157],[.4666666666666667,.4666666666666667],[.47058823529411764,.47058823529411764],[.4745098039215686,.4745098039215686],[.47843137254901963,.47843137254901963],[.4823529411764706,.4823529411764706],[.48627450980392156,.48627450980392156],[.49019607843137253,.49019607843137253],[.49411764705882355,.49411764705882355],[.4980392156862745,.4980392156862745],[.5019607843137255,.5019607843137255],[.5058823529411764,.5058823529411764],[.5098039215686274,.5098039215686274],[.5137254901960784,.5137254901960784],[.5176470588235295,.5176470588235295],[.5215686274509804,.5215686274509804],[.5254901960784314,.5254901960784314],[.5294117647058824,.5294117647058824],[.5333333333333333,.5333333333333333],[.5372549019607843,.5372549019607843],[.5411764705882353,.5411764705882353],[.5450980392156862,.5450980392156862],[.5490196078431373,.5490196078431373],[.5529411764705883,.5529411764705883],[.5568627450980392,.5568627450980392],[.5607843137254902,.5607843137254902],[.5647058823529412,.5647058823529412],[.5686274509803921,.5686274509803921],[.5725490196078431,.5725490196078431],[.5764705882352941,.5764705882352941],[.5803921568627451,.5803921568627451],[.5843137254901961,.5843137254901961],[.5882352941176471,.5882352941176471],[.592156862745098,.592156862745098],[.596078431372549,.596078431372549],[.6,.6],[.6039215686274509,.6039215686274509],[.6078431372549019,.6078431372549019],[.611764705882353,.611764705882353],[.615686274509804,.615686274509804],[.6196078431372549,.6196078431372549],[.6235294117647059,.6235294117647059],[.6274509803921569,.6274509803921569],[.6313725490196078,.6313725490196078],[.6352941176470588,.6352941176470588],[.6392156862745098,.6392156862745098],[.6431372549019608,.6431372549019608],[.6470588235294118,.6470588235294118],[.6509803921568628,.6509803921568628],[.6549019607843137,.6549019607843137],[.6588235294117647,.6588235294117647],[.6627450980392157,.6627450980392157],[.6666666666666666,.6666666666666666],[.6705882352941176,.6705882352941176],[.6745098039215687,.6745098039215687],[.6784313725490196,.6784313725490196],[.6823529411764706,.6823529411764706],[.6862745098039216,.6862745098039216],[.6901960784313725,.6901960784313725],[.6941176470588235,.6941176470588235],[.6980392156862745,.6980392156862745],[.7019607843137254,.7019607843137254],[.7058823529411765,.7058823529411765],[.7098039215686275,.7098039215686275],[.7137254901960784,.7137254901960784],[.7176470588235294,.7176470588235294],[.7215686274509804,.7215686274509804],[.7254901960784313,.7254901960784313],[.7294117647058823,.7294117647058823],[.7333333333333333,.7333333333333333],[.7372549019607844,.7372549019607844],[.7411764705882353,.7411764705882353],[.7450980392156863,.7450980392156863],[.7490196078431373,.7490196078431373],[.7529411764705882,.7529411764705882],[.7568627450980392,.7568627450980392],[.7607843137254902,.7607843137254902],[.7647058823529411,.7647058823529411],[.7686274509803922,.7686274509803922],[.7725490196078432,.7725490196078432],[.7764705882352941,.7764705882352941],[.7803921568627451,.7803921568627451],[.7843137254901961,.7843137254901961],[.788235294117647,.788235294117647],[.792156862745098,.792156862745098],[.796078431372549,.796078431372549],[.8,.8],[.803921568627451,.803921568627451],[.807843137254902,.807843137254902],[.8117647058823529,.8117647058823529],[.8156862745098039,.8156862745098039],[.8196078431372549,.8196078431372549],[.8235294117647058,.8235294117647058],[.8274509803921568,.8274509803921568],[.8313725490196079,.8313725490196079],[.8352941176470589,.8352941176470589],[.8392156862745098,.8392156862745098],[.8431372549019608,.8431372549019608],[.8470588235294118,.8470588235294118],[.8509803921568627,.8509803921568627],[.8549019607843137,.8549019607843137],[.8588235294117647,.8588235294117647],[.8627450980392157,.8627450980392157],[.8666666666666667,.8666666666666667],[.8705882352941177,.8705882352941177],[.8745098039215686,.8745098039215686],[.8784313725490196,.8784313725490196],[.8823529411764706,.8823529411764706],[.8862745098039215,.8862745098039215],[.8901960784313725,.8901960784313725],[.8941176470588236,.8941176470588236],[.8980392156862745,.8980392156862745],[.9019607843137255,.9019607843137255],[.9058823529411765,.9058823529411765],[.9098039215686274,.9098039215686274],[.9137254901960784,.9137254901960784],[.9176470588235294,.9176470588235294],[.9215686274509803,.9215686274509803],[.9254901960784314,.9254901960784314],[.9294117647058824,.9294117647058824],[.9333333333333333,.9333333333333333],[.9372549019607843,.9372549019607843],[.9411764705882353,.9411764705882353],[.9450980392156862,.9450980392156862],[.9490196078431372,.9490196078431372],[.9529411764705882,.9529411764705882],[.9568627450980393,.9568627450980393],[.9607843137254902,.9607843137254902],[.9647058823529412,.9647058823529412],[.9686274509803922,.9686274509803922],[.9725490196078431,.9725490196078431],[.9764705882352941,.9764705882352941],[.9803921568627451,.9803921568627451],[.984313725490196,.984313725490196],[.9882352941176471,.9882352941176471],[.9921568627450981,.9921568627450981],[.996078431372549,.996078431372549],[1,1]]}},r(n,[{key:"texture",get:function(){var t=new e.Texture(this._canvas);return t.mapping=e.UVMapping,t.wrapS=t.wrapT=e.ClampToEdgeWrapping,t.magFilter=t.minFilter=e.NearestFilter,t.premultiplyAlpha=!0,t.needsUpdate=!0,t}},{key:"lut",set:function(e){this._color=this._luts[e],this._lut=e,this.paintCanvas()},get:function(){return this._lut}},{key:"luts",set:function(e){this._luts=e},get:function(){return this._luts}},{key:"lutO",set:function(e){this._opacity=this._lutsO[e],this._lutO=e,this.paintCanvas()},get:function(){return this._lutO}},{key:"lutsO",set:function(e){this._lutsO=e},get:function(){return this._lutsO}},{key:"discrete",set:function(e){this._discrete=e,this.paintCanvas()},get:function(){return this._discrete}}]),n}(t)};t.default=l()},"./src/helpers/helpers.material.mixin.js":function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}n.r(t),n.d(t,"helpersMaterialMixin",(function(){return a}));var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(){return i(this,n),r(this,t.apply(this,arguments))}return o(n,t),n.prototype._createMaterial=function(t){var n=new this._shadersFragment(this._uniforms),i=new this._shadersVertex,r={uniforms:this._uniforms,vertexShader:i.compute(),fragmentShader:n.compute()},o=Object.assign(t,r);this._material=new e.ShaderMaterial(o),this._material.needsUpdate=!0},n.prototype._updateMaterial=function(){var e=new this._shadersFragment(this._uniforms),t=new this._shadersVertex;this._material.vertexShader=t.compute(),this._material.fragmentShader=e.compute(),this._material.needsUpdate=!0},n.prototype._prepareTexture=function(){this._textures=[];for(var t=0;t\n

\n
    \n
\n ',this._dom.append(e),this._domCurrentFile=document.getElementById("current-file-index"),this._domTotalFile=document.getElementById("total-file"),this._domProcessList=document.getElementById("process-list"),this._domCurrentProgress=document.getElementById("current-progress")},e}();t.default=r},"./src/helpers/helpers.progressbar.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(e,t){for(var n=0;n0&&e[0].parentNode.removeChild(e[0]),e=null,window.cancelAnimationFrame(this.requestAnimationFrameID)},e.prototype.init=function(){var e=this._domContainer();for(var t in this._modes)if(this._modes.hasOwnProperty(t)){var n=this._domBar(this._modes[t]);e.appendChild(n),n=null}this._container.appendChild(e),e=null,this.updateUI()},e.prototype.update=function(e,t,n){this._mode=n,this._value=e,0===t?(this._total=e,this._value=Math.random()*e):this._total=t},e.prototype.updateUI=function(){var e=this;if(this.requestAnimationFrameID=requestAnimationFrame((function(){e.updateUI()})),!(this._modes.hasOwnProperty(this._mode)&&this._modes[this._mode].hasOwnProperty("name")&&this._modes[this._mode].hasOwnProperty("color")))return!1;var t=Math.round(this._value/this._total*100),n=this._modes[this._mode].color,i=this._container.getElementsByClassName("progress "+this._modes[this._mode].name);i.length>0&&(i[0].style.borderColor=n,i[0].style.width=t+"%"),i=null},e.prototype._domContainer=function(){var e=document.createElement("div");return e.classList.add("progress"),e.classList.add("container"),e.style.width="100%",e.style.height="8px",e.style.position="absolute",e.style.backgroundColor="rgba(158, 158, 158, 0.5)",e.style.top="0",e.style.zIndex="1",e},e.prototype._domBar=function(e){if(!e.hasOwnProperty("name")||!e.hasOwnProperty("color"))return window.console.log("Invalid mode provided."),window.console.log(e),!1;var t=document.createElement("div");return t.classList.add(e.name),t.classList.add("progress"),t.style.border="2px solid "+e.color,t.style.width="0%",t},i(e,[{key:"totalFiles",set:function(e){this._totalFiles=e},get:function(){return this._totalFiles}}]),e}();t.default=r},"./src/helpers/helpers.segmentationlut.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/core/core.utils.js"),r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:a;o(this,e),i.default.isString(t)?this._dom=document.getElementById(t):this._dom=t,this._segmentation=n,this.initCanvas(),this.paintCanvas()}return e.prototype.initCanvas=function(){this._canvasContainer=this.initCanvasContainer(this._dom),this._canvasBg=this.createCanvas(),this._canvasContainer.appendChild(this._canvasBg),this._canvas=this.createCanvas(),this._canvasContainer.appendChild(this._canvas)},e.prototype.initCanvasContainer=function(e){var t=e;return t.style.width="256 px",t.style.height="128 px",t.style.border="1px solid #F9F9F9",t},e.prototype.createCanvas=function(){var e=document.createElement("canvas");return e.height=128,e.width=256,e},e.prototype.paintCanvas=function(){var e=this._canvas.getContext("2d");for(var t in e.clearRect(0,0,this._canvas.width,this._canvas.height),e.globalCompositeOperation="source-over",e.lineWidth=1,this._segmentation){var n=t%this._canvas.width,i=Math.floor(t/this._canvas.width),r=void 0!==this._segmentation[t].opacity?this._segmentation[t].opacity:1,o=this._segmentation[t].color;e.fillStyle="rgba( "+Math.round(o[0])+", "+Math.round(o[1])+", "+Math.round(o[2])+", "+r+")",e.fillRect(n,i,1,1)}},r(e,[{key:"texture",get:function(){var e=new THREE.Texture(this._canvas);return e.mapping=THREE.UVMapping,e.wrapS=e.wrapT=THREE.ClampToEdgeWrapping,e.magFilter=e.minFilter=THREE.NearestFilter,e.premultiplyAlpha=!0,e.needsUpdate=!0,e}},{key:"segmentation",set:function(e){this._segmentation=e,this.paintCanvas()},get:function(){return this._segmentation}}]),e}();t.default=s},"./src/helpers/helpers.slice.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersSlice",(function(){return d}));var i=n("./src/geometries/geometries.slice.js"),r=n("./src/shaders/shaders.data.uniform.js"),o=n("./src/shaders/shaders.data.vertex.js"),a=n("./src/shaders/shaders.data.fragment.js"),s=n("./src/helpers/helpers.material.mixin.js"),l=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(s.helpersMaterialMixin)(e);return function(t){function n(i){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new e.Vector3(0,0,0),u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new e.Vector3(0,0,1),d=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"IJK";c(this,n);var f=h(this,t.call(this));return f._stack=i,f._invert=f._stack.invert,f._lut="none",f._lutTexture=null,f._intensityAuto=!0,f._interpolation=1,f._index=s,f._windowWidth=null,f._windowCenter=null,f._opacity=1,f._rescaleSlope=null,f._rescaleIntercept=null,f._spacing=1,f._thickness=0,f._thicknessMethod=0,f._lowerThreshold=null,f._upperThreshold=null,f._canvasWidth=0,f._canvasHeight=0,f._borderColor=null,f._planePosition=l,f._planeDirection=u,f._aaBBspace=d,f._material=null,f._textures=[],f._shadersFragment=a.default,f._shadersVertex=o.default,f._uniforms=r.default.uniforms(),f._geometry=null,f._mesh=null,f._visible=!0,f._init(),f._create(),f}return u(n,t),n.prototype._init=function(){if(this._stack&&this._stack._prepared&&this._stack._packed)if("IJK"===this._aaBBspace)this._halfDimensions=this._stack.halfDimensionsIJK,this._center=new e.Vector3(this._stack.halfDimensionsIJK.x-.5,this._stack.halfDimensionsIJK.y-.5,this._stack.halfDimensionsIJK.z-.5),this._toAABB=new e.Matrix4;else{var t=this._stack.AABBox();this._halfDimensions=t.clone().multiplyScalar(.5),this._center=this._stack.centerAABBox(),this._toAABB=this._stack.lps2AABB}},n.prototype._create=function(){if(this._stack&&this._stack.prepared&&this._stack.packed){try{var t=Object(i.geometriesSlice)(e);this._geometry=new t(this._halfDimensions,this._center,this._planePosition,this._planeDirection,this._toAABB)}catch(e){return window.console.log(e),void window.console.log("invalid slice geometry - exiting...")}this._geometry.vertices&&(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._uniforms.uSpacing.value=this._spacing,this._uniforms.uThickness.value=this._thickness,this._uniforms.uThicknessMethod.value=this._thicknessMethod,this._prepareTexture(),this._uniforms.uTextureContainer.value=this._textures,this._stack.textureUnits>8&&(this._uniforms.uTextureContainer.length=14),this._createMaterial({side:e.DoubleSide})),this.updateIntensitySettings(),this.updateIntensitySettingsUniforms(),this._mesh=new e.Mesh(this._geometry,this._material),"IJK"===this._aaBBspace&&this._mesh.applyMatrix4(this._stack.ijk2LPS),this._mesh.visible=this._visible,this.add(this._mesh))}},n.prototype.updateIntensitySettings=function(){this._intensityAuto?(this.updateIntensitySetting("windowCenter"),this.updateIntensitySetting("windowWidth"),this.updateIntensitySetting("rescaleSlope"),this.updateIntensitySetting("rescaleIntercept")):(null===this._windowCenter&&(this._windowCenter=this._stack.windowCenter),null===this._windowWidth&&(this._windowWidth=this._stack.windowWidth),null===this._rescaleSlope&&(this._rescaleSlope=this._stack.rescaleSlope),null===this._rescaleIntercept&&(this._rescaleIntercept=this._stack.rescaleIntercept)),null===this._upperThreshold&&(this._upperThreshold=this._stack._minMax[1]),null===this._lowerThreshold&&(this._lowerThreshold=this._stack._minMax[0])},n.prototype.updateIntensitySettingsUniforms=function(){var e=0;this._stack._minMax[0]<0&&(e-=this._stack._minMax[0]),this._uniforms.uRescaleSlopeIntercept.value=[this._rescaleSlope,this._rescaleIntercept],this._uniforms.uWindowCenterWidth.value=[e+this._windowCenter,this._windowWidth],this._uniforms.uOpacity.value=this._opacity,this._uniforms.uLowerUpperThreshold.value=[e+this._lowerThreshold,e+this._upperThreshold],this._uniforms.uInvert.value=!0===this._invert?1:0,this._uniforms.uInterpolation.value=this._interpolation,"none"===this._lut?this._uniforms.uLut.value=0:(this._uniforms.uLut.value=1,this._uniforms.uTextureLUT.value=this._lutTexture)},n.prototype.updateIntensitySetting=function(e){this._stack.frame[this._index]&&this._stack.frame[this._index][e]?this["_"+e]=this._stack.frame[this._index][e]:this["_"+e]=this._stack[e]},n.prototype._update=function(){this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh=null),this._create()},n.prototype.dispose=function(){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=e.Object3D;return function(t){function n(e){s(this,n);var i=l(this,t.call(this));return i._stack=e,i._bBox=null,i._slice=null,i._border=null,i._dummy=null,i._orientation=0,i._index=0,i._uniforms=null,i._autoWindowLevel=!1,i._outOfBounds=!1,i._orientationMaxIndex=0,i._orientationSpacing=0,i._canvasWidth=0,i._canvasHeight=0,i._borderColor=null,i._create(),i}return c(n,t),n.prototype._create=function(){this._stack?(this._prepareStack(),this._prepareBBox(),this._prepareSlice(),this._prepareBorder()):window.console.log("no stack to be prepared...")},n.prototype._computeOrientationSpacing=function(){var e=this._stack._spacing;switch(this._orientation){case 0:this._orientationSpacing=e.z;break;case 1:this._orientationSpacing=e.x;break;case 2:this._orientationSpacing=e.y;break;default:this._orientationSpacing=0}},n.prototype._computeOrientationMaxIndex=function(){var e=this._stack.dimensionsIJK;switch(this._orientationMaxIndex=0,this._orientation){case 0:this._orientationMaxIndex=e.z-1;break;case 1:this._orientationMaxIndex=e.x-1;break;case 2:this._orientationMaxIndex=e.y-1}},n.prototype._isIndexOutOfBounds=function(){this._computeOrientationMaxIndex(),this._index>=this._orientationMaxIndex||this._index<0?this._outOfBounds=!0:this._outOfBounds=!1},n.prototype._prepareStack=function(){this._stack.prepared||this._stack.prepare(),this._stack.packed||this._stack.pack()},n.prototype._prepareBBox=function(){var t=Object(r.helpersBoundingBox)(e);this._bBox=new t(this._stack),this.add(this._bBox)},n.prototype._prepareBorder=function(){var t=Object(i.helpersBorder)(e);this._border=new t(this._slice),this.add(this._border)},n.prototype._prepareSlice=function(){var t=this._stack.halfDimensionsIJK;this._index=this._prepareSliceIndex(t);var n=this._prepareSlicePosition(t,this._index),i=this._prepareDirection(this._orientation),r=Object(o.helpersSlice)(e);this._slice=new r(this._stack,this._index,n,i),this.add(this._slice)},n.prototype._prepareSliceIndex=function(e){var t=0;switch(this._orientation){case 0:t=Math.floor(e.z);break;case 1:t=Math.floor(e.x);break;case 2:t=Math.floor(e.y)}return t},n.prototype._prepareSlicePosition=function(t,n){var i=new e.Vector3(0,0,0);switch(this._orientation){case 0:i=new e.Vector3(Math.floor(t.x),Math.floor(t.y),n);break;case 1:i=new e.Vector3(n,Math.floor(t.y),Math.floor(t.z));break;case 2:i=new e.Vector3(Math.floor(t.x),n,Math.floor(t.z))}return i},n.prototype._prepareDirection=function(t){var n=new e.Vector3(0,0,1);switch(t){case 0:n=new e.Vector3(0,0,1);break;case 1:n=new e.Vector3(1,0,0);break;case 2:n=new e.Vector3(0,1,0)}return n},n.prototype.dispose=function(){this.remove(this._slice),this._slice.dispose(),this._slice=null,this._bBox.dispose(),this._bBox=null,this._border.dispose(),this._border=null},a(n,[{key:"stack",get:function(){return this._stack},set:function(e){this._stack=e}},{key:"bbox",get:function(){return this._bBox}},{key:"slice",get:function(){return this._slice}},{key:"border",get:function(){return this._border}},{key:"index",get:function(){return this._index},set:function(e){this._index=e,this._slice.index=e;var t=this._stack.halfDimensionsIJK;this._slice.planePosition=this._prepareSlicePosition(t,this._index),this._border.helpersSlice=this._slice,this._isIndexOutOfBounds()}},{key:"orientation",set:function(e){this._orientation=e,this._computeOrientationMaxIndex(),this._computeOrientationSpacing(),this._slice.spacing=Math.abs(this._orientationSpacing),this._slice.thickness=this._slice.spacing,this._slice.planeDirection=this._prepareDirection(this._orientation),this._border.helpersSlice=this._slice},get:function(){return this._orientation}},{key:"outOfBounds",set:function(e){this._outOfBounds=e},get:function(){return this._outOfBounds}},{key:"orientationMaxIndex",set:function(e){this._orientationMaxIndex=e},get:function(){return this._orientationMaxIndex}},{key:"orientationSpacing",set:function(e){this._orientationSpacing=e},get:function(){return this._orientationSpacing}},{key:"canvasWidth",set:function(e){this._canvasWidth=e,this._slice.canvasWidth=this._canvasWidth},get:function(){return this._canvasWidth}},{key:"canvasHeight",set:function(e){this._canvasHeight=e,this._slice.canvasHeight=this._canvasHeight},get:function(){return this._canvasHeight}},{key:"borderColor",set:function(e){this._borderColor=e,this._border.color=e,this._slice.borderColor=this._borderColor},get:function(){return this._borderColor}}]),n}(t)};t.default=h()},"./src/helpers/helpers.volumerendering.js":function(e,t,n){"use strict";n.r(t),n.d(t,"helpersVolumeRendering",(function(){return u}));var i=n("./src/shaders/shaders.vr.uniform.js"),r=n("./src/shaders/shaders.vr.vertex.js"),o=n("./src/shaders/shaders.vr.fragment.js"),a=n("./src/helpers/helpers.material.mixin.js"),s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(a.helpersMaterialMixin)(e);return function(t){function n(e){l(this,n);var a=c(this,t.call(this));return a._stack=e,a._textures=[],a._shadersFragment=o.default,a._shadersVertex=r.default,a._uniforms=i.default.uniforms(),a._material=null,a._geometry=null,a._mesh=null,a._algorithm=0,a._alphaCorrection=.5,a._interpolation=1,a._shading=1,a._shininess=10,a._steps=256,a._offset=0,a._windowCenter=0,a._windowWidth=1,a._create(),a}return h(n,t),n.prototype._create=function(){this._prepareStack(),this._prepareTexture(),this._prepareMaterial(),this._prepareGeometry(),this._mesh=new e.Mesh(this._geometry,this._material),this.add(this._mesh)},n.prototype._prepareStack=function(){this._stack.prepared||this._stack.prepare(),this._stack.packed||this._stack.pack(),this._offset=Math.min(0,this._stack._minMax[0]),this._windowCenter=this._stack.windowCenter,this._windowWidth=.8*this._stack.windowWidth},n.prototype._prepareMaterial=function(){this._uniforms=i.default.uniforms(),this._uniforms.uWorldBBox.value=this._stack.worldBoundingBox(),this._uniforms.uTextureSize.value=this._stack.textureSize,this._uniforms.uTextureContainer.value=this._textures,this._stack.textureUnits>8&&(this._uniforms.uTextureContainer.length=14),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._uniforms.uWindowCenterWidth.value=[this._windowCenter-this._offset,this._windowWidth],this._uniforms.uRescaleSlopeIntercept.value=[this._stack.rescaleSlope,this._stack.rescaleIntercept],this._uniforms.uDataDimensions.value=[this._stack.dimensionsIJK.x,this._stack.dimensionsIJK.y,this._stack.dimensionsIJK.z],this._uniforms.uAlphaCorrection.value=this._alphaCorrection,this._uniforms.uInterpolation.value=this._interpolation,this._uniforms.uShading.value=this._shading,this._uniforms.uShininess.value=this._shininess,this._uniforms.uSteps.value=this._steps,this._uniforms.uAlgorithm.value=this._algorithm,this._createMaterial({side:e.BackSide,transparent:!0})},n.prototype._prepareGeometry=function(){var t=this._stack.worldBoundingBox(),n=this._stack.worldCenter();this._geometry=new e.BoxGeometry(t[1]-t[0],t[3]-t[2],t[5]-t[4]),this._geometry.applyMatrix4((new e.Matrix4).makeTranslation(n.x,n.y,n.z))},n.prototype.dispose=function(){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.default;s(this,t);var o=l(this,e.call(this));return o._loaded=-1,o._totalLoaded=-1,o._parsed=-1,o._totalParsed=-1,o._data=[],o._container=n,o._progressBar=null,o._container&&r&&(o._progressBar=new r(o._container)),o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.free=function(){this._data=[],this._container=null,this._progressBar&&(this._progressBar.free(),this._progressBar=null)},t.prototype.fetch=function(e,t){var n=this;return new Promise((function(i,r){var o=new XMLHttpRequest;o.open("GET",e),o.crossOrigin=!0,o.responseType="arraybuffer",o.onloadstart=function(t){n.emit("fetch-start",{file:e,time:new Date})},o.onload=function(t){if(200===o.status||0===o.status){n._loaded=t.loaded,n._totalLoaded=t.total,n._progressBar&&n._progressBar.update(n._loaded,n._totalLoaded,"load",e);var a=o.response,s={url:e,buffer:a};n.emit("fetch-success",{file:e,time:new Date,totalLoaded:t.total}),i(s)}else r(o.statusText)},o.onerror=function(){n.emit("fetch-error",{file:e,time:new Date}),r(o.statusText)},o.onabort=function(t){n.emit("fetch-abort",{file:e,time:new Date}),r(o.statusText||"Aborted")},o.ontimeout=function(){n.emit("fetch-timeout",{file:e,time:new Date}),r(o.statusText)},o.onprogress=function(t){n._loaded=t.loaded,n._totalLoaded=t.total,n.emit("fetch-progress",{file:e,total:t.total,loaded:t.loaded,time:new Date}),n._progressBar&&n._progressBar.update(n._loaded,n._totalLoaded,"load",e)},o.onloadend=function(t){n.emit("fetch-end",{file:e,time:new Date})},t instanceof Map&&t.set(e,o),o.send()}))},t.prototype.parse=function(e){return new Promise((function(t,n){t(e)}))},t.prototype.loadSequenceGroup=function(e,t){var n=this,i=[];return e.forEach((function(e){i.push(n.fetch(e,t))})),Promise.all(i).then((function(e){return n.parse(e)})).then((function(e){return n._data.push(e),e})).catch((function(e){"Aborted"!==e&&(window.console.log("oops... something went wrong..."),window.console.log(e))}))},t.prototype.loadSequence=function(e,t){var n=this;return this.fetch(e,t).then((function(e){return n.parse(e)})).then((function(e){return n._data.push(e),e})).catch((function(e){"Aborted"!==e&&(window.console.log("oops... something went wrong..."),window.console.log(e))}))},t.prototype.load=function(e,t){var n=this;Array.isArray(e)||(e=[e]),this._progressBar&&(this._progressBar.totalFiles=e.length,this._progressBar.requests=t),this.emit("load-start",{files:e,time:new Date});var i=[];return e.forEach((function(e){Array.isArray(e)?i.push(n.loadSequenceGroup(e,t)):i.push(n.loadSequence(e,t))})),Promise.all(i)},a(t,[{key:"data",set:function(e){this._data=e},get:function(){return this._data}}]),t}(o.a);t.default=c},"./src/loaders/loaders.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/loaders/loaders.volume.js");n.d(t,"VolumeLoader",(function(){return i.default}))},"./src/loaders/loaders.volume.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/loaders/loaders.base.js"),r=n("./src/core/core.utils.js"),o=n("./src/models/models.series.js"),a=n("./src/models/models.stack.js"),s=n("./src/models/models.frame.js"),l=n("./src/parsers/parsers.dicom.js"),c=n("./src/parsers/parsers.mhd.js"),h=n("./src/parsers/parsers.nifti.js"),u=n("./src/parsers/parsers.nrrd.js"),d=n("./src/parsers/parsers.mgh.js");function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var m=n("./node_modules/pako/index.js"),g=function(e){function t(){return f(this,t),p(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.parse=function(e){var t=this;return this.emit("parse-start",{file:e.url,time:new Date}),this._progressBar&&this._progressBar.update(0,100,"parse",e.url),new Promise((function(n,i){setTimeout((function(){n(new Promise((function(n,i){var r=e;if(Array.isArray(r)||(r=[r]),r.forEach((function(e){t._preprocess(e)})),1===r.length)r=r[0];else{var s=r.filter(t._filterByExtension.bind(null,"MHD")),l=r.filter(t._filterByExtension.bind(null,"RAW"));2===r.length&&1===s.length&&1===l.length&&(r.url=s[0].url,r.extension=s[0].extension,r.mhdBuffer=s[0].buffer,r.rawBuffer=l[0].buffer)}var c=t._parser(r.extension);c||(t.emit("parse-error",{file:e.url,time:new Date,error:r.filename+"can not be parsed."}),i(r.filename+" can not be parsed."));var h=null;try{h=new c(r,0)}catch(n){console.warn(n),t.emit("parse-error",{file:e.url,time:new Date,error:n}),i(n)}var u=new o.default;u.rawHeader=h.rawHeader(),u.seriesInstanceUID=h.seriesInstanceUID(),u.transferSyntaxUID=h.transferSyntaxUID(),u.seriesDate=h.seriesDate(),u.seriesDescription=h.seriesDescription(),u.studyDate=h.studyDate(),u.studyDescription=h.studyDescription(),u.numberOfFrames=h.numberOfFrames(),u.numberOfFrames||(u.numberOfFrames=1),u.numberOfChannels=h.numberOfChannels(),u.modality=h.modality(),"SEG"===u.modality&&(u.segmentationType=h.segmentationType(),u.segmentationSegments=h.segmentationSegments()),u.patientID=h.patientID(),u.patientName=h.patientName(),u.patientAge=h.patientAge(),u.patientBirthdate=h.patientBirthdate(),u.patientSex=h.patientSex();var d=new a.default;d.numberOfChannels=h.numberOfChannels(),d.pixelRepresentation=h.pixelRepresentation(),d.pixelType=h.pixelType(),d.invert=h.invert(),d.spacingBetweenSlices=h.spacingBetweenSlices(),d.modality=u.modality,"SEG"===d.modality&&(d.segmentationType=u.segmentationType,d.segmentationSegments=u.segmentationSegments),u.stack.push(d),setTimeout(t.parseFrameClosure(u,d,e.url,0,h,n,i),0)})))}),10)}))},t.prototype.parseFrameClosure=function(e,t,n,i,r,o,a){var s=this;return function(){s.parseFrame(e,t,n,i,r,o,a)}},t.prototype.parseFrame=function(e,t,n,i,r,o,a){var l=new s.default;l.sopInstanceUID=r.sopInstanceUID(i),l.url=n,l.index=i,l.invert=t.invert,l.frameTime=r.frameTime(i),l.ultrasoundRegions=r.ultrasoundRegions(i),l.rows=r.rows(i),l.columns=r.columns(i),l.numberOfChannels=t.numberOfChannels,l.pixelPaddingValue=r.pixelPaddingValue(i),l.pixelRepresentation=t.pixelRepresentation,l.pixelType=t.pixelType,l.pixelData=r.extractPixelData(i),l.pixelSpacing=r.pixelSpacing(i),l.spacingBetweenSlices=r.spacingBetweenSlices(i),l.sliceThickness=r.sliceThickness(i),l.imageOrientation=r.imageOrientation(i),l.rightHanded=r.rightHanded(),t.rightHanded=l.rightHanded,null===l.imageOrientation&&(l.imageOrientation=[1,0,0,0,1,0]),l.imagePosition=r.imagePosition(i),l.dimensionIndexValues=r.dimensionIndexValues(i),l.bitsAllocated=r.bitsAllocated(i),l.instanceNumber=r.instanceNumber(i),l.windowCenter=r.windowCenter(i),l.windowWidth=r.windowWidth(i),l.rescaleSlope=r.rescaleSlope(i),l.rescaleIntercept=r.rescaleIntercept(i),l.minMax=r.minMaxPixelData(l.pixelData),"SEG"===e.modality&&(l.referencedSegmentNumber=r.referencedSegmentNumber(i)),t.frame.push(l),this._parsed=i+1,this._totalParsed=e.numberOfFrames,this._progressBar&&this._progressBar.update(this._parsed,this._totalParsed,"parse",n),this.emit("parsing",{file:n,total:this._totalParsed,parsed:this._parsed,time:new Date}),this._parsed===this._totalParsed?(this.emit("parse-success",{file:n,total:this._totalParsed,parsed:this._parsed,time:new Date}),o(e)):setTimeout(this.parseFrameClosure(e,t,n,this._parsed,r,o,a),0)},t.prototype._parser=function(e){var t=null;switch(e.toUpperCase()){case"NII":case"NII_":t=h.default;break;case"DCM":case"DIC":case"DICOM":case"IMA":case"":t=l.default;break;case"MHD":t=c.default;break;case"NRRD":t=u.default;break;case"MGH":case"MGZ":t=d.default;break;default:return console.warn("unsupported extension: "+e),!1}return t},t.prototype._preprocess=function(e){var t=r.default.parseUrl(e.url);if(e.filename=t.filename,e.extension=t.extension,e.pathname=t.pathname,e.query=t.query,"gz"===e.extension?(e.gzcompressed=!0,e.extension=e.filename.split(".gz").shift().split(".").pop()):"mgz"===e.extension?(e.gzcompressed=!0,e.extension="mgh"):"zraw"===e.extension?(e.gzcompressed=!0,e.extension="raw"):e.gzcompressed=!1,e.gzcompressed){var n=m.inflate(e.buffer);e.buffer=n.buffer}},t.prototype._filterByExtension=function(e,t){return t.extension.toUpperCase()===e.toUpperCase()},t}(i.default);t.default=g},"./src/models/models.base.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._id=-1}return e.prototype.mergeModels=function(e,t){if(!this._validateModelArray(e)||!this._validateModelArray(t))return window.console.log("invalid inputs provided."),!1;for(var n=0,i=t.length;n0&&n.length()>0&&(e[0]=t,e[1]=n,e[2]=new r.Vector3(0,0,0).crossVectors(e[0],e[1]).normalize())}else window.console.log("No valid image orientation for frame"),window.console.log(this),window.console.log("Returning default orientation.");return this._rightHanded||e[2].negate(),e},t.prototype.spacingXY=function(){var e=[1,1];return this.pixelSpacing?(e[0]=this.pixelSpacing[0],e[1]=this.pixelSpacing[1]):this.pixelAspectRatio&&(e[0]=1,e[1]=1*this.pixelAspectRatio[1]/this.pixelAspectRatio[0]),e},t.prototype.getPixelData=function(e,t){return e>=0&&e=0&&tt.min&&e1&&this.orderFrames(),this.computeSpacing(),this._frame[0].imagePosition||(this._frame[0].imagePosition=[0,0,0]),this._frame[0].imageOrientation||(this._frame[0].imageOrientation=[1,0,0,0,1,0]),this._origin=this._arrayToVector3(this._frame[0].imagePosition,0),this.computeIJK2LPS(),this.computeLPS2AABB();var e=Math.floor(this._frame.length/2),t=this._frame[e];this._rescaleSlope=t.rescaleSlope||1,this._rescaleIntercept=t.rescaleIntercept||0,this.computeMinMaxIntensities(),this._minMax[0]=l.default.rescaleSlopeIntercept(this._minMax[0],this._rescaleSlope,this._rescaleIntercept),this._minMax[1]=l.default.rescaleSlopeIntercept(this._minMax[1],this._rescaleSlope,this._rescaleIntercept),this._windowWidth=t.windowWidth||this._minMax[1]-this._minMax[0],this._windowCenter=t.windowCenter||this._minMax[0]+this._windowWidth/2,this._bitsAllocated=t.bitsAllocated,this._prepared=!0},t.prototype.packEchos=function(){for(var e=[],t=0;t0))return window.console.warn("_frame doesn't contain anything...."),window.console.warn(this._frame),!1;this._numberOfFrames=this._frame.length},t.prototype.computeCosines=function(){if(this._frame&&this._frame[0]){var e=this._frame[0].cosines();this._xCosine=e[0],this._yCosine=e[1],this._zCosine=e[2]}},t.prototype.orderFrames=function(){this._frame[0].dimensionIndexValues?this._frame.sort(this._orderFrameOnDimensionIndicesArraySort):this._frame[0].imagePosition&&this._frame[0].imageOrientation&&this._frame[1]&&this._frame[1].imagePosition&&this._frame[1].imageOrientation&&this._frame[0].imagePosition.join()!==this._frame[1].imagePosition.join()?(this._frame.map(this._computeDistanceArrayMap.bind(null,this._zCosine)),this._frame.sort(this._sortDistanceArraySort)):null!==this._frame[0].instanceNumber&&this._frame[1]&&null!==this._frame[1].instanceNumber&&this._frame[0].instanceNumber!==this._frame[1].instanceNumber?this._frame.sort(this._sortInstanceNumberArraySort):this._frame[0].sopInstanceUID&&this._frame[1]&&this._frame[1].sopInstanceUID&&this._frame[0].sopInstanceUID!==this._frame[1].sopInstanceUID?this._frame.sort(this._sortSopInstanceUIDArraySort):this._frame[0].imagePosition&&window.console.warn("do not know how to order the frames...")},t.prototype.computeSpacing=function(){this.xySpacing(),this.zSpacing()},t.prototype.zSpacing=function(){this._numberOfFrames>1&&(this._frame[0].pixelSpacing&&this._frame[0].pixelSpacing[2]?this._spacing.z=this._frame[0].pixelSpacing[2]:(this._frame.map(this._computeDistanceArrayMap.bind(null,this._zCosine)),this._frame[1].dist!==this._frame[0].dist?(this._frame.sort(this._sortDistanceArraySort),this._spacing.z=this._frame[1].dist-this._frame[0].dist):this._spacingBetweenSlices?this._spacing.z=this._spacingBetweenSlices:this._frame[0].sliceThickness&&(this._spacing.z=this._frame[0].sliceThickness))),0===this._spacing.z&&(this._spacing.z=1)},t.prototype.xySpacing=function(){if(this._frame&&this._frame[0]){var e=this._frame[0].spacingXY();this._spacing.x=e[0],this._spacing.y=e[1]}},t.prototype.computeMinMaxIntensities=function(){for(var e=0;ee&&(r=e),this._textureUnitse&&(r=e)}this._packed=!0},t.prototype._packTo8Bits=function(e,t,n,i,r){var a={textureType:null,data:null},s=t[0].bitsAllocated,l=t[0].pixelType,c=0;this._minMax[0]<0&&(c-=this._minMax[0]);var h=0,d=0,f=0,p=t[0].rows*t[0].columns;if(8===s&&1===e||1===s){for(var m=new Uint8Array(n*n*4),g=0,_=0,y=i;y>>8&255),h++,w=Math.floor(h/2),x=h%2}a.textureType=o.RGBAFormat,a.data=b}else if(32===s&&1===e&&0===l){for(var M=new Uint8Array(n*n*4),E=i;E>>8&255,M[4*h+2]=T>>>16&255,M[4*h+3]=T>>>24&255),h++}a.textureType=o.RGBAFormat,a.data=M}else if(32===s&&1===e&&1===l){for(var k=new Uint8Array(n*n*4),I=i;I=0&&e.y>=0&&e.z>=0&&e.xparseInt(t.dimensionIndexValues[n],10))return 1;if(parseInt(e.dimensionIndexValues[n],10)0&&(t=r.items[0].dataSet.string("x00080102"),n=r.items[0].dataSet.string("x00080100"),i=r.items[0].dataSet.string("x00080104")),{segmentationCodeDesignator:t,segmentationCodeValue:n,segmentationCodeMeaning:i}},t.prototype._recommendedDisplayCIELab=function(e){if(!e.dataSet.elements.x0062000d)return null;for(var t=e.dataSet.elements.x0062000d.dataOffset,n=e.dataSet.elements.x0062000d.length,i=e.dataSet.byteArray.slice(t,t+n),r=new Uint16Array(n/2),o=0;o0&&void 0!==arguments[0]?arguments[0]:0,t=this._findStringEverywhere("x2005140f","x00080018",e);return t},t.prototype.transferSyntaxUID=function(){return this._dataSet.string("x00020010")},t.prototype.studyDate=function(){return this._dataSet.string("x00080020")},t.prototype.studyDescription=function(){return this._dataSet.string("x00081030")},t.prototype.seriesDate=function(){return this._dataSet.string("x00080021")},t.prototype.seriesDescription=function(){return this._dataSet.string("x0008103e")},t.prototype.patientName=function(){return this._dataSet.string("x00100010")},t.prototype.patientID=function(){return this._dataSet.string("x00100020")},t.prototype.patientBirthdate=function(){return this._dataSet.string("x00100030")},t.prototype.patientSex=function(){return this._dataSet.string("x00100040")},t.prototype.patientAge=function(){return this._dataSet.string("x00101010")},t.prototype.photometricInterpretation=function(){return this._dataSet.string("x00280004")},t.prototype.planarConfiguration=function(){var e=this._dataSet.uint16("x00280006");return void 0===e&&(e=null),e},t.prototype.samplesPerPixel=function(){return this._dataSet.uint16("x00280002")},t.prototype.numberOfFrames=function(){var e=this._dataSet.intString("x00280008");return void 0===e&&(e=null),e},t.prototype.numberOfChannels=function(){var e=1,t=this.photometricInterpretation();return"RGB"!==t&&"PALETTE COLOR"!==t&&"YBR_FULL"!==t&&"YBR_FULL_422"!==t&&"YBR_PARTIAL_422"!==t&&"YBR_PARTIAL_420"!==t&&"YBR_RCT"!==t||(e=3),e},t.prototype.invert=function(){return"MONOCHROME1"===this.photometricInterpretation()},t.prototype.imageOrientation=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._findStringEverywhere("x00209116","x00200037",e);return t&&(t=t.split("\\").map(i.default.stringToNumber)),t},t.prototype.referencedSegmentNumber=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=-1,n=this._findInGroupSequence("x52009230","x0062000a",e);return null!==n&&(t=n.uint16("x0062000b")),t},t.prototype.pixelAspectRatio=function(){var e=[this._dataSet.intString("x00280034",0),this._dataSet.intString("x00280034",1)];return void 0===e[0]&&(e=null),e},t.prototype.imagePosition=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._findStringEverywhere("x00209113","x00200032",e);return t&&(t=t.split("\\").map(i.default.stringToNumber)),t},t.prototype.instanceNumber=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=null,n=this._dataSet.elements.x52009230;if(void 0!==n)if(n.items[e].dataSet.elements.x2005140f){var i=n.items[e].dataSet.elements.x2005140f.items[0].dataSet;t=i.intString("x00200013")}else void 0===(t=this._dataSet.intString("x00200013"))&&(t=null);else void 0===(t=this._dataSet.intString("x00200013"))&&(t=null);return t},t.prototype.pixelSpacing=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._findStringEverywhere("x00289110","x00280030",e);if(null===t&&(void 0===(t=this._dataSet.string("x00181164"))&&(t=null)),t){var n=t.split("\\");2!==n.length?(console.error('DICOM spacing format is not supported (could not split string on "\\"): '+t),t=null):t=n.map(i.default.stringToNumber)}return t},t.prototype.ultrasoundRegions=function(){var e=this,t=this._dataSet.elements.x00186011;if(!t||!t.items)return[];var n=[];return t.items.forEach((function(t){n.push({x0:t.dataSet.uint32("x00186018"),y0:t.dataSet.uint32("x0018601a"),x1:t.dataSet.uint32("x0018601c"),y1:t.dataSet.uint32("x0018601e"),axisX:t.dataSet.int32("x00186020")||null,axisY:t.dataSet.int32("x00186022")||null,unitsX:e._getUnitsName(t.dataSet.uint16("x00186024")),unitsY:e._getUnitsName(t.dataSet.uint16("x00186026")),deltaX:t.dataSet.double("x0018602c"),deltaY:t.dataSet.double("x0018602e")})})),n},t.prototype.frameTime=function(){var e=this._dataSet.uint16("x00280009",1),t=this._dataSet.intString("x00082144"),n=void 0;return"number"==typeof e&&(e=e.toString(16),n=this._dataSet.floatString("x0018"+e)),void 0===n&&"number"==typeof t&&(n=1e3/t),void 0===n&&(n=null),n},t.prototype.rows=function(){var e=this._dataSet.uint16("x00280010");return void 0===e&&(e=null),e},t.prototype.columns=function(){var e=this._dataSet.uint16("x00280011");return void 0===e&&(e=null),e},t.prototype.pixelType=function(){return 0},t.prototype.pixelRepresentation=function(){return this._dataSet.uint16("x00280103")},t.prototype.pixelPaddingValue=function(){var e=this._dataSet.int16("x00280120");return void 0===e&&(e=null),e},t.prototype.bitsAllocated=function(){return this._dataSet.uint16("x00280100")},t.prototype.highBit=function(){return this._dataSet.uint16("x00280102")},t.prototype.rescaleIntercept=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289145","x00281052",e)},t.prototype.rescaleSlope=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289145","x00281053",e)},t.prototype.windowCenter=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289132","x00281050",e)},t.prototype.windowWidth=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289132","x00281051",e)},t.prototype.sliceThickness=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._findFloatStringInFrameGroupSequence("x00289110","x00180050",e)},t.prototype.spacingBetweenSlices=function(){var e=this._dataSet.floatString("x00180088");return void 0===e&&(e=null),e},t.prototype.dimensionIndexValues=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=null,n=this._dataSet.elements.x52009230;if(void 0!==n){var i=n.items[e].dataSet.elements.x00209111;if(null!=i){var r=(i=i.items[0].dataSet).elements.x00209157;if(null!=r){var o=r.length/4;t=[];for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:0,t=null,n=this._dataSet.elements.x52009230;if(void 0!==n){var i=n.items[e].dataSet.elements.x00209111.items[0].dataSet;t=i.uint32("x00209057")}else t=null;return t},t.prototype.stackID=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=null,n=this._dataSet.elements.x52009230;if(void 0!==n){var i=n.items[e].dataSet.elements.x00209111.items[0].dataSet;t=i.intString("x00209056")}else t=null;return t},t.prototype.extractPixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._decodePixelData(e),n=this.numberOfChannels();return n>1?this._convertColorSpace(t):t},t.prototype._findInGroupSequence=function(e,t,n){var i=this._dataSet.elements[e];if(void 0!==i){var r=i.items[n].dataSet.elements[t];if(void 0!==r)return r.items[0].dataSet}return null},t.prototype._findStringInGroupSequence=function(e,t,n,i){var r=this._findInGroupSequence(e,t,i);return null!==r?r.string(n):null},t.prototype._findStringInFrameGroupSequence=function(e,t,n){return this._findStringInGroupSequence("x52009229",e,t,0)||this._findStringInGroupSequence("x52009230",e,t,n)},t.prototype._findStringEverywhere=function(e,t,n){var i=this._findStringInFrameGroupSequence(e,t,n);return null===i&&(i=this._findStringInSequence("x00540022",t)),null===i&&(i=this._dataSet.string(t)),void 0===i&&(i=null),i},t.prototype._findStringInSequence=function(e,t,n){var i=this._dataSet.elements[e],r=void 0;return i&&(r=i.items[0].dataSet.string(t)),void 0===r&&(r=null),r},t.prototype._findFloatStringInGroupSequence=function(e,t,n,i){var r=this._dataSet.floatString(n);return void 0===r&&null!==(r=this._findInGroupSequence(e,t,i))?r.floatString(n):r},t.prototype._findFloatStringInFrameGroupSequence=function(e,t,n){return this._findFloatStringInGroupSequence("x52009229",e,t,0)||this._findFloatStringInGroupSequence("x52009230",e,t,n)},t.prototype._decodePixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.transferSyntaxUID();if("1.2.840.10008.1.2.4.90"===t||"1.2.840.10008.1.2.4.91"===t)return this._decodeJ2K(e);if("1.2.840.10008.1.2.5"===t)return this._decodeRLE(e);if("1.2.840.10008.1.2.4.57"===t||"1.2.840.10008.1.2.4.70"===t)return this._decodeJPEGLossless(e);if("1.2.840.10008.1.2.4.50"===t||"1.2.840.10008.1.2.4.51"===t)return this._decodeJPEGBaseline(e);if("1.2.840.10008.1.2"===t||"1.2.840.10008.1.2.1"===t)return this._decodeUncompressed(e);if("1.2.840.10008.1.2.2"===t){var n=this._decodeUncompressed(e);return this._swapFrame(n)}throw{error:"no decoder for transfer syntax "+t}},t.prototype.framesAreFragmented=function(){return this._dataSet.intString("x00280008")!==this._dataSet.elements.x7fe00010.fragments.length},t.prototype.getEncapsulatedImageFrame=function(e){return this._dataSet.elements.x7fe00010&&this._dataSet.elements.x7fe00010.basicOffsetTable.length?s.readEncapsulatedImageFrame(this._dataSet,this._dataSet.elements.x7fe00010,e):this.framesAreFragmented()?s.readEncapsulatedImageFrame(this._dataSet,this._dataSet.elements.x7fe00010,e,s.createJPEGBasicOffsetTable(this._dataSet,this._dataSet.elements.x7fe00010)):s.readEncapsulatedPixelDataFromFragments(this._dataSet,this._dataSet.elements.x7fe00010,e)},t.prototype._decodeJpx=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=new h;if(t.parse(this.getEncapsulatedImageFrame(e)),1!==t.componentsCount)throw new Error("JPEG2000 decoder returned a componentCount of ${componentsCount}, when 1 is expected");if(1!==t.tiles.length)throw new Error("JPEG2000 decoder returned a tileCount of ${tileCount}, when 1 is expected");return t.tiles[0].items},t.prototype._decodeOpenJPEG=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.getEncapsulatedImageFrame(e),n=this.bitsAllocated(e)<=8?1:2,i=1===this.pixelRepresentation(e),r=u._malloc(t.length);u.writeArrayToMemory(t,r);var o=u._malloc(4),a=u._malloc(4),s=u._malloc(4),l=u._malloc(4),c=u._malloc(4),h=u.ccall("jp2_decode","number",["number","number","number","number","number","number","number"],[r,t.length,o,a,s,l,c]),d=u.getValue(o,"*");if(0!==h)return console.log("[opj_decode] decoding failed!"),u._free(r),u._free(d),u._free(s),u._free(l),u._free(a),void u._free(c);var f=u.getValue(s,"i32")*u.getValue(l,"i32")*u.getValue(c,"i32"),p=new Int32Array(u.HEAP32.buffer,d,f),m=void 0;if(1===n)if(Uint8Array.from)m=Uint8Array.from(p);else{m=new Uint8Array(f);for(var g=0;g0&&void 0!==arguments[0]?arguments[0]:0;return void 0===o?this._decodeJpx(e):u||(u=o())&&u._jp2_decode?this._decodeOpenJPEG(e):this._decodeJpx(e)},t.prototype._decodeRLE=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.bitsAllocated(e),n=this.planarConfiguration(),i=this.columns(),r=this.rows(),o=this.samplesPerPixel(e),l=this.pixelRepresentation(e),c={pixelRepresentation:l,bitsAllocated:t,planarConfiguration:n,columns:i,rows:r,samplesPerPixel:o},h=s.readEncapsulatedPixelDataFromFragments(this._dataSet,this._dataSet.elements.x7fe00010,e),u=Object(a.RLEDecoder)(c,h);return u.pixelData},t.prototype._decodeJPEGLossless=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.getEncapsulatedImageFrame(e),n=this.pixelRepresentation(e),i=this.bitsAllocated(e),r=i<=8?1:2,o=new l.lossless.Decoder,a=o.decode(t.buffer,t.byteOffset,t.length,r);return 0===n?2===r?new Uint16Array(a.buffer):new Uint8Array(a.buffer):new Int16Array(a.buffer)},t.prototype._decodeJPEGBaseline=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.getEncapsulatedImageFrame(e),n=this.rows(e),i=this.columns(e),r=this.bitsAllocated(e),o=new c;return o.parse(t),8===r?o.getData(i,n):16===r?o.getData16(i,n):void 0},t.prototype._decodeUncompressed=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.pixelRepresentation(e),n=this.bitsAllocated(e),i=this._dataSet.elements.x7fe00010,r=i.dataOffset,o=this.numberOfChannels(),a=this.rows(e)*this.columns(e)*o,s=0,l=this._dataSet.byteArray.buffer;if(0===t&&8===n)return s=r+e*a,new Uint8Array(l,s,a);if(0===t&&16===n)return s=r+e*a*2,new Uint16Array(l,s,a);if(1===t&&16===n)return s=r+e*a*2,new Int16Array(l,s,a);if(0===t&&32===n)return s=r+e*a*4,new Uint32Array(l,s,a);if(0===t&&1===n){var c=new ArrayBuffer(a),h=new Uint8Array(c);s=r+e*a;for(var u=0,d=e*a,f=e*a+a,p=Math.floor(d/8),m=d-8*p,g=Math.ceil(f/8),_=new Uint8Array(l,r),y=p;y<=g;y++){for(;m<8;){switch(m){case 0:h[u]=1&_[y];break;case 1:h[u]=_[y]>>>1&1;break;case 2:h[u]=_[y]>>>2&1;break;case 3:h[u]=_[y]>>>3&1;break;case 4:h[u]=_[y]>>>4&1;break;case 5:h[u]=_[y]>>>5&1;break;case 6:h[u]=_[y]>>>6&1;break;case 7:h[u]=_[y]>>>7&1}if(m++,++u>=a)return h}m=0}}},t.prototype._interpretAsRGB=function(e){return-1!==["RGB","YBR_RCT","YBR_ICT","YBR_FULL_422"].indexOf(e)},t.prototype._convertColorSpace=function(e){var t=null,n=this.photometricInterpretation(),i=this.planarConfiguration();null===i&&(i=0,window.console.log("Planar Configuration was not set and was defaulted to 0"));var r=this._interpretAsRGB(n);if(r&&0===i)t=e;else if(r&&1===i){if(e instanceof Int8Array)t=new Int8Array(e.length);else if(e instanceof Uint8Array)t=new Uint8Array(e.length);else if(e instanceof Int16Array)t=new Int16Array(e.length);else{if(!(e instanceof Uint16Array))throw new Error("unsuported typed array: "+e);t=new Uint16Array(e.length)}for(var o=e.length/3,a=0,s=0,l=o,c=2*o,h=0;hMath.PI/2&&(o._rightHanded=!1),o._imageOrient=[-o._Xras[0],-o._Xras[1],o._Xras[2],-o._Yras[0],-o._Yras[1],o._Yras[2]];for(var g=o._width/2,_=o._height/2,y=o._depth/2,v=0;v<3;++v)o._origin[v]=o._Cras[v]-(o._Xras[v]*o._spacingXYZ[0]*g+o._Yras[v]*o._spacingXYZ[1]*_+o._Zras[v]*o._spacingXYZ[2]*y);return o._origin=[-o._origin[0],-o._origin[1],o._origin[2]],o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.seriesInstanceUID=function(){return this._url},t.prototype.numberOfFrames=function(){return this._depth},t.prototype.sopInstanceUID=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e},t.prototype.rows=function(){return this._width},t.prototype.columns=function(){return this._height},t.prototype.pixelType=function(){switch(this._type){case t.MRI_UCHAR:case t.MRI_INT:case t.MRI_SHORT:return 0;case t.MRI_FLOAT:return 1;default:throw Error("MGH/MGZ parser: Unknown _type. _type reports: "+this._type)}},t.prototype.bitsAllocated=function(){switch(this._type){case t.MRI_UCHAR:return 8;case t.MRI_SHORT:return 16;case t.MRI_INT:case t.MRI_FLOAT:return 32;default:throw Error("MGH/MGZ parser: Unknown _type. _type reports: "+this._type)}},t.prototype.pixelSpacing=function(){return this._spacingXYZ},t.prototype.imageOrientation=function(){return this._imageOrient},t.prototype.imagePosition=function(){return this._origin},t.prototype.extractPixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._width*this._height;return this._pixelData.slice(e*t,(e+1)*t)},t.prototype._readInt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+4*e));this._bufferPos+=4*e;var n=void 0;if(1==e)n=t.getInt32(0,this._swapEndian);else{n=new Int32Array(e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+2*e));this._bufferPos+=2*e;var n=void 0;if(1==e)n=t.getInt16(0,this._swapEndian);else{n=new Int16Array(e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+8*e));this._bufferPos+=8*e;for(var n=new Uint16Array(e),i=0;i0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+e));this._bufferPos+=e;var n=void 0;if(1==e)n=t.getInt8(0,this._swapEndian);else{n=new Int8Array(e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+e));this._bufferPos+=e;var n=void 0;if(1==e)n=t.getUint8(0,this._swapEndian);else{n=new Uint8Array(e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:1,t=new DataView(this._buffer.slice(this._bufferPos,this._bufferPos+4*e));this._bufferPos+=4*e;var n=void 0;if(1==e)n=t.getFloat32(0,this._swapEndian);else{n=new Float32Array(e);for(var i=0;i=this._buffer.byteLength)return[void 0,void 0];var e=this._readInt(),n=void 0;switch(e){case t.TAG_OLD_MGH_XFORM:n=this._readInt(),n-=1;break;case t.TAG_OLD_SURF_GEOM:case t.TAG_OLD_USEREALRAS:case t.TAG_OLD_COLORTABLE:n=0;break;default:n=this._readLong()}return null==n&&(e=void 0),[e,n]},t}(i.default);t.default=o,o.MRI_UCHAR=0,o.MRI_INT=1,o.MRI_LONG=2,o.MRI_FLOAT=3,o.MRI_SHORT=4,o.MRI_BITMAP=5,o.MRI_TENSOR=6,o.MRI_FLOAT_COMPLEX=7,o.MRI_DOUBLE_COMPLEX=8,o.MRI_RGB=9,o.TAG_OLD_COLORTABLE=1,o.TAG_OLD_USEREALRAS=2,o.TAG_CMDLINE=3,o.TAG_USEREALRAS=4,o.TAG_COLORTABLE=5,o.TAG_GCAMORPH_GEOM=10,o.TAG_GCAMORPH_TYPE=11,o.TAG_GCAMORPH_LABELS=12,o.TAG_OLD_SURF_GEOM=20,o.TAG_SURF_GEOM=21,o.TAG_OLD_MGH_XFORM=30,o.TAG_MGH_XFORM=31,o.TAG_GROUP_AVG_SURFACE_AREA=32,o.TAG_AUTO_ALIGN=33,o.TAG_SCALAR_DOUBLE=40,o.TAG_PEDIR=41,o.TAG_MRI_FRAME=42,o.TAG_FIELDSTRENGTH=43},"./src/parsers/parsers.mhd.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/parsers/parsers.volume.js"),r=n("./node_modules/three/src/math/Vector3.js"),o=function(e){function t(n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));r._id=i,r._url=n.url,r._header={},r._buffer=null;try{(new TextDecoder).decode(n.mhdBuffer).split("\n").forEach((function(e){var t=e.split("=");2===t.length&&(r._header[t[0].trim()]=t[1].trim())})),r._header.DimSize=r._header.DimSize.split(" "),r._header.ElementSpacing=r._header.ElementSpacing.split(" "),r._header.TransformMatrix=r._header.TransformMatrix.split(" "),r._header.Offset=r._header.Offset.split(" "),r._buffer=n.rawBuffer}catch(e){window.console.log("ooops... :(")}return r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.rightHanded=function(){var e=this._header.AnatomicalOrientation;return this._rightHanded="RAS"===e||"RPI"===e||"LPS"===e||"LAI"===e,this._rightHanded},t.prototype.seriesInstanceUID=function(){return this._url},t.prototype.numberOfFrames=function(){return parseInt(this._header.DimSize[2],10)},t.prototype.sopInstanceUID=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e},t.prototype.rows=function(){return parseInt(this._header.DimSize[1],10)},t.prototype.columns=function(){return parseInt(this._header.DimSize[0],10)},t.prototype.pixelType=function(){var e=0;return"MET_UFLOAT"!==this._header.ElementType&&"MET_FLOAT"!==this._header.ElementType||(e=1),e},t.prototype.bitsAllocated=function(){var e=1;return"MET_UCHAR"===this._header.ElementType||"MET_CHAR"===this._header.ElementType?e=8:"MET_USHORT"===this._header.ElementType||"MET_SHORT"===this._header.ElementType?e=16:"MET_UINT"!==this._header.ElementType&&"MET_INT"!==this._header.ElementType&&"MET_UFLOAT"!==this._header.ElementType&&"MET_FLOAT"!==this._header.ElementType||(e=32),e},t.prototype.pixelSpacing=function(){return[parseFloat(this._header.ElementSpacing[1],10),parseFloat(this._header.ElementSpacing[0],10),parseFloat(this._header.ElementSpacing[2],10)]},t.prototype.imageOrientation=function(){var e=this._header.AnatomicalOrientation.match(/L/)?-1:1,t=this._header.AnatomicalOrientation.match(/P/)?-1:1,n=new r.Vector3(parseFloat(this._header.TransformMatrix[0])*e,parseFloat(this._header.TransformMatrix[1])*t,parseFloat(this._header.TransformMatrix[2]));n.normalize();var i=new r.Vector3(parseFloat(this._header.TransformMatrix[3])*e,parseFloat(this._header.TransformMatrix[4])*t,parseFloat(this._header.TransformMatrix[5]));return i.normalize(),[n.x,n.y,n.z,i.x,i.y,i.z]},t.prototype.imagePosition=function(){return[parseFloat(this._header.Offset[0]),parseFloat(this._header.Offset[1]),parseFloat(this._header.Offset[2])]},t.prototype.extractPixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._decompressUncompressed(e)},t.prototype._decompressUncompressed=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._buffer,n=this.numberOfChannels(),i=this.rows(e)*this.columns(e)*n;this.rightHanded()||(e=this.numberOfFrames()-1-e);var r=e*i;return"MET_CHAR"===this._header.ElementType?new Int8Array(t,r,i):"MET_UCHAR"===this._header.ElementType?new Uint8Array(t,r,i):"MET_SHORT"===this._header.ElementType?(r*=2,new Int16Array(t,r,i)):"MET_USHORT"===this._header.ElementType?(r*=2,new Uint16Array(t,r,i)):"MET_INT"===this._header.ElementType?(r*=4,new Int32Array(t,r,i)):"MET_UINT"===this._header.ElementType?(r*=4,new Uint32Array(t,r,i)):"MET_FLOAT"===this._header.ElementType?(r*=4,new Float32Array(t,r,i)):void 0},t}(i.default);t.default=o},"./src/parsers/parsers.nifti.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/parsers/parsers.volume.js"),r=n("./node_modules/nifti-reader-js/src/nifti.js"),o=n.n(r),a=function(e){function t(n,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));if(r._id=i,r._arrayBuffer=n.buffer,r._url=n.url,r._dataSet=null,r._niftiHeader=null,r._niftiImage=null,r._ordered=!0,r._orderedData=null,r._qfac=1,!o.a.isNIFTI(r._arrayBuffer))throw new Error("parsers.nifti could not parse the file");return r._dataSet=o.a.readHeader(r._arrayBuffer),r._niftiImage=o.a.readImage(r._dataSet,r._arrayBuffer),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.seriesInstanceUID=function(){return this._url},t.prototype.numberOfFrames=function(){return this._dataSet.dims[3]},t.prototype.numberOfChannels=function(){var e=1;return this._dataSet.dims[0]>=5?(e=this._dataSet.dims[5],this._ordered=!1):128===this._dataSet.datatypeCode?e=3:2304===this._dataSet.datatypeCode&&(e=4),e},t.prototype.sopInstanceUID=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e},t.prototype.rows=function(){return this._dataSet.dims[2]},t.prototype.columns=function(){return this._dataSet.dims[1]},t.prototype.pixelType=function(){var e=0;return 16!==this._dataSet.datatypeCode&&64!==this._dataSet.datatypeCode&&1536!==this._dataSet.datatypeCode||(e=1),e},t.prototype.bitsAllocated=function(){return this._dataSet.numBitsPerVoxel},t.prototype.pixelSpacing=function(){return[this._dataSet.pixDims[1],this._dataSet.pixDims[2],this._dataSet.pixDims[3]]},t.prototype.sliceThickness=function(){return null},t.prototype.imageOrientation=function(){if(this._dataSet.qform_code>0){var e=0,t=this._dataSet.quatern_b,n=this._dataSet.quatern_c,i=this._dataSet.quatern_d;return(e=1-(t*t+n*n+i*i))<1e-7?(t*=e=1/Math.sqrt(t*t+n*n+i*i),n*=e,i*=e,e=0):e=Math.sqrt(e),this._dataSet.pixDims[0]<0&&(this._rightHanded=!1),[-(e*e+t*t-n*n-i*i),-2*(t*n+e*i),2*(t*i-e*n),-2*(t*n-e*i),-(e*e+n*n-t*t-i*i),2*(n*i+e*t)]}if(this._dataSet.sform_code>0){var r=[-this._dataSet.affine[0][0],-this._dataSet.affine[0][1],this._dataSet.affine[0][2]],o=[-this._dataSet.affine[1][0],-this._dataSet.affine[1][1],this._dataSet.affine[0][2]];return[].concat(r,o)}return this._dataSet.qform_code,[1,0,0,0,1,0]},t.prototype.imagePosition=function(){return[-this._dataSet.qoffset_x,-this._dataSet.qoffset_y,this._dataSet.qoffset_z]},t.prototype.dimensionIndexValues=function(){return null},t.prototype.instanceNumber=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e},t.prototype.windowCenter=function(){return null},t.prototype.windowWidth=function(){return null},t.prototype.rescaleSlope=function(){return this._dataSet.scl_slope},t.prototype.rescaleIntercept=function(){return this._dataSet.scl_inter},t.prototype.extractPixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._decompressUncompressed(e)},t.prototype._decompressUncompressed=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this.numberOfChannels(),n=this.rows(e)*this.columns(e)*t,i=e*n,r=this._niftiImage;if(this._ordered||null!==this._orderedData||this._reorderData(),null!==this._orderedData)return this._orderedData.slice(i,i+n);if(2===this._dataSet.datatypeCode)return new Uint8Array(r,i,n);if(256===this._dataSet.datatypeCode)return new Int8Array(r,i,n);if(512===this._dataSet.datatypeCode)return i*=2,new Uint16Array(r,i,n);if(4===this._dataSet.datatypeCode)return i*=2,new Int16Array(r,i,n);if(8===this._dataSet.datatypeCode)return i*=4,new Int32Array(r,i,n);if(16===this._dataSet.datatypeCode){i*=4;for(var o=new Float32Array(r,i,n),a=0;a0&&void 0!==arguments[0]?arguments[0]:0;return e},t.prototype.rows=function(){return this._dataSet.sizes[1]},t.prototype.columns=function(){return this._dataSet.sizes[0]},t.prototype.pixelType=function(){var e=0;return"float"===this._dataSet.type&&(e=1),e},t.prototype.bitsAllocated=function(){var e=1;return"int8"===this._dataSet.type||"uint8"===this._dataSet.type||"char"===this._dataSet.type?e=8:"int16"===this._dataSet.type||"uint16"===this._dataSet.type||"short"===this._dataSet.type?e=16:"int32"!==this._dataSet.type&&"uint32"!==this._dataSet.type&&"float"!==this._dataSet.type||(e=32),e},t.prototype.pixelSpacing=function(){var e=new r.Vector3(this._dataSet.spaceDirections[0][0],this._dataSet.spaceDirections[0][1],this._dataSet.spaceDirections[0][2]),t=new r.Vector3(this._dataSet.spaceDirections[1][0],this._dataSet.spaceDirections[1][1],this._dataSet.spaceDirections[1][2]),n=new r.Vector3(this._dataSet.spaceDirections[2][0],this._dataSet.spaceDirections[2][1],this._dataSet.spaceDirections[2][2]);return[e.length(),t.length(),n.length()]},t.prototype.imageOrientation=function(){var e=this._dataSet.space.match(/right/)?-1:1,t=this._dataSet.space.match(/anterior/)?-1:1,n=new r.Vector3(this._dataSet.spaceDirections[0][0]*e,this._dataSet.spaceDirections[0][1]*t,this._dataSet.spaceDirections[0][2]);n.normalize();var i=new r.Vector3(this._dataSet.spaceDirections[1][0]*e,this._dataSet.spaceDirections[1][1]*t,this._dataSet.spaceDirections[1][2]);return i.normalize(),[n.x,n.y,n.z,i.x,i.y,i.z]},t.prototype.imagePosition=function(){return[this._dataSet.spaceOrigin[0],this._dataSet.spaceOrigin[1],this._dataSet.spaceOrigin[2]]},t.prototype.extractPixelData=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this._decompressUncompressed(e)},t.prototype._decompressUncompressed=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=this._dataSet.buffer,n=this.numberOfChannels(),i=this.rows(e)*this.columns(e)*n;this.rightHanded()||(e=this.numberOfFrames()-1-e);var r=e*i;if(null===this._unpackedData&&"gzip"===this._dataSet.encoding){var a=o.inflate(this._dataSet.buffer);this._unpackedData=a.buffer,t=this._unpackedData}else"gzip"===this._dataSet.encoding&&(t=this._unpackedData);return"int8"===this._dataSet.type||"char"===this._dataSet.type?new Int8Array(t,r,i):"uint8"===this._dataSet.type?new Uint8Array(t,r,i):"int16"===this._dataSet.type||"short"===this._dataSet.type?(r*=2,new Int16Array(t,r,i)):"uint16"===this._dataSet.type?(r*=2,new Uint16Array(t,r,i)):"int32"===this._dataSet.type?(r*=4,new Int32Array(t,r,i)):"uint32"===this._dataSet.type?(r*=4,new Uint32Array(t,r,i)):"float"===this._dataSet.type?(r*=4,new Float32Array(t,r,i)):void 0},t}(i.default);t.default=s},"./src/parsers/parsers.volume.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._rightHanded=!0}return e.prototype.pixelRepresentation=function(){return 0},e.prototype.pixelPaddingValue=function(){return null},e.prototype.modality=function(){return"unknown"},e.prototype.segmentationType=function(){return"unknown"},e.prototype.segmentationSegments=function(){return[]},e.prototype.referencedSegmentNumber=function(e){return-1},e.prototype.rightHanded=function(){return this._rightHanded},e.prototype.spacingBetweenSlices=function(){return null},e.prototype.numberOfChannels=function(){return 1},e.prototype.sliceThickness=function(){return null},e.prototype.dimensionIndexValues=function(){return null},e.prototype.instanceNumber=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e},e.prototype.windowCenter=function(){return null},e.prototype.windowWidth=function(){return null},e.prototype.rescaleSlope=function(){return 1},e.prototype.rescaleIntercept=function(){return 0},e.prototype.ultrasoundRegions=function(){return[]},e.prototype.frameTime=function(){return null},e.prototype._decompressUncompressed=function(){},e.prototype._swap16=function(e){return(255&e)<<8|e>>8&255},e.prototype._swap32=function(e){return(255&e)<<24|(65280&e)<<8|e>>8&65280|e>>24&255},e.prototype.invert=function(){return!1},e.prototype.transferSyntaxUID=function(){return"no value provided"},e.prototype.studyDate=function(){return"no value provided"},e.prototype.studyDescription=function(){return"no value provided"},e.prototype.seriesDate=function(){return"no value provided"},e.prototype.seriesDescription=function(){return"no value provided"},e.prototype.rawHeader=function(){return"no value provided"},e.prototype.patientID=function(){return"no value provided"},e.prototype.patientName=function(){return"no value provided"},e.prototype.patientAge=function(){return"no value provided"},e.prototype.patientBirthdate=function(){return"no value provided"},e.prototype.patientSex=function(){return"no value provided"},e.prototype.minMaxPixelData=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY],n=e.length,i=0;i0&&void 0!==arguments[0]?arguments[0]:"Freesurfer";o(this,e),this._presetID=t,this._presets=this.presetSegs()}return e.prototype.fetchPreset=function(e){return this._presets[e]},e.prototype.addPreset=function(e){this._presets.push(e)},e.prototype.presetsAvailable=function(){var e=[],t=this._presets;for(var n in t)e.push(n);return e},e.prototype.presetSegs=function(){return{Freesurfer:i.default}},r(e,[{key:"preset",set:function(e){this._presetID=e},get:function(){return this.fetchPreset(this._presetID)}}]),e}();t.default=a},"./src/shaders/helpers/shaders.helpers.intersectBox.js":function(e,t,n){"use strict";n.r(t);var i=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.name="intersectBox",n._rayOrigin="rayOrigin",n._rayDirection="rayDirection",n._aabbMin="aabbMin",n._aabbMax="aabbMax",n._tNear="tNear",n._tFar="tFar",n._intersect="intersect",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.api=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._base,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._rayOrigin,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._rayDirection,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._aabbMin,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this._aabbMax,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:this._tNear,a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._tFar,s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:this._intersect;return this._base=e,this.compute(t,n,i,r,o,a,s)},t.prototype.compute=function(e,t,n,i,r,o,a){return this.computeDefinition(),this._base._functions[this._name]=this._definition,this._name+"("+e+", "+t+", "+n+", "+i+", "+r+", "+o+", "+a+");"},t.prototype.computeDefinition=function(){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 "},t}(n("./src/shaders/shaders.base.js").default);t.default=new i},"./src/shaders/helpers/shaders.helpers.texture3d.js":function(e,t,n){"use strict";n.r(t);var i=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.name="texture3d",n._dataCoordinates="dataCoordinates",n._dataValue="dataValue",n._offset="offset",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.api=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._base,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._dataCoordinates,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._dataValue,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._offset;return this._base=e,this.compute(t,n,i)},t.prototype.compute=function(e,t,n){return this.computeDefinition(),this._base._functions[this._name]=this._definition,this._name+"("+e+", "+t+", "+n+");"},t.prototype.computeDefinition=function(){var e="\n step( abs( textureIndexF - 0.0 ), 0.0 ) * texture2D(uTextureContainer[0], uv) +\n step( abs( textureIndexF - 1.0 ), 0.0 ) * texture2D(uTextureContainer[1], uv) +\n step( abs( textureIndexF - 2.0 ), 0.0 ) * texture2D(uTextureContainer[2], uv) +\n step( abs( textureIndexF - 3.0 ), 0.0 ) * texture2D(uTextureContainer[3], uv) +\n step( abs( textureIndexF - 4.0 ), 0.0 ) * texture2D(uTextureContainer[4], uv) +\n step( abs( textureIndexF - 5.0 ), 0.0 ) * texture2D(uTextureContainer[5], uv) +\n step( abs( textureIndexF - 6.0 ), 0.0 ) * texture2D(uTextureContainer[6], uv)";14===this._base._uniforms.uTextureContainer.length&&(e+=" +\n step( abs( textureIndexF - 7.0 ), 0.0 ) * texture2D(uTextureContainer[7], uv) +\n step( abs( textureIndexF - 8.0 ), 0.0 ) * texture2D(uTextureContainer[8], uv) +\n step( abs( textureIndexF - 9.0 ), 0.0 ) * texture2D(uTextureContainer[9], uv) +\n step( abs( textureIndexF - 10.0 ), 0.0 ) * texture2D(uTextureContainer[10], uv) +\n step( abs( textureIndexF - 11.0 ), 0.0 ) * texture2D(uTextureContainer[11], uv) +\n step( abs( textureIndexF - 12.0 ), 0.0 ) * texture2D(uTextureContainer[12], uv) +\n step( abs( textureIndexF - 13.0 ), 0.0 ) * texture2D(uTextureContainer[13], uv)"),this._definition="\nvoid "+this._name+"(in ivec3 dataCoordinates, out vec4 dataValue, out int offset){\n float textureSizeF = float(uTextureSize);\n int voxelsPerTexture = uTextureSize*uTextureSize;\n\n int index = dataCoordinates.x\n + dataCoordinates.y * uDataDimensions.x\n + dataCoordinates.z * uDataDimensions.y * uDataDimensions.x;\n \n // dividing an integer by an integer will give you an integer result, rounded down\n // can not get float numbers to work :(\n int packedIndex = index/uPackedPerPixel;\n offset = index - uPackedPerPixel*packedIndex;\n\n // Map data index to right sampler2D texture\n int textureIndex = packedIndex/voxelsPerTexture;\n int inTextureIndex = packedIndex - voxelsPerTexture*textureIndex;\n\n // Get row and column in the texture\n int rowIndex = inTextureIndex/uTextureSize;\n float rowIndexF = float(rowIndex);\n float colIndex = float(inTextureIndex - uTextureSize * rowIndex);\n\n // Map row and column to uv\n vec2 uv = vec2(0,0);\n uv.x = (0.5 + colIndex) / textureSizeF;\n uv.y = 1. - (0.5 + rowIndexF) / textureSizeF;\n\n float textureIndexF = float(textureIndex);\n dataValue = vec4(0.) + "+e+";\n}\n "},t}(n("./src/shaders/shaders.base.js").default);t.default=new i},"./src/shaders/helpers/shaders.helpers.unpack.js":function(e,t,n){"use strict";n.r(t);var i=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.name="unpack",n._packedData="packedData",n._offset="offset",n._unpackedData="unpackedData",n._base._uniforms={uNumberOfChannels:{value:1},uBitsAllocated:{value:16},uPixelType:{value:0}},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.api=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._base,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._packedData,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._offset,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._unpackedData;return this._base=e,this.compute(t,n,i)},t.prototype.compute=function(e,t,n){return this.computeDefinition(),this._base._functions[this._name]=this._definition,this._name+"("+e+", "+t+", "+n+");"},t.prototype.computeDefinition=function(){var e="";if(1===this._base._uniforms.uNumberOfChannels.value)switch(this._base._uniforms.uBitsAllocated.value){case 1:case 8:e=this.upack8();break;case 16:e=this.upack16();break;case 32:e=this.upack32();break;default:e=this.upackIdentity()}else e=this.upackIdentity();this._definition="\nvoid "+this._name+"(in vec4 packedData, in int offset, out vec4 unpackedData){\n\n"+e+"\n\n} \n "},t.prototype.upack8=function(){return this._base._functions.uInt8=this.uInt8(),"\nfloat floatedOffset = float(offset);\nfloat floatedOffsetSquared = floatedOffset * floatedOffset;\nuInt8(\n step( floatedOffsetSquared , 0.0 ) * packedData.r +\n step( floatedOffsetSquared - 2. * floatedOffset + 1., 0.0 ) * packedData.g +\n step( floatedOffsetSquared - 2. * 2. * floatedOffset + 4., 0.0 ) * packedData.b +\n step( floatedOffsetSquared - 2. * 3. * floatedOffset + 9., 0.0 ) * packedData.a\n ,\n unpackedData.x);\n "},t.prototype.upack16=function(){return this._base._functions.uInt16=this.uInt16(),"\nfloat floatedOffset = float(offset);\nuInt16(\n packedData.r * (1. - floatedOffset) + packedData.b * floatedOffset,\n packedData.g * (1. - floatedOffset) + packedData.a * floatedOffset,\n unpackedData.x);\n "},t.prototype.upack32=function(){return 0===this._base._uniforms.uPixelType.value?(this._base._functions.uInt32=this.uInt32(),"\nuInt32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n "):(this._base._functions.uFloat32=this.uFloat32(),"\nuFloat32(\n packedData.r,\n packedData.g,\n packedData.b,\n packedData.a,\n unpackedData.x);\n ")},t.prototype.upackIdentity=function(){return"\nunpackedData = packedData;\n "},t.prototype.uInt8=function(){return"\nvoid uInt8(in float r, out float value){\n value = r * 255.;\n}\n "},t.prototype.uInt16=function(){return"\nvoid uInt16(in float r, in float a, out float value){\n value = r * 255. + a * 255. * 256.;\n}\n "},t.prototype.uInt32=function(){return"\nvoid uInt32(in float r, in float g, in float b, in float a, out float value){\n value = r * 255. + g * 255. * 256. + b * 255. * 256. * 256. + a * 255. * 256. * 256. * 256.;\n // value = r * 255. + g * 65025. + b * 16581375. + a * 4228250625.;\n}\n "},t.prototype.uFloat32=function(){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 "},t}(n("./src/shaders/shaders.base.js").default);t.default=new i},"./src/shaders/interpolation/shaders.interpolation.identity.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/shaders/shaders.base.js"),r=n("./src/shaders/helpers/shaders.helpers.unpack.js"),o=n("./src/shaders/helpers/shaders.helpers.texture3d.js"),a=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.name="interpolationIdentity",n._currentVoxel="currentVoxel",n._dataValue="dataValue",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.api=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._base,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._currentVoxel,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._dataValue;return this._base=e,this.compute(t,n)},t.prototype.compute=function(e,t){return this.computeDefinition(),this._base._functions[this._name]=this._definition,this._name+"("+e+", "+t+");"},t.prototype.computeDefinition=function(){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 "+o.default.api(this._base,"voxel","tmp","offset")+"\n "+r.default.api(this._base,"tmp","offset","dataValue")+"\n}\n "},t}(i.default);t.default=new a},"./src/shaders/interpolation/shaders.interpolation.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/shaders/interpolation/shaders.interpolation.identity.js"),r=n("./src/shaders/interpolation/shaders.interpolation.trilinear.js");t.default=function(e,t,n,o){switch(e._uniforms.uInterpolation.value){case 0:default:return i.default.api(e,t,n);case 1:return r.default.api(e,t,n,o)}}},"./src/shaders/interpolation/shaders.interpolation.trilinear.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/shaders/shaders.base.js"),r=n("./src/shaders/interpolation/shaders.interpolation.identity.js"),o=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this));return n.name="interpolationTrilinear",n._currentVoxel="currentVoxel",n._dataValue="dataValue",n._gradient="gradient",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.api=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._base,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._currentVoxel,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._dataValue,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._gradient;return this._base=e,this.compute(t,n,i)},t.prototype.compute=function(e,t,n){return this.computeDefinition(),this._base._functions[this._name]=this._definition,this._name+"("+e+", "+t+", "+n+");"},t.prototype.computeDefinition=function(){this._definition="\nvoid trilinearInterpolation(\n in vec3 normalizedPosition,\n out vec4 interpolatedValue,\n in vec4 v000, in vec4 v100,\n in vec4 v001, in vec4 v101,\n in vec4 v010, in vec4 v110,\n in vec4 v011, in vec4 v111) {\n // https://en.wikipedia.org/wiki/Trilinear_interpolation\n vec4 c00 = v000 * ( 1.0 - normalizedPosition.x ) + v100 * normalizedPosition.x;\n vec4 c01 = v001 * ( 1.0 - normalizedPosition.x ) + v101 * normalizedPosition.x;\n vec4 c10 = v010 * ( 1.0 - normalizedPosition.x ) + v110 * normalizedPosition.x;\n vec4 c11 = v011 * ( 1.0 - normalizedPosition.x ) + v111 * normalizedPosition.x;\n\n // c0 and c1\n vec4 c0 = c00 * ( 1.0 - normalizedPosition.y) + c10 * normalizedPosition.y;\n vec4 c1 = c01 * ( 1.0 - normalizedPosition.y) + c11 * normalizedPosition.y;\n\n // c\n vec4 c = c0 * ( 1.0 - normalizedPosition.z) + c1 * normalizedPosition.z;\n interpolatedValue = c;\n}\n\nvoid "+this._name+"(in vec3 currentVoxel, out vec4 dataValue, out vec3 gradient){\n\n vec3 lower_bound = floor(currentVoxel);\n lower_bound = max(vec3(0.), lower_bound);\n \n vec3 higher_bound = lower_bound + vec3(1.);\n\n vec3 normalizedPosition = (currentVoxel - lower_bound);\n normalizedPosition = max(vec3(0.), normalizedPosition);\n\n vec4 interpolatedValue = vec4(0.);\n\n //\n // fetch values required for interpolation\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 "+r.default.api(this._base,"c000","v000")+"\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 "+r.default.api(this._base,"c100","v100")+"\n\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 "+r.default.api(this._base,"c001","v001")+"\n\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 "+r.default.api(this._base,"c101","v101")+"\n \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 "+r.default.api(this._base,"c010","v010")+"\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 "+r.default.api(this._base,"c110","v110")+"\n\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 "+r.default.api(this._base,"c011","v011")+"\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 "+r.default.api(this._base,"c111","v111")+"\n\n // compute interpolation at position\n trilinearInterpolation(normalizedPosition, interpolatedValue ,v000, v100, v001, v101, v010,v110, v011,v111);\n dataValue = interpolatedValue;\n\n // That breaks shading in volume rendering\n // if (gradient.x == 1.) { // skip gradient calculation for slice helper\n // return;\n // }\n\n // compute gradient\n float gradientStep = 0.005;\n\n // x axis\n vec3 g100 = vec3(1., 0., 0.);\n vec3 ng100 = normalizedPosition + g100 * gradientStep;\n ng100.x = min(1., ng100.x);\n\n vec4 vg100 = vec4(0.);\n trilinearInterpolation(ng100, vg100 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go100 = -g100;\n vec3 ngo100 = normalizedPosition + go100 * gradientStep;\n ngo100.x = max(0., ngo100.x);\n\n vec4 vgo100 = vec4(0.);\n trilinearInterpolation(ngo100, vgo100 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.x = (g100.x * vg100.x + go100.x * vgo100.x);\n\n // y axis\n vec3 g010 = vec3(0., 1., 0.);\n vec3 ng010 = normalizedPosition + g010 * gradientStep;\n ng010.y = min(1., ng010.y);\n\n vec4 vg010 = vec4(0.);\n trilinearInterpolation(ng010, vg010 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go010 = -g010;\n vec3 ngo010 = normalizedPosition + go010 * gradientStep;\n ngo010.y = max(0., ngo010.y);\n\n vec4 vgo010 = vec4(0.);\n trilinearInterpolation(ngo010, vgo010 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.y = (g010.y * vg010.x + go010.y * vgo010.x);\n\n // z axis\n vec3 g001 = vec3(0., 0., 1.);\n vec3 ng001 = normalizedPosition + g001 * gradientStep;\n ng001.z = min(1., ng001.z);\n\n vec4 vg001 = vec4(0.);\n trilinearInterpolation(ng001, vg001 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n vec3 go001 = -g001;\n vec3 ngo001 = normalizedPosition + go001 * gradientStep;\n ngo001.z = max(0., ngo001.z);\n\n vec4 vgo001 = vec4(0.);\n trilinearInterpolation(ngo001, vgo001 ,v000, v100, v001, v101, v010,v110, v011,v111);\n\n gradient.z = (g001.z * vg001.x + go001.z * vgo001.x);\n\n // normalize gradient\n // +0.0001 instead of if?\n float gradientMagnitude = length(gradient);\n if (gradientMagnitude > 0.0) {\n gradient = -(1. / gradientMagnitude) * gradient;\n }\n}\n "},t}(i.default);t.default=new o},"./src/shaders/shaders.base.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(e,t){for(var n=0;n 0. &&\n ((gl_FragCoord.x > uBorderMargin && (gl_FragCoord.x - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.x < (uCanvasWidth - uBorderMargin) && (gl_FragCoord.x + uBorderMargin) > (uCanvasWidth - uBorderWidth) ))){\n float valueY = mod(gl_FragCoord.y, 2. * uBorderDashLength);\n if( valueY < uBorderDashLength && gl_FragCoord.y > uBorderMargin && gl_FragCoord.y < (uCanvasHeight - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n if( uCanvasHeight > 0. &&\n ((gl_FragCoord.y > uBorderMargin && (gl_FragCoord.y - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.y < (uCanvasHeight - uBorderMargin) && (gl_FragCoord.y + uBorderMargin) > (uCanvasHeight - uBorderWidth) ))){\n float valueX = mod(gl_FragCoord.x, 2. * uBorderDashLength);\n if( valueX < uBorderDashLength && gl_FragCoord.x > uBorderMargin && gl_FragCoord.x < (uCanvasWidth - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n // get texture coordinates of current pixel\n vec4 dataValue = vec4(0.);\n vec3 gradient = vec3(1.); // gradient calculations will be skipped if it is equal to vec3(1.) \n float steps = floor(uThickness / uSpacing + 0.5);\n\n if (steps > 1.) {\n vec3 origin = vPos - uThickness * 0.5 * vNormal;\n vec4 dataValueAcc = vec4(0.);\n for (float step = 0.; step < 128.; step++) {\n if (step >= steps) {\n break;\n }\n\n vec4 dataCoordinates = uWorldToData * vec4(origin + step * uSpacing * vNormal, 1.);\n vec3 currentVoxel = dataCoordinates.xyz;\n "+Object(i.default)(this,"currentVoxel","dataValueAcc","gradient")+";\n\n if (step == 0.) {\n dataValue.r = dataValueAcc.r;\n continue;\n }\n\n if (uThicknessMethod == 0) {\n dataValue.r = max(dataValueAcc.r, dataValue.r);\n }\n if (uThicknessMethod == 1) {\n dataValue.r += dataValueAcc.r;\n }\n if (uThicknessMethod == 2) {\n dataValue.r = min(dataValueAcc.r, dataValue.r);\n }\n }\n\n if (uThicknessMethod == 1) {\n dataValue.r /= steps;\n }\n } else {\n vec4 dataCoordinates = uWorldToData * vec4(vPos, 1.);\n vec3 currentVoxel = dataCoordinates.xyz;\n "+Object(i.default)(this,"currentVoxel","dataValue","gradient")+"\n }\n\n if(uNumberOfChannels == 1){\n // rescale/slope\n float realIntensity = dataValue.r * uRescaleSlopeIntercept[0] + uRescaleSlopeIntercept[1];\n \n // threshold\n if (realIntensity < uLowerUpperThreshold[0] || realIntensity > uLowerUpperThreshold[1]) {\n discard;\n }\n \n // normalize\n float windowMin = uWindowCenterWidth[0] - uWindowCenterWidth[1] * 0.5;\n float normalizedIntensity =\n ( realIntensity - windowMin ) / uWindowCenterWidth[1];\n dataValue.r = dataValue.g = dataValue.b = normalizedIntensity;\n dataValue.a = 1.;\n\n // apply LUT\n if(uLut == 1){\n // should opacity be grabbed there?\n dataValue = texture2D( uTextureLUT, vec2( normalizedIntensity , 1.0) );\n }\n \n // apply segmentation\n if(uLutSegmentation == 1){\n // should opacity be grabbed there?\n //\n float textureWidth = 256.;\n float textureHeight = 128.;\n float min = 0.;\n // start at 0!\n int adjustedIntensity = int(floor(realIntensity + 0.5));\n \n // Get row and column in the texture\n int colIndex = int(mod(float(adjustedIntensity), textureWidth));\n int rowIndex = int(floor(float(adjustedIntensity)/textureWidth));\n \n float texWidth = 1./textureWidth;\n float texHeight = 1./textureHeight;\n \n // Map row and column to uv\n vec2 uv = vec2(0,0);\n uv.x = 0.5 * texWidth + (texWidth * float(colIndex));\n uv.y = 1. - (0.5 * texHeight + float(rowIndex) * texHeight);\n \n dataValue = texture2D( uTextureLUTSegmentation, uv );\n }\n }\n\n if(uInvert == 1){\n dataValue.xyz = vec3(1.) - dataValue.xyz;\n }\n\n dataValue.a = dataValue.a*uOpacity;\n\n gl_FragColor = dataValue;\n}\n "},e.prototype.compute=function(){return"\n// uniforms\n"+this.uniforms()+"\n\n// varying (should fetch it from vertex directly)\nvarying vec3 vPos;\nvarying vec3 vNormal;\n\n// tailored functions\n"+this.functions()+"\n\n// main loop\n"+this._main+"\n "},e}();t.default=r},"./src/shaders/shaders.data.uniform.js":function(e,t,n){"use strict";n.r(t);var i=n("./node_modules/three/src/math/Matrix4.js"),r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.uniforms=function(){return{uTextureSize:{type:"i",value:0,typeGLSL:"int"},uTextureContainer:{type:"tv",value:[],typeGLSL:"sampler2D",length:7},uDataDimensions:{type:"iv",value:[0,0,0],typeGLSL:"ivec3"},uWorldToData:{type:"m4",value:new i.Matrix4,typeGLSL:"mat4"},uWindowCenterWidth:{type:"fv1",value:[0,0],typeGLSL:"float",length:2},uLowerUpperThreshold:{type:"fv1",value:[0,0],typeGLSL:"float",length:2},uRescaleSlopeIntercept:{type:"fv1",value:[0,0],typeGLSL:"float",length:2},uNumberOfChannels:{type:"i",value:1,typeGLSL:"int"},uBitsAllocated:{type:"i",value:8,typeGLSL:"int"},uInvert:{type:"i",value:0,typeGLSL:"int"},uLut:{type:"i",value:0,typeGLSL:"int"},uTextureLUT:{type:"t",value:[],typeGLSL:"sampler2D"},uLutSegmentation:{type:"i",value:0,typeGLSL:"int"},uTextureLUTSegmentation:{type:"t",value:[],typeGLSL:"sampler2D"},uPixelType:{type:"i",value:0,typeGLSL:"int"},uPackedPerPixel:{type:"i",value:1,typeGLSL:"int"},uInterpolation:{type:"i",value:1,typeGLSL:"int"},uCanvasWidth:{type:"f",value:0,typeGLSL:"float"},uCanvasHeight:{type:"f",value:0,typeGLSL:"float"},uBorderColor:{type:"v3",value:[1,0,.5],typeGLSL:"vec3"},uBorderWidth:{type:"f",value:2,typeGLSL:"float"},uBorderMargin:{type:"f",value:2,typeGLSL:"float"},uBorderDashLength:{type:"f",value:10,typeGLSL:"float"},uOpacity:{type:"f",value:1,typeGLSL:"float"},uSpacing:{type:"f",value:0,typeGLSL:"float"},uThickness:{type:"f",value:0,typeGLSL:"float"},uThicknessMethod:{type:"i",value:0,typeGLSL:"int"}}},e}();t.default=r},"./src/shaders/shaders.data.vertex.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.compute=function(){return"\nvarying vec3 vPos;\nvarying vec3 vNormal;\n\nvoid main() {\n vNormal = normal;\n vPos = (modelMatrix * vec4(position, 1.0 )).xyz;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n "},e}();t.default=i},"./src/shaders/shaders.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/shaders/shaders.contour.uniform.js");n.d(t,"ContourUniformShader",(function(){return i.default}));var r=n("./src/shaders/shaders.contour.fragment.js");n.d(t,"ContourFragmentShader",(function(){return r.default}));var o=n("./src/shaders/shaders.contour.vertex.js");n.d(t,"ContourVertexShader",(function(){return o.default}));var a=n("./src/shaders/shaders.data.uniform.js");n.d(t,"DataUniformShader",(function(){return a.default}));var s=n("./src/shaders/shaders.data.fragment.js");n.d(t,"DataFragmentShader",(function(){return s.default}));var l=n("./src/shaders/shaders.data.vertex.js");n.d(t,"DataVertexShader",(function(){return l.default}));var c=n("./src/shaders/shaders.vr.uniform.js");n.d(t,"VRUniformShader",(function(){return c.default}));var h=n("./src/shaders/shaders.vr.fragment.js");n.d(t,"VRFragmentShader",(function(){return h.default}));var u=n("./src/shaders/shaders.vr.vertex.js");n.d(t,"VRVertexShader",(function(){return u.default}));var d=n("./src/shaders/shaders.layer.uniform.js");n.d(t,"LayerUniformShader",(function(){return d.default}));var f=n("./src/shaders/shaders.layer.fragment.js");n.d(t,"LayerFragmentShader",(function(){return f.default}));var p=n("./src/shaders/shaders.layer.vertex.js");n.d(t,"LayerVertexShader",(function(){return p.default}));var m=n("./src/shaders/shaders.localizer.uniform.js");n.d(t,"LocalizerUniformShader",(function(){return m.default}));var g=n("./src/shaders/shaders.localizer.fragment.js");n.d(t,"LocalizerFragmentShader",(function(){return g.default}));var _=n("./src/shaders/shaders.localizer.vertex.js");n.d(t,"LocalizerVertexShader",(function(){return _.default}))},"./src/shaders/shaders.layer.fragment.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._uniforms=t,this._functions={},this._main=""}return e.prototype.functions=function(){""===this._main&&this.main();var e="";for(var t in this._functions)e+=this._functions[t]+"\n";return e},e.prototype.uniforms=function(){var e="";for(var t in this._uniforms){var n=this._uniforms[t];e+="uniform "+n.typeGLSL+" "+t,n&&n.length&&(e+="["+n.length+"]"),e+=";\n"}return e},e.prototype.main=function(){this._main="\nvoid main(void) {\n\n vec2 texc = vec2(((vProjectedCoords.x / vProjectedCoords.w) + 1.0 ) / 2.0,\n ((vProjectedCoords.y / vProjectedCoords.w) + 1.0 ) / 2.0 );\n\n // just silence warning for\n // vec4 dummy = vPos;\n\n //The back position is the world space position stored in the texture.\n vec4 baseColor0 = texture2D(uTextureBackTest0, texc);\n vec4 baseColor1 = texture2D(uTextureBackTest1, texc);\n\n if( uTrackMouse == 1 ){\n\n if( vProjectedCoords.x < uMouse.x ){\n\n gl_FragColor = baseColor0;\n\n }\n else{\n\n gl_FragColor = mix( baseColor0, baseColor1, uOpacity1 );\n\n }\n\n }\n else{\n\n if( uType1 == 0 ){\n\n //merge an image into\n gl_FragColor = mix( baseColor0, baseColor1, uOpacity1 );\n\n }\n else{\n\n float opacity = baseColor1.a;\n gl_FragColor = mix( baseColor0, baseColor1, opacity * uOpacity1 );\n\n }\n\n }\n\n return;\n}\n "},e.prototype.compute=function(){return"\n// uniforms\n"+this.uniforms()+"\n\n// varying (should fetch it from vertex directly)\n// varying vec4 vPos;\nvarying vec4 vProjectedCoords;\n\n// tailored functions\n"+this.functions()+"\n\n// main loop\n"+this._main+"\n "},e}();t.default=i},"./src/shaders/shaders.layer.uniform.js":function(e,t,n){"use strict";n.r(t);var i=n("./node_modules/three/src/math/Vector2.js"),r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.uniforms=function(){return{uTextureBackTest0:{type:"t",value:[],typeGLSL:"sampler2D"},uTextureBackTest1:{type:"t",value:[],typeGLSL:"sampler2D"},uOpacity0:{type:"f",value:1,typeGLSL:"float"},uOpacity1:{type:"f",value:1,typeGLSL:"float"},uType0:{type:"i",value:0,typeGLSL:"int"},uType1:{type:"i",value:1,typeGLSL:"int"},uTrackMouse:{type:"i",value:0,typeGLSL:"int"},uMouse:{type:"v2",value:new i.Vector2,typeGLSL:"vec2"}}},e}();t.default=r},"./src/shaders/shaders.layer.vertex.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.compute=function(){return"\n// varying vec4 vPos;\nvarying vec4 vProjectedCoords;\n\n//\n// main\n//\nvoid main() {\n\n vec4 vPos = modelMatrix * vec4(position, 1.0 );\n vProjectedCoords = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n "},e}();t.default=i},"./src/shaders/shaders.localizer.fragment.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._uniforms=t,this._functions={},this._main=""}return e.prototype.functions=function(){""===this._main&&this.main();var e="";for(var t in this._functions)e+=this._functions[t]+"\n";return e},e.prototype.uniforms=function(){var e="";for(var t in this._uniforms){var n=this._uniforms[t];e+="uniform "+n.typeGLSL+" "+t,n&&n.length&&(e+="["+n.length+"]"),e+=";\n"}return e},e.prototype.main=function(){this._main="\nvoid intersectionProjection(\n in vec4 plane,\n in vec4 slice,\n out vec3 intersectionProjection){\n\n vec3 intersectionDirection = normalize(cross(plane.xyz, slice.xyz));\n vec3 intersectionPoint = \n cross(intersectionDirection,slice.xyz) * plane.w +\n cross(plane.xyz, intersectionDirection) * slice.w;\n\n intersectionProjection =\n intersectionPoint.xyz +\n (dot(vPos.xyz - intersectionPoint, intersectionDirection)\n * intersectionDirection);\n\n}\n\nvoid main(void) {\n vec4 c1 = vec4(0., 0., 0., 0.);\n vec4 c2 = vec4(0., 0., 0., 0.);\n vec4 c3 = vec4(0., 0., 0., 0.);\n\n // localizer #1\n // must be normalized!\n if(length(uPlane1.xyz) > 0.5) {\n vec3 projection1 = vec3(1.);\n intersectionProjection(\n uPlane1,\n uSlice,\n projection1\n );\n\n vec4 projInter1 = (vProjectionViewMatrix * vec4(projection1, 1.));\n vec3 ndc1 = projInter1.xyz / projInter1.w;\n vec2 screenSpace1 = (ndc1.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d1 = distance(gl_FragCoord.xy, screenSpace1.xy);\n c1 = vec4(uPlaneColor1, 1. - smoothstep(.5, .7, d1));\n }\n\n // localizer #2\n if(length(uPlane2.xyz) > 0.5) {\n vec3 projection2 = vec3(1.);\n intersectionProjection(\n uPlane2,\n uSlice,\n projection2\n );\n\n vec4 projInter2 = (vProjectionViewMatrix * vec4(projection2, 1.));\n vec3 ndc2 = projInter2.xyz / projInter2.w;\n vec2 screenSpace2 = (ndc2.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d2 = distance(gl_FragCoord.xy, screenSpace2.xy);\n c2 = vec4(uPlaneColor2, 1. - smoothstep(.5, .7, d2));\n }\n\n // localizer #3\n if(length(uPlane3.xyz) > 0.5) {\n vec3 projection3 = vec3(1.);\n intersectionProjection(\n uPlane3,\n uSlice,\n projection3\n );\n\n vec4 projInter3 = (vProjectionViewMatrix * vec4(projection3, 1.));\n vec3 ndc3 = projInter3.xyz / projInter3.w;\n vec2 screenSpace3 = (ndc3.xy * .5 + .5) * vec2(uCanvasWidth, uCanvasHeight);\n\n float d3 = distance(gl_FragCoord.xy, screenSpace3.xy);\n c3 = vec4(uPlaneColor3, 1. - smoothstep(.5, .7, d3));\n }\n\n // float uBorderDashLength = 10.0;\n // float uBorderWidth = 2.0;\n // float valueX = mod(gl_FragCoord.x, 2. * uBorderDashLength);\n // float valueY = mod(gl_FragCoord.y, 2. * uBorderDashLength);\n // if( valueX < uBorderDashLength || valueY < uBorderDashLength ){\n vec3 colorMix = c1.xyz*c1.w + c2.xyz*c2.w + c3.xyz*c3.w;\n gl_FragColor = vec4(colorMix, max(max(c1.w, c2.w),c3.w)*0.5);\n return;\n // }\n \n // gl_FragColor = vec4(0., 0., 0., 0.);\n // return;\n}\n "},e.prototype.compute=function(){return"\n// uniforms\n"+this.uniforms()+"\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vPos;\nvarying mat4 vProjectionViewMatrix;\n\n// tailored functions\n"+this.functions()+"\n\n// main loop\n"+this._main+"\n "},e}();t.default=i},"./src/shaders/shaders.localizer.uniform.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.uniforms=function(){return{uCanvasWidth:{type:"f",value:0,typeGLSL:"float"},uCanvasHeight:{type:"f",value:0,typeGLSL:"float"},uSlice:{type:"v4",value:[0,0,0,0],typeGLSL:"vec4"},uPlane1:{type:"v4",value:[0,0,0,0],typeGLSL:"vec4"},uPlaneColor1:{type:"v3",value:[1,1,0],typeGLSL:"vec3"},uPlane2:{type:"v4",value:[0,0,0,0],typeGLSL:"vec4"},uPlaneColor2:{type:"v3",value:[1,1,0],typeGLSL:"vec3"},uPlane3:{type:"v4",value:[0,0,0,0],typeGLSL:"vec4"},uPlaneColor3:{type:"v3",value:[1,1,0],typeGLSL:"vec3"}}},e}();t.default=i},"./src/shaders/shaders.localizer.vertex.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.compute=function(){return"\nvarying vec4 vPos;\nvarying mat4 vProjectionViewMatrix;\n\n//\n// main\n//\nvoid main() {\n\n vPos = modelMatrix * vec4(position, 1.0 );\n vProjectionViewMatrix = projectionMatrix * viewMatrix;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n "},e}();t.default=i},"./src/shaders/shaders.vr.fragment.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/shaders/interpolation/shaders.interpolation.js"),r=n("./src/shaders/helpers/shaders.helpers.intersectBox.js"),o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._uniforms=t,this._functions={},this._main=""}return e.prototype.functions=function(){""===this._main&&this.main();var e="";for(var t in this._functions)e+=this._functions[t]+"\n";return e},e.prototype.uniforms=function(){var e="";for(var t in this._uniforms){var n=this._uniforms[t];e+="uniform "+n.typeGLSL+" "+t,n&&n.length&&(e+="["+n.length+"]"),e+=";\n"}return e},e.prototype.main=function(){this._main="\nvoid getIntensity(in vec3 dataCoordinates, out float intensity, out vec3 gradient){\n\n vec4 dataValue = vec4(0., 0., 0., 0.);\n "+Object(i.default)(this,"dataCoordinates","dataValue","gradient")+"\n\n intensity = dataValue.r;\n\n // rescale/slope\n intensity = intensity*uRescaleSlopeIntercept[0] + uRescaleSlopeIntercept[1];\n // window level\n float windowMin = uWindowCenterWidth[0] - uWindowCenterWidth[1] * 0.5;\n intensity = ( intensity - windowMin ) / uWindowCenterWidth[1];\n}\n\nmat4 inverse(mat4 m) {\n float\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n return mat4(\n a11 * b11 - a12 * b10 + a13 * b09,\n a02 * b10 - a01 * b11 - a03 * b09,\n a31 * b05 - a32 * b04 + a33 * b03,\n a22 * b04 - a21 * b05 - a23 * b03,\n a12 * b08 - a10 * b11 - a13 * b07,\n a00 * b11 - a02 * b08 + a03 * b07,\n a32 * b02 - a30 * b05 - a33 * b01,\n a20 * b05 - a22 * b02 + a23 * b01,\n a10 * b10 - a11 * b08 + a13 * b06,\n a01 * b08 - a00 * b10 - a03 * b06,\n a30 * b04 - a31 * b02 + a33 * b00,\n a21 * b02 - a20 * b04 - a23 * b00,\n a11 * b07 - a10 * b09 - a12 * b06,\n a00 * b09 - a01 * b07 + a02 * b06,\n a31 * b01 - a30 * b03 - a32 * b00,\n a20 * b03 - a21 * b01 + a22 * b00) / det;\n}\n\n/**\n * Adapted from original sources\n * \n * Original code: \n * http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/\n * https://www.shadertoy.com/view/lt33z7\n * \n * The vec3 returned is the RGB color of the light's contribution.\n *\n * k_a: Ambient color\n * k_d: Diffuse color\n * k_s: Specular color\n * alpha: Shininess coefficient\n * p: position of point being lit\n * eye: the position of the camera\n * lightPos: the position of the light\n * lightIntensity: color/intensity of the light\n *\n * See https://en.wikipedia.org/wiki/Phong_reflection_model#Description\n */\nvec3 phongShading(vec3 k_a, vec3 k_d, vec3 k_s, float shininess, vec3 p, vec3 eye,\n vec3 lightPos, vec3 lightIntensity, vec3 normal) {\n vec3 N = normal;\n vec3 L = lightPos - p;\n if (length(L) > 0.) {\n L = L / length(L);\n }\n vec3 V = eye - p;\n if (length(V) > 0.) {\n V = V / length(V);\n }\n vec3 R = reflect(-L, N);\n if (length(R) > 0.) {\n R = R / length(R);\n }\n\n // https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_shading_model\n vec3 h = L + V;\n vec3 H = h;\n if (length(h) > 0.) {\n H = H / length(h);\n }\n\n float dotLN = dot(L, N);\n float dotRV = dot(R, V);\n\n if (dotLN < 0.) {\n // Light not visible from this point on the surface\n return k_a;\n } \n\n if (dotRV < 0.) {\n // Light reflection in opposite direction as viewer, apply only diffuse\n // component\n return k_a + lightIntensity * (k_d * dotLN);\n }\n\n float specAngle = max(dot(H, normal), 0.0);\n float specular = pow(dotRV, shininess); //pow(specAngle, shininess); // \n return k_a + lightIntensity * (k_d * dotLN + k_s * specular);\n}\n\nfloat PI = 3.14159265358979323846264 * 00000.1; // PI\n\n// expects values in the range of [0,1]x[0,1], returns values in the [0,1] range.\n// do not collapse into a single function per: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand( const in vec2 uv) {\n const highp float a = 12.9898;\n const highp float b = 78.233;\n const highp float c = 43758.5453;\n highp float dt = dot(uv.xy, vec2(a, b)), sn = mod(dt, PI);\n return fract(sin(sn) * c);\n}\n\nvoid main(void) {\n const int maxSteps = 1024;\n\n // the ray\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vPos.xyz - rayOrigin);\n\n vec3 lightOrigin = uLightPositionInCamera == 1 ? cameraPosition : uLightPosition;\n\n // the Axe-Aligned B-Box\n vec3 AABBMin = vec3(uWorldBBox[0], uWorldBBox[2], uWorldBBox[4]);\n vec3 AABBMax = vec3(uWorldBBox[1], uWorldBBox[3], uWorldBBox[5]);\n\n // Intersection ray/bbox\n float tNear, tFar;\n bool intersect = false;\n "+r.default.api(this,"rayOrigin","rayDirection","AABBMin","AABBMax","tNear","tFar","intersect")+'\n if (tNear < 0.0) tNear = 0.0;\n\n // x / y should be within o-1\n // should\n float offset = rand(gl_FragCoord.xy);\n\n // init the ray marching\n float tStep = (tFar - tNear) / float(uSteps);\n float tCurrent = tNear + offset * tStep;\n vec4 accumulatedColor = vec4(0.0);\n float accumulatedAlpha = 0.0;\n\n // MIP volume rendering\n float maxIntensity = 0.0;\n\n mat4 dataToWorld = inverse(uWorldToData);\n\n // rayOrigin -= rayDirection * 0.1; // gold_noise(vPos.xz, vPos.y) / 100.; \n\n for(int rayStep = 0; rayStep < maxSteps; rayStep++){\n vec3 currentPosition = rayOrigin + rayDirection * tCurrent;\n // some non-linear FUN\n // some occlusion issue to be fixed\n vec3 transformedPosition = currentPosition; //transformPoint(currentPosition, uAmplitude, uFrequence);\n // world to data coordinates\n // rounding trick\n // first center of first voxel in data space is CENTERED on (0,0,0)\n vec4 dataCoordinatesRaw = uWorldToData * vec4(transformedPosition, 1.0);\n vec3 currentVoxel = vec3(dataCoordinatesRaw.x, dataCoordinatesRaw.y, dataCoordinatesRaw.z);\n float intensity = 0.0;\n vec3 gradient = vec3(0., 0., 0.);\n getIntensity(currentVoxel, intensity, gradient);\n // map gradient to world space and normalize before using\n // we avoid to call "normalize" as it may be undefined if vector length == 0.\n gradient = (vec3(dataToWorld * vec4(gradient, 0.)));\n if (length(gradient) > 0.0) {\n gradient = normalize(gradient);\n }\n\n vec4 colorSample;\n float alphaSample;\n if(uLut == 1){\n vec4 colorFromLUT = texture2D( uTextureLUT, vec2( intensity, 1.0) );\n // 256 colors\n colorSample = colorFromLUT;\n alphaSample = colorFromLUT.a;\n }\n else{\n alphaSample = intensity;\n colorSample.r = colorSample.g = colorSample.b = intensity;\n }\n\n // ray marching algorithm\n // shading on\n // interpolation on\n if (uAlgorithm == 0 && uShading == 1 && uInterpolation != 0) {\n // && alphaSample > .3\n vec3 ambientComponent = uSampleColorToAmbient == 1 ? colorSample.xyz : uAmbientColor;\n ambientComponent *= uAmbient;\n vec3 diffuseComponent = uSampleColorToDiffuse == 1 ? colorSample.xyz : uDiffuseColor;\n diffuseComponent *= uDiffuse;\n vec3 specularComponent = uSpecular * uSpecularColor;\n float shininess = uShininess;\n vec3 vIntensity = uIntensity;\n\n colorSample.xyz += phongShading(\n ambientComponent,\n diffuseComponent,\n specularComponent,\n shininess,\n currentPosition.xyz,\n rayOrigin.xyz,\n lightOrigin.xyz,\n vIntensity,\n gradient);\n }\n\n alphaSample = 1.0 - pow((1.0- alphaSample),tStep*uAlphaCorrection);\n alphaSample *= (1.0 - accumulatedAlpha);\n\n accumulatedColor += alphaSample * colorSample;\n accumulatedAlpha += alphaSample;\n\n tCurrent += tStep;\n\n if (tCurrent > tFar || (uAlgorithm == 0 && accumulatedAlpha >= 1.0)) break;\n\n if (uAlgorithm == 1 && (intensity >= maxIntensity)) {\n maxIntensity = intensity;\n accumulatedColor = colorSample;\n accumulatedAlpha = 1.;\n }\n }\n\n gl_FragColor = vec4(accumulatedColor.xyz, accumulatedAlpha);\n}\n '},e.prototype.compute=function(){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 "},e}();t.default=o},"./src/shaders/shaders.vr.uniform.js":function(e,t,n){"use strict";n.r(t);var i=n("./node_modules/three/src/math/Matrix4.js"),r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.uniforms=function(){return{uTextureSize:{type:"i",value:0,typeGLSL:"int"},uTextureContainer:{type:"tv",value:[],typeGLSL:"sampler2D",length:7},uDataDimensions:{type:"iv",value:[0,0,0],typeGLSL:"ivec3"},uWorldToData:{type:"m4",value:new i.Matrix4,typeGLSL:"mat4"},uWindowCenterWidth:{type:"fv1",value:[0,0],typeGLSL:"float",length:2},uRescaleSlopeIntercept:{type:"fv1",value:[0,0],typeGLSL:"float",length:2},uNumberOfChannels:{type:"i",value:1,typeGLSL:"int"},uBitsAllocated:{type:"i",value:8,typeGLSL:"int"},uInvert:{type:"i",value:0,typeGLSL:"int"},uLut:{type:"i",value:0,typeGLSL:"int"},uTextureLUT:{type:"t",value:[],typeGLSL:"sampler2D"},uPixelType:{type:"i",value:0,typeGLSL:"int"},uPackedPerPixel:{type:"i",value:1,typeGLSL:"int"},uInterpolation:{type:"i",value:1,typeGLSL:"int"},uWorldBBox:{type:"fv1",value:[0,0,0,0,0,0],typeGLSL:"float",length:6},uSteps:{type:"i",value:256,typeGLSL:"int"},uAlphaCorrection:{type:"f",value:.5,typeGLSL:"float"},uFrequence:{type:"f",value:0,typeGLSL:"float"},uAmplitude:{type:"f",value:0,typeGLSL:"float"},uShading:{type:"i",value:1,typeGLSL:"int"},uAmbient:{type:"f",value:.1,typeGLSL:"float"},uAmbientColor:{type:"v3",value:[1,1,0],typeGLSL:"vec3"},uSampleColorToAmbient:{type:"i",value:1,typeGLSL:"int"},uSpecular:{type:"f",value:1,typeGLSL:"float"},uSpecularColor:{type:"v3",value:[1,1,1],typeGLSL:"vec3"},uDiffuse:{type:"f",value:.3,typeGLSL:"float"},uDiffuseColor:{type:"v3",value:[1,1,0],typeGLSL:"vec3"},uSampleColorToDiffuse:{type:"i",value:1,typeGLSL:"int"},uShininess:{type:"f",value:5,typeGLSL:"float"},uLightPosition:{type:"v3",value:[0,0,0],typeGLSL:"vec3"},uLightPositionInCamera:{type:"i",value:1,typeGLSL:"int"},uIntensity:{type:"v3",value:[.8,.8,.8],typeGLSL:"vec3"},uAlgorithm:{type:"i",value:0,typeGLSL:"int"}}},e}();t.default=r},"./src/shaders/shaders.vr.vertex.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.compute=function(){return"\nvarying vec4 vPos;\n\n//\n// main\n//\nvoid main() {\n\n vPos = modelMatrix * vec4(position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0 );\n\n}\n "},e}();t.default=i},"./src/widgets/widgets.angle.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsAngle",(function(){return c}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var c=s(this,t.call(this,i,o,l));c._widgetType="Angle",c._opangle=null,c._moving=!1,c._domHovered=!1,c._defaultAngle=!0,c._material=null,c._geometry=null,c._mesh=null,c._line=null,c._line2=null,c._label=null,c._handles=[];for(var h=void 0,u=Object(r.widgetsHandle)(e),d=0;d<3;d++)h=new u(i,o,l),c.add(h),c._handles.push(h);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._handles[2].active=!0,c._handles[2].tracking=!0,c._moveHandle=new u(i,o,l),c.add(c._moveHandle),c._handles.push(c._moveHandle),c._moveHandle.hide(),c.create(),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.addEventListeners(),c}return l(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._line.addEventListener("mouseenter",this.onHover),this._line.addEventListener("mouseleave",this.onHover),this._line2.addEventListener("mouseenter",this.onHover),this._line2.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._line.removeEventListener("mouseenter",this.onHover),this._line.removeEventListener("mouseleave",this.onHover),this._line2.removeEventListener("mouseenter",this.onHover),this._line2.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._handles[2].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles[0].onStart(e),this._handles[1].onStart(e),this._handles[2].onStart(e),this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active||this._domHovered,!this._domHovered||this._handles[1].tracking||this._handles[2].tracking||(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){var t=this;if(this._active){var n=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(t._moveHandle.worldPosition.clone().sub(n))}))}else this.onHover(null);this._handles[0].onMove(e),this._handles[1].onMove(e),this._handles[2].onMove(e),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||!this._handles[1].tracking&&this._handles[2].tracking&&this._handles[1].screenPosition.distanceTo(this._handles[2].screenPosition)<10||(this._dragged||!this._active||this._handles[2].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected),this._handles[1].active?this._handles[2].onEnd():this._dragged||!this._handles[2].tracking?(this._handles[2].tracking=!1,this._handles[2].onEnd()):this._handles[2].tracking=!1,this._handles[2].selected=this._selected,this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active,this._dragged=this._handles[2].tracking,this._moving=!1,this.update())},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.Geometry,this._geometry.vertices=[this._handles[0].worldPosition,this._handles[1].worldPosition,this._handles[1].worldPosition,this._handles[2].worldPosition],this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._mesh=new e.LineSegments(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._line2=document.createElement("div"),this._line2.className="widgets-line",this._container.appendChild(this._line2),this._label=document.createElement("div"),this._label.className="widgets-label",this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.hideDOM=function(){this._line.style.display="none",this._line2.style.display="none",this._label.style.display="none",this._handles.forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._line2.style.display="",this._label.style.display="",this._handles[0].showDOM(),this._handles[1].showDOM(),this._handles[2].showDOM()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update(),this._handles[2].update(),this._opangle=180*this._handles[1].worldPosition.clone().sub(this._handles[0].worldPosition).angleTo(this._handles[1].worldPosition.clone().sub(this._handles[2].worldPosition))/Math.PI||0,this._opangle=this._defaultAngle?this._opangle:360-this._opangle,this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0)},n.prototype.updateDOM=function(){this.updateDOMColor();var t=this.getLineData(this._handles[1].screenPosition,this._handles[0].screenPosition);this._line.style.transform="translate3D("+t.transformX+"px, "+t.transformY+"px, 0)\n rotate("+t.transformAngle+"rad)",this._line.style.width=t.length+"px";var n=this.getLineData(this._handles[1].screenPosition,this._handles[2].screenPosition);this._line2.style.transform="translate3D("+n.transformX+"px, "+n.transformY+"px, 0)\n rotate("+n.transformAngle+"rad)",this._line2.style.width=n.length+"px",this._label.innerHTML=this._opangle.toFixed(2)+"°";var i=t.line.clone().add(n.line).normalize().negate(),r=i.angleTo(new e.Vector3(1,0,0));r>Math.PI/2&&(r=Math.PI-r);var o=Math.tan(r)0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var c=s(this,t.call(this,i,o,l));c._widgetType="Annotation",c._initialized=!1,c._movinglabel=null,c._labelmoved=!1,c._labelhovered=!1,c._manuallabeldisplay=!1,c._material=null,c._geometry=null,c._meshline=null,c._cone=null,c._line=null,c._dashline=null,c._label=null,c._labeltext=null,c._labelOffset=new e.Vector3,c._mouseLabelOffset=new e.Vector3,c._handles=[];for(var h=void 0,u=Object(r.widgetsHandle)(e),d=0;d<2;d++)h=new u(i,o,l),c.add(h),c._handles.push(h);return c._handles[1].active=!0,c.create(),c.initOffsets(),c.onResize=c.onResize.bind(c),c.onMove=c.onMove.bind(c),c.onHoverlabel=c.onHoverlabel.bind(c),c.notonHoverlabel=c.notonHoverlabel.bind(c),c.changelabeltext=c.changelabeltext.bind(c),c.addEventListeners(),c}return l(n,t),n.prototype.addEventListeners=function(){window.addEventListener("resize",this.onResize),this._label.addEventListener("mouseenter",this.onHoverlabel),this._label.addEventListener("mouseleave",this.notonHoverlabel),this._label.addEventListener("dblclick",this.changelabeltext),this._container.addEventListener("wheel",this.onMove)},n.prototype.removeEventListeners=function(){window.removeEventListener("resize",this.onResize),this._label.removeEventListener("mouseenter",this.onHoverlabel),this._label.removeEventListener("mouseleave",this.notonHoverlabel),this._label.removeEventListener("dblclick",this.changelabeltext),this._container.removeEventListener("wheel",this.onMove)},n.prototype.onResize=function(){this.initOffsets()},n.prototype.onHoverlabel=function(){this._labelhovered=!0,this._container.style.cursor="pointer"},n.prototype.notonHoverlabel=function(){this._labelhovered=!1,this._container.style.cursor="default"},n.prototype.onStart=function(t){if(this._labelhovered){var n=this.getMouseOffsets(t,this._container),i=this._handles[1].screenPosition.clone().sub(this._labelOffset);this._mouseLabelOffset=new e.Vector3(n.screenX-i.x,n.screenY-i.y,0),this._movinglabel=!0,this._labelmoved=!0}this._handles[0].onStart(t),this._handles[1].onStart(t),this._active=this._handles[0].active||this._handles[1].active||this._labelhovered,this.update()},n.prototype.onMove=function(t){if(this._movinglabel){var n=this.getMouseOffsets(t,this._container);this._labelOffset=new e.Vector3(this._handles[1].screenPosition.x-n.screenX+this._mouseLabelOffset.x,this._handles[1].screenPosition.y-n.screenY+this._mouseLabelOffset.y,0),this._controls.enabled=!1}this._active&&(this._dragged=!0),this._handles[0].onMove(t),this._handles[1].onMove(t),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._labelhovered,this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,!this._dragged&&this._active&&this._initialized&&(this._selected=!this._selected,this._handles[0].selected=this._selected,this._handles[1].selected=this._selected),this._initialized||(this._labelOffset=this._handles[1].screenPosition.clone().sub(this._handles[0].screenPosition).multiplyScalar(.5),this.setlabeltext(),this._initialized=!0),this._active=this._handles[0].active||this._handles[1].active,this._dragged=!1,this._movinglabel=!1,this.update()},n.prototype.setlabeltext=function(){for(;!this._labeltext;)this._labeltext=prompt("Please enter the annotation text","");this.displaylabel()},n.prototype.changelabeltext=function(){this._labeltext=prompt("Please enter a new annotation text",this._label.innerHTML),this.displaylabel()},n.prototype.displaylabel=function(){this._label.innerHTML="string"==typeof this._labeltext&&this._labeltext.length>0?this._labeltext:"",this._label.style.display="",this._dashline.style.display="",this._label.style.transform="translate3D(\n "+(this._handles[1].screenPosition.x-this._labelOffset.x-this._label.offsetWidth/2)+"px,\n "+(this._handles[1].screenPosition.y-this._labelOffset.y-this._label.offsetHeight/2-this._container.offsetHeight)+"px, 0)"},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._geometry=new e.Geometry,this._geometry.vertices.push(this._handles[0].worldPosition),this._geometry.vertices.push(this._handles[1].worldPosition),this._meshline=new e.Line(this._geometry,this._material),this._meshline.visible=!0,this.add(this._meshline),this._conegeometry=new e.CylinderGeometry(0,2,10),this._conegeometry.translate(0,-5,0),this._conegeometry.rotateX(-Math.PI/2),this._cone=new e.Mesh(this._conegeometry,this._material),this._cone.visible=!0,this.add(this._cone)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._dashline=document.createElement("div"),this._dashline.className="widgets-dashline",this._dashline.style.display="none",this._container.appendChild(this._dashline),this._label=document.createElement("div"),this._label.className="widgets-label",this._label.style.display="none",this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update(),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0),this._cone&&(this._cone.position.copy(this._handles[1].worldPosition),this._cone.lookAt(this._handles[0].worldPosition))},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this.getLineData(this._handles[0].screenPosition,this._handles[1].screenPosition);this._line.style.transform="translate3D("+e.transformX+"px, "+e.transformY+"px, 0)\n rotate("+e.transformAngle+"rad)",this._line.style.width=e.length+"px";var t=e.line.multiplyScalar(.5),n=this._handles[1].screenPosition.clone().sub(this._labelmoved?this._labelOffset:t),i=this.adjustLabelTransform(this._label,n);this._label.style.transform="translate3D("+i.x+"px, "+i.y+"px, 0)",this._manuallabeldisplay&&this.displaylabel();var r=this.getLineData(this._handles[0].screenPosition,n),o=this.getLineData(e.center,n),a=this.getLineData(this._handles[1].screenPosition,n);r.length>o.length&&(r=o),r.length>a.length&&(r=a),this._dashline.style.transform="translate3D("+r.transformX+"px, "+r.transformY+"px, 0)\n rotate("+r.transformAngle+"rad)",this._dashline.style.width=r.length+"px"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._dashline.style.borderTop="1.5px dashed "+this._color,this._label.style.borderColor=this._color},n.prototype.hideDOM=function(){this._line.style.display="none",this._dashline.style.display="none",this._label.style.display="none",this._handles.forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._dashline.style.display="",this._label.style.display="",this._handles.forEach((function(e){return e.showDOM()}))},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._line),this._container.removeChild(this._dashline),this._container.removeChild(this._label),this.remove(this._meshline),this._meshline.geometry.dispose(),this._meshline.geometry=null,this._meshline.material.dispose(),this._meshline.material=null,this._meshline=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,this.remove(this._cone),this._cone.geometry.dispose(),this._cone.geometry=null,this._cone.material.dispose(),this._cone.material=null,this._cone=null,this._conegeometry.dispose(),this._conegeometry=null,t.prototype.free.call(this)},o(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles[0].worldPosition.copy(e),this._handles[1].worldPosition.copy(e),this._worldPosition.copy(e),this.update()}}]),n}(t)};t.default=c()},"./src/widgets/widgets.base.ts":function(e,t,n){"use strict";var i,r=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},i(e,t)},function(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n("./src/widgets/widgets.css.js")),s=n("./src/core/core.colors.ts"),l=o(n("./src/core/core.utils.js")),c=function(e){return void 0===e&&(e=window.THREE),void 0===e||void 0===e.Object3D?null:function(t){function n(n,i,r){var o=t.call(this)||this;if(o._widgetType="Base",o._params=r,!0===r.hideMesh&&(o.visible=!1),null===document.getElementById("ami-widgets")){var l=document.createElement("style");l.id="ami-widgets",l.innerHTML=a.default.code,document.head.appendChild(l)}return o._enabled=!0,o._selected=!1,o._hovered=!0,o._active=!0,o._colors={default:s.COLORS.blue,active:s.COLORS.yellow,hover:s.COLORS.red,select:s.COLORS.green,text:s.COLORS.white,error:s.COLORS.lightRed},o._color=o._colors.default,o._dragged=!1,o._displayed=!0,o._targetMesh=n,o._controls=i,o._camera=i.object,o._container=i.domElement,o._worldPosition=new e.Vector3,r.worldPosition?o._worldPosition.copy(r.worldPosition):null!==o._targetMesh&&o._worldPosition.copy(o._targetMesh.position),o}return r(n,t),n.prototype.initOffsets=function(){var e=this._container.getBoundingClientRect(),t=document.body,n=document.documentElement,i=window.pageYOffset||n.scrollTop||t.scrollTop,r=window.pageXOffset||n.scrollLeft||t.scrollLeft,o=n.clientTop||t.clientTop||0,a=n.clientLeft||t.clientLeft||0;this._offsets={top:Math.round(e.top+i-o),left:Math.round(e.left+r-a)}},n.prototype.getMouseOffsets=function(e,t){return{x:(e.clientX-this._offsets.left)/t.offsetWidth*2-1,y:-(e.clientY-this._offsets.top)/t.offsetHeight*2+1,screenX:e.clientX-this._offsets.left,screenY:e.clientY-this._offsets.top}},n.prototype.getArea=function(e){for(var t=0,n=e.length-1,i=0;i=e.x0&&t.x<=e.x1&&t.y>=e.y0&&t.y<=e.y1)return n=i,!0})),n},n.prototype.getPointInRegion=function(t,n){return t?new e.Vector2((n.x-t.x0-(t.axisX||0))*t.deltaX,(n.y-t.y0-(t.axisY||0))*t.deltaY):null},n.prototype.getUsPoint=function(e,t){return this.getPointInRegion(e[this.getRegionByXY(e,t)],t)},n.prototype.getUsDistance=function(e,t){var n=this._params.ultrasoundRegions||[];if(n.length<1)return null;var i=this.getRegionByXY(n,e),r=this.getRegionByXY(n,t);return null===i||null===r||i!==r||"cm"!==n[i].unitsX||"cm"!==n[i].unitsY?null:this.getPointInRegion(n[i],e).distanceTo(this.getPointInRegion(n[i],t))},n.prototype.getDistanceData=function(e,t,n){var i=null,r=null;if(n)i=e.distanceTo(t)*n;else if(this._params.ultrasoundRegions&&this._params.lps2IJK){var o=this.getUsDistance(l.default.worldToData(this._params.lps2IJK,e),l.default.worldToData(this._params.lps2IJK,t));null!==o?(i=10*o,r="mm"):(i=e.distanceTo(t),r=this._params.pixelSpacing?"mm":"units")}else i=e.distanceTo(t);return{distance:i,units:r}},n.prototype.getLineData=function(t,n){var i=n.clone().sub(t),r=n.clone().add(t).multiplyScalar(.5),o=i.length(),a=i.angleTo(new e.Vector3(1,0,0));return{line:i,length:o,transformX:r.x-o/2,transformY:r.y-this._container.offsetHeight,transformAngle:t.y-t.offsetWidth?0:r+t.offsetWidth:r>this._container.offsetWidth-t.offsetWidth&&(r=r-this._container.offsetHeight-t.offsetHeight?-this._container.offsetHeight:o+t.offsetHeight:o>-t.offsetHeight&&(o=o<0?-t.offsetHeight:o-t.offsetHeight),new e.Vector2(r,o)},n.prototype.worldToScreen=function(e){var t=e.clone();return t.project(this._camera),t.x=Math.round((t.x+1)*this._container.offsetWidth/2),t.y=Math.round((1-t.y)*this._container.offsetHeight/2),t.z=0,t},n.prototype.update=function(){window.console.log("update() should be overloaded!")},n.prototype.updateColor=function(){this._active?this._color=this._colors.active:this._hovered?this._color=this._colors.hover:this._selected?this._color=this._colors.select:this._color=this._colors.default},n.prototype.setDefaultColor=function(e){this._colors.default=e,this._handles&&this._handles.forEach((function(t){return t._colors.default=e})),this.update()},n.prototype.show=function(){this.showDOM(),this.showMesh(),this.update(),this._displayed=!0},n.prototype.hide=function(){this.hideDOM(),this.hideMesh(),this._displayed=!1},n.prototype.hideDOM=function(){window.console.log("hideDOM() should be overloaded!")},n.prototype.showDOM=function(){window.console.log("showDOM() should be overloaded!")},n.prototype.hideMesh=function(){this.visible=!1},n.prototype.showMesh=function(){!0!==this._params.hideMesh&&(this.visible=!0)},n.prototype.free=function(){this._camera=null,this._container=null,this._controls=null,this._params=null,this._targetMesh=null},Object.defineProperty(n.prototype,"widgetType",{get:function(){return this._widgetType},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"targetMesh",{get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"worldPosition",{get:function(){return this._worldPosition},set:function(e){this._worldPosition.copy(e),this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"enabled",{get:function(){return this._enabled},set:function(e){this._enabled=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"selected",{get:function(){return this._selected},set:function(e){this._selected=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"hovered",{get:function(){return this._hovered},set:function(e){this._hovered=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"dragged",{get:function(){return this._dragged},set:function(e){this._dragged=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"displayed",{get:function(){return this._displayed},set:function(e){this._displayed=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"active",{get:function(){return this._active},set:function(e){this._active=e,this.update()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"color",{get:function(){return this._color},set:function(e){this._color=e,this.update()},enumerable:!0,configurable:!0}),n}(e.Object3D)};t.widgetsBase=c,t.default=c()},"./src/widgets/widgets.biruler.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsBiruler",(function(){return c}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var c=s(this,t.call(this,i,o,l));c._widgetType="BiRuler",c._calibrationFactor=l.calibrationFactor||null,c._distance=null,c._distance2=null,c._units=c._calibrationFactor||l.pixelSpacing?"mm":"units",c._material=null,c._geometry=null,c._mesh=null,c._line=null,c._label=null,c._line2=null,c._label2=null,c._dashline=null,c._handles=[];for(var h=void 0,u=Object(r.widgetsHandle)(e),d=0;d<4;d++)h=new u(i,o,l),c.add(h),c._handles.push(h);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._handles[3].active=!0,c._handles[3].tracking=!0,c.create(),c.onMove=c.onMove.bind(c),c.addEventListeners(),c}return l(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove)},n.prototype.onStart=function(e){this._handles.forEach((function(t){return t.onStart(e)})),this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active||this._handles[3].active,this.update()},n.prototype.onMove=function(e){this._active?this._dragged=!0:(this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._handles[2].hovered||this._handles[3].hovered,this._container.style.cursor=this._hovered?"pointer":"default"),this._handles.forEach((function(t){return t.onMove(e)})),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[2].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[3].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected,this._handles[2].selected=this._selected),this._handles[1].active?this._handles[3].onEnd():this._dragged||!this._handles[3].tracking?(this._handles[3].tracking=!1,this._handles[3].onEnd()):this._handles[3].tracking=!1,this._handles[3].selected=this._selected,this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active||this._handles[3].active,this._dragged=!1,this.update())},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.Geometry,this._geometry.vertices=[this._handles[0].worldPosition,this._handles[1].worldPosition,this._handles[2].worldPosition,this._handles[3].worldPosition],this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._mesh=new e.LineSegments(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._label=document.createElement("div"),this._label.className="widgets-label",this._container.appendChild(this._label),this._line2=document.createElement("div"),this._line2.className="widgets-line",this._container.appendChild(this._line2),this._label2=document.createElement("div"),this._label2.className="widgets-label",this._container.appendChild(this._label2),this._dashline=document.createElement("div"),this._dashline.className="widgets-dashline",this._container.appendChild(this._dashline),this.updateDOMColor()},n.prototype.hideDOM=function(){this._line.style.display="none",this._label.style.display="none",this._line2.style.display="none",this._label2.style.display="none",this._dashline.style.display="none",this._handles.forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._label.style.display="",this._line2.style.display="",this._label2.style.display="",this._dashline.style.display="",this._handles.forEach((function(e){return e.showDOM()}))},n.prototype.update=function(){this.updateColor(),this._handles.forEach((function(e){return e.update()})),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0)},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this.getLineData(this._handles[0].screenPosition,this._handles[1].screenPosition);this._line.style.transform="translate3D("+e.transformX+"px, "+e.transformY+"px, 0)\n rotate("+e.transformAngle+"rad)",this._line.style.width=e.length+"px";var t=this.getLineData(this._handles[2].screenPosition,this._handles[3].screenPosition);this._line2.style.transform="translate3D("+t.transformX+"px, "+t.transformY+"px, 0)\n rotate("+t.transformAngle+"rad)",this._line2.style.width=t.length+"px";var n=this._handles[0].worldPosition.clone().add(this._handles[1].worldPosition).multiplyScalar(.5),i=this._handles[2].worldPosition.clone().add(this._handles[3].worldPosition).multiplyScalar(.5),r=this.getLineData(this.worldToScreen(n),this.worldToScreen(i));this._dashline.style.transform="translate3D("+r.transformX+"px, "+r.transformY+"px, 0)\n rotate("+r.transformAngle+"rad)",this._dashline.style.width=r.length+"px";var o=this.getDistanceData(this._handles[0].worldPosition,this._handles[1].worldPosition,this._calibrationFactor),a=this.getDistanceData(this._handles[2].worldPosition,this._handles[3].worldPosition,this._calibrationFactor),s="Calibration is required to display the distance in mm";this._distance=o.distance,this._distance2=a.distance,o.units&&a.units&&o.units===a.units?this._units=o.units:(o.units||(o.units=this._units),a.units||(a.units=this._units)),"units"!==o.units||this._label.hasAttribute("title")?"units"!==o.units&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title",s),this._label.style.color=this._colors.error),"units"!==a.units||this._label2.hasAttribute("title")?"units"!==a.units&&this._label2.hasAttribute("title")&&(this._label2.removeAttribute("title"),this._label2.style.color=this._colors.text):(this._label2.setAttribute("title",s),this._label2.style.color=this._colors.error),this._label.innerHTML=this._distance.toFixed(2)+" "+o.units,this._label2.innerHTML=this._distance2.toFixed(2)+" "+a.units;var l=Math.abs(e.transformAngle);l>Math.PI/2&&(l=Math.PI-l);var c=Math.tan(l)2*c?this._handles[1].screenPosition.clone().sub(h):this._handles[1].screenPosition.clone().add(h),d=this.adjustLabelTransform(this._label,u);this._label.style.transform="translate3D("+d.x+"px, "+d.y+"px, 0)";var f=Math.abs(t.transformAngle);f>Math.PI/2&&(f=Math.PI-f);var p=Math.tan(f)2*p?this._handles[3].screenPosition.clone().sub(m):this._handles[3].screenPosition.clone().add(m),_=this.adjustLabelTransform(this._label2,g);this._label2.style.transform="translate3D("+_.x+"px, "+_.y+"px, 0)"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._label.style.borderColor=this._color,this._line2.style.backgroundColor=this._color,this._label2.style.borderColor=this._color,this._dashline.style.borderTop="1.5px dashed "+this._color},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._line),this._container.removeChild(this._label),this._container.removeChild(this._line2),this._container.removeChild(this._label2),this._container.removeChild(this._dashline),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,t.prototype.free.call(this)},n.prototype.getDistances=function(){return[this._distance,this._distance2]},o(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles.forEach((function(t){return t.worldPosition.copy(e)})),this._worldPosition.copy(e),this.update()}},{key:"calibrationFactor",get:function(){return this._calibrationFactor},set:function(e){this._calibrationFactor=e,this._units="mm",this.update()}},{key:"shotestDistance",get:function(){return this._distancethis._distance2?this._distance:this._distance2}}]),n}(t)};t.default=c()},"./src/widgets/widgets.crossRuler.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsCrossRuler",(function(){return c}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var c=s(this,t.call(this,i,o,l));c._widgetType="CrossRuler",c._calibrationFactor=l.calibrationFactor||null,c._distances=null,c._line01=null,c._normal=null,c._distance=null,c._distance2=null,c._units=c._calibrationFactor||l.pixelSpacing?"mm":"units",c._domHovered=!1,c._moving=!1,c._material=null,c._geometry=null,c._mesh=null,c._line=null,c._line2=null,c._label=null,c._label2=null,c._handles=[];for(var h=void 0,u=Object(r.widgetsHandle)(e),d=0;d<4;d++)h=new u(i,o,l),c.add(h),c._handles.push(h);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._moveHandle=new u(i,o,l),c.add(c._moveHandle),c._handles.push(c._moveHandle),c._moveHandle.hide(),c.onHover=c.onHover.bind(c),c.onMove=c.onMove.bind(c),c.create(),c.addEventListeners(),c}return l(n,t),n.prototype.addEventListeners=function(){this._line.addEventListener("mouseenter",this.onHover),this._line.addEventListener("mouseleave",this.onHover),this._line2.addEventListener("mouseenter",this.onHover),this._line2.addEventListener("mouseleave",this.onHover),this._container.addEventListener("wheel",this.onMove)},n.prototype.removeEventListeners=function(){this._line.removeEventListener("mouseenter",this.onHover),this._line.removeEventListener("mouseleave",this.onHover),this._line2.removeEventListener("mouseenter",this.onHover),this._line2.removeEventListener("mouseleave",this.onHover),this._container.removeEventListener("wheel",this.onMove)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._handles[2].hovered||this._handles[3].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles.slice(0,-1).forEach((function(t){return t.onStart(e)})),this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active||this._handles[3].active||this._domHovered,this._domHovered&&this._distances&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){var t=this;if(this._active){var n=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(t._moveHandle.worldPosition.clone().sub(n))}))}else this.onHover(null);this._handles.slice(0,-1).forEach((function(t){return t.onMove(e)})),this._distances&&(this._handles[0].active||this._handles[1].active?this.repositionOrtho():(this._handles[2].active||this._handles[3].active)&&this.recalculateOrtho()),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[2].onEnd(),this._handles[3].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[1].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected,this._handles[2].selected=this._selected,this._handles[3].selected=this._selected),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active||this._handles[2].active||this._handles[3].active,this._dragged=!1,this._moving=!1,this._distances||this.initOrtho(),this.update())},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.Geometry,this._geometry.vertices=[this._handles[0].worldPosition,this._handles[1].worldPosition,this._handles[2].worldPosition,this._handles[3].worldPosition],this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._mesh=new e.LineSegments(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._line2=document.createElement("div"),this._line2.className="widgets-line",this._container.appendChild(this._line2),this._label=document.createElement("div"),this._label.className="widgets-label",this._container.appendChild(this._label),this._label2=document.createElement("div"),this._label2.className="widgets-label",this._container.appendChild(this._label2),this.updateDOMColor()},n.prototype.hideDOM=function(){this._line.style.display="none",this._line2.style.display="none",this._label.style.display="none",this._label2.style.display="none",this._handles.slice(0,-1).forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._line2.style.display="",this._label.style.display="",this._label2.style.display="",this._handles.slice(0,-1).forEach((function(e){return e.showDOM()}))},n.prototype.update=function(){this.updateColor(),this._handles.slice(0,-1).forEach((function(e){return e.update()})),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0)},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this.getLineData(this._handles[0].screenPosition,this._handles[1].screenPosition);this._line.style.transform="translate3D("+e.transformX+"px, "+e.transformY+"px, 0)\n rotate("+e.transformAngle+"rad)",this._line.style.width=e.length+"px";var t=this.getLineData(this._handles[2].screenPosition,this._handles[3].screenPosition);this._line2.style.transform="translate3D("+t.transformX+"px, "+t.transformY+"px, 0)\n rotate("+t.transformAngle+"rad)",this._line2.style.width=t.length+"px";var n=this.getDistanceData(this._handles[0].worldPosition,this._handles[1].worldPosition,this._calibrationFactor),i=this.getDistanceData(this._handles[2].worldPosition,this._handles[3].worldPosition,this._calibrationFactor),r="Calibration is required to display the distance in mm";this._distance=n.distance,this._distance2=i.distance,n.units&&i.units&&n.units===i.units?this._units=n.units:(n.units||(n.units=this._units),i.units||(i.units=this._units)),"units"!==n.units||this._label.hasAttribute("title")?"units"!==n.units&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title",r),this._label.style.color=this._colors.error),"units"!==i.units||this._label2.hasAttribute("title")?"units"!==i.units&&this._label2.hasAttribute("title")&&(this._label2.removeAttribute("title"),this._label2.style.color=this._colors.text):(this._label2.setAttribute("title",r),this._label2.style.color=this._colors.error),this._label.innerHTML=this._distance.toFixed(2)+" "+n.units,this._label2.innerHTML=this._distance2.toFixed(2)+" "+i.units;var o=Math.abs(e.transformAngle);o>Math.PI/2&&(o=Math.PI-o);var a=Math.tan(o)4*a?this._handles[1].screenPosition.clone().sub(s):this._handles[1].screenPosition.clone().add(s),c=this.adjustLabelTransform(this._label,l);this._label.style.transform="translate3D("+c.x+"px, "+c.y+"px, 0)";var h=Math.abs(t.transformAngle);h>Math.PI/2&&(h=Math.PI-h);var u=Math.tan(h)4*u?this._handles[3].screenPosition.clone().sub(d):this._handles[3].screenPosition.clone().add(d),p=this.adjustLabelTransform(this._label2,f);this._label2.style.transform="translate3D("+p.x+"px, "+p.y+"px, 0)"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._line2.style.backgroundColor=this._color,this._label.style.borderColor=this._color,this._label2.style.borderColor=this._color},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._line),this._container.removeChild(this._line2),this._container.removeChild(this._label),this._container.removeChild(this._label2),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,t.prototype.free.call(this)},n.prototype.initLineAndNormal=function(){this._line01=this._handles[1].worldPosition.clone().sub(this._handles[0].worldPosition),this._normal=this._line01.clone().cross(this._camera._direction).normalize()},n.prototype.initOrtho=function(){this.initLineAndNormal();var e=this._handles[1].worldPosition.clone().add(this._handles[0].worldPosition).multiplyScalar(.5),t=this._line01.length()/2,n=this._normal.clone().multiplyScalar(.8*t),i=n.length();this._handles[2].worldPosition.copy(e.clone().add(n)),this._handles[3].worldPosition.copy(e.clone().sub(n)),this._distances=[t,t,i,i]},n.prototype.repositionOrtho=function(){this.initLineAndNormal(),this._distances[0]*=this._line01.length()/(this._distances[0]+this._distances[1]),this._distances[1]=this._line01.length()-this._distances[0];var e=this._handles[0].worldPosition.clone().add(this._line01.clone().normalize().multiplyScalar(this._distances[0]));this._handles[2].worldPosition.copy(e.clone().add(this._normal.clone().multiplyScalar(this._distances[2]))),this._handles[3].worldPosition.copy(e.clone().sub(this._normal.clone().multiplyScalar(this._distances[3])))},n.prototype.recalculateOrtho=function(){var t=this._handles[2].active?2:3,n=[],i=new e.Vector3;n[2]=this._handles[2].worldPosition.clone().sub(this._handles[0].worldPosition),n[3]=this._handles[3].worldPosition.clone().sub(this._handles[0].worldPosition),new e.Ray(this._handles[0].worldPosition,this._line01.clone().normalize()).closestPointToPoint(this._handles[t].worldPosition,i);var r=i.clone().sub(this._handles[0].worldPosition).length()>this._line01.length();(r||i.equals(this._handles[0].worldPosition))&&(r&&i.copy(this._handles[1].worldPosition),this._handles[t].worldPosition.copy(i.clone().add(n[t].clone().projectOnVector(this._normal)))),n[2].cross(this._line01).angleTo(this._camera._direction)>.01&&this._handles[2].worldPosition.copy(i),n[3].cross(this._line01).angleTo(this._camera._direction).01&&o.distanceTo(t)>n.distanceTo(t)+.01?window.console.warn("Lines do not intersect"):(this.active=!1,this.hovered=!1,this.setDefaultColor("#198"),this._worldPosition.copy(t),this._handles[0].worldPosition.copy(t),this._handles[1].worldPosition.copy(n),this._handles[1].active=!1,this._handles[1].tracking=!1,this._handles[2].worldPosition.copy(i),this._handles[3].worldPosition.copy(r),this._distances=[o.distanceTo(t),o.distanceTo(n),o.distanceTo(i),o.distanceTo(r)],this.initLineAndNormal(),this.update())},o(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles.slice(0,-1).forEach((function(t){return t.worldPosition.copy(e)})),this._worldPosition.copy(e),this.update()}},{key:"calibrationFactor",get:function(){return this._calibrationFactor},set:function(e){this._calibrationFactor=e,this._units="mm",this.update()}}]),n}(t)};t.default=c()},"./src/widgets/widgets.css.js":function(e,t,n){"use strict";n.r(t);var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var c=l(this,t.call(this,i,o,a));c._widgetType="Ellipse",c._stack=a.stack,c._calibrationFactor=a.calibrationFactor||null,c._area=null,c._units=c._calibrationFactor||a.stack.frame[a.frameIndex].pixelSpacing?"cm²":"units",c._moving=!1,c._domHovered=!1,c._material=null,c._geometry=null,c._mesh=null,c._rectangle=null,c._ellipse=null,c._label=null,c._handles=[];for(var h=void 0,u=Object(r.widgetsHandle)(e),d=0;d<2;d++)h=new u(i,o,a),c.add(h),c._handles.push(h);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._moveHandle=new u(i,o,a),c.add(c._moveHandle),c._handles.push(c._moveHandle),c._moveHandle.hide(),c.create(),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.addEventListeners(),c}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._rectangle.addEventListener("mouseenter",this.onHover),this._rectangle.addEventListener("mouseleave",this.onHover),this._ellipse.addEventListener("mouseenter",this.onHover),this._ellipse.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._rectangle.removeEventListener("mouseenter",this.onHover),this._rectangle.removeEventListener("mouseleave",this.onHover),this._ellipse.removeEventListener("mouseenter",this.onHover),this._ellipse.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles[0].onStart(e),this._handles[1].onStart(e),this._active=this._handles[0].active||this._handles[1].active||this._domHovered,this._domHovered&&!this._handles[1].tracking&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){var t=this;if(this._active){var n=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(t._moveHandle.worldPosition.clone().sub(n))})),this.updateRoI(!0)}else this.onHover(null);this._handles[0].onMove(e),this._handles[1].onMove(e),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[1].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active,this._dragged=!1,this._moving=!1,this.updateRoI(),this.update())},n.prototype.hideDOM=function(){this._handles.forEach((function(e){return e.hideDOM()})),this._rectangle.style.display="none",this._ellipse.style.display="none",this._label.style.display="none"},n.prototype.showDOM=function(){this._handles[0].showDOM(),this._handles[1].showDOM(),this._rectangle.style.display="",this._ellipse.style.display="",this._label.style.display=""},n.prototype.create=function(){this.createMaterial(),this.createDOM()},n.prototype.createMaterial=function(){this._material=new e.MeshBasicMaterial,this._material.transparent=!0,this._material.opacity=.2},n.prototype.createDOM=function(){this._rectangle=document.createElement("div"),this._rectangle.className="widgets-rectangle-helper",this._container.appendChild(this._rectangle),this._ellipse=document.createElement("div"),this._ellipse.className="widgets-ellipse",this._container.appendChild(this._ellipse),this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div"),t=document.createElement("div");t.className="mean-sd",e.appendChild(t);var n=document.createElement("div");n.className="max-min",e.appendChild(n);var i=document.createElement("div");i.className="area",e.appendChild(i),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update(),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._mesh&&this.remove(this._mesh);var t=this._handles[1].worldPosition.clone().sub(this._handles[0].worldPosition),n=t.clone().projectOnVector(this._camera.up).length(),i=t.clone().projectOnVector(this._camera._right).length();0!==i&&0!==n&&(this._geometry=new e.ShapeGeometry(new e.Shape(new e.EllipseCurve(0,0,i/2,n/2,0,2*Math.PI,!1).getPoints(50))),this._mesh=new e.Mesh(this._geometry,this._material),this._mesh.position.copy(this._handles[0].worldPosition.clone().add(t.multiplyScalar(.5))),this._mesh.rotation.copy(this._camera.rotation),this._mesh.visible=!0,this.add(this._mesh))},n.prototype.updateRoI=function(e){if(this._geometry){var t=this._label.querySelector(".mean-sd"),n=this._label.querySelector(".max-min");if(e)return t.innerHTML="",void(n.innerHTML="");var i=o.default.getRoI(this._mesh,this._camera,this._stack);null!==i?(t.innerHTML="Mean: "+i.mean.toFixed(1)+" / SD: "+i.sd.toFixed(1),n.innerHTML="Max: "+i.max.toFixed()+" / Min: "+i.min.toFixed()):(t.innerHTML="",n.innerHTML="")}},n.prototype.updateDOMColor=function(){this._rectangle.style.borderColor=this._color,this._ellipse.style.borderColor=this._color,this._label.style.borderColor=this._color},n.prototype.updateDOM=function(){if(this._geometry){this.updateDOMColor();var e=this._stack.frame[this._params.frameIndex].ultrasoundRegions||[];if(this._area=o.default.getGeometryArea(this._geometry),this._calibrationFactor)this._area*=Math.pow(this._calibrationFactor,2);else if(e&&e.length>0&&this._stack.lps2IJK){var t=this.getRegionByXY(e,o.default.worldToData(this._stack.lps2IJK,this._handles[0].worldPosition)),n=this.getRegionByXY(e,o.default.worldToData(this._stack.lps2IJK,this._handles[1].worldPosition));null!==t&&null!==n&&t===n&&"cm"===e[t].unitsX&&"cm"===e[t].unitsY?(this._area*=Math.pow(e[t].deltaX,2),this._units="cm²"):this._stack.frame[this._params.frameIndex].pixelSpacing?(this._area/=100,this._units="cm²"):this._units="units"}else"cm²"===this._units&&(this._area/=100);"units"!==this._units||this._label.hasAttribute("title")?"units"!==this._units&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title","Calibration is required to display the area in cm²"),this._label.style.color=this._colors.error),this._label.querySelector(".area").innerHTML="Area: "+this._area.toFixed(2)+" "+this._units;var i=this.getRectData(this._handles[0].screenPosition,this._handles[1].screenPosition),r=this.adjustLabelTransform(this._label,this._handles[1].screenPosition.clone().add(i.paddingVector.multiplyScalar(15+this._label.offsetHeight/2)));this._rectangle.style.transform="translate3D("+i.transformX+"px, "+i.transformY+"px, 0)",this._rectangle.style.width=i.width+"px",this._rectangle.style.height=i.height+"px",this._ellipse.style.transform="translate3D("+i.transformX+"px, "+i.transformY+"px, 0)",this._ellipse.style.width=i.width+"px",this._ellipse.style.height=i.height+"px",this._label.style.transform="translate3D("+r.x+"px,"+r.y+"px, 0)"}},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._rectangle),this._container.removeChild(this._ellipse),this._container.removeChild(this._label),this._mesh&&(this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null),this._geometry&&(this._geometry.dispose(),this._geometry=null),this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,this._stack=null,t.prototype.free.call(this)},n.prototype.getMeasurements=function(){return{area:this._area,units:this._units}},a(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles[0].worldPosition.copy(e),this._handles[1].worldPosition.copy(e),this._worldPosition.copy(e),this.update()}},{key:"calibrationFactor",get:function(){return this._calibrationFactor},set:function(e){this._calibrationFactor=e,this._units="cm²",this.update()}}]),n}(t)};t.default=h()},"./src/widgets/widgets.freehand.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsFreehand",(function(){return h}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=n("./src/core/core.utils.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var c=l(this,t.call(this,i,o,a));c._widgetType="Freehand",c._stack=a.stack,c._calibrationFactor=a.calibrationFactor||null,c._area=null,c._units=c._calibrationFactor||a.stack.frame[a.frameIndex].pixelSpacing?"cm²":"units",c._initialized=!1,c._moving=!1,c._domHovered=!1,c._material=null,c._geometry=null,c._mesh=null,c._lines=[],c._label=null,c._handles=[];var h=Object(r.widgetsHandle)(e),u=new h(i,o,a);return c.add(u),c._handles.push(u),c._moveHandle=new h(i,o,a),c.add(c._moveHandle),c._moveHandle.hide(),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.create(),c.addEventListeners(),c}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh();var t=!1;this._handles.forEach((function(e){return t=t||e.hovered})),this._hovered=t||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){var t=!1;this._moveHandle.onMove(e,!0),this._handles.forEach((function(n){n.onStart(e),t=t||n.active})),this._active=t||this._domHovered,this._domHovered&&this._initialized&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(t){var n=this,i=!1;if(this.active)if(this._dragged=!0,this._initialized){var o=this._moveHandle.worldPosition.clone();this._moveHandle.onMove(t,!0),this._mesh&&this.remove(this._mesh),this.updateDOMContent(!0),this._moving&&this._handles.forEach((function(e){e.worldPosition.add(n._moveHandle.worldPosition.clone().sub(o))}))}else{this._handles[this._handles.length-1].hovered=!1,this._handles[this._handles.length-1].active=!1,this._handles[this._handles.length-1].tracking=!1;var a=new(Object(r.widgetsHandle)(e))(this._targetMesh,this._controls,this._params);a.hovered=!0,a.active=!0,a.tracking=!0,this.add(a),this._handles.push(a),this.createLine()}this._handles.forEach((function(e){e.onMove(t),i=i||e.hovered})),this._hovered=i||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default",this.active&&this._handles.length>2&&this.pushPopHandle(),this.update()},n.prototype.onEnd=function(){var e=this;if(!(this._handles.length<3)){var t=!1;this._handles.slice(0,-1).forEach((function(e){e.onEnd(),t=t||e.active})),this._dragged||!this._handles[this._handles.length-1].tracking?(this._handles[this._handles.length-1].tracking=!1,this._handles[this._handles.length-1].onEnd()):this._handles[this._handles.length-1].tracking=!1,this._lines.length=2&&this._lines.forEach((function(t){return t.style.backgroundColor=e._color})),this._label.style.borderColor=this._color},n.prototype.updateDOMContent=function(e){var t=this,n=this._label.querySelector(".mean-sd"),i=this._label.querySelector(".max-min"),r=this._label.querySelector(".area");if(e)return n.innerHTML="",i.innerHTML="",void(r.innerHTML="");var a=this._stack.frame[this._params.frameIndex].ultrasoundRegions||[];if(this._area=o.default.getGeometryArea(this._geometry),this._calibrationFactor)this._area*=Math.pow(this._calibrationFactor,2);else if(a&&a.length>0&&this._stack.lps2IJK){var s=!0,l=void 0,c=void 0;this._handles.forEach((function(e){(null===(l=t.getRegionByXY(a,o.default.worldToData(t._stack.lps2IJK,e.worldPosition)))||"cm"!==a[l].unitsX||void 0!==c&&c!==l)&&(s=!1),c=l})),s?(this._area*=Math.pow(a[l].deltaX,2),this._units="cm²"):this._stack.frame[this._params.frameIndex].pixelSpacing?(this._area/=100,this._units="cm²"):this._units="units"}else"cm²"===this._units&&(this._area/=100);var h="units"===this._units?"Calibration is required to display the area in cm². ":"";this._shapeWarn&&(h+="Values may be incorrect due to triangulation error."),""===h||this._label.hasAttribute("title")?""===h&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title",h),this._label.style.color=this._colors.error);var u=o.default.getRoI(this._mesh,this._camera,this._stack);null!==u?(n.innerHTML="Mean: "+u.mean.toFixed(1)+" / SD: "+u.sd.toFixed(1),i.innerHTML="Max: "+u.max.toFixed()+" / Min: "+u.min.toFixed()):(n.innerHTML="",i.innerHTML=""),r.innerHTML="Area: "+this._area.toFixed(2)+" "+this._units},n.prototype.updateDOMPosition=function(){var e=this;if(!(this._handles.length<2)){var t=null;this._lines.forEach((function(n,i){var r=e.getLineData(e._handles[i].screenPosition,e._handles[i+1===e._handles.length?0:i+1].screenPosition);n.style.transform="translate3D("+r.transformX+"px, "+r.transformY+"px, 0)\n rotate("+r.transformAngle+"rad)",n.style.width=r.length+"px",(null===t||t.y0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var l=s(this,t.call(this,i,r,o));return l._widgetType="Handle",!0===o.hideHandleMesh&&(l.visible=!1),l._plane={position:new e.Vector3,direction:new e.Vector3},l._offset=new e.Vector3,l._raycaster=new e.Raycaster,l._active=!1,l._hovered=!1,l._tracking=!1,l._mouse=new e.Vector2,l._initialized=!1,l._material=null,l._geometry=null,l._mesh=null,l._meshHovered=!1,l._dom=null,l._domHovered=!1,l._screenPosition=l.worldToScreen(l._worldPosition),l.create(),l.initOffsets(),l.onResize=l.onResize.bind(l),l.onMove=l.onMove.bind(l),l.onHover=l.onHover.bind(l),l.addEventListeners(),l}return l(n,t),n.prototype.addEventListeners=function(){window.addEventListener("resize",this.onResize),this._dom.addEventListener("mouseenter",this.onHover),this._dom.addEventListener("mouseleave",this.onHover),this._container.addEventListener("wheel",this.onMove)},n.prototype.removeEventListeners=function(){window.removeEventListener("resize",this.onResize),this._dom.removeEventListener("mouseenter",this.onHover),this._dom.removeEventListener("mouseleave",this.onHover),this._container.removeEventListener("wheel",this.onMove)},n.prototype.onResize=function(){this.initOffsets()},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._meshHovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){var e=this._raycaster.intersectObject(this._mesh);this._meshHovered=e.length>0},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){var t=this.getMouseOffsets(e,this._container);if(this._mouse.set(t.x,t.y),this._raycaster.setFromCamera(this._mouse,this._camera),this._raycaster.ray.position=this._raycaster.ray.origin,this._hovered){if(this._active=!0,this._controls.enabled=!1,this._targetMesh){var n=this._raycaster.intersectObject(this._targetMesh);n.length>0&&this._offset.copy(n[0].point).sub(this._worldPosition)}else{this._plane.position.copy(this._worldPosition),this._plane.direction.copy(this._camera.getWorldDirection());var i=r.default.rayPlane(this._raycaster.ray,this._plane);null!==i&&this._offset.copy(i).sub(this._plane.position)}this.update()}},n.prototype.onMove=function(e,t){var n=this.getMouseOffsets(e,this._container);if(this._mouse.set(n.x,n.y),this._raycaster.setFromCamera(this._mouse,this._camera),this._raycaster.ray.position=this._raycaster.ray.origin,this._active||t)if(this._dragged=!0,null!==this._targetMesh){var i=this._raycaster.intersectObject(this._targetMesh);i.length>0&&this._worldPosition.copy(i[0].point.sub(this._offset))}else{0===this._plane.direction.length()&&(this._plane.position.copy(this._worldPosition),this._plane.direction.copy(this._camera.getWorldDirection()));var o=r.default.rayPlane(this._raycaster.ray,this._plane);null!==o&&this._worldPosition.copy(o.sub(this._offset))}else this.onHover(null);this.update()},n.prototype.onEnd=function(){!0!==this._tracking&&(!this._dragged&&this._active&&this._initialized&&(this._selected=!this._selected),this._initialized=!0,this._active=!1,this._dragged=!1,this._controls.enabled=!0,this.update())},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.SphereGeometry(1,16,16),this._material=new e.MeshBasicMaterial({wireframe:!0,wireframeLinewidth:2}),this.updateMeshColor(),this._mesh=new e.Mesh(this._geometry,this._material),this._mesh.position.copy(this._worldPosition),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._dom=document.createElement("div"),this._dom.className="widgets-handle",this._dom.style.transform="translate3D(\n "+this._screenPosition.x+"px,\n "+(this._screenPosition.y-this._container.offsetHeight)+"px, 0)",this.updateDOMColor(),this._container.appendChild(this._dom)},n.prototype.update=function(){this.updateColor(),this._screenPosition=this.worldToScreen(this._worldPosition),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOMColor(),this.updateDOMPosition()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._mesh&&this._mesh.position.copy(this._worldPosition)},n.prototype.updateDOMPosition=function(){this._dom&&(this._dom.style.transform="translate3D("+this._screenPosition.x+"px,\n "+(this._screenPosition.y-this._container.offsetHeight)+"px, 0)")},n.prototype.updateDOMColor=function(){this._dom.style.borderColor=this._color},n.prototype.showMesh=function(){!0!==this._params.hideMesh&&!0!==this._params.hideHandleMesh&&(this.visible=!0)},n.prototype.free=function(){this.removeEventListeners(),this._container.removeChild(this._dom),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,t.prototype.free.call(this)},n.prototype.hideDOM=function(){this._dom.style.display="none"},n.prototype.showDOM=function(){this._dom.style.display=""},o(n,[{key:"screenPosition",get:function(){return this._screenPosition},set:function(e){this._screenPosition=e}},{key:"active",get:function(){return this._active},set:function(e){this._active=e,this._controls.enabled=!this._active,this.update()}},{key:"tracking",get:function(){return this._tracking},set:function(e){this._tracking=e,this.update()}}]),n}(t)};t.default=c()},"./src/widgets/widgets.js":function(e,t,n){"use strict";n.r(t);var i=n("./src/widgets/widgets.css.js");n.d(t,"WidgetsCss",(function(){return i.default}));var r=n("./src/widgets/widgets.angle.js");n.d(t,"AngleWidget",(function(){return r.default})),n.d(t,"angleWidgetFactory",(function(){return r.widgetsAngle}));var o=n("./src/widgets/widgets.annotation.js");n.d(t,"AnnotationWidget",(function(){return o.default})),n.d(t,"annotationWidgetFactory",(function(){return o.widgetsAnnotation}));var a=n("./src/widgets/widgets.biruler.js");n.d(t,"BiRulerWidget",(function(){return a.default})),n.d(t,"birulerWidgetFactory",(function(){return a.widgetsBiruler}));var s=n("./src/widgets/widgets.crossRuler.js");n.d(t,"CrossRulerWidget",(function(){return s.default})),n.d(t,"crossrulerWidgetFactory",(function(){return s.widgetsCrossRuler}));var l=n("./src/widgets/widgets.ellipse.js");n.d(t,"EllipseWidget",(function(){return l.default})),n.d(t,"ellipseWidgetFactory",(function(){return l.widgetsEllipse}));var c=n("./src/widgets/widgets.freehand.js");n.d(t,"FreehandWidget",(function(){return c.default})),n.d(t,"freehandWidgetFactory",(function(){return c.widgetsFreehand}));var h=n("./src/widgets/widgets.handle.js");n.d(t,"HandleWidget",(function(){return h.default})),n.d(t,"handleWidgetFactory",(function(){return h.widgetsHandle}));var u=n("./src/widgets/widgets.peakVelocity.js");n.d(t,"PeakVelocityWidget",(function(){return u.default})),n.d(t,"peakVelocityWidgetFactory",(function(){return u.widgetsPeakVelocity}));var d=n("./src/widgets/widgets.pressureHalfTime.js");n.d(t,"PressureHalfTimeWidget",(function(){return d.default})),n.d(t,"pressureHalfTimeWidgetFactory",(function(){return d.widgetsPressureHalfTime}));var f=n("./src/widgets/widgets.polygon.js");n.d(t,"PolygonWidget",(function(){return f.default})),n.d(t,"polygonWidgetFactory",(function(){return f.widgetsPolygon}));var p=n("./src/widgets/widgets.rectangle.js");n.d(t,"RectangleWidget",(function(){return p.default})),n.d(t,"rectangleWidgetFactory",(function(){return p.widgetsRectangle}));var m=n("./src/widgets/widgets.ruler.js");n.d(t,"RulerWidget",(function(){return m.default})),n.d(t,"rulerWidgetFactory",(function(){return m.widgetsRuler}));var g=n("./src/widgets/widgets.velocityTimeIntegral.js");n.d(t,"VelocityTimeIntegralWidget",(function(){return g.default})),n.d(t,"velocityTimeIntegralWidgetFactory",(function(){return g.widgetsVelocityTimeIntegral}));var _=n("./src/widgets/widgets.voxelProbe.js");n.d(t,"VoxelProbeWidget",(function(){return _.default})),n.d(t,"voxelprobeWidgetFactory",(function(){return _.widgetsVoxelprobe}))},"./src/widgets/widgets.peakVelocity.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsPeakVelocity",(function(){return h}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=n("./src/core/core.utils.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,a){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var h=l(this,t.call(this,i,a,c));if(h._widgetType="PeakVelocity",h._regions=c.ultrasoundRegions||[],h._regions.length<1)throw new Error("Ultrasound regions should not be empty!");if(h._velocity=null,h._gradient=null,h._container.style.cursor="pointer",h._controls.enabled=!1,h._initialized=!1,h._active=!0,h._domHovered=!1,h._initialRegion=h.getRegionByXY(h._regions,o.default.worldToData(c.lps2IJK,c.worldPosition)),null===h._initialRegion)throw new Error("Invalid initial UltraSound region!");h._line=null,h._label=null;var u=Object(r.widgetsHandle)(e);return h._handle=new u(i,a,c),h.add(h._handle),h._moveHandle=new u(i,a,c),h.add(h._moveHandle),h._moveHandle.hide(),h.create(),h.onMove=h.onMove.bind(h),h.onHover=h.onHover.bind(h),h.addEventListeners(),h}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._line.addEventListener("mouseenter",this.onHover),this._line.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._line.removeEventListener("mouseenter",this.onHover),this._line.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this._hovered=this._handle.hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handle.onStart(e),this._active=this._handle.active||this._domHovered,this._domHovered&&(this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){if(this._active){var t=this._moveHandle.worldPosition.clone();this._moveHandle.onMove(e,!0);var n=this._moveHandle.worldPosition.clone().sub(t);if(!this.isCorrectRegion(n))return void this._moveHandle.worldPosition.copy(t);this._handle.active||this._handle.worldPosition.add(n),this._dragged=!0}else this.onHover(null);this._handle.onMove(e),this.update()},n.prototype.onEnd=function(){this._handle.onEnd(),!this._dragged&&this._active&&this._initialized&&(this._selected=!this._selected,this._handle.selected=this._selected),this._initialized=!0,this._active=!1,this._dragged=!1,this.update()},n.prototype.isCorrectRegion=function(e){var t=this.getRegionByXY(this._regions,o.default.worldToData(this._params.lps2IJK,this._handle.worldPosition.clone().add(e)));return null!==t&&t===this._initialRegion&&"cm/sec"===this._regions[t].unitsY},n.prototype.create=function(){this.createDOM()},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-dashline",this._container.appendChild(this._line),this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div"),t=document.createElement("div");t.className="peakVelocity",e.appendChild(t);var n=document.createElement("div");n.className="gradient",e.appendChild(n),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.update=function(){this.updateColor(),this._handle.update(),this._worldPosition.copy(this._handle.worldPosition),this.updateDOM()},n.prototype.updateDOM=function(){this.updateDOMColor();var e=o.default.worldToData(this._params.lps2IJK,this._worldPosition),t=this._regions[this.getRegionByXY(this._regions,e)],n=this.getPointInRegion(t,e);this._velocity=Math.abs(n.y/100),this._gradient=4*Math.pow(this._velocity,2),this._label.querySelector(".peakVelocity").innerHTML=this._velocity.toFixed(2)+" m/s",this._label.querySelector(".gradient").innerHTML=this._gradient.toFixed(2)+" mmhg";var i=this.adjustLabelTransform(this._label,this._handle.screenPosition,!0);this._line.style.transform="translate3D("+(i.x-(e.x-t.x0)*this._camera.zoom)+"px, "+i.y+"px, 0)",this._line.style.width=(t.x1-t.x0)*this._camera.zoom+"px",this._label.style.transform="translate3D("+(i.x+10)+"px, "+(i.y+10)+"px, 0)"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._label.style.borderColor=this._color},n.prototype.hideDOM=function(){this._line.style.display="none",this._label.style.display="none",this._handle.hideDOM()},n.prototype.showDOM=function(){this._line.style.display="",this._label.style.display="",this._handle.showDOM()},n.prototype.free=function(){this.removeEventListeners(),this.remove(this._handle),this._handle.free(),this._handle=null,this.remove(this._moveHandle),this._moveHandle.free(),this._moveHandle=null,this._container.removeChild(this._line),this._container.removeChild(this._label),t.prototype.free.call(this)},n.prototype.getMeasurements=function(){return{velocity:this._velocity,gradient:this._gradient}},a(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handle.targetMesh=e,this._moveHandle.targetMesh=e,this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handle.worldPosition.copy(e),this._moveHandle.worldPosition.copy(e),this._worldPosition.copy(e),this.update()}},{key:"active",get:function(){return this._active},set:function(e){this._active=e,this._controls.enabled=!this._active,this.update()}}]),n}(t)};t.default=h()},"./src/widgets/widgets.polygon.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsPolygon",(function(){return h}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=n("./src/core/core.utils.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var c=l(this,t.call(this,i,o,a));c._widgetType="Polygon",c._stack=a.stack,c._calibrationFactor=a.calibrationFactor||null,c._area=null,c._units=c._calibrationFactor||a.stack.frame[a.frameIndex].pixelSpacing?"cm²":"units",c._initialized=!1,c._newHandleRequired=!0,c._moving=!1,c._domHovered=!1,c._material=null,c._geometry=null,c._mesh=null,c._lines=[],c._label=null,c._handles=[];var h=Object(r.widgetsHandle)(e),u=new h(i,o,a);return c.add(u),c._handles.push(u),c._moveHandle=new h(i,o,a),c.add(c._moveHandle),c._moveHandle.hide(),c.onDoubleClick=c.onDoubleClick.bind(c),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.create(),c.addEventListeners(),c}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("dblclick",this.onDoubleClick),this._container.addEventListener("wheel",this.onMove),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("dblclick",this.onDoubleClick),this._container.removeEventListener("wheel",this.onMove),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh();var t=!1;this._handles.forEach((function(e){return t=t||e.hovered})),this._hovered=t||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){var t=!1;this._handles.forEach((function(n){n.onStart(e),t=t||n.active})),this._initialized&&(this._moveHandle.onMove(e,!0),this._active=t||this._domHovered,this._domHovered&&this._initialized&&(this._moving=!0,this._controls.enabled=!1),this.update())},n.prototype.onMove=function(t){var n=this,i=!1;if(this.active)if(this._dragged=!0,this._newHandleRequired&&!this._initialized){this._handles[this._handles.length-1].hovered=!1,this._handles[this._handles.length-1].active=!1,this._handles[this._handles.length-1].tracking=!1;var o=new(Object(r.widgetsHandle)(e))(this._targetMesh,this._controls,this._params);o.hovered=!0,o.active=!0,o.tracking=!0,this.add(o),this._handles.push(o),this.createLine(),this._newHandleRequired=!1}else{var a=this._moveHandle.worldPosition.clone();this._moveHandle.onMove(t,!0),this._mesh&&this.remove(this._mesh),this.updateDOMContent(!0),this._moving&&this._handles.forEach((function(e){e.worldPosition.add(n._moveHandle.worldPosition.clone().sub(a))}))}this._handles.forEach((function(e){e.onMove(t),i=i||e.hovered})),this._hovered=i||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default",this.update()},n.prototype.onEnd=function(){var e=this,t=this._handles.length,n=!1;!this._initialized&&t>1&&this._handles[t-2].screenPosition.distanceTo(this._handles[t-1].screenPosition)<10||(this._handles.forEach((function(e){e.onEnd(),n=n||e.active})),this._initialized?(this._dragged&&(this.updateMesh(),this.updateDOMContent()),!this._dragged&&this._active&&(this._selected=!this._selected,this._handles.forEach((function(t){return t.selected=e._selected}))),this._active=n||this._handles[t-1].active,this._dragged=!1,this._moving=!1,this.update()):this._newHandleRequired=!0)},n.prototype.onDoubleClick=function(){var e=this._handles.length;e<3||this._initialized||e>1&&this._handles[e-2].screenPosition.distanceTo(this._handles[e-1].screenPosition)<10||(this._handles[e-1].tracking=!1,this._handles.forEach((function(e){return e.onEnd()})),this._active=!1,this._dragged=!1,this._moving=!1,this._initialized=!0,this.updateMesh(),this.updateDOMContent(),this.update())},n.prototype.create=function(){this.createMaterial(),this.createDOM()},n.prototype.createMaterial=function(){this._material=new e.MeshBasicMaterial({side:THREE.DoubleSide}),this._material.transparent=!0,this._material.opacity=.2},n.prototype.createDOM=function(){this.createLine(),this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div"),t=document.createElement("div");t.className="mean-sd",e.appendChild(t);var n=document.createElement("div");n.className="max-min",e.appendChild(n);var i=document.createElement("div");i.className="area",e.appendChild(i),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.createLine=function(){var e=document.createElement("div");e.className="widgets-line",e.addEventListener("mouseenter",this.onHover),e.addEventListener("mouseleave",this.onHover),this._lines.push(e),this._container.appendChild(e)},n.prototype.hideDOM=function(){this._handles.forEach((function(e){return e.hideDOM()})),this._lines.forEach((function(e){return e.style.display="none"})),this._label.style.display="none"},n.prototype.showDOM=function(){this._handles.forEach((function(e){return e.showDOM()})),this._lines.forEach((function(e){return e.style.display=""})),this._label.style.display=""},n.prototype.update=function(){this.updateColor(),this._handles.forEach((function(e){return e.update()})),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOMColor(),this.updateDOMPosition()},n.prototype.updateMesh=function(){this._mesh&&this.remove(this._mesh);var t=[];this._handles.forEach((function(e){return t.push(e.worldPosition)}));for(var n=o.default.centerOfMass(t),i=(new e.Vector3).subVectors(t[0],n).normalize(),r=(new e.Vector3).crossVectors((new e.Vector3).subVectors(t[0],n),(new e.Vector3).subVectors(t[1],n)),a=(new e.Vector3).crossVectors(i,r).normalize(),s=[],l=0;l0&&this._stack.lps2IJK){var s=!0,l=void 0,c=void 0;this._handles.forEach((function(e){(null===(l=t.getRegionByXY(a,o.default.worldToData(t._stack.lps2IJK,e.worldPosition)))||"cm"!==a[l].unitsX||void 0!==c&&c!==l)&&(s=!1),c=l})),s?(this._area*=Math.pow(a[l].deltaX,2),this._units="cm²"):this._stack.frame[this._params.frameIndex].pixelSpacing?(this._area/=100,this._units="cm²"):this._units="units"}else"cm²"===this._units&&(this._area/=100);var h="units"===this._units?"Calibration is required to display the area in cm². ":"";this._shapeWarn&&(h+="Values may be incorrect due to triangulation error."),""===h||this._label.hasAttribute("title")?""===h&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title",h),this._label.style.color=this._colors.error);var u=o.default.getRoI(this._mesh,this._camera,this._stack);null!==u?(n.innerHTML="Mean: "+u.mean.toFixed(1)+" / SD: "+u.sd.toFixed(1),i.innerHTML="Max: "+u.max.toFixed()+" / Min: "+u.min.toFixed()):(n.innerHTML="",i.innerHTML=""),r.innerHTML="Area: "+this._area.toFixed(2)+" "+this._units},n.prototype.updateDOMPosition=function(){var e=this,t=null;this._lines.forEach((function(n,i){var r=e.getLineData(e._handles[i].screenPosition,e._handles[i+1===e._handles.length?0:i+1].screenPosition);n.style.transform="translate3D("+r.transformX+"px, "+r.transformY+"px, 0)\n rotate("+r.transformAngle+"rad)",n.style.width=r.length+"px",(null===t||t.y0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,a){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var h=l(this,t.call(this,i,a,c));if(h._widgetType="PressureHalfTime",h._regions=c.ultrasoundRegions||[],h._regions.length<1)throw new Error("Ultrasound regions should not be empty!");if(h._vMax=null,h._gMax=null,h._pht=null,h._mva=null,h._dt=null,h._ds=null,h._domHovered=!1,h._initialRegion=h.getRegionByXY(h._regions,o.default.worldToData(c.lps2IJK,c.worldPosition)),null===h._initialRegion)throw new Error("Invalid initial UltraSound region!");h._material=null,h._geometry=null,h._mesh=null,h._line=null,h._label=null,h._handles=[];for(var u=Object(r.widgetsHandle)(e),d=void 0,f=0;f<2;f++)d=new u(i,a,c),h.add(d),h._handles.push(d);return h._handles[1].active=!0,h._handles[1].tracking=!0,h._moveHandle=new u(i,a,c),h.add(h._moveHandle),h._handles.push(h._moveHandle),h._moveHandle.hide(),h.create(),h.onMove=h.onMove.bind(h),h.onHover=h.onHover.bind(h),h.addEventListeners(),h}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._line.addEventListener("mouseenter",this.onHover),this._line.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._line.removeEventListener("mouseenter",this.onHover),this._line.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles[0].onStart(e),this._handles[1].onStart(e),this._active=this._handles[0].active||this._handles[1].active||this._domHovered,this._domHovered&&(this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){if(this._active){var t=this._moveHandle.worldPosition.clone();this._moveHandle.onMove(e,!0);var n=this._moveHandle.worldPosition.clone().sub(t);if(!this.isCorrectRegion(n))return void this._moveHandle.worldPosition.copy(t);this._handles[0].active||this._handles[1].active||this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(n)})),this._dragged=!0}else this.onHover(null);this._handles[0].onMove(e),this._handles[1].onMove(e),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[1].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active,this._dragged=!1,this.update())},n.prototype.isCorrectRegion=function(e){var t=!(this._handles[0].active||this._handles[1].active),n=!0;return(this._handles[0].active||t)&&(n=n&&this.checkHandle(0,e)),(this._handles[1].active||t)&&(n=n&&this.checkHandle(1,e)),n},n.prototype.checkHandle=function(e,t){var n=this.getRegionByXY(this._regions,o.default.worldToData(this._params.lps2IJK,this._handles[e].worldPosition.clone().add(t)));return null!==n&&n===this._initialRegion&&"cm/sec"===this._regions[n].unitsY},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.Geometry,this._geometry.vertices=[this._handles[0].worldPosition,this._handles[1].worldPosition],this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._mesh=new e.Line(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div");["vmax","gmax","pht","mva","dt","ds"].forEach((function(t){var n=document.createElement("div");n.className=t,e.appendChild(n)})),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.hideDOM=function(){this._line.style.display="none",this._label.style.display="none",this._handles.forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._label.style.display="",this._handles[0].showDOM(),this._handles[1].showDOM()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update(),this.updateValues(),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateValues=function(){var e=this.getUsPoint(this._regions,o.default.worldToData(this._params.lps2IJK,this._handles[0].worldPosition)),t=this.getUsPoint(this._regions,o.default.worldToData(this._params.lps2IJK,this._handles[1].worldPosition)),n=Math.abs(e.y/100),i=Math.abs(t.y/100),r=Math.abs(e.x),a=Math.abs(t.x),s=this._vMax===n?r:a;this._vMax=Math.max(n,i),this._gMax=4*Math.pow(this._vMax,2);var l=this._vMax/Math.sqrt(2),c=(n-l)/(i-l),h=n/i;this._pht=1===c?Number.POSITIVE_INFINITY:1e3*Math.abs(s-(r-c*a)/(1-c)),this._mva=220/this._pht,this._dt=1===h?Number.POSITIVE_INFINITY:1e3*Math.abs(s-(r-h*a)/(1-h)),this._ds=0===this._dt?Number.POSITIVE_INFINITY:this._vMax/this._dt*1e3},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0)},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this.getLineData(this._handles[0].screenPosition,this._handles[1].screenPosition);this._line.style.transform="translate3D("+e.transformX+"px, "+e.transformY+"px, 0)\n rotate("+e.transformAngle+"rad)",this._line.style.width=e.length+"px",this._label.querySelector(".vmax").innerHTML="Vmax: "+this._vMax.toFixed(2)+" m/s",this._label.querySelector(".gmax").innerHTML="Gmax: "+this._gMax.toFixed(2)+" mmhg",this._label.querySelector(".pht").innerHTML="PHT: "+this._pht.toFixed(1)+" ms",this._label.querySelector(".mva").innerHTML="MVA: "+this._mva.toFixed(2)+" cm²",this._label.querySelector(".dt").innerHTML="DT: "+this._dt.toFixed(1)+" ms",this._label.querySelector(".ds").innerHTML="DS: "+this._ds.toFixed(2)+" m/s²";var t=Math.abs(e.transformAngle);t>Math.PI/2&&(t=Math.PI-t);var n=Math.tan(t)2*n?this._handles[1].screenPosition.clone().sub(i):this._handles[1].screenPosition.clone().add(i),o=this.adjustLabelTransform(this._label,r);this._label.style.transform="translate3D("+o.x+"px, "+o.y+"px, 0)"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._label.style.borderColor=this._color},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._line),this._container.removeChild(this._label),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,t.prototype.free.call(this)},n.prototype.getMeasurements=function(){return{vMax:this._vMax,gMax:this._gMax,pht:this._pht,mva:this._mva,dt:this._dt,ds:this._ds}},a(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles[0].worldPosition.copy(e),this._handles[1].worldPosition.copy(e),this._worldPosition.copy(e),this.update()}}]),n}(t)};t.default=h()},"./src/widgets/widgets.rectangle.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsRectangle",(function(){return h}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=n("./src/core/core.utils.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var c=l(this,t.call(this,i,o,a));c._widgetType="Rectangle",c._stack=a.stack,c._calibrationFactor=a.calibrationFactor||null,c._area=null,c._units=c._calibrationFactor||a.stack.frame[a.frameIndex].pixelSpacing?"cm²":"units",c._moving=!1,c._domHovered=!1,c._material=null,c._geometry=null,c._mesh=null,c._rectangle=null,c._label=null,c._handles=[];for(var h=Object(r.widgetsHandle)(e),u=void 0,d=0;d<2;d++)u=new h(i,o,a),c.add(u),c._handles.push(u);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._moveHandle=new h(i,o,a),c.add(c._moveHandle),c._handles.push(c._moveHandle),c._moveHandle.hide(),c.create(),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.addEventListeners(),c}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._rectangle.addEventListener("mouseenter",this.onHover),this._rectangle.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._rectangle.removeEventListener("mouseenter",this.onHover),this._rectangle.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles[0].onStart(e),this._handles[1].onStart(e),this._active=this._handles[0].active||this._handles[1].active||this._domHovered,this._domHovered&&!this._handles[1].tracking&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){var t=this;if(this._active){var n=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(t._moveHandle.worldPosition.clone().sub(n))})),this.updateRoI(!0)}else this.onHover(null);this._handles[0].onMove(e),this._handles[1].onMove(e),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[1].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active,this._dragged=!1,this._moving=!1,this.updateRoI(),this.update())},n.prototype.hideDOM=function(){this._handles.forEach((function(e){return e.hideDOM()})),this._rectangle.style.display="none",this._label.style.display="none"},n.prototype.showDOM=function(){this._handles[0].showDOM(),this._handles[1].showDOM(),this._rectangle.style.display="",this._label.style.display=""},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.PlaneGeometry(1,1),this._material=new e.MeshBasicMaterial({side:e.DoubleSide}),this._material.transparent=!0,this._material.opacity=.2,this.updateMeshColor(),this._mesh=new e.Mesh(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._rectangle=document.createElement("div"),this._rectangle.className="widgets-rectangle",this._container.appendChild(this._rectangle),this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div"),t=document.createElement("div");t.className="mean-sd",e.appendChild(t);var n=document.createElement("div");n.className="max-min",e.appendChild(n);var i=document.createElement("div");i.className="area",e.appendChild(i),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update(),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){if(this._geometry){var t=(new e.Vector3).subVectors(this._handles[1].worldPosition,this._handles[0].worldPosition).projectOnVector(this._camera.up);this._geometry.vertices[0].copy(this._handles[0].worldPosition),this._geometry.vertices[1].copy((new e.Vector3).addVectors(this._handles[0].worldPosition,t)),this._geometry.vertices[2].copy((new e.Vector3).subVectors(this._handles[1].worldPosition,t)),this._geometry.vertices[3].copy(this._handles[1].worldPosition),this._geometry.verticesNeedUpdate=!0,this._geometry.computeBoundingSphere()}},n.prototype.updateRoI=function(e){var t=this._label.querySelector(".mean-sd"),n=this._label.querySelector(".max-min");if(e)return t.innerHTML="",void(n.innerHTML="");var i=o.default.getRoI(this._mesh,this._camera,this._stack);null!==i?(t.innerHTML="Mean: "+i.mean.toFixed(1)+" / SD: "+i.sd.toFixed(1),n.innerHTML="Max: "+i.max.toFixed()+" / Min: "+i.min.toFixed()):(t.innerHTML="",n.innerHTML="")},n.prototype.updateDOMColor=function(){this._rectangle.style.borderColor=this._color,this._label.style.borderColor=this._color},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this._stack.frame[this._params.frameIndex].ultrasoundRegions||[];if(this._area=o.default.getGeometryArea(this._geometry),this._calibrationFactor)this._area*=Math.pow(this._calibrationFactor,2);else if(e&&e.length>0&&this._stack.lps2IJK){var t=this.getRegionByXY(e,o.default.worldToData(this._stack.lps2IJK,this._handles[0].worldPosition)),n=this.getRegionByXY(e,o.default.worldToData(this._stack.lps2IJK,this._handles[1].worldPosition));null!==t&&null!==n&&t===n&&"cm"===e[t].unitsX&&"cm"===e[t].unitsY?(this._area*=Math.pow(e[t].deltaX,2),this._units="cm²"):this._stack.frame[this._params.frameIndex].pixelSpacing?(this._area/=100,this._units="cm²"):this._units="units"}else"cm²"===this._units&&(this._area/=100);"units"!==this._units||this._label.hasAttribute("title")?"units"!==this._units&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title","Calibration is required to display the area in cm²"),this._label.style.color=this._colors.error),this._label.querySelector(".area").innerHTML="Area: "+this._area.toFixed(2)+" "+this._units;var i=this.getRectData(this._handles[0].screenPosition,this._handles[1].screenPosition),r=this.adjustLabelTransform(this._label,this._handles[1].screenPosition.clone().add(i.paddingVector.multiplyScalar(15+this._label.offsetHeight/2)));this._rectangle.style.transform="translate3D("+i.transformX+"px, "+i.transformY+"px, 0)",this._rectangle.style.width=i.width+"px",this._rectangle.style.height=i.height+"px",this._label.style.transform="translate3D("+r.x+"px,"+r.y+"px, 0)"},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._rectangle),this._container.removeChild(this._label),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,this._stack=null,t.prototype.free.call(this)},n.prototype.getMeasurements=function(){return{area:this._area,units:this._units}},a(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles[0].worldPosition.copy(e),this._handles[1].worldPosition.copy(e),this._worldPosition.copy(e),this.update()}},{key:"calibrationFactor",get:function(){return this._calibrationFactor},set:function(e){this._calibrationFactor=e,this._units="cm²",this.update()}}]),n}(t)};t.default=h()},"./src/widgets/widgets.ruler.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsRuler",(function(){return c}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,n);var c=s(this,t.call(this,i,o,l));c._widgetType="Ruler",c._calibrationFactor=l.calibrationFactor||null,c._distance=null,c._units=c._calibrationFactor||l.pixelSpacing?"mm":"units",c._moving=!1,c._domHovered=!1,c._material=null,c._geometry=null,c._mesh=null,c._line=null,c._label=null,c._handles=[];for(var h=Object(r.widgetsHandle)(e),u=void 0,d=0;d<2;d++)u=new h(i,o,l),c.add(u),c._handles.push(u);return c._handles[1].active=!0,c._handles[1].tracking=!0,c._moveHandle=new h(i,o,l),c.add(c._moveHandle),c._handles.push(c._moveHandle),c._moveHandle.hide(),c.create(),c.onMove=c.onMove.bind(c),c.onHover=c.onHover.bind(c),c.addEventListeners(),c}return l(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._line.addEventListener("mouseenter",this.onHover),this._line.addEventListener("mouseleave",this.onHover),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._line.removeEventListener("mouseenter",this.onHover),this._line.removeEventListener("mouseleave",this.onHover),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh(),this._hovered=this._handles[0].hovered||this._handles[1].hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handles[0].onStart(e),this._handles[1].onStart(e),this._active=this._handles[0].active||this._handles[1].active||this._domHovered,this._domHovered&&!this._handles[1].tracking&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){var t=this;if(this._active){var n=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handles.slice(0,-1).forEach((function(e){e.worldPosition.add(t._moveHandle.worldPosition.clone().sub(n))}))}else this.onHover(null);this._handles[0].onMove(e),this._handles[1].onMove(e),this.update()},n.prototype.onEnd=function(){this._handles[0].onEnd(),this._handles[1].tracking&&this._handles[0].screenPosition.distanceTo(this._handles[1].screenPosition)<10||(this._dragged||!this._active||this._handles[1].tracking||(this._selected=!this._selected,this._handles[0].selected=this._selected),this._dragged||!this._handles[1].tracking?(this._handles[1].tracking=!1,this._handles[1].onEnd()):this._handles[1].tracking=!1,this._handles[1].selected=this._selected,this._active=this._handles[0].active||this._handles[1].active,this._dragged=!1,this._moving=!1,this.update())},n.prototype.create=function(){this.createMesh(),this.createDOM()},n.prototype.createMesh=function(){this._geometry=new e.Geometry,this._geometry.vertices.push(this._handles[0].worldPosition),this._geometry.vertices.push(this._handles[1].worldPosition),this._material=new e.LineBasicMaterial,this.updateMeshColor(),this._mesh=new e.Line(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.createDOM=function(){this._line=document.createElement("div"),this._line.className="widgets-line",this._container.appendChild(this._line),this._label=document.createElement("div"),this._label.className="widgets-label",this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.hideDOM=function(){this._line.style.display="none",this._label.style.display="none",this._handles.forEach((function(e){return e.hideDOM()}))},n.prototype.showDOM=function(){this._line.style.display="",this._label.style.display="",this._handles[0].showDOM(),this._handles[1].showDOM()},n.prototype.update=function(){this.updateColor(),this._handles[0].update(),this._handles[1].update();var e=this.getDistanceData(this._handles[0].worldPosition,this._handles[1].worldPosition,this._calibrationFactor);this._distance=e.distance,e.units&&(this._units=e.units),this.updateMeshColor(),this.updateMeshPosition(),this.updateDOM()},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateMeshPosition=function(){this._geometry&&(this._geometry.verticesNeedUpdate=!0)},n.prototype.updateDOM=function(){this.updateDOMColor();var e=this.getLineData(this._handles[0].screenPosition,this._handles[1].screenPosition);this._line.style.transform="translate3D("+e.transformX+"px, "+e.transformY+"px, 0)\n rotate("+e.transformAngle+"rad)",this._line.style.width=e.length+"px","units"!==this._units||this._label.hasAttribute("title")?"units"!==this._units&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text):(this._label.setAttribute("title","Calibration is required to display the distance in mm"),this._label.style.color=this._colors.error),this._label.innerHTML=this._distance.toFixed(2)+" "+this._units;var t=Math.abs(e.transformAngle);t>Math.PI/2&&(t=Math.PI-t);var n=Math.tan(t)2*n?this._handles[1].screenPosition.clone().sub(i):this._handles[1].screenPosition.clone().add(i),o=this.adjustLabelTransform(this._label,r);this._label.style.transform="translate3D("+o.x+"px, "+o.y+"px, 0)"},n.prototype.updateDOMColor=function(){this._line.style.backgroundColor=this._color,this._label.style.borderColor=this._color},n.prototype.free=function(){var e=this;this.removeEventListeners(),this._handles.forEach((function(t){e.remove(t),t.free()})),this._handles=[],this._container.removeChild(this._line),this._container.removeChild(this._label),this.remove(this._mesh),this._mesh.geometry.dispose(),this._mesh.geometry=null,this._mesh.material.dispose(),this._mesh.material=null,this._mesh=null,this._geometry.dispose(),this._geometry=null,this._material.vertexShader=null,this._material.fragmentShader=null,this._material.uniforms=null,this._material.dispose(),this._material=null,t.prototype.free.call(this)},n.prototype.getMeasurements=function(){return{distance:this._distance,units:this._units}},o(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handles.forEach((function(t){return t.targetMesh=e})),this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handles[0].worldPosition.copy(e),this._handles[1].worldPosition.copy(e),this._worldPosition.copy(e),this.update()}},{key:"calibrationFactor",get:function(){return this._calibrationFactor},set:function(e){this._calibrationFactor=e,this._units="mm",this.update()}}]),n}(t)};t.default=c()},"./src/widgets/widgets.velocityTimeIntegral.js":function(e,t,n){"use strict";n.r(t),n.d(t,"widgetsVelocityTimeIntegral",(function(){return h}));var i=n("./src/widgets/widgets.base.ts"),r=n("./src/widgets/widgets.handle.js"),o=n("./src/core/core.utils.js"),a=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,a){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};s(this,n);var h=l(this,t.call(this,i,a,c));if(h._widgetType="VelocityTimeIntegral",h._regions=c.ultrasoundRegions||[],h._regions.length<1)throw new Error("Ultrasound regions should not be empty!");if(h._vMax=null,h._vMean=null,h._gMax=null,h._gMean=null,h._envTi=null,h._vti=null,h._extraInfo=null,h._initialized=!1,h._isHandleActive=!0,h._domHovered=!1,h._initialRegion=h.getRegionByXY(h._regions,o.default.worldToData(c.lps2IJK,c.worldPosition)),null===h._initialRegion)throw new Error("Invalid initial UltraSound region!");h._usPoints=[],h._material=null,h._geometry=null,h._mesh=null,h._lines=[],h._label=null,h._handles=[];var u=Object(r.widgetsHandle)(e),d=new u(i,a,c);return h.add(d),h._handles.push(d),h._moveHandle=new u(i,a,c),h.add(h._moveHandle),h._moveHandle.hide(),h.onMove=h.onMove.bind(h),h.onHover=h.onHover.bind(h),h.create(),h.addEventListeners(),h}return c(n,t),n.prototype.addEventListeners=function(){this._container.addEventListener("wheel",this.onMove),this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover)},n.prototype.removeEventListeners=function(){this._container.removeEventListener("wheel",this.onMove),this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover)},n.prototype.onHover=function(e){e&&this.hoverDom(e),this.hoverMesh();var t=!1;this._handles.forEach((function(e){return t=t||e.hovered})),this._hovered=t||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverMesh=function(){},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.onStart=function(e){var t=!1;this._moveHandle.onMove(e,!0),this._handles.forEach((function(n){n.onStart(e),t=t||n.active})),this._active=t||this._domHovered,this._isHandleActive=t,this._domHovered&&(this._controls.enabled=!1),this.update()},n.prototype.onMove=function(t){if(this.active){var n=this._moveHandle.worldPosition.clone();this._moveHandle.onMove(t,!0);var i=this._moveHandle.worldPosition.clone().sub(n);if(!this.isCorrectRegion(i))return void this._moveHandle.worldPosition.copy(n);if(this._initialized)this.updateDOMContent(!0),(!this._isHandleActive||this._handles[this._handles.length-2].active||this._handles[this._handles.length-1].active)&&(this._handles.forEach((function(e){e.worldPosition.add(i)})),this._isHandleActive=!1,this._handles[this._handles.length-2].active=!1,this._handles[this._handles.length-1].active=!1,this._controls.enabled=!1);else{this._handles[this._handles.length-1].hovered=!1,this._handles[this._handles.length-1].active=!1,this._handles[this._handles.length-1].tracking=!1;var o=new(Object(r.widgetsHandle)(e))(this._targetMesh,this._controls,this._params);o.hovered=!0,o.active=!0,o.tracking=!0,this.add(o),this._handles.push(o),this.createLine()}this._dragged=!0}else this.onHover(null);this._handles.forEach((function(e){e.onMove(t)})),this.active&&this._handles.length>2&&this.pushPopHandle(),this.update()},n.prototype.onEnd=function(){var e=this;if(!(this._handles.length<3)){var t=!1;this._handles.slice(0,-1).forEach((function(e){e.onEnd(),t=t||e.active})),this._dragged||!this._handles[this._handles.length-1].tracking?(this._handles[this._handles.length-1].tracking=!1,this._handles[this._handles.length-1].onEnd()):this._handles[this._handles.length-1].tracking=!1,!this._dragged&&this._initialized||(this.finalize(),this.updateDOMContent()),!this._dragged&&this._active&&(this._selected=!this._selected,this._handles.forEach((function(t){return t.selected=e._selected}))),this._active=t||this._handles[this._handles.length-1].active,this._isHandleActive=t,this._dragged=!1,this._initialized=!0,this.update()}},n.prototype.isCorrectRegion=function(e){var t=this,n=!0;return this._handles.forEach((function(i,r){!i.active&&t._isHandleActive||(n=n&&t.checkHandle(r,e))})),n},n.prototype.checkHandle=function(e,t){var n=this.getRegionByXY(this._regions,o.default.worldToData(this._params.lps2IJK,this._handles[e].worldPosition.clone().add(t)));return null!==n&&n===this._initialRegion&&"cm/sec"===this._regions[n].unitsY},n.prototype.create=function(){this.createMaterial(),this.createDOM()},n.prototype.createMaterial=function(){this._material=new e.LineBasicMaterial},n.prototype.createDOM=function(){this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div");["vmax","vmean","gmax","gmean","envti","vti","info"].forEach((function(t){var n=document.createElement("div");n.className=t,e.appendChild(n)})),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.createLine=function(){var e=document.createElement("div");e.className="widgets-line",e.addEventListener("mouseenter",this.onHover),e.addEventListener("mouseleave",this.onHover),this._lines.push(e),this._container.appendChild(e)},n.prototype.pushPopHandle=function(){var e=this._handles[this._handles.length-3],t=this._handles[this._handles.length-2],n=this._handles[this._handles.length-1],i=this.isPointOnLine(e.worldPosition,t.worldPosition,n.worldPosition);return(i||e.screenPosition.distanceTo(n.screenPosition)<25)&&(this.remove(t),t.free(),this._handles[this._handles.length-2]=n,this._handles.pop(),this._container.removeChild(this._lines.pop())),i},n.prototype.isPointOnLine=function(t,n,i){return!(new e.Vector3).crossVectors(t.clone().sub(i),n.clone().sub(i)).length()},n.prototype.finalize=function(){var t=this;this._initialized&&this._handles.splice(-2).forEach((function(e){t.remove(e),e.free()}));var n=o.default.worldToData(this._params.lps2IJK,this._handles[0]._worldPosition),i=o.default.worldToData(this._params.lps2IJK,this._handles[this._handles.length-1]._worldPosition),a=this._regions[this.getRegionByXY(this._regions,n)],s=a.y0+(a.axisY||0),l=Object(r.widgetsHandle)(e),c={hideHandleMesh:this._params.hideHandleMesh||!1};for(n.y=s,i.y=s,this._usPoints=[this.getPointInRegion(a,i),this.getPointInRegion(a,n)],c.worldPosition=i.applyMatrix4(this._params.ijk2LPS),this._handles.push(new l(this._targetMesh,this._controls,c)),this.add(this._handles[this._handles.length-1]),c.worldPosition=n.applyMatrix4(this._params.ijk2LPS),this._handles.push(new l(this._targetMesh,this._controls,c)),this.add(this._handles[this._handles.length-1]);this._lines.lengthe._vMax)&&(e._vMax=h),n.xMin=Math.min(c.x,n.xMin),n.xMax=Math.max(c.x,n.xMax),n.yMin=Math.min(c.y,n.yMin),n.yMax=Math.max(c.y,n.yMax),a){var d=Math.abs(c.x-a);s+=d,e._vMean+=d*(i+h)/2,e._gMean+=d*(r+u)/2}i=h,r=u,a=c.x,e._usPoints.push(c)})),this._gMax=4*Math.pow(this._vMax,2),this._vMean/=s,this._gMean/=s,this._envTi=1e3*s,this._vti=this.getArea(this._usPoints),this._shapeWarn=n.xMax-n.xMin!==s||n.yMin<0!=n.yMax<0},n.prototype.updateMesh=function(){var t=this;this._mesh&&this.remove(this._mesh),this._geometry=new e.Geometry,this._handles.forEach((function(e){return t._geometry.vertices.push(e.worldPosition)})),this._geometry.vertices.push(this._handles[0].worldPosition),this._geometry.verticesNeedUpdate=!0,this.updateMeshColor(),this._mesh=new e.Line(this._geometry,this._material),this._mesh.visible=!0,this.add(this._mesh)},n.prototype.updateMeshColor=function(){this._material&&this._material.color.set(this._color)},n.prototype.updateDOMColor=function(){var e=this;this._handles.length>=2&&this._lines.forEach((function(t){return t.style.backgroundColor=e._color})),this._label.style.borderColor=this._color},n.prototype.updateDOMContent=function(e){var t=this._label.querySelector(".vmax"),n=this._label.querySelector(".vmean"),i=this._label.querySelector(".gmax"),r=this._label.querySelector(".gmean"),o=this._label.querySelector(".envti"),a=this._label.querySelector(".vti"),s=this._label.querySelector(".info");if(e)return t.innerHTML="",n.innerHTML="",i.innerHTML="",r.innerHTML="",o.innerHTML="",a.innerHTML="",void(s.innerHTML="");this.updateValues(),this._shapeWarn&&!this._label.hasAttribute("title")?(this._label.setAttribute("title","Values may be incorrect due to invalid curve."),this._label.style.color=this._colors.error):!this._shapeWarn&&this._label.hasAttribute("title")&&(this._label.removeAttribute("title"),this._label.style.color=this._colors.text),t.innerHTML="Vmax: "+this._vMax.toFixed(2)+" m/s",n.innerHTML="Vmean: "+this._vMean.toFixed(2)+" m/s",i.innerHTML="Gmax: "+this._gMax.toFixed(2)+" mmhg",r.innerHTML="Gmean: "+this._gMean.toFixed(2)+" mmhg",o.innerHTML="Env.Ti: "+this._envTi.toFixed(1)+" ms",a.innerHTML="VTI: "+this._vti.toFixed(2)+" cm",s.innerHTML=this._extraInfo},n.prototype.updateDOMPosition=function(){var e=this;if(!(this._handles.length<2)){var t=null;this._lines.forEach((function(n,i){var r=e.getLineData(e._handles[i].screenPosition,e._handles[i+1===e._handles.length?0:i+1].screenPosition);n.style.transform="translate3D("+r.transformX+"px, "+r.transformY+"px, 0)\n rotate("+r.transformAngle+"rad)",n.style.width=r.length+"px",(null===t||t.y0&&void 0!==arguments[0]?arguments[0]:window.THREE;if(void 0===e||void 0===e.Object3D)return null;var t=Object(i.widgetsBase)(e);return function(t){function n(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};l(this,n);var s=c(this,t.call(this,i,o,a));s._widgetType="VoxelProbe",s._stack=a.stack,s._container.style.cursor="pointer",s._controls.enabled=!1,s._initialized=!1,s._active=!0,s._moving=!0,s._domHovered=!1,s._label=null;var h=Object(r.widgetsHandle)(e);return s._handle=new h(i,o,a),s.add(s._handle),s._moveHandle=new h(i,o,a),s.add(s._moveHandle),s._moveHandle.hide(),s.create(),s.onMove=s.onMove.bind(s),s.onHover=s.onHover.bind(s),s.addEventListeners(),s}return h(n,t),n.prototype.addEventListeners=function(){this._label.addEventListener("mouseenter",this.onHover),this._label.addEventListener("mouseleave",this.onHover),this._container.addEventListener("wheel",this.onMove)},n.prototype.removeEventListeners=function(){this._label.removeEventListener("mouseenter",this.onHover),this._label.removeEventListener("mouseleave",this.onHover),this._container.removeEventListener("wheel",this.onMove)},n.prototype.onStart=function(e){this._moveHandle.onMove(e,!0),this._handle.onStart(e),this._active=this._handle.active||this._domHovered,this._domHovered&&(this._moving=!0,this._controls.enabled=!1),this.update()},n.prototype.onMove=function(e){if(this._active){var t=this._moveHandle.worldPosition.clone();this._dragged=!0,this._moveHandle.onMove(e,!0),this._moving&&this._handle.worldPosition.add(this._moveHandle.worldPosition.clone().sub(t))}else this.onHover(null);this._handle.onMove(e),this.update()},n.prototype.onEnd=function(){this._handle.onEnd(),!this._dragged&&this._active&&this._initialized&&(this._selected=!this._selected,this._handle.selected=this._selected),this._initialized=!0,this._active=this._handle.active,this._dragged=!1,this._moving=!1,this.update()},n.prototype.onHover=function(e){e&&this.hoverDom(e),this._hovered=this._handle.hovered||this._domHovered,this._container.style.cursor=this._hovered?"pointer":"default"},n.prototype.hoverDom=function(e){this._domHovered="mouseenter"===e.type},n.prototype.create=function(){this.createVoxel(),this.createDOM()},n.prototype.createVoxel=function(){this._voxel=new o.default,this._voxel.id=this.id},n.prototype.createDOM=function(){this._label=document.createElement("div"),this._label.className="widgets-label";var e=document.createElement("div"),t=document.createElement("div");t.className="lpsPosition",e.appendChild(t);var n=document.createElement("div");n.className="ijkPosition",e.appendChild(n);var i=document.createElement("div");i.className="value",e.appendChild(i),this._label.appendChild(e),this._container.appendChild(this._label),this.updateDOMColor()},n.prototype.update=function(){this.updateColor(),this._handle.update(),this._worldPosition.copy(this._handle.worldPosition),this.updateVoxel(),this.updateDOM()},n.prototype.updateVoxel=function(){this._voxel.worldCoordinates=this._worldPosition,this._voxel.dataCoordinates=a.default.worldToData(this._stack.lps2IJK,this._worldPosition);var e=a.default.getPixelData(this._stack,this._voxel.dataCoordinates);this._voxel.value=null===e||this._stack.numberOfChannels>1?"NA":a.default.rescaleSlopeIntercept(e,this._stack.rescaleSlope,this._stack.rescaleIntercept).toFixed()},n.prototype.updateDOM=function(){var e=this._label.querySelector(".lpsPosition"),t=this._label.querySelector(".ijkPosition"),n=this._label.querySelector(".value");e.innerHTML="LPS: \n "+this._voxel.worldCoordinates.x.toFixed(2)+" :\n "+this._voxel.worldCoordinates.y.toFixed(2)+" :\n "+this._voxel.worldCoordinates.z.toFixed(2),t.innerHTML="IJK: \n "+this._voxel.dataCoordinates.x+" :\n "+this._voxel.dataCoordinates.y+" :\n "+this._voxel.dataCoordinates.z,n.innerHTML="Value: "+this._voxel.value,this.updateDOMColor();var i=this.adjustLabelTransform(this._label,this._handle.screenPosition,!0);this._label.style.transform="translate3D("+i.x+"px, "+i.y+"px, 0)"},n.prototype.updateDOMColor=function(){this._label.style.borderColor=this._color},n.prototype.free=function(){this.removeEventListeners(),this.remove(this._handle),this._handle.free(),this._handle=null,this.remove(this._moveHandle),this._moveHandle.free(),this._moveHandle=null,this._container.removeChild(this._label),this._stack=null,this._voxel=null,t.prototype.free.call(this)},n.prototype.hideDOM=function(){this._label.style.display="none",this._handle.hideDOM()},n.prototype.showDOM=function(){this._label.style.display="",this._handle.showDOM()},s(n,[{key:"targetMesh",get:function(){return this._targetMesh},set:function(e){this._targetMesh=e,this._handle.targetMesh=e,this._moveHandle.targetMesh=e,this.update()}},{key:"worldPosition",get:function(){return this._worldPosition},set:function(e){this._handle.worldPosition.copy(e),this._moveHandle.worldPosition.copy(e),this._worldPosition.copy(e),this.update()}},{key:"active",get:function(){return this._active},set:function(e){this._active=e,this._controls.enabled=!this._active,this.update()}}]),n}(t)};t.default=u()},0:function(e,t,n){e.exports=n("./src/ami.ts")}})},e.exports=t()},810:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),o=n(645),a=n.n(o)()(r());a.push([e.id,"html,\nbody {\n margin: 0;\n /*background-color: black;*/\n /*z-index: -999;*/\n}\n\n.abithree_canvas {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: block;\n z-index: -1;\n}\n.abithree_container_root {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n}\n.abithree_container_root > div {\n border: 1px solid grey;\n}\n\n.force-touch-styles {\n position: fixed;\n z-index: 1000;\n}\n",""]);const s=a},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(i)for(var s=0;s0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),n&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=n):h[2]=n),r&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=r):h[4]="".concat(r)),t.push(h))}},t}},81:e=>{"use strict";e.exports=function(e){return e[1]}},666:e=>{var t=function(e){"use strict";var t,n=Object.prototype,i=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var r=t&&t.prototype instanceof g?t:g,o=Object.create(r.prototype),a=new k(i||[]);return o._invoke=function(e,t,n){var i=u;return function(r,o){if(i===f)throw new Error("Generator is already running");if(i===p){if("throw"===r)throw o;return C()}for(n.method=r,n.arg=o;;){var a=n.delegate;if(a){var s=M(a,n);if(s){if(s===m)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===u)throw i=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=f;var l=h(e,t,n);if("normal"===l.type){if(i=n.done?p:d,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=p,n.method="throw",n.arg=l.arg)}}}(e,n,a),o}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var u="suspendedStart",d="suspendedYield",f="executing",p="completed",m={};function g(){}function _(){}function y(){}var v={};l(v,o,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(I([])));w&&w!==n&&i.call(w,o)&&(v=w);var x=y.prototype=g.prototype=Object.create(v);function A(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function n(r,o,a,s){var l=h(e[r],e,o);if("throw"!==l.type){var c=l.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){c.value=e,a(c)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var r;this._invoke=function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}}function M(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,M(e,n),"throw"===n.method))return m;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return m}var r=h(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,m;var o=r.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;T(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:I(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,i=0;i{"use strict";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={id:i,exports:{}};return e[i](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.r(i),n.d(i,{CameraHelper:()=>Op,ColorGUIHelper:()=>Dp,ImageLoader:()=>zp,Scenes:()=>nm,createTestMesh:()=>Pp,loadGLTFFile:()=>qp,loadMTLFile:()=>Jp,loadObjFile:()=>Xp});var e={};n.r(e),n.d(e,{ACESFilmicToneMapping:()=>ne,AddEquation:()=>M,AddOperation:()=>Q,AdditiveAnimationBlendMode:()=>Zt,AdditiveBlending:()=>w,AlphaFormat:()=>Oe,AlwaysDepth:()=>z,AlwaysStencilFunc:()=>Sn,AmbientLight:()=>vu,AmbientLightProbe:()=>zu,AnimationClip:()=>Eh,AnimationLoader:()=>Bh,AnimationMixer:()=>vd,AnimationObjectGroup:()=>_d,AnimationUtils:()=>fh,ArcCurve:()=>zh,ArrayCamera:()=>Ls,ArrowHelper:()=>cf,Audio:()=>Ku,AudioAnalyser:()=>rd,AudioContext:()=>Nu,AudioListener:()=>Qu,AudioLoader:()=>ju,AxesHelper:()=>hf,AxisHelper:()=>ip,BackSide:()=>m,BasicDepthPacking:()=>on,BasicShadowMap:()=>h,BinaryTextureLoader:()=>lp,Bone:()=>fl,BooleanKeyframeTrack:()=>vh,BoundingBoxHelper:()=>rp,Box2:()=>kd,Box3:()=>Fi,Box3Helper:()=>rf,BoxBufferGeometry:()=>go,BoxGeometry:()=>mo,BoxHelper:()=>nf,BufferAttribute:()=>Ar,BufferGeometry:()=>zr,BufferGeometryLoader:()=>Tu,ByteType:()=>Me,Cache:()=>kh,Camera:()=>wo,CameraHelper:()=>$d,CanvasRenderer:()=>up,CanvasTexture:()=>Nl,CatmullRomCurve3:()=>Xh,CineonToneMapping:()=>te,CircleBufferGeometry:()=>eh,CircleGeometry:()=>$c,ClampToEdgeWrapping:()=>de,Clock:()=>Zu,ClosedSplineCurve3:()=>ep,Color:()=>fr,ColorKeyframeTrack:()=>bh,CompressedTexture:()=>Gl,CompressedTextureLoader:()=>Dh,ConeBufferGeometry:()=>Kc,ConeGeometry:()=>Qc,CubeCamera:()=>So,CubeGeometry:()=>mo,CubeReflectionMapping:()=>oe,CubeRefractionMapping:()=>ae,CubeTexture:()=>qo,CubeTextureLoader:()=>Gh,CubeUVReflectionMapping:()=>ce,CubeUVRefractionMapping:()=>he,CubicBezierCurve:()=>Kh,CubicBezierCurve3:()=>$h,CubicInterpolant:()=>mh,CullFaceBack:()=>s,CullFaceFront:()=>l,CullFaceFrontBack:()=>c,CullFaceNone:()=>a,Curve:()=>jh,CurvePath:()=>au,CustomBlending:()=>S,CustomToneMapping:()=>ie,CylinderBufferGeometry:()=>qc,CylinderGeometry:()=>Jc,Cylindrical:()=>Ed,DataTexture:()=>Eo,DataTexture2DArray:()=>Qo,DataTexture3D:()=>Ko,DataTextureLoader:()=>Oh,DecrementStencilOp:()=>fn,DecrementWrapStencilOp:()=>mn,DefaultLoadingManager:()=>Ch,DepthFormat:()=>ze,DepthStencilFormat:()=>Ue,DepthTexture:()=>jl,DirectionalLight:()=>yu,DirectionalLightHelper:()=>qd,DirectionalLightShadow:()=>_u,DiscreteInterpolant:()=>_h,DodecahedronBufferGeometry:()=>$l,DodecahedronGeometry:()=>Kl,DoubleSide:()=>g,DstAlphaFactor:()=>O,DstColorFactor:()=>G,DynamicBufferAttribute:()=>Vf,DynamicCopyUsage:()=>Ln,DynamicDrawUsage:()=>En,DynamicReadUsage:()=>In,EdgesGeometry:()=>Xc,EdgesHelper:()=>op,EllipseCurve:()=>Hh,EqualDepth:()=>W,EqualStencilFunc:()=>vn,EquirectangularReflectionMapping:()=>se,EquirectangularRefractionMapping:()=>le,Euler:()=>si,EventDispatcher:()=>Bn,ExtrudeBufferGeometry:()=>Bc,ExtrudeGeometry:()=>Rc,Face3:()=>_r,Face4:()=>If,FaceColors:()=>Rf,FileLoader:()=>Rh,FlatShading:()=>_,Float32Attribute:()=>Kf,Float32BufferAttribute:()=>Pr,Float64Attribute:()=>$f,Float64BufferAttribute:()=>Lr,FloatType:()=>Ce,Fog:()=>js,FogExp2:()=>Ns,Font:()=>Du,FontLoader:()=>Fu,FrontSide:()=>p,Frustum:()=>Io,GammaEncoding:()=>Kt,Geometry:()=>po,GeometryUtils:()=>hp,GreaterDepth:()=>Y,GreaterEqualDepth:()=>Z,GreaterEqualStencilFunc:()=>An,GreaterStencilFunc:()=>wn,GridHelper:()=>Wd,Group:()=>Rs,HalfFloatType:()=>Pe,HemisphereLight:()=>hu,HemisphereLightHelper:()=>Vd,HemisphereLightProbe:()=>Hu,IcosahedronBufferGeometry:()=>Ql,IcosahedronGeometry:()=>ql,ImageBitmapLoader:()=>Ru,ImageLoader:()=>Fh,ImageUtils:()=>Hn,ImmediateRenderObject:()=>Ld,IncrementStencilOp:()=>dn,IncrementWrapStencilOp:()=>pn,InstancedBufferAttribute:()=>Eu,InstancedBufferGeometry:()=>Mu,InstancedInterleavedBuffer:()=>wd,InstancedMesh:()=>yl,Int16Attribute:()=>Xf,Int16BufferAttribute:()=>Tr,Int32Attribute:()=>qf,Int32BufferAttribute:()=>Ir,Int8Attribute:()=>Wf,Int8BufferAttribute:()=>Sr,IntType:()=>ke,InterleavedBuffer:()=>Hs,InterleavedBufferAttribute:()=>Us,Interpolant:()=>ph,InterpolateDiscrete:()=>Nt,InterpolateLinear:()=>jt,InterpolateSmooth:()=>Ht,InvertStencilOp:()=>gn,JSONLoader:()=>dp,KeepStencilOp:()=>hn,KeyframeTrack:()=>yh,LOD:()=>ll,LatheBufferGeometry:()=>Vc,LatheGeometry:()=>Uc,Layers:()=>li,LensFlare:()=>pp,LessDepth:()=>U,LessEqualDepth:()=>V,LessEqualStencilFunc:()=>bn,LessStencilFunc:()=>yn,Light:()=>cu,LightProbe:()=>xu,LightShadow:()=>uu,Line:()=>Ml,Line3:()=>Pd,LineBasicMaterial:()=>vl,LineCurve:()=>eu,LineCurve3:()=>tu,LineDashedMaterial:()=>uh,LineLoop:()=>Il,LinePieces:()=>Pf,LineSegments:()=>kl,LineStrip:()=>Cf,LinearEncoding:()=>qt,LinearFilter:()=>ve,LinearInterpolant:()=>gh,LinearMipMapLinearFilter:()=>Ae,LinearMipMapNearestFilter:()=>we,LinearMipmapLinearFilter:()=>xe,LinearMipmapNearestFilter:()=>be,LinearToneMapping:()=>$,Loader:()=>Ph,LoaderUtils:()=>Su,LoadingManager:()=>Ih,LogLuvEncoding:()=>en,LoopOnce:()=>Ot,LoopPingPong:()=>Gt,LoopRepeat:()=>Ft,LuminanceAlphaFormat:()=>je,LuminanceFormat:()=>Ne,MOUSE:()=>r,Material:()=>vr,MaterialLoader:()=>Au,Math:()=>Fn,MathUtils:()=>Fn,Matrix3:()=>Nn,Matrix4:()=>ri,MaxEquation:()=>I,Mesh:()=>ao,MeshBasicMaterial:()=>br,MeshDepthMaterial:()=>Es,MeshDistanceMaterial:()=>Ts,MeshFaceMaterial:()=>Df,MeshLambertMaterial:()=>ch,MeshMatcapMaterial:()=>hh,MeshNormalMaterial:()=>lh,MeshPhongMaterial:()=>ah,MeshPhysicalMaterial:()=>oh,MeshStandardMaterial:()=>rh,MeshToonMaterial:()=>sh,MinEquation:()=>k,MirroredRepeatWrapping:()=>fe,MixOperation:()=>q,MultiMaterial:()=>Of,MultiplyBlending:()=>A,MultiplyOperation:()=>J,NearestFilter:()=>pe,NearestMipMapLinearFilter:()=>ye,NearestMipMapNearestFilter:()=>ge,NearestMipmapLinearFilter:()=>_e,NearestMipmapNearestFilter:()=>me,NeverDepth:()=>H,NeverStencilFunc:()=>_n,NoBlending:()=>v,NoColors:()=>Lf,NoToneMapping:()=>K,NormalAnimationBlendMode:()=>Wt,NormalBlending:()=>b,NotEqualDepth:()=>X,NotEqualStencilFunc:()=>xn,NumberKeyframeTrack:()=>wh,Object3D:()=>xi,ObjectLoader:()=>Iu,ObjectSpaceNormalMap:()=>ln,OctahedronBufferGeometry:()=>Jl,OctahedronGeometry:()=>Xl,OneFactor:()=>P,OneMinusDstAlphaFactor:()=>F,OneMinusDstColorFactor:()=>N,OneMinusSrcAlphaFactor:()=>D,OneMinusSrcColorFactor:()=>R,OrthographicCamera:()=>gu,PCFShadowMap:()=>u,PCFSoftShadowMap:()=>d,PMREMGenerator:()=>Af,ParametricBufferGeometry:()=>Ul,ParametricGeometry:()=>zl,Particle:()=>Gf,ParticleBasicMaterial:()=>Hf,ParticleSystem:()=>Nf,ParticleSystemMaterial:()=>zf,Path:()=>su,PerspectiveCamera:()=>xo,Plane:()=>Ki,PlaneBufferGeometry:()=>Bo,PlaneGeometry:()=>Ro,PlaneHelper:()=>of,PointCloud:()=>Ff,PointCloudMaterial:()=>jf,PointLight:()=>mu,PointLightHelper:()=>jd,Points:()=>Dl,PointsMaterial:()=>Cl,PolarGridHelper:()=>Zd,PolyhedronBufferGeometry:()=>Wl,PolyhedronGeometry:()=>Vl,PositionalAudio:()=>id,PropertyBinding:()=>gd,PropertyMixer:()=>od,QuadraticBezierCurve:()=>nu,QuadraticBezierCurve3:()=>iu,Quaternion:()=>Yn,QuaternionKeyframeTrack:()=>Ah,QuaternionLinearInterpolant:()=>xh,REVISION:()=>t,RGBADepthPacking:()=>an,RGBAFormat:()=>Ge,RGBAIntegerFormat:()=>Je,RGBA_ASTC_10x10_Format:()=>yt,RGBA_ASTC_10x5_Format:()=>mt,RGBA_ASTC_10x6_Format:()=>gt,RGBA_ASTC_10x8_Format:()=>_t,RGBA_ASTC_12x10_Format:()=>vt,RGBA_ASTC_12x12_Format:()=>bt,RGBA_ASTC_4x4_Format:()=>st,RGBA_ASTC_5x4_Format:()=>lt,RGBA_ASTC_5x5_Format:()=>ct,RGBA_ASTC_6x5_Format:()=>ht,RGBA_ASTC_6x6_Format:()=>ut,RGBA_ASTC_8x5_Format:()=>dt,RGBA_ASTC_8x6_Format:()=>ft,RGBA_ASTC_8x8_Format:()=>pt,RGBA_BPTC_Format:()=>wt,RGBA_ETC2_EAC_Format:()=>at,RGBA_PVRTC_2BPPV1_Format:()=>it,RGBA_PVRTC_4BPPV1_Format:()=>nt,RGBA_S3TC_DXT1_Format:()=>Qe,RGBA_S3TC_DXT3_Format:()=>Ke,RGBA_S3TC_DXT5_Format:()=>$e,RGBDEncoding:()=>rn,RGBEEncoding:()=>$t,RGBEFormat:()=>He,RGBFormat:()=>Fe,RGBIntegerFormat:()=>Xe,RGBM16Encoding:()=>nn,RGBM7Encoding:()=>tn,RGB_ETC1_Format:()=>rt,RGB_ETC2_Format:()=>ot,RGB_PVRTC_2BPPV1_Format:()=>tt,RGB_PVRTC_4BPPV1_Format:()=>et,RGB_S3TC_DXT1_Format:()=>qe,RGFormat:()=>Ze,RGIntegerFormat:()=>Ye,RawShaderMaterial:()=>ih,Ray:()=>Xi,Raycaster:()=>xd,RectAreaLight:()=>bu,RedFormat:()=>Ve,RedIntegerFormat:()=>We,ReinhardToneMapping:()=>ee,RepeatWrapping:()=>ue,ReplaceStencilOp:()=>un,ReverseSubtractEquation:()=>T,RingBufferGeometry:()=>zc,RingGeometry:()=>Hc,SRGB8_ALPHA8_ASTC_10x10_Format:()=>Rt,SRGB8_ALPHA8_ASTC_10x5_Format:()=>Ct,SRGB8_ALPHA8_ASTC_10x6_Format:()=>Pt,SRGB8_ALPHA8_ASTC_10x8_Format:()=>Lt,SRGB8_ALPHA8_ASTC_12x10_Format:()=>Bt,SRGB8_ALPHA8_ASTC_12x12_Format:()=>Dt,SRGB8_ALPHA8_ASTC_4x4_Format:()=>xt,SRGB8_ALPHA8_ASTC_5x4_Format:()=>At,SRGB8_ALPHA8_ASTC_5x5_Format:()=>St,SRGB8_ALPHA8_ASTC_6x5_Format:()=>Mt,SRGB8_ALPHA8_ASTC_6x6_Format:()=>Et,SRGB8_ALPHA8_ASTC_8x5_Format:()=>Tt,SRGB8_ALPHA8_ASTC_8x6_Format:()=>kt,SRGB8_ALPHA8_ASTC_8x8_Format:()=>It,Scene:()=>Ai,SceneUtils:()=>fp,ShaderChunk:()=>Do,ShaderLib:()=>Oo,ShaderMaterial:()=>bo,ShadowMaterial:()=>nh,Shape:()=>lu,ShapeBufferGeometry:()=>Zc,ShapeGeometry:()=>Wc,ShapePath:()=>Bu,ShapeUtils:()=>Cc,ShortType:()=>Ee,Skeleton:()=>dl,SkeletonHelper:()=>Nd,SkinnedMesh:()=>cl,SmoothShading:()=>y,Sphere:()=>ji,SphereBufferGeometry:()=>jc,SphereGeometry:()=>Nc,Spherical:()=>Md,SphericalHarmonics3:()=>wu,Spline:()=>np,SplineCurve:()=>ru,SplineCurve3:()=>tp,SpotLight:()=>fu,SpotLightHelper:()=>Bd,SpotLightShadow:()=>du,Sprite:()=>rl,SpriteMaterial:()=>Vs,SrcAlphaFactor:()=>B,SrcAlphaSaturateFactor:()=>j,SrcColorFactor:()=>L,StaticCopyUsage:()=>Pn,StaticDrawUsage:()=>Mn,StaticReadUsage:()=>kn,StereoCamera:()=>Wu,StreamCopyUsage:()=>Rn,StreamDrawUsage:()=>Tn,StreamReadUsage:()=>Cn,StringKeyframeTrack:()=>Sh,SubtractEquation:()=>E,SubtractiveBlending:()=>x,TOUCH:()=>o,TangentSpaceNormalMap:()=>sn,TetrahedronBufferGeometry:()=>Yl,TetrahedronGeometry:()=>Zl,TextBufferGeometry:()=>Gc,TextGeometry:()=>Fc,Texture:()=>Un,TextureLoader:()=>Nh,TorusBufferGeometry:()=>oc,TorusGeometry:()=>rc,TorusKnotBufferGeometry:()=>ic,TorusKnotGeometry:()=>nc,Triangle:()=>cr,TriangleFanDrawMode:()=>Jt,TriangleStripDrawMode:()=>Xt,TrianglesDrawMode:()=>Yt,TubeBufferGeometry:()=>tc,TubeGeometry:()=>ec,UVMapping:()=>re,Uint16Attribute:()=>Jf,Uint16BufferAttribute:()=>kr,Uint32Attribute:()=>Qf,Uint32BufferAttribute:()=>Cr,Uint8Attribute:()=>Zf,Uint8BufferAttribute:()=>Mr,Uint8ClampedAttribute:()=>Yf,Uint8ClampedBufferAttribute:()=>Er,Uniform:()=>bd,UniformsLib:()=>Co,UniformsUtils:()=>vo,UnsignedByteType:()=>Se,UnsignedInt248Type:()=>De,UnsignedIntType:()=>Ie,UnsignedShort4444Type:()=>Le,UnsignedShort5551Type:()=>Re,UnsignedShort565Type:()=>Be,UnsignedShortType:()=>Te,VSMShadowMap:()=>f,Vector2:()=>Gn,Vector3:()=>qn,Vector4:()=>Vn,VectorKeyframeTrack:()=>Mh,Vertex:()=>Uf,VertexColors:()=>Bf,VideoTexture:()=>Fl,WebGL1Renderer:()=>Gs,WebGLCubeRenderTarget:()=>Mo,WebGLMultisampleRenderTarget:()=>Zn,WebGLRenderTarget:()=>Wn,WebGLRenderTargetCube:()=>cp,WebGLRenderer:()=>Fs,WebGLUtils:()=>Ps,WireframeGeometry:()=>Hl,WireframeHelper:()=>ap,WrapAroundEnding:()=>Vt,XHRLoader:()=>sp,ZeroCurvatureEnding:()=>zt,ZeroFactor:()=>C,ZeroSlopeEnding:()=>Ut,ZeroStencilOp:()=>cn,sRGBEncoding:()=>Qt}),void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52)),void 0===Number.isInteger&&(Number.isInteger=function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}),void 0===Math.sign&&(Math.sign=function(e){return e<0?-1:e>0?1:+e}),"name"in Function.prototype==0&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");const t=Object(e);for(let e=1;e>8&255]+Dn[e>>16&255]+Dn[e>>24&255]+"-"+Dn[255&t]+Dn[t>>8&255]+"-"+Dn[t>>16&15|64]+Dn[t>>24&255]+"-"+Dn[63&n|128]+Dn[n>>8&255]+"-"+Dn[n>>16&255]+Dn[n>>24&255]+Dn[255&i]+Dn[i>>8&255]+Dn[i>>16&255]+Dn[i>>24&255]).toUpperCase()},clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){return void 0!==e&&(On=e%2147483647),On=16807*On%2147483647,(On-1)/2147483646},degToRad:function(e){return e*Fn.DEG2RAD},radToDeg:function(e){return e*Fn.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){const o=Math.cos,a=Math.sin,s=o(n/2),l=a(n/2),c=o((t+i)/2),h=a((t+i)/2),u=o((t-i)/2),d=a((t-i)/2),f=o((i-t)/2),p=a((i-t)/2);switch(r){case"XYX":e.set(s*h,l*u,l*d,s*c);break;case"YZY":e.set(l*d,s*h,l*u,s*c);break;case"ZXZ":e.set(l*u,l*d,s*h,s*c);break;case"XZX":e.set(s*h,l*p,l*f,s*c);break;case"YXY":e.set(l*f,s*h,l*p,s*c);break;case"ZYZ":e.set(l*p,l*f,s*h,s*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}};function Gn(e=0,t=0){this.x=e,this.y=t}function Nn(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}let jn;Object.defineProperties(Gn.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(Gn.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this},clampLength:function(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},cross:function(e){return this.x*e.y-this.y*e.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){return Math.atan2(-this.y,-this.x)+Math.PI},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*n-o*i+e.x,this.y=r*i+o*n+e.y,this},random:function(){return this.x=Math.random(),this.y=Math.random(),this}}),Object.assign(Nn.prototype,{isMatrix3:!0,set:function(e,t,n,i,r,o,a,s,l){const c=this.elements;return c[0]=e,c[1]=i,c[2]=a,c[3]=t,c[4]=r,c[5]=s,c[6]=n,c[7]=o,c[8]=l,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this},extractBasis:function(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},setFromMatrix4:function(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},multiply:function(e){return this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){const n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[3],s=n[6],l=n[1],c=n[4],h=n[7],u=n[2],d=n[5],f=n[8],p=i[0],m=i[3],g=i[6],_=i[1],y=i[4],v=i[7],b=i[2],w=i[5],x=i[8];return r[0]=o*p+a*_+s*b,r[3]=o*m+a*y+s*w,r[6]=o*g+a*v+s*x,r[1]=l*p+c*_+h*b,r[4]=l*m+c*y+h*w,r[7]=l*g+c*v+h*x,r[2]=u*p+d*_+f*b,r[5]=u*m+d*y+f*w,r[8]=u*g+d*v+f*x,this},multiplyScalar:function(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this},determinant:function(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],s=e[6],l=e[7],c=e[8];return t*o*c-t*a*l-n*r*c+n*a*s+i*r*l-i*o*s},getInverse:function(e,t){void 0!==t&&console.warn("THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.");const n=e.elements,i=this.elements,r=n[0],o=n[1],a=n[2],s=n[3],l=n[4],c=n[5],h=n[6],u=n[7],d=n[8],f=d*l-c*u,p=c*h-d*s,m=u*s-l*h,g=r*f+o*p+a*m;if(0===g)return this.set(0,0,0,0,0,0,0,0,0);const _=1/g;return i[0]=f*_,i[1]=(a*u-d*o)*_,i[2]=(c*o-a*l)*_,i[3]=p*_,i[4]=(d*r-a*h)*_,i[5]=(a*s-c*r)*_,i[6]=m*_,i[7]=(o*h-u*r)*_,i[8]=(l*r-o*s)*_,this},transpose:function(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this},getNormalMatrix:function(e){return this.setFromMatrix4(e).getInverse(this).transpose()},transposeIntoArray:function(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this},setUvTransform:function(e,t,n,i,r,o,a){const s=Math.cos(r),l=Math.sin(r);this.set(n*s,n*l,-n*(s*o+l*a)+o+e,-i*l,i*s,-i*(-l*o+s*a)+a+t,0,0,1)},scale:function(e,t){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this},rotate:function(e){const t=Math.cos(e),n=Math.sin(e),i=this.elements,r=i[0],o=i[3],a=i[6],s=i[1],l=i[4],c=i[7];return i[0]=t*r+n*s,i[3]=t*o+n*l,i[6]=t*a+n*c,i[1]=-n*r+t*s,i[4]=-n*o+t*l,i[7]=-n*a+t*c,this},translate:function(e,t){const n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this},equals:function(e){const t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0},fromArray:function(e,t){void 0===t&&(t=0);for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this},toArray:function(e,t){void 0===e&&(e=[]),void 0===t&&(t=0);const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}});const Hn={getDataURL:function(e){if(/^data:/i.test(e.src))return e.src;if("undefined"==typeof HTMLCanvasElement)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===jn&&(jn=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),jn.width=e.width,jn.height=e.height;const n=jn.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=jn}return t.width>2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}};let zn=0;function Un(e,t,n,i,r,o,a,s,l,c){Object.defineProperty(this,"id",{value:zn++}),this.uuid=Fn.generateUUID(),this.name="",this.image=void 0!==e?e:Un.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==t?t:Un.DEFAULT_MAPPING,this.wrapS=void 0!==n?n:de,this.wrapT=void 0!==i?i:de,this.magFilter=void 0!==r?r:ve,this.minFilter=void 0!==o?o:xe,this.anisotropy=void 0!==l?l:1,this.format=void 0!==a?a:Ge,this.internalFormat=null,this.type=void 0!==s?s:Se,this.offset=new Gn(0,0),this.repeat=new Gn(1,1),this.center=new Gn(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Nn,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==c?c:qt,this.version=0,this.onUpdate=null}function Vn(e=0,t=0,n=0,i=1){this.x=e,this.y=t,this.z=n,this.w=i}function Wn(e,t,n){this.width=e,this.height=t,this.scissor=new Vn(0,0,e,t),this.scissorTest=!1,this.viewport=new Vn(0,0,e,t),n=n||{},this.texture=new Un(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:ve,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0===n.stencilBuffer||n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function Zn(e,t,n){Wn.call(this,e,t,n),this.samples=4}function Yn(e=0,t=0,n=0,i=1){this._x=e,this._y=t,this._z=n,this._w=i}Un.DEFAULT_IMAGE=void 0,Un.DEFAULT_MAPPING=re,Un.prototype=Object.assign(Object.create(Bn.prototype),{constructor:Un,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this},toJSON:function(e){const t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];const n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){const i=this.image;if(void 0===i.uuid&&(i.uuid=Fn.generateUUID()),!t&&void 0===e.images[i.uuid]){let t;if(Array.isArray(i)){t=[];for(let e=0,n=i.length;e1)switch(this.wrapS){case ue:e.x=e.x-Math.floor(e.x);break;case de:e.x=e.x<0?0:1;break;case fe:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case ue:e.y=e.y-Math.floor(e.y);break;case de:e.y=e.y<0?0:1;break;case fe:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}}),Object.defineProperty(Un.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.defineProperties(Vn.prototype,{width:{get:function(){return this.z},set:function(e){this.z=e}},height:{get:function(){return this.w},set:function(e){this.w=e}}}),Object.assign(Vn.prototype,{isVector4:!0,set:function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){const t=this.x,n=this.y,i=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*r,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*r,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*r,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*r,this},divideScalar:function(e){return this.multiplyScalar(1/e)},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){let t,n,i,r;const o=.01,a=.1,s=e.elements,l=s[0],c=s[4],h=s[8],u=s[1],d=s[5],f=s[9],p=s[2],m=s[6],g=s[10];if(Math.abs(c-u)s&&e>_?e_?s=0?1:-1,i=1-t*t;if(i>Number.EPSILON){const r=Math.sqrt(i),o=Math.atan2(r,t*n);e=Math.sin(e*o)/r,a=Math.sin(a*o)/r}const r=a*n;if(s=s*e+u*r,l=l*e+d*r,c=c*e+f*r,h=h*e+p*r,e===1-a){const e=1/Math.sqrt(s*s+l*l+c*c+h*h);s*=e,l*=e,c*=e,h*=e}}e[t]=s,e[t+1]=l,e[t+2]=c,e[t+3]=h},multiplyQuaternionsFlat:function(e,t,n,i,r,o){const a=n[i],s=n[i+1],l=n[i+2],c=n[i+3],h=r[o],u=r[o+1],d=r[o+2],f=r[o+3];return e[t]=a*f+c*h+s*d-l*u,e[t+1]=s*f+c*u+l*h-a*d,e[t+2]=l*f+c*d+a*u-s*h,e[t+3]=c*f-a*h-s*u-l*d,e}}),Object.defineProperties(Yn.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}}}),Object.assign(Yn.prototype,{isQuaternion:!0,set:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=e._x,i=e._y,r=e._z,o=e.order,a=Math.cos,s=Math.sin,l=a(n/2),c=a(i/2),h=a(r/2),u=s(n/2),d=s(i/2),f=s(r/2);switch(o){case"XYZ":this._x=u*c*h+l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h-u*d*f;break;case"YXZ":this._x=u*c*h+l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h+u*d*f;break;case"ZXY":this._x=u*c*h-l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h-u*d*f;break;case"ZYX":this._x=u*c*h-l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h+u*d*f;break;case"YZX":this._x=u*c*h+l*d*f,this._y=l*d*h+u*c*f,this._z=l*c*f-u*d*h,this._w=l*c*h-u*d*f;break;case"XZY":this._x=u*c*h-l*d*f,this._y=l*d*h-u*c*f,this._z=l*c*f+u*d*h,this._w=l*c*h+u*d*f;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return!1!==t&&this._onChangeCallback(),this},setFromAxisAngle:function(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this},setFromRotationMatrix:function(e){const t=e.elements,n=t[0],i=t[4],r=t[8],o=t[1],a=t[5],s=t[9],l=t[2],c=t[6],h=t[10],u=n+a+h;if(u>0){const e=.5/Math.sqrt(u+1);this._w=.25/e,this._x=(c-s)*e,this._y=(r-l)*e,this._z=(o-i)*e}else if(n>a&&n>h){const e=2*Math.sqrt(1+n-a-h);this._w=(c-s)/e,this._x=.25*e,this._y=(i+o)/e,this._z=(r+l)/e}else if(a>h){const e=2*Math.sqrt(1+a-n-h);this._w=(r-l)/e,this._x=(i+o)/e,this._y=.25*e,this._z=(s+c)/e}else{const e=2*Math.sqrt(1+h-n-a);this._w=(o-i)/e,this._x=(r+l)/e,this._y=(s+c)/e,this._z=.25*e}return this._onChangeCallback(),this},setFromUnitVectors:function(e,t){let n=e.dot(t)+1;return n<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()},angleTo:function(e){return 2*Math.acos(Math.abs(Fn.clamp(this.dot(e),-1,1)))},rotateTowards:function(e,t){const n=this.angleTo(e);if(0===n)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this},identity:function(){return this.set(0,0,0,1)},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){const n=e._x,i=e._y,r=e._z,o=e._w,a=t._x,s=t._y,l=t._z,c=t._w;return this._x=n*c+o*a+i*l-r*s,this._y=i*c+o*s+r*a-n*l,this._z=r*c+o*l+n*s-i*a,this._w=o*c-n*a-i*s-r*l,this._onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);const n=this._x,i=this._y,r=this._z,o=this._w;let a=o*e._w+n*e._x+i*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=n,this._y=i,this._z=r,this;const s=1-a*a;if(s<=Number.EPSILON){const e=1-t;return this._w=e*o+t*this._w,this._x=e*n+t*this._x,this._y=e*i+t*this._y,this._z=e*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(s),c=Math.atan2(l,a),h=Math.sin((1-t)*c)/l,u=Math.sin(t*c)/l;return this._w=o*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},fromBufferAttribute:function(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this},_onChange:function(e){return this._onChangeCallback=e,this},_onChangeCallback:function(){}});const Xn=new qn,Jn=new Yn;function qn(e=0,t=0,n=0){this.x=e,this.y=t,this.z=n}Object.assign(qn.prototype,{isVector3:!0,set:function(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Jn.setFromEuler(e))},applyAxisAngle:function(e,t){return this.applyQuaternion(Jn.setFromAxisAngle(e,t))},applyMatrix3:function(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this},applyNormalMatrix:function(e){return this.applyMatrix3(e).normalize()},applyMatrix4:function(e){const t=this.x,n=this.y,i=this.z,r=e.elements,o=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*o,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*o,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*o,this},applyQuaternion:function(e){const t=this.x,n=this.y,i=this.z,r=e.x,o=e.y,a=e.z,s=e.w,l=s*t+o*i-a*n,c=s*n+a*t-r*i,h=s*i+r*n-o*t,u=-r*t-o*n-a*i;return this.x=l*s+u*-r+c*-a-h*-o,this.y=c*s+u*-o+h*-r-l*-a,this.z=h*s+u*-a+l*-o-c*-r,this},project:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)},unproject:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)},transformDirection:function(e){const t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this},clampLength:function(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){const n=e.x,i=e.y,r=e.z,o=t.x,a=t.y,s=t.z;return this.x=i*s-r*a,this.y=r*o-n*s,this.z=n*a-i*o,this},projectOnVector:function(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)},projectOnPlane:function(e){return Xn.copy(this).projectOnVector(e),this.sub(Xn)},reflect:function(e){return this.sub(Xn.copy(e).multiplyScalar(2*this.dot(e)))},angleTo:function(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Fn.clamp(n,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)},setFromSphericalCoords:function(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this},setFromCylindrical:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)},setFromCylindricalCoords:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this},setFromMatrixPosition:function(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},setFromMatrix3Column:function(e,t){return this.fromArray(e.elements,3*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}});const Qn=new qn,Kn=new ri,$n=new qn(0,0,0),ei=new qn(1,1,1),ti=new qn,ni=new qn,ii=new qn;function ri(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(ri.prototype,{isMatrix4:!0,set:function(e,t,n,i,r,o,a,s,l,c,h,u,d,f,p,m){const g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=o,g[9]=a,g[13]=s,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new ri).fromArray(this.elements)},copy:function(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this},copyPosition:function(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this},extractBasis:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this},extractRotation:function(e){const t=this.elements,n=e.elements,i=1/Qn.setFromMatrixColumn(e,0).length(),r=1/Qn.setFromMatrixColumn(e,1).length(),o=1/Qn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const t=this.elements,n=e.x,i=e.y,r=e.z,o=Math.cos(n),a=Math.sin(n),s=Math.cos(i),l=Math.sin(i),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){const e=o*c,n=o*h,i=a*c,r=a*h;t[0]=s*c,t[4]=-s*h,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-a*s,t[2]=r-e*l,t[6]=i+n*l,t[10]=o*s}else if("YXZ"===e.order){const e=s*c,n=s*h,i=l*c,r=l*h;t[0]=e+r*a,t[4]=i*a-n,t[8]=o*l,t[1]=o*h,t[5]=o*c,t[9]=-a,t[2]=n*a-i,t[6]=r+e*a,t[10]=o*s}else if("ZXY"===e.order){const e=s*c,n=s*h,i=l*c,r=l*h;t[0]=e-r*a,t[4]=-o*h,t[8]=i+n*a,t[1]=n+i*a,t[5]=o*c,t[9]=r-e*a,t[2]=-o*l,t[6]=a,t[10]=o*s}else if("ZYX"===e.order){const e=o*c,n=o*h,i=a*c,r=a*h;t[0]=s*c,t[4]=i*l-n,t[8]=e*l+r,t[1]=s*h,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=a*s,t[10]=o*s}else if("YZX"===e.order){const e=o*s,n=o*l,i=a*s,r=a*l;t[0]=s*c,t[4]=r-e*h,t[8]=i*h+n,t[1]=h,t[5]=o*c,t[9]=-a*c,t[2]=-l*c,t[6]=n*h+i,t[10]=e-r*h}else if("XZY"===e.order){const e=o*s,n=o*l,i=a*s,r=a*l;t[0]=s*c,t[4]=-h,t[8]=l*c,t[1]=e*h+r,t[5]=o*c,t[9]=n*h-i,t[2]=i*h-n,t[6]=a*c,t[10]=r*h+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(e){return this.compose($n,e,ei)},lookAt:function(e,t,n){const i=this.elements;return ii.subVectors(e,t),0===ii.lengthSq()&&(ii.z=1),ii.normalize(),ti.crossVectors(n,ii),0===ti.lengthSq()&&(1===Math.abs(n.z)?ii.x+=1e-4:ii.z+=1e-4,ii.normalize(),ti.crossVectors(n,ii)),ti.normalize(),ni.crossVectors(ii,ti),i[0]=ti.x,i[4]=ni.x,i[8]=ii.x,i[1]=ti.y,i[5]=ni.y,i[9]=ii.y,i[2]=ti.z,i[6]=ni.z,i[10]=ii.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){const n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[4],s=n[8],l=n[12],c=n[1],h=n[5],u=n[9],d=n[13],f=n[2],p=n[6],m=n[10],g=n[14],_=n[3],y=n[7],v=n[11],b=n[15],w=i[0],x=i[4],A=i[8],S=i[12],M=i[1],E=i[5],T=i[9],k=i[13],I=i[2],C=i[6],P=i[10],L=i[14],R=i[3],B=i[7],D=i[11],O=i[15];return r[0]=o*w+a*M+s*I+l*R,r[4]=o*x+a*E+s*C+l*B,r[8]=o*A+a*T+s*P+l*D,r[12]=o*S+a*k+s*L+l*O,r[1]=c*w+h*M+u*I+d*R,r[5]=c*x+h*E+u*C+d*B,r[9]=c*A+h*T+u*P+d*D,r[13]=c*S+h*k+u*L+d*O,r[2]=f*w+p*M+m*I+g*R,r[6]=f*x+p*E+m*C+g*B,r[10]=f*A+p*T+m*P+g*D,r[14]=f*S+p*k+m*L+g*O,r[3]=_*w+y*M+v*I+b*R,r[7]=_*x+y*E+v*C+b*B,r[11]=_*A+y*T+v*P+b*D,r[15]=_*S+y*k+v*L+b*O,this},multiplyScalar:function(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},determinant:function(){const e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],o=e[1],a=e[5],s=e[9],l=e[13],c=e[2],h=e[6],u=e[10],d=e[14];return e[3]*(+r*s*h-i*l*h-r*a*u+n*l*u+i*a*d-n*s*d)+e[7]*(+t*s*d-t*l*u+r*o*u-i*o*d+i*l*c-r*s*c)+e[11]*(+t*l*h-t*a*d-r*o*h+n*o*d+r*a*c-n*l*c)+e[15]*(-i*a*c-t*s*h+t*a*u+i*o*h-n*o*u+n*s*c)},transpose:function(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this},setPosition:function(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this},getInverse:function(e,t){void 0!==t&&console.warn("THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.");const n=this.elements,i=e.elements,r=i[0],o=i[1],a=i[2],s=i[3],l=i[4],c=i[5],h=i[6],u=i[7],d=i[8],f=i[9],p=i[10],m=i[11],g=i[12],_=i[13],y=i[14],v=i[15],b=f*y*u-_*p*u+_*h*m-c*y*m-f*h*v+c*p*v,w=g*p*u-d*y*u-g*h*m+l*y*m+d*h*v-l*p*v,x=d*_*u-g*f*u+g*c*m-l*_*m-d*c*v+l*f*v,A=g*f*h-d*_*h-g*c*p+l*_*p+d*c*y-l*f*y,S=r*b+o*w+a*x+s*A;if(0===S)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/S;return n[0]=b*M,n[1]=(_*p*s-f*y*s-_*a*m+o*y*m+f*a*v-o*p*v)*M,n[2]=(c*y*s-_*h*s+_*a*u-o*y*u-c*a*v+o*h*v)*M,n[3]=(f*h*s-c*p*s-f*a*u+o*p*u+c*a*m-o*h*m)*M,n[4]=w*M,n[5]=(d*y*s-g*p*s+g*a*m-r*y*m-d*a*v+r*p*v)*M,n[6]=(g*h*s-l*y*s-g*a*u+r*y*u+l*a*v-r*h*v)*M,n[7]=(l*p*s-d*h*s+d*a*u-r*p*u-l*a*m+r*h*m)*M,n[8]=x*M,n[9]=(g*f*s-d*_*s-g*o*m+r*_*m+d*o*v-r*f*v)*M,n[10]=(l*_*s-g*c*s+g*o*u-r*_*u-l*o*v+r*c*v)*M,n[11]=(d*c*s-l*f*s-d*o*u+r*f*u+l*o*m-r*c*m)*M,n[12]=A*M,n[13]=(d*_*a-g*f*a+g*o*p-r*_*p-d*o*y+r*f*y)*M,n[14]=(g*c*a-l*_*a-g*o*h+r*_*h+l*o*y-r*c*y)*M,n[15]=(l*f*a-d*c*a+d*o*h-r*f*h-l*o*p+r*c*p)*M,this},scale:function(e){const t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this},getMaxScaleOnAxis:function(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))},makeTranslation:function(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this},makeRotationX:function(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this},makeRotationY:function(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this},makeRotationZ:function(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(e,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,o=e.x,a=e.y,s=e.z,l=r*o,c=r*a;return this.set(l*o+n,l*a-i*s,l*s+i*a,0,l*a+i*s,c*a+n,c*s-i*o,0,l*s-i*a,c*s+i*o,r*s*s+n,0,0,0,0,1),this},makeScale:function(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this},makeShear:function(e,t,n){return this.set(1,t,n,0,e,1,n,0,e,t,1,0,0,0,0,1),this},compose:function(e,t,n){const i=this.elements,r=t._x,o=t._y,a=t._z,s=t._w,l=r+r,c=o+o,h=a+a,u=r*l,d=r*c,f=r*h,p=o*c,m=o*h,g=a*h,_=s*l,y=s*c,v=s*h,b=n.x,w=n.y,x=n.z;return i[0]=(1-(p+g))*b,i[1]=(d+v)*b,i[2]=(f-y)*b,i[3]=0,i[4]=(d-v)*w,i[5]=(1-(u+g))*w,i[6]=(m+_)*w,i[7]=0,i[8]=(f+y)*x,i[9]=(m-_)*x,i[10]=(1-(u+p))*x,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this},decompose:function(e,t,n){const i=this.elements;let r=Qn.set(i[0],i[1],i[2]).length(),o=Qn.set(i[4],i[5],i[6]).length(),a=Qn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Kn.copy(this);const s=1/r,l=1/o,c=1/a;return Kn.elements[0]*=s,Kn.elements[1]*=s,Kn.elements[2]*=s,Kn.elements[4]*=l,Kn.elements[5]*=l,Kn.elements[6]*=l,Kn.elements[8]*=c,Kn.elements[9]*=c,Kn.elements[10]*=c,t.setFromRotationMatrix(Kn),n.x=r,n.y=o,n.z=a,this},makePerspective:function(e,t,n,i,r,o){void 0===o&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const a=this.elements,s=2*r/(t-e),l=2*r/(n-i),c=(t+e)/(t-e),h=(n+i)/(n-i),u=-(o+r)/(o-r),d=-2*o*r/(o-r);return a[0]=s,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this},makeOrthographic:function(e,t,n,i,r,o){const a=this.elements,s=1/(t-e),l=1/(n-i),c=1/(o-r),h=(t+e)*s,u=(n+i)*l,d=(o+r)*c;return a[0]=2*s,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this},equals:function(e){const t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0},fromArray:function(e,t){void 0===t&&(t=0);for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this},toArray:function(e,t){void 0===e&&(e=[]),void 0===t&&(t=0);const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}});const oi=new ri,ai=new Yn;function si(e=0,t=0,n=0,i=si.DefaultOrder){this._x=e,this._y=t,this._z=n,this._order=i}function li(){this.mask=1}si.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],si.DefaultOrder="XYZ",Object.defineProperties(si.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},order:{get:function(){return this._order},set:function(e){this._order=e,this._onChangeCallback()}}}),Object.assign(si.prototype,{isEuler:!0,set:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._order=i||this._order,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this},setFromRotationMatrix:function(e,t,n){const i=Fn.clamp,r=e.elements,o=r[0],a=r[4],s=r[8],l=r[1],c=r[5],h=r[9],u=r[2],d=r[6],f=r[10];switch(t=t||this._order){case"XYZ":this._y=Math.asin(i(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-a,o)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-i(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(s,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,o),this._z=0);break;case"ZXY":this._x=Math.asin(i(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,o));break;case"ZYX":this._y=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(d,f),this._z=Math.atan2(l,o)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(i(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,o)):(this._x=0,this._y=Math.atan2(s,f));break;case"XZY":this._z=Math.asin(-i(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(s,o)):(this._x=Math.atan2(-h,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!1!==n&&this._onChangeCallback(),this},setFromQuaternion:function(e,t,n){return oi.makeRotationFromQuaternion(e),this.setFromRotationMatrix(oi,t,n)},setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:function(e){return ai.setFromEuler(this),this.setFromQuaternion(ai,e)},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new qn(this._x,this._y,this._z)},_onChange:function(e){return this._onChangeCallback=e,this},_onChangeCallback:function(){}}),Object.assign(li.prototype,{set:function(e){this.mask=1<1){for(let e=0;e1){for(let e=0;e0){i.children=[];for(let t=0;t0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),a.length>0&&(n.images=a),s.length>0&&(n.shapes=s)}return n.object=i,n;function o(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e,t){if(void 0===t&&(t=!0),this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;ta)return!1}return!0}Object.assign(Fi.prototype,{isBox3:!0,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromArray:function(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let s=0,l=e.length;sr&&(r=l),c>o&&(o=c),h>a&&(a=h)}return this.min.set(t,n,i),this.max.set(r,o,a),this},setFromBufferAttribute:function(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let s=0,l=e.count;sr&&(r=l),c>o&&(o=c),h>a&&(a=h)}return this.min.set(t,n,i),this.max.set(r,o,a),this},setFromPoints:function(e){this.makeEmpty();for(let t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new qn),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:function(e){return this.clampPoint(e.center,Mi),Mi.distanceToSquared(e.center)<=e.radius*e.radius},intersectsPlane:function(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant},intersectsTriangle:function(e){if(this.isEmpty())return!1;this.getCenter(Ri),Bi.subVectors(this.max,Ri),Ti.subVectors(e.a,Ri),ki.subVectors(e.b,Ri),Ii.subVectors(e.c,Ri),Ci.subVectors(ki,Ti),Pi.subVectors(Ii,ki),Li.subVectors(Ti,Ii);let t=[0,-Ci.z,Ci.y,0,-Pi.z,Pi.y,0,-Li.z,Li.y,Ci.z,0,-Ci.x,Pi.z,0,-Pi.x,Li.z,0,-Li.x,-Ci.y,Ci.x,0,-Pi.y,Pi.x,0,-Li.y,Li.x,0];return!!Gi(t,Ti,ki,Ii,Bi)&&(t=[1,0,0,0,1,0,0,0,1],!!Gi(t,Ti,ki,Ii,Bi)&&(Di.crossVectors(Ci,Pi),t=[Di.x,Di.y,Di.z],Gi(t,Ti,ki,Ii,Bi)))},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new qn),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return Mi.copy(e).clamp(this.min,this.max).sub(e).length()},getBoundingSphere:function(e){return void 0===e&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=.5*this.getSize(Mi).length(),e},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(e){return this.isEmpty()||(Si[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Si[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Si[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Si[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Si[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Si[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Si[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Si[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Si)),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});const Ni=new Fi;function ji(e,t){this.center=void 0!==e?e:new qn,this.radius=void 0!==t?t:-1}Object.assign(ji.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:function(e,t){const n=this.center;void 0!==t?n.copy(t):Ni.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t},getBoundingBox:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new Fi),this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}});const Hi=new qn,zi=new qn,Ui=new qn,Vi=new qn,Wi=new qn,Zi=new qn,Yi=new qn;function Xi(e,t){this.origin=void 0!==e?e:new qn,this.direction=void 0!==t?t:new qn(0,0,-1)}Object.assign(Xi.prototype,{set:function(e,t){return this.origin.copy(e),this.direction.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this},at:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new qn),t.copy(this.direction).multiplyScalar(e).add(this.origin)},lookAt:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this},recast:function(e){return this.origin.copy(this.at(e,Hi)),this},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new qn),t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(e){return Math.sqrt(this.distanceSqToPoint(e))},distanceSqToPoint:function(e){const t=Hi.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Hi.copy(this.direction).multiplyScalar(t).add(this.origin),Hi.distanceToSquared(e))},distanceSqToSegment:function(e,t,n,i){zi.copy(e).add(t).multiplyScalar(.5),Ui.copy(t).sub(e).normalize(),Vi.copy(this.origin).sub(zi);const r=.5*e.distanceTo(t),o=-this.direction.dot(Ui),a=Vi.dot(this.direction),s=-Vi.dot(Ui),l=Vi.lengthSq(),c=Math.abs(1-o*o);let h,u,d,f;if(c>0)if(h=o*s-a,u=o*a-s,f=r*c,h>=0)if(u>=-f)if(u<=f){const e=1/c;h*=e,u*=e,d=h*(h+o*u+2*a)+u*(o*h+u+2*s)+l}else u=r,h=Math.max(0,-(o*u+a)),d=-h*h+u*(u+2*s)+l;else u=-r,h=Math.max(0,-(o*u+a)),d=-h*h+u*(u+2*s)+l;else u<=-f?(h=Math.max(0,-(-o*r+a)),u=h>0?-r:Math.min(Math.max(-r,-s),r),d=-h*h+u*(u+2*s)+l):u<=f?(h=0,u=Math.min(Math.max(-r,-s),r),d=u*(u+2*s)+l):(h=Math.max(0,-(o*r+a)),u=h>0?r:Math.min(Math.max(-r,-s),r),d=-h*h+u*(u+2*s)+l);else u=o>0?-r:r,h=Math.max(0,-(o*u+a)),d=-h*h+u*(u+2*s)+l;return n&&n.copy(this.direction).multiplyScalar(h).add(this.origin),i&&i.copy(Ui).multiplyScalar(u).add(zi),d},intersectSphere:function(e,t){Hi.subVectors(e.center,this.origin);const n=Hi.dot(this.direction),i=Hi.dot(Hi)-n*n,r=e.radius*e.radius;if(i>r)return null;const o=Math.sqrt(r-i),a=n-o,s=n+o;return a<0&&s<0?null:a<0?this.at(s,t):this.at(a,t)},intersectsSphere:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius},distanceToPlane:function(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null},intersectPlane:function(e,t){const n=this.distanceToPlane(e);return null===n?null:this.at(n,t)},intersectsPlane:function(e){const t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){let n,i,r,o,a,s;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(n=(e.min.x-u.x)*l,i=(e.max.x-u.x)*l):(n=(e.max.x-u.x)*l,i=(e.min.x-u.x)*l),c>=0?(r=(e.min.y-u.y)*c,o=(e.max.y-u.y)*c):(r=(e.max.y-u.y)*c,o=(e.min.y-u.y)*c),n>o||r>i?null:((r>n||n!=n)&&(n=r),(o=0?(a=(e.min.z-u.z)*h,s=(e.max.z-u.z)*h):(a=(e.max.z-u.z)*h,s=(e.min.z-u.z)*h),n>s||a>i?null:((a>n||n!=n)&&(n=a),(s=0?n:i,t)))},intersectsBox:function(e){return null!==this.intersectBox(e,Hi)},intersectTriangle:function(e,t,n,i,r){Wi.subVectors(t,e),Zi.subVectors(n,e),Yi.crossVectors(Wi,Zi);let o,a=this.direction.dot(Yi);if(a>0){if(i)return null;o=1}else{if(!(a<0))return null;o=-1,a=-a}Vi.subVectors(this.origin,e);const s=o*this.direction.dot(Zi.crossVectors(Vi,Zi));if(s<0)return null;const l=o*this.direction.dot(Wi.cross(Vi));if(l<0)return null;if(s+l>a)return null;const c=-o*Vi.dot(Yi);return c<0?null:this.at(c/a,r)},applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}});const Ji=new qn,qi=new qn,Qi=new Nn;function Ki(e,t){this.normal=void 0!==e?e:new qn(1,0,0),this.constant=void 0!==t?t:0}Object.assign(Ki.prototype,{isPlane:!0,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(e,t,n){const i=Ji.subVectors(n,t).cross(qi.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new qn),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)},intersectLine:function(e,t){void 0===t&&(console.warn("THREE.Plane: .intersectLine() target is now required"),t=new qn);const n=e.delta(Ji),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(e.start)?t.copy(e.start):void 0;const r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?void 0:t.copy(n).multiplyScalar(r).add(e.start)},intersectsLine:function(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0},intersectsBox:function(e){return e.intersectsPlane(this)},intersectsSphere:function(e){return e.intersectsPlane(this)},coplanarPoint:function(e){return void 0===e&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new qn),e.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(e,t){const n=t||Qi.getNormalMatrix(e),i=this.coplanarPoint(Ji).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this},translate:function(e){return this.constant-=e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}});const $i=new qn,er=new qn,tr=new qn,nr=new qn,ir=new qn,rr=new qn,or=new qn,ar=new qn,sr=new qn,lr=new qn;function cr(e,t,n){this.a=void 0!==e?e:new qn,this.b=void 0!==t?t:new qn,this.c=void 0!==n?n:new qn}Object.assign(cr,{getNormal:function(e,t,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new qn),i.subVectors(n,t),$i.subVectors(e,t),i.cross($i);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)},getBarycoord:function(e,t,n,i,r){$i.subVectors(i,t),er.subVectors(n,t),tr.subVectors(e,t);const o=$i.dot($i),a=$i.dot(er),s=$i.dot(tr),l=er.dot(er),c=er.dot(tr),h=o*l-a*a;if(void 0===r&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new qn),0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*s-a*c)*u,f=(o*c-a*s)*u;return r.set(1-d-f,f,d)},containsPoint:function(e,t,n,i){return cr.getBarycoord(e,t,n,i,nr),nr.x>=0&&nr.y>=0&&nr.x+nr.y<=1},getUV:function(e,t,n,i,r,o,a,s){return this.getBarycoord(e,t,n,i,nr),s.set(0,0),s.addScaledVector(r,nr.x),s.addScaledVector(o,nr.y),s.addScaledVector(a,nr.z),s},isFrontFacing:function(e,t,n,i){return $i.subVectors(n,t),er.subVectors(e,t),$i.cross(er).dot(i)<0}}),Object.assign(cr.prototype,{set:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this},setFromPointsAndIndices:function(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},getArea:function(){return $i.subVectors(this.c,this.b),er.subVectors(this.a,this.b),.5*$i.cross(er).length()},getMidpoint:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new qn),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(e){return cr.getNormal(this.a,this.b,this.c,e)},getPlane:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new Ki),e.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(e,t){return cr.getBarycoord(e,this.a,this.b,this.c,t)},getUV:function(e,t,n,i,r){return cr.getUV(e,this.a,this.b,this.c,t,n,i,r)},containsPoint:function(e){return cr.containsPoint(e,this.a,this.b,this.c)},isFrontFacing:function(e){return cr.isFrontFacing(this.a,this.b,this.c,e)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new qn);const n=this.a,i=this.b,r=this.c;let o,a;ir.subVectors(i,n),rr.subVectors(r,n),ar.subVectors(e,n);const s=ir.dot(ar),l=rr.dot(ar);if(s<=0&&l<=0)return t.copy(n);sr.subVectors(e,i);const c=ir.dot(sr),h=rr.dot(sr);if(c>=0&&h<=c)return t.copy(i);const u=s*h-c*l;if(u<=0&&s>=0&&c<=0)return o=s/(s-c),t.copy(n).addScaledVector(ir,o);lr.subVectors(e,r);const d=ir.dot(lr),f=rr.dot(lr);if(f>=0&&d<=f)return t.copy(r);const p=d*l-s*f;if(p<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(n).addScaledVector(rr,a);const m=c*f-d*h;if(m<=0&&h-c>=0&&d-f>=0)return or.subVectors(r,i),a=(h-c)/(h-c+(d-f)),t.copy(i).addScaledVector(or,a);const g=1/(m+p+u);return o=p*g,a=u*g,t.copy(n).addScaledVector(ir,o).addScaledVector(rr,a)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}});const hr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ur={h:0,s:0,l:0},dr={h:0,s:0,l:0};function fr(e,t,n){return void 0===t&&void 0===n?this.set(e):this.setRGB(e,t,n)}function pr(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}function mr(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function gr(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}function _r(e,t,n,i,r,o){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new qn,this.vertexNormals=Array.isArray(i)?i:[],this.color=r&&r.isColor?r:new fr,this.vertexColors=Array.isArray(r)?r:[],this.materialIndex=void 0!==o?o:0}Object.assign(fr.prototype,{isColor:!0,r:1,g:1,b:1,set:function(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setScalar:function(e){return this.r=e,this.g=e,this.b=e,this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,n){return this.r=e,this.g=t,this.b=n,this},setHSL:function(e,t,n){if(e=Fn.euclideanModulo(e,1),t=Fn.clamp(t,0,1),n=Fn.clamp(n,0,1),0===t)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=pr(r,i,e+1/3),this.g=pr(r,i,e),this.b=pr(r,i,e-1/3)}return this},setStyle:function(e){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(e)){let e;const i=n[1],r=n[2];switch(i){case"rgb":case"rgba":if(e=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,t(e[5]),this;if(e=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,t(e[5]),this;break;case"hsl":case"hsla":if(e=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(r)){const n=parseFloat(e[1])/360,i=parseInt(e[2],10)/100,r=parseInt(e[3],10)/100;return t(e[5]),this.setHSL(n,i,r)}}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(e)){const e=n[1],t=e.length;if(3===t)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,this;if(6===t)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this},setColorName:function(e){const t=hr[e];return void 0!==t?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);const n=t>0?1/t:1;return this.r=Math.pow(e.r,n),this.g=Math.pow(e.g,n),this.b=Math.pow(e.b,n),this},convertGammaToLinear:function(e){return this.copyGammaToLinear(this,e),this},convertLinearToGamma:function(e){return this.copyLinearToGamma(this,e),this},copySRGBToLinear:function(e){return this.r=mr(e.r),this.g=mr(e.g),this.b=mr(e.b),this},copyLinearToSRGB:function(e){return this.r=gr(e.r),this.g=gr(e.g),this.b=gr(e.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){void 0===e&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});const t=this.r,n=this.g,i=this.b,r=Math.max(t,n,i),o=Math.min(t,n,i);let a,s;const l=(o+r)/2;if(o===r)a=0,s=0;else{const e=r-o;switch(s=l<=.5?e/(r+o):e/(2-r-o),r){case t:a=(n-i)/e+(n0&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t){const t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(null!==t){const e=t.length;n=new Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(vr.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),br.prototype=Object.create(vr.prototype),br.prototype.constructor=br,br.prototype.isMeshBasicMaterial=!0,br.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this};const wr=new qn,xr=new Gn;function Ar(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=Mn,this.updateRange={offset:0,count:-1},this.version=0}function Sr(e,t,n){Ar.call(this,new Int8Array(e),t,n)}function Mr(e,t,n){Ar.call(this,new Uint8Array(e),t,n)}function Er(e,t,n){Ar.call(this,new Uint8ClampedArray(e),t,n)}function Tr(e,t,n){Ar.call(this,new Int16Array(e),t,n)}function kr(e,t,n){Ar.call(this,new Uint16Array(e),t,n)}function Ir(e,t,n){Ar.call(this,new Int32Array(e),t,n)}function Cr(e,t,n){Ar.call(this,new Uint32Array(e),t,n)}function Pr(e,t,n){Ar.call(this,new Float32Array(e),t,n)}function Lr(e,t,n){Ar.call(this,new Float64Array(e),t,n)}function Rr(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}function Br(e){if(0===e.length)return-1/0;let t=e[0];for(let n=1,i=e.length;nt&&(t=e[n]);return t}Object.defineProperty(Ar.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Ar.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i0,o=i[1]&&i[1].length>0,a=e.morphTargets,s=a.length;let l;if(s>0){l=[];for(let e=0;e0){u=[];for(let e=0;e0&&0===t.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let e=0;e65535?Cr:kr)(e,1):this.index=e},getAttribute:function(e){return this.attributes[e]},setAttribute:function(e,t){return this.attributes[e]=t,this},deleteAttribute:function(e){return delete this.attributes[e],this},addGroup:function(e,t,n){this.groups.push({start:e,count:t,materialIndex:void 0!==n?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix4:function(e){const t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(void 0!==n){const t=(new Nn).getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}const i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(e),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(e){return Or.makeRotationX(e),this.applyMatrix4(Or),this},rotateY:function(e){return Or.makeRotationY(e),this.applyMatrix4(Or),this},rotateZ:function(e){return Or.makeRotationZ(e),this.applyMatrix4(Or),this},translate:function(e,t,n){return Or.makeTranslation(e,t,n),this.applyMatrix4(Or),this},scale:function(e,t,n){return Or.makeScale(e,t,n),this.applyMatrix4(Or),this},lookAt:function(e){return Fr.lookAt(e),Fr.updateMatrix(),this.applyMatrix4(Fr.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Gr).negate(),this.translate(Gr.x,Gr.y,Gr.z),this},setFromObject:function(e){const t=e.geometry;if(e.isPoints||e.isLine){const e=new Pr(3*t.vertices.length,3),n=new Pr(3*t.colors.length,3);if(this.setAttribute("position",e.copyVector3sArray(t.vertices)),this.setAttribute("color",n.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){const e=new Pr(t.lineDistances.length,1);this.setAttribute("lineDistance",e.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else e.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(e){const t=[];for(let n=0,i=e.length;n0){const t=new Float32Array(3*e.normals.length);this.setAttribute("normal",new Ar(t,3).copyVector3sArray(e.normals))}if(e.colors.length>0){const t=new Float32Array(3*e.colors.length);this.setAttribute("color",new Ar(t,3).copyColorsArray(e.colors))}if(e.uvs.length>0){const t=new Float32Array(2*e.uvs.length);this.setAttribute("uv",new Ar(t,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){const t=new Float32Array(2*e.uvs2.length);this.setAttribute("uv2",new Ar(t,2).copyVector2sArray(e.uvs2))}this.groups=e.groups;for(const t in e.morphTargets){const n=[],i=e.morphTargets[t];for(let e=0,t=i.length;e0){const t=new Pr(4*e.skinIndices.length,4);this.setAttribute("skinIndex",t.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){const t=new Pr(4*e.skinWeights.length,4);this.setAttribute("skinWeight",t.copyVector4sArray(e.skinWeights))}return null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Fi);const e=this.attributes.position,t=this.morphAttributes.position;if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const t in n){const i=n[t],r=i.toJSON(e.data);""!==i.name&&(r.name=i.name),e.data.attributes[t]=r}const i={};let r=!1;for(const t in this.morphAttributes){const n=this.morphAttributes[t],o=[];for(let t=0,i=n.length;t0&&(i[t]=o,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e},clone:function(){return(new zr).copy(this)},copy:function(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;null!==n&&this.setIndex(n.clone(t));const i=e.attributes;for(const e in i){const n=i[e];this.setAttribute(e,n.clone(t))}const r=e.morphAttributes;for(const e in r){const n=[],i=r[e];for(let e=0,r=i.length;en.far?null:{distance:c,point:oo.clone(),object:e}}function lo(e,t,n,i,r,o,a,s,l,c,h,u){Zr.fromBufferAttribute(r,c),Yr.fromBufferAttribute(r,h),Xr.fromBufferAttribute(r,u);const d=e.morphTargetInfluences;if(t.morphTargets&&o&&d){Kr.set(0,0,0),$r.set(0,0,0),eo.set(0,0,0);for(let e=0,t=o.length;e0){const e=t[n[0]];if(void 0!==e){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,n=e.length;t0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(e,t){const n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0===i)return;if(null===n.boundingSphere&&n.computeBoundingSphere(),Wr.copy(n.boundingSphere),Wr.applyMatrix4(r),!1===e.ray.intersectsSphere(Wr))return;if(Ur.getInverse(r),Vr.copy(e.ray).applyMatrix4(Ur),null!==n.boundingBox&&!1===Vr.intersectsBox(n.boundingBox))return;let o;if(n.isBufferGeometry){const r=n.index,a=n.attributes.position,s=n.morphAttributes.position,l=n.morphTargetsRelative,c=n.attributes.uv,h=n.attributes.uv2,u=n.groups,d=n.drawRange;if(null!==r)if(Array.isArray(i))for(let n=0,f=u.length;n0&&(l=c);for(let n=0,c=s.length;n0)for(let e=0;e0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(let e=0,t=this.faces.length;e=0;e--){const t=r[e];this.faces.splice(t,1);for(let e=0,n=this.faceVertexUvs.length;e0,s=t.vertexNormals.length>0,l=1!==t.color.r||1!==t.color.g||1!==t.color.b,f=t.vertexColors.length>0;let p=0;if(p=c(p,0,0),p=c(p,1,i),p=c(p,2,r),p=c(p,3,o),p=c(p,4,a),p=c(p,5,s),p=c(p,6,l),p=c(p,7,f),n.push(p),n.push(t.a,t.b,t.c),n.push(t.materialIndex),o){const t=this.faceVertexUvs[0][e];n.push(d(t[0]),d(t[1]),d(t[2]))}if(a&&n.push(h(t.normal)),s){const e=t.vertexNormals;n.push(h(e[0]),h(e[1]),h(e[2]))}if(l&&n.push(u(t.color)),f){const e=t.vertexColors;n.push(u(e[0]),u(e[1]),u(e[2]))}}function c(e,t,n){return n?e|1<0&&(e.data.colors=o),s.length>0&&(e.data.uvs=[s]),e.data.faces=n,e},clone:function(){return(new po).copy(this)},copy:function(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;const t=e.vertices;for(let e=0,n=t.length;e0?1:-1,c.push(T.x,T.y,T.z),h.push(s/m),h.push(1-o/g),M+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const n={};for(const e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t},wo.prototype=Object.assign(Object.create(xi.prototype),{constructor:wo,isCamera:!0,copy:function(e,t){return xi.prototype.copy.call(this,e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new qn),this.updateMatrixWorld(!0);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()},updateMatrixWorld:function(e){xi.prototype.updateMatrixWorld.call(this,e),this.matrixWorldInverse.getInverse(this.matrixWorld)},updateWorldMatrix:function(e,t){xi.prototype.updateWorldMatrix.call(this,e,t),this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}}),xo.prototype=Object.assign(Object.create(wo.prototype),{constructor:xo,isPerspectiveCamera:!0,copy:function(e,t){return wo.prototype.copy.call(this,e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this},setFocalLength:function(e){const t=.5*this.getFilmHeight()/e;this.fov=2*Fn.RAD2DEG*Math.atan(t),this.updateProjectionMatrix()},getFocalLength:function(){const e=Math.tan(.5*Fn.DEG2RAD*this.fov);return.5*this.getFilmHeight()/e},getEffectiveFOV:function(){return 2*Fn.RAD2DEG*Math.atan(Math.tan(.5*Fn.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(e,t,n,i,r,o){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){let e=this.near,t=e*Math.tan(.5*Fn.DEG2RAD*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,o=this.view;if(null!==this.view&&this.view.enabled){const e=o.fullWidth,a=o.fullHeight;r+=o.offsetX*i/e,t-=o.offsetY*n/a,i*=o.width/e,n*=o.height/a}const a=this.filmOffset;0!==a&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function(e){const t=xi.prototype.toJSON.call(this,e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}});const Ao=90;function So(e,t,n){if(xi.call(this),this.type="CubeCamera",!0!==n.isWebGLCubeRenderTarget)return void console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");this.renderTarget=n;const i=new xo(Ao,1,e,t);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new qn(1,0,0)),this.add(i);const r=new xo(Ao,1,e,t);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new qn(-1,0,0)),this.add(r);const o=new xo(Ao,1,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(new qn(0,1,0)),this.add(o);const a=new xo(Ao,1,e,t);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new qn(0,-1,0)),this.add(a);const s=new xo(Ao,1,e,t);s.layers=this.layers,s.up.set(0,-1,0),s.lookAt(new qn(0,0,1)),this.add(s);const l=new xo(Ao,1,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new qn(0,0,-1)),this.add(l),this.update=function(e,t){null===this.parent&&this.updateMatrixWorld();const c=e.xr.enabled,h=e.getRenderTarget();e.xr.enabled=!1;const u=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,i),e.setRenderTarget(n,1),e.render(t,r),e.setRenderTarget(n,2),e.render(t,o),e.setRenderTarget(n,3),e.render(t,a),e.setRenderTarget(n,4),e.render(t,s),n.texture.generateMipmaps=u,e.setRenderTarget(n,5),e.render(t,l),e.setRenderTarget(h),e.xr.enabled=c},this.clear=function(e,t,i,r){const o=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(n,o),e.clear(t,i,r);e.setRenderTarget(o)}}function Mo(e,t,n){Number.isInteger(t)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),t=n),Wn.call(this,e,e,t)}function Eo(e,t,n,i,r,o,a,s,l,c,h,u){Un.call(this,null,o,a,s,l,c,i,r,h,u),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=void 0!==l?l:pe,this.minFilter=void 0!==c?c:pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}So.prototype=Object.create(xi.prototype),So.prototype.constructor=So,Mo.prototype=Object.create(Wn.prototype),Mo.prototype.constructor=Mo,Mo.prototype.isWebGLCubeRenderTarget=!0,Mo.prototype.fromEquirectangularTexture=function(e,t){this.texture.type=t.type,this.texture.format=Ge,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n=new Ai,i="\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include \n\t\t\t\t#include \n\n\t\t\t}\n\t\t",r="\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t",o=new bo({name:"CubemapFromEquirect",uniforms:_o({tEquirect:{value:null}}),vertexShader:i,fragmentShader:r,side:m,blending:v});o.uniforms.tEquirect.value=t;const a=new ao(new go(5,5,5),o);return n.add(a),new So(1,10,this).update(e,n),a.geometry.dispose(),a.material.dispose(),this},Eo.prototype=Object.create(Un.prototype),Eo.prototype.constructor=Eo,Eo.prototype.isDataTexture=!0;const To=new ji,ko=new qn;function Io(e,t,n,i,r,o){this.planes=[void 0!==e?e:new Ki,void 0!==t?t:new Ki,void 0!==n?n:new Ki,void 0!==i?i:new Ki,void 0!==r?r:new Ki,void 0!==o?o:new Ki]}Object.assign(Io.prototype,{set:function(e,t,n,i,r,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(i),a[4].copy(r),a[5].copy(o),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this},setFromProjectionMatrix:function(e){const t=this.planes,n=e.elements,i=n[0],r=n[1],o=n[2],a=n[3],s=n[4],l=n[5],c=n[6],h=n[7],u=n[8],d=n[9],f=n[10],p=n[11],m=n[12],g=n[13],_=n[14],y=n[15];return t[0].setComponents(a-i,h-s,p-u,y-m).normalize(),t[1].setComponents(a+i,h+s,p+u,y+m).normalize(),t[2].setComponents(a+r,h+l,p+d,y+g).normalize(),t[3].setComponents(a-r,h-l,p-d,y-g).normalize(),t[4].setComponents(a-o,h-c,p-f,y-_).normalize(),t[5].setComponents(a+o,h+c,p+f,y+_).normalize(),this},intersectsObject:function(e){const t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),To.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(To)},intersectsSprite:function(e){return To.center.set(0,0,0),To.radius=.7071067811865476,To.applyMatrix4(e.matrixWorld),this.intersectsSphere(To)},intersectsSphere:function(e){const t=this.planes,n=e.center,i=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,ko.y=i.normal.y>0?e.max.y:e.min.y,ko.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(ko)<0)return!1}return!0},containsPoint:function(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}});const Co={common:{diffuse:{value:new fr(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Nn},uv2Transform:{value:new Nn},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Gn(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fr(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new fr(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Nn}},sprite:{diffuse:{value:new fr(15658734)},opacity:{value:1},center:{value:new Gn(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Nn}}};function Po(){let e=null,t=!1,n=null,i=null;function r(t,o){n(t,o),i=e.requestAnimationFrame(r)}return{start:function(){!0!==t&&null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Lo(e,t){const n=t.isWebGL2,i=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),i.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);const n=i.get(t);n&&(e.deleteBuffer(n.buffer),i.delete(t))},update:function(t,r){t.isInterleavedBufferAttribute&&(t=t.data);const o=i.get(t);void 0===o?i.set(t,function(t,n){const i=t.array,r=t.usage,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,i,r),t.onUploadCallback();let a=5126;return i instanceof Float32Array?a=5126:i instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):i instanceof Uint16Array?a=5123:i instanceof Int16Array?a=5122:i instanceof Uint32Array?a=5125:i instanceof Int32Array?a=5124:i instanceof Int8Array?a=5120:i instanceof Uint8Array&&(a=5121),{buffer:o,type:a,bytesPerElement:i.BYTES_PER_ELEMENT,version:t.version}}(t,r)):o.version 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_maxMipLevel 8.0\n#define cubeUV_minMipLevel 4.0\n#define cubeUV_maxTileSize 256.0\n#define cubeUV_minTileSize 16.0\nfloat getFace(vec3 direction) {\n vec3 absDirection = abs(direction);\n float face = -1.0;\n if (absDirection.x > absDirection.z) {\n if (absDirection.x > absDirection.y)\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if (absDirection.z > absDirection.y)\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n}\nvec2 getUV(vec3 direction, float face) {\n vec2 uv;\n if (face == 0.0) {\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\n return 0.5 * (uv + 1.0);\n}\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\n float face = getFace(direction);\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\n mipInt = max(mipInt, cubeUV_minMipLevel);\n float faceSize = exp2(mipInt);\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\n vec2 f = fract(uv);\n uv += 0.5 - f;\n if (face > 2.0) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n if(mipInt < cubeUV_maxMipLevel){\n uv.y += 2.0 * cubeUV_maxTileSize;\n }\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\n uv *= texelSize;\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x += texelSize;\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.y += texelSize;\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x -= texelSize;\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n vec3 tm = mix(tl, tr, f.x);\n vec3 bm = mix(bl, br, f.x);\n return mix(tm, bm, f.y);\n}\n#define r0 1.0\n#define v0 0.339\n#define m0 -2.0\n#define r1 0.8\n#define v1 0.276\n#define m1 -1.0\n#define r4 0.4\n#define v4 0.046\n#define m4 2.0\n#define r5 0.305\n#define v5 0.016\n#define m5 3.0\n#define r6 0.21\n#define v6 0.0038\n#define m6 4.0\nfloat roughnessToMip(float roughness) {\n float mip = 0.0;\n if (roughness >= r1) {\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\n } else if (roughness >= r4) {\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\n } else if (roughness >= r5) {\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\n } else if (roughness >= r6) {\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\n } else {\n mip = -2.0 * log2(1.16 * roughness); }\n return mip;\n}\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\n float mipF = fract(mip);\n float mipInt = floor(mip);\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\n if (mipF == 0.0) {\n return vec4(color0, 1.0);\n } else {\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\n return vec4(mix(color0, color1, mipF), 1.0);\n }\n}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\t\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec2 sampleUV = equirectUv( reflectVec );\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV = equirectUv( reflectVec );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat specularRoughness;\n\tvec3 specularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmissionmap_fragment:"#ifdef USE_TRANSMISSIONMAP\n\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\n#endif",transmissionmap_pars_fragment:"#ifdef USE_TRANSMISSIONMAP\n\tuniform sampler2D transmissionMap;\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSMISSION\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSMISSION\n\tuniform float transmission;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#ifdef TRANSMISSION\n\t\tfloat totalTransmission = transmission;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSMISSION\n\t\tdiffuseColor.a *= saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},Oo={basic:{uniforms:yo([Co.common,Co.specularmap,Co.envmap,Co.aomap,Co.lightmap,Co.fog]),vertexShader:Do.meshbasic_vert,fragmentShader:Do.meshbasic_frag},lambert:{uniforms:yo([Co.common,Co.specularmap,Co.envmap,Co.aomap,Co.lightmap,Co.emissivemap,Co.fog,Co.lights,{emissive:{value:new fr(0)}}]),vertexShader:Do.meshlambert_vert,fragmentShader:Do.meshlambert_frag},phong:{uniforms:yo([Co.common,Co.specularmap,Co.envmap,Co.aomap,Co.lightmap,Co.emissivemap,Co.bumpmap,Co.normalmap,Co.displacementmap,Co.fog,Co.lights,{emissive:{value:new fr(0)},specular:{value:new fr(1118481)},shininess:{value:30}}]),vertexShader:Do.meshphong_vert,fragmentShader:Do.meshphong_frag},standard:{uniforms:yo([Co.common,Co.envmap,Co.aomap,Co.lightmap,Co.emissivemap,Co.bumpmap,Co.normalmap,Co.displacementmap,Co.roughnessmap,Co.metalnessmap,Co.fog,Co.lights,{emissive:{value:new fr(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Do.meshphysical_vert,fragmentShader:Do.meshphysical_frag},toon:{uniforms:yo([Co.common,Co.aomap,Co.lightmap,Co.emissivemap,Co.bumpmap,Co.normalmap,Co.displacementmap,Co.gradientmap,Co.fog,Co.lights,{emissive:{value:new fr(0)}}]),vertexShader:Do.meshtoon_vert,fragmentShader:Do.meshtoon_frag},matcap:{uniforms:yo([Co.common,Co.bumpmap,Co.normalmap,Co.displacementmap,Co.fog,{matcap:{value:null}}]),vertexShader:Do.meshmatcap_vert,fragmentShader:Do.meshmatcap_frag},points:{uniforms:yo([Co.points,Co.fog]),vertexShader:Do.points_vert,fragmentShader:Do.points_frag},dashed:{uniforms:yo([Co.common,Co.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Do.linedashed_vert,fragmentShader:Do.linedashed_frag},depth:{uniforms:yo([Co.common,Co.displacementmap]),vertexShader:Do.depth_vert,fragmentShader:Do.depth_frag},normal:{uniforms:yo([Co.common,Co.bumpmap,Co.normalmap,Co.displacementmap,{opacity:{value:1}}]),vertexShader:Do.normal_vert,fragmentShader:Do.normal_frag},sprite:{uniforms:yo([Co.sprite,Co.fog]),vertexShader:Do.sprite_vert,fragmentShader:Do.sprite_frag},background:{uniforms:{uvTransform:{value:new Nn},t2D:{value:null}},vertexShader:Do.background_vert,fragmentShader:Do.background_frag},cube:{uniforms:yo([Co.envmap,{opacity:{value:1}}]),vertexShader:Do.cube_vert,fragmentShader:Do.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Do.equirect_vert,fragmentShader:Do.equirect_frag},distanceRGBA:{uniforms:yo([Co.common,Co.displacementmap,{referencePosition:{value:new qn},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Do.distanceRGBA_vert,fragmentShader:Do.distanceRGBA_frag},shadow:{uniforms:yo([Co.lights,Co.fog,{color:{value:new fr(0)},opacity:{value:1}}]),vertexShader:Do.shadow_vert,fragmentShader:Do.shadow_frag}};function Fo(e,t,n,i){const r=new fr(0);let o,a,s=0,l=null,c=0,h=null;function u(e,n){t.buffers.color.setClear(e.r,e.g,e.b,n,i)}return{getClearColor:function(){return r},setClearColor:function(e,t){r.set(e),s=void 0!==t?t:1,u(r,s)},getClearAlpha:function(){return s},setClearAlpha:function(e){s=e,u(r,s)},render:function(t,i,d,f){let g=!0===i.isScene?i.background:null;const _=e.xr,y=_.getSession&&_.getSession();if(y&&"additive"===y.environmentBlendMode&&(g=null),null===g?u(r,s):g&&g.isColor&&(u(g,1),f=!0),(e.autoClear||f)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),g&&(g.isCubeTexture||g.isWebGLCubeRenderTarget||g.mapping===ce)){void 0===a&&(a=new ao(new go(1,1,1),new bo({name:"BackgroundCubeMaterial",uniforms:_o(Oo.cube.uniforms),vertexShader:Oo.cube.vertexShader,fragmentShader:Oo.cube.fragmentShader,side:m,depthTest:!1,depthWrite:!1,fog:!1})),a.geometry.deleteAttribute("normal"),a.geometry.deleteAttribute("uv"),a.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(a.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(a));const i=g.isWebGLCubeRenderTarget?g.texture:g;a.material.uniforms.envMap.value=i,a.material.uniforms.flipEnvMap.value=i.isCubeTexture?-1:1,l===g&&c===i.version&&h===e.toneMapping||(a.material.needsUpdate=!0,l=g,c=i.version,h=e.toneMapping),t.unshift(a,a.geometry,a.material,0,0,null)}else g&&g.isTexture&&(void 0===o&&(o=new ao(new Bo(2,2),new bo({name:"BackgroundMaterial",uniforms:_o(Oo.background.uniforms),vertexShader:Oo.background.vertexShader,fragmentShader:Oo.background.fragmentShader,side:p,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(o)),o.material.uniforms.t2D.value=g,!0===g.matrixAutoUpdate&&g.updateMatrix(),o.material.uniforms.uvTransform.value.copy(g.matrix),l===g&&c===g.version&&h===e.toneMapping||(o.material.needsUpdate=!0,l=g,c=g.version,h=e.toneMapping),t.unshift(o,o.geometry,o.material,0,0,null))}}}function Go(e,t,n,i){const r=e.getParameter(34921),o=i.isWebGL2?null:t.get("OES_vertex_array_object"),a=i.isWebGL2||null!==o,s={},l=d(null);let c=l;function h(t){return i.isWebGL2?e.bindVertexArray(t):o.bindVertexArrayOES(t)}function u(t){return i.isWebGL2?e.deleteVertexArray(t):o.deleteVertexArrayOES(t)}function d(e){const t=[],n=[],i=[];for(let e=0;e=0){const o=l[t];if(void 0!==o){const t=o.normalized,r=o.itemSize,a=n.get(o);if(void 0===a)continue;const l=a.buffer,c=a.type,h=a.bytesPerElement;if(o.isInterleavedBufferAttribute){const n=o.data,a=n.stride,u=o.offset;n&&n.isInstancedInterleavedBuffer?(m(i,n.meshPerAttribute),void 0===s._maxInstanceCount&&(s._maxInstanceCount=n.meshPerAttribute*n.count)):p(i),e.bindBuffer(34962,l),_(i,r,c,t,a*h,u*h)}else o.isInstancedBufferAttribute?(m(i,o.meshPerAttribute),void 0===s._maxInstanceCount&&(s._maxInstanceCount=o.meshPerAttribute*o.count)):p(i),e.bindBuffer(34962,l),_(i,r,c,t,0,0)}else if("instanceMatrix"===t){const t=n.get(r.instanceMatrix);if(void 0===t)continue;const o=t.buffer,a=t.type;m(i+0,1),m(i+1,1),m(i+2,1),m(i+3,1),e.bindBuffer(34962,o),e.vertexAttribPointer(i+0,4,a,!1,64,0),e.vertexAttribPointer(i+1,4,a,!1,64,16),e.vertexAttribPointer(i+2,4,a,!1,64,32),e.vertexAttribPointer(i+3,4,a,!1,64,48)}else if(void 0!==h){const n=h[t];if(void 0!==n)switch(n.length){case 2:e.vertexAttrib2fv(i,n);break;case 3:e.vertexAttrib3fv(i,n);break;case 4:e.vertexAttrib4fv(i,n);break;default:e.vertexAttrib1fv(i,n)}}}}g()}(r,l,u,y),null!==v&&e.bindBuffer(34963,n.get(v).buffer))},reset:y,resetDefaultState:v,dispose:function(){y();for(const e in s){const t=s[e];for(const e in t){const n=t[e];for(const e in n)u(n[e].object),delete n[e];delete t[e]}delete s[e]}},releaseStatesOfGeometry:function(e){if(void 0===s[e.id])return;const t=s[e.id];for(const e in t){const n=t[e];for(const e in n)u(n[e].object),delete n[e];delete t[e]}delete s[e.id]},releaseStatesOfProgram:function(e){for(const t in s){const n=s[t];if(void 0===n[e.id])continue;const i=n[e.id];for(const e in i)u(i[e].object),delete i[e];delete n[e.id]}},initAttributes:f,enableAttribute:p,disableUnusedAttributes:g}}function No(e,t,n,i){const r=i.isWebGL2;let o;this.setMode=function(e){o=e},this.render=function(t,i){e.drawArrays(o,t,i),n.update(i,o,1)},this.renderInstances=function(i,a,s){if(0===s)return;let l,c;if(r)l=e,c="drawArraysInstanced";else if(l=t.get("ANGLE_instanced_arrays"),c="drawArraysInstancedANGLE",null===l)return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");l[c](o,i,a,s),n.update(a,o,s)}}function jo(e,t,n){let i;function r(t){if("highp"===t){if(e.getShaderPrecisionFormat(35633,36338).precision>0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const o="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&e instanceof WebGL2ComputeRenderingContext;let a=void 0!==n.precision?n.precision:"highp";const s=r(a);s!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",s,"instead."),a=s);const l=!0===n.logarithmicDepthBuffer,c=e.getParameter(34930),h=e.getParameter(35660),u=e.getParameter(3379),d=e.getParameter(34076),f=e.getParameter(34921),p=e.getParameter(36347),m=e.getParameter(36348),g=e.getParameter(36349),_=h>0,y=o||!!t.get("OES_texture_float");return{isWebGL2:o,getMaxAnisotropy:function(){if(void 0!==i)return i;const n=t.get("EXT_texture_filter_anisotropic");return i=null!==n?e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,i},getMaxPrecision:r,precision:a,logarithmicDepthBuffer:l,maxTextures:c,maxVertexTextures:h,maxTextureSize:u,maxCubemapSize:d,maxAttributes:f,maxVertexUniforms:p,maxVaryings:m,maxFragmentUniforms:g,vertexTextures:_,floatFragmentTextures:y,floatVertexTextures:_&&y,maxSamples:o?e.getParameter(36183):0}}function Ho(){const e=this;let t=null,n=0,i=!1,r=!1;const o=new Ki,a=new Nn,s={value:null,needsUpdate:!1};function l(){s.value!==t&&(s.value=t,s.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function c(t,n,i,r){let l=null!==t?t.length:0,c=null;if(0!==l){if(c=s.value,!0!==r||null===c){const e=i+4*l,r=n.matrixWorldInverse;a.getNormalMatrix(r),(null===c||c.length65535?Cr:kr)(n,1);s.version=a;const l=o.get(e);l&&t.remove(l),o.set(e,s)}return{get:function(e,t){let i=r.get(t);return i||(t.addEventListener("dispose",a),t.isBufferGeometry?i=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new zr).setFromObject(e)),i=t._bufferGeometry),r.set(t,i),n.memory.geometries++,i)},update:function(e){const n=e.attributes;for(const e in n)t.update(n[e],34962);const i=e.morphAttributes;for(const e in i){const n=i[e];for(let e=0,i=n.length;e0)return e;let r=t*n,o=ia[r];if(void 0===o&&(o=new Float32Array(r),ia[r]=o),0!==t){i.toArray(o,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(o,r)}return o}function ca(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n/gm;function os(e){return e.replace(rs,as)}function as(e,t){const n=Do[t];if(void 0===n)throw new Error("Can not resolve #include <"+t+">");return os(n)}const ss=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,ls=/#pragma unroll_loop_start[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;function cs(e){return e.replace(ls,us).replace(ss,hs)}function hs(e,t,n,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),us(0,t,n,i)}function us(e,t,n,i){let r="";for(let e=parseInt(t);e0?e.gammaFactor:1,g=n.isWebGL2?"":function(e){return[e.extensionDerivatives||e.envMapCubeUV||e.bumpMap||e.tangentSpaceNormalMap||e.clearcoatNormalMap||e.flatShading||"physical"===e.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(e.extensionShaderTextureLOD||e.envMap)&&e.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(ts).join("\n")}(n),_=function(e){const t=[];for(const n in e){const i=e[n];!1!==i&&t.push("#define "+n+" "+i)}return t.join("\n")}(o),y=r.createProgram();let v,b;n.isRawShaderMaterial?(v=[_].filter(ts).join("\n"),v.length>0&&(v+="\n"),b=[g,_].filter(ts).join("\n"),b.length>0&&(b+="\n")):(v=[ds(n),"#define SHADER_NAME "+n.shaderName,_,n.instancing?"#define USE_INSTANCING":"",n.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+m,"#define MAX_BONES "+n.maxBones,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+h:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.displacementMap&&n.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(ts).join("\n"),b=[g,ds(n),"#define SHADER_NAME "+n.shaderName,_,n.alphaTest?"#define ALPHATEST "+n.alphaTest+(n.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+m,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+c:"",n.envMap?"#define "+h:"",n.envMap?"#define "+p:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.sheen?"#define USE_SHEEN":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(n.extensionShaderTextureLOD||n.envMap)&&n.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==K?"#define TONE_MAPPING":"",n.toneMapping!==K?Do.tonemapping_pars_fragment:"",n.toneMapping!==K?es("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",Do.encodings_pars_fragment,n.map?Ka("mapTexelToLinear",n.mapEncoding):"",n.matcap?Ka("matcapTexelToLinear",n.matcapEncoding):"",n.envMap?Ka("envMapTexelToLinear",n.envMapEncoding):"",n.emissiveMap?Ka("emissiveMapTexelToLinear",n.emissiveMapEncoding):"",n.lightMap?Ka("lightMapTexelToLinear",n.lightMapEncoding):"",$a("linearToOutputTexel",n.outputEncoding),n.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(ts).join("\n")),a=os(a),a=ns(a,n),a=is(a,n),s=os(s),s=ns(s,n),s=is(s,n),a=cs(a),s=cs(s),n.isWebGL2&&!n.isRawShaderMaterial&&(v=["#version 300 es\n","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+v,b=["#version 300 es\n","#define varying in","out highp vec4 pc_fragColor;","#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+b);const w=b+s,x=Xa(r,35633,v+a),A=Xa(r,35632,w);if(r.attachShader(y,x),r.attachShader(y,A),void 0!==n.index0AttributeName?r.bindAttribLocation(y,0,n.index0AttributeName):!0===n.morphTargets&&r.bindAttribLocation(y,0,"position"),r.linkProgram(y),e.debug.checkShaderErrors){const e=r.getProgramInfoLog(y).trim(),t=r.getShaderInfoLog(x).trim(),n=r.getShaderInfoLog(A).trim();let i=!0,o=!0;if(!1===r.getProgramParameter(y,35714)){i=!1;const t=Qa(r,x,"vertex"),n=Qa(r,A,"fragment");console.error("THREE.WebGLProgram: shader error: ",r.getError(),"35715",r.getProgramParameter(y,35715),"gl.getProgramInfoLog",e,t,n)}else""!==e?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",e):""!==t&&""!==n||(o=!1);o&&(this.diagnostics={runnable:i,programLog:e,vertexShader:{log:t,prefix:v},fragmentShader:{log:n,prefix:b}})}let S,M;return r.deleteShader(x),r.deleteShader(A),this.getUniforms=function(){return void 0===S&&(S=new Ya(r,y)),S},this.getAttributes=function(){return void 0===M&&(M=function(e,t){const n={},i=e.getProgramParameter(t,35721);for(let r=0;r0,maxBones:S,useVertexTexture:s,morphTargets:i.morphTargets,morphNormals:i.morphNormals,maxMorphTargets:e.maxMorphTargets,maxMorphNormals:e.maxMorphNormals,numDirLights:r.directional.length,numPointLights:r.point.length,numSpotLights:r.spot.length,numRectAreaLights:r.rectArea.length,numHemiLights:r.hemi.length,numDirLightShadows:r.directionalShadowMap.length,numPointLightShadows:r.pointShadowMap.length,numSpotLightShadows:r.spotShadowMap.length,numClippingPlanes:_,numClipIntersection:y,dithering:i.dithering,shadowMapEnabled:e.shadowMap.enabled&&d.length>0,shadowMapType:e.shadowMap.type,toneMapping:i.toneMapped?e.toneMapping:K,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:i.premultipliedAlpha,alphaTest:i.alphaTest,doubleSided:i.side===g,flipSided:i.side===m,depthPacking:void 0!==i.depthPacking&&i.depthPacking,index0AttributeName:i.index0AttributeName,extensionDerivatives:i.extensions&&i.extensions.derivatives,extensionFragDepth:i.extensions&&i.extensions.fragDepth,extensionDrawBuffers:i.extensions&&i.extensions.drawBuffers,extensionShaderTextureLOD:i.extensions&&i.extensions.shaderTextureLOD,rendererExtensionFragDepth:o||null!==t.get("EXT_frag_depth"),rendererExtensionDrawBuffers:o||null!==t.get("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:o||null!==t.get("EXT_shader_texture_lod"),customProgramCacheKey:i.customProgramCacheKey()}},getProgramCacheKey:function(t){const n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.fragmentShader),n.push(t.vertexShader)),void 0!==t.defines)for(const e in t.defines)n.push(e),n.push(t.defines[e]);if(void 0===t.isRawShaderMaterial){for(let e=0;e1&&i.sort(e||gs),r.length>1&&r.sort(t||_s)}}}function vs(e){let t=new WeakMap;function n(e){const i=e.target;i.removeEventListener("dispose",n),t.delete(i)}return{get:function(i,r){const o=t.get(i);let a;return void 0===o?(a=new ys(e),t.set(i,new WeakMap),t.get(i).set(r,a),i.addEventListener("dispose",n)):(a=o.get(r),void 0===a&&(a=new ys(e),o.set(r,a))),a},dispose:function(){t=new WeakMap}}}function bs(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case"DirectionalLight":n={direction:new qn,color:new fr};break;case"SpotLight":n={position:new qn,direction:new qn,color:new fr,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new qn,color:new fr,distance:0,decay:0};break;case"HemisphereLight":n={direction:new qn,skyColor:new fr,groundColor:new fr};break;case"RectAreaLight":n={color:new fr,position:new qn,halfWidth:new qn,halfHeight:new qn}}return e[t.id]=n,n}}}let ws=0;function xs(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function As(){const e=new bs,t=function(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Gn};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Gn,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=n,n}}}(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let e=0;e<9;e++)n.probe.push(new qn);const i=new qn,r=new ri,o=new ri;return{setup:function(a,s,l){let c=0,h=0,u=0;for(let e=0;e<9;e++)n.probe[e].set(0,0,0);let d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0;const b=l.matrixWorldInverse;a.sort(xs);for(let s=0,l=a.length;s\nvoid main() {\n float mean = 0.0;\n float squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n #ifdef HORIZONAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean * HALF_SAMPLE_RATE;\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),_=d.clone();_.defines.HORIZONAL_PASS=1;const y=new zr;y.setAttribute("position",new Ar(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const b=new ao(y,d),w=this;function x(n,i){const r=t.update(b);d.uniforms.shadow_pass.value=n.map.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(i,null,r,d,b,null),_.uniforms.shadow_pass.value=n.mapPass.texture,_.uniforms.resolution.value=n.mapSize,_.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(i,null,r,_,b,null)}function A(e,t,n){const i=e<<0|t<<1|n<<2;let r=s[i];return void 0===r&&(r=new Es({depthPacking:an,morphTargets:e,skinning:t}),s[i]=r),r}function S(e,t,n){const i=e<<0|t<<1|n<<2;let r=l[i];return void 0===r&&(r=new Ts({morphTargets:e,skinning:t}),l[i]=r),r}function M(t,n,i,r,o,a,s){let l=null,u=A,d=t.customDepthMaterial;if(!0===r.isPointLight&&(u=S,d=t.customDistanceMaterial),void 0===d){let e=!1;!0===i.morphTargets&&(e=n.morphAttributes&&n.morphAttributes.position&&n.morphAttributes.position.length>0);let r=!1;!0===t.isSkinnedMesh&&(!0===i.skinning?r=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t)),l=u(e,r,!0===t.isInstancedMesh)}else l=d;if(e.localClippingEnabled&&!0===i.clipShadows&&0!==i.clippingPlanes.length){const e=l.uuid,t=i.uuid;let n=c[e];void 0===n&&(n={},c[e]=n);let r=n[t];void 0===r&&(r=l.clone(),n[t]=r),l=r}return l.visible=i.visible,l.wireframe=i.wireframe,l.side=s===f?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:h[i.side],l.clipShadows=i.clipShadows,l.clippingPlanes=i.clippingPlanes,l.clipIntersection=i.clipIntersection,l.wireframeLinewidth=i.wireframeLinewidth,l.linewidth=i.linewidth,!0===r.isPointLight&&!0===l.isMeshDistanceMaterial&&(l.referencePosition.setFromMatrixPosition(r.matrixWorld),l.nearDistance=o,l.farDistance=a),l}function E(n,r,o,a,s){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&s===f)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(o.matrixWorldInverse,n.matrixWorld);const i=t.update(n),r=n.material;if(Array.isArray(r)){const t=i.groups;for(let l=0,c=t.length;ln||r.y>n)&&(r.x>n&&(o.x=Math.floor(n/p.x),r.x=o.x*p.x,u.mapSize.x=o.x),r.y>n&&(o.y=Math.floor(n/p.y),r.y=o.y*p.y,u.mapSize.y=o.y)),null===u.map&&!u.isPointLightShadow&&this.type===f){const e={minFilter:ve,magFilter:ve,format:Ge,stencilBuffer:!1};u.map=new Wn(r.x,r.y,e),u.map.texture.name=h.name+".shadowMap",u.mapPass=new Wn(r.x,r.y,e),u.camera.updateProjectionMatrix()}if(null===u.map){const e={minFilter:pe,magFilter:pe,format:Ge,stencilBuffer:!1};u.map=new Wn(r.x,r.y,e),u.map.texture.name=h.name+".shadowMap",u.camera.updateProjectionMatrix()}e.setRenderTarget(u.map),e.clear();const m=u.getViewportCount();for(let e=0;e=1):-1!==se.indexOf("OpenGL ES")&&(ae=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(se)[1]),oe=ae>=2);let le=null,ce={};const he=new Vn,ue=new Vn;function de(t,n,i){const r=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;ti||e.height>i)&&(r=i/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const i=t?Fn.floorPowerOfTwo:Math.floor,o=i(r*e.width),a=i(r*e.height);void 0===f&&(f=m(o,a));const s=n?m(o,a):f;return s.width=o,s.height=a,s.getContext("2d").drawImage(e,0,0,o,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+o+"x"+a+")."),s}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function _(e){return Fn.isPowerOfTwo(e.width)&&Fn.isPowerOfTwo(e.height)}function y(e,t){return e.generateMipmaps&&t&&e.minFilter!==pe&&e.minFilter!==ve}function v(t,n,r,o){e.generateMipmap(t),i.get(n).__maxMipLevel=Math.log(Math.max(r,o))*Math.LOG2E}function b(n,i,r){if(!1===s)return i;if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let o=i;return 6403===i&&(5126===r&&(o=33326),5131===r&&(o=33325),5121===r&&(o=33321)),6407===i&&(5126===r&&(o=34837),5131===r&&(o=34843),5121===r&&(o=32849)),6408===i&&(5126===r&&(o=34836),5131===r&&(o=34842),5121===r&&(o=32856)),33325!==o&&33326!==o&&34842!==o&&34836!==o||t.get("EXT_color_buffer_float"),o}function w(e){return e===pe||e===me||e===_e?9728:9729}function x(t){const n=t.target;n.removeEventListener("dispose",x),function(t){const n=i.get(t);void 0!==n.__webglInit&&(e.deleteTexture(n.__webglTexture),i.remove(t))}(n),n.isVideoTexture&&d.delete(n),a.memory.textures--}function A(t){const n=t.target;n.removeEventListener("dispose",A),function(t){const n=i.get(t),r=i.get(t.texture);if(t){if(void 0!==r.__webglTexture&&e.deleteTexture(r.__webglTexture),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t]);else e.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer&&e.deleteRenderbuffer(n.__webglColorRenderbuffer),n.__webglDepthRenderbuffer&&e.deleteRenderbuffer(n.__webglDepthRenderbuffer);i.remove(t.texture),i.remove(t)}}(n),a.memory.textures--}let S=0;function M(e,t){const r=i.get(e);if(e.isVideoTexture&&function(e){const t=a.render.frame;d.get(e)!==t&&(d.set(e,t),e.update())}(e),e.version>0&&r.__version!==e.version){const n=e.image;if(void 0===n)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==n.complete)return void L(r,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.activeTexture(33984+t),n.bindTexture(3553,r.__webglTexture)}function E(t,r){if(6!==t.image.length)return;const a=i.get(t);if(t.version>0&&a.__version!==t.version){P(a,t),n.activeTexture(33984+r),n.bindTexture(34067,a.__webglTexture),e.pixelStorei(37440,t.flipY);const i=t&&(t.isCompressedTexture||t.image[0].isCompressedTexture),l=t.image[0]&&t.image[0].isDataTexture,h=[];for(let e=0;e<6;e++)h[e]=i||l?l?t.image[e].image:t.image[e]:g(t.image[e],!1,!0,c);const u=h[0],d=_(u)||s,f=o.convert(t.format),p=o.convert(t.type),m=b(t.internalFormat,f,p);let w;if(C(34067,t,d),i){for(let e=0;e<6;e++){w=h[e].mipmaps;for(let i=0;i1||i.get(o).__currentAnisotropy)&&(e.texParameterf(n,l.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,r.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy)}}function P(t,n){void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",x),t.__webglTexture=e.createTexture(),a.memory.textures++)}function L(t,i,r){let a=3553;i.isDataTexture2DArray&&(a=35866),i.isDataTexture3D&&(a=32879),P(t,i),n.activeTexture(33984+r),n.bindTexture(a,t.__webglTexture),e.pixelStorei(37440,i.flipY),e.pixelStorei(37441,i.premultiplyAlpha),e.pixelStorei(3317,i.unpackAlignment);const l=function(e){return!s&&(e.wrapS!==de||e.wrapT!==de||e.minFilter!==pe&&e.minFilter!==ve)}(i)&&!1===_(i.image),c=g(i.image,l,!1,h),u=_(c)||s,d=o.convert(i.format);let f,p=o.convert(i.type),m=b(i.internalFormat,d,p);C(a,i,u);const w=i.mipmaps;if(i.isDepthTexture)m=6402,s?m=i.type===Ce?36012:i.type===Ie?33190:i.type===De?35056:33189:i.type===Ce&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),i.format===ze&&6402===m&&i.type!==Te&&i.type!==Ie&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),i.type=Te,p=o.convert(i.type)),i.format===Ue&&6402===m&&(m=34041,i.type!==De&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),i.type=De,p=o.convert(i.type))),n.texImage2D(3553,0,m,c.width,c.height,0,d,p,null);else if(i.isDataTexture)if(w.length>0&&u){for(let e=0,t=w.length;e0&&u){for(let e=0,t=w.length;e=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),S+=1,e},this.resetTextureUnits=function(){S=0},this.setTexture2D=M,this.setTexture2DArray=function(e,t){const r=i.get(e);e.version>0&&r.__version!==e.version?L(r,e,t):(n.activeTexture(33984+t),n.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function(e,t){const r=i.get(e);e.version>0&&r.__version!==e.version?L(r,e,t):(n.activeTexture(33984+t),n.bindTexture(32879,r.__webglTexture))},this.setTextureCube=E,this.setTextureCubeDynamic=T,this.setupRenderTarget=function(t){const r=i.get(t),l=i.get(t.texture);t.addEventListener("dispose",A),l.__webglTexture=e.createTexture(),a.memory.textures++;const c=!0===t.isWebGLCubeRenderTarget,h=!0===t.isWebGLMultisampleRenderTarget,u=_(t)||s;if(!s||t.texture.format!==Fe||t.texture.type!==Ce&&t.texture.type!==Pe||(t.texture.format=Ge,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),c){r.__webglFramebuffer=[];for(let t=0;t<6;t++)r.__webglFramebuffer[t]=e.createFramebuffer()}else if(r.__webglFramebuffer=e.createFramebuffer(),h)if(s){r.__webglMultisampledFramebuffer=e.createFramebuffer(),r.__webglColorRenderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,r.__webglColorRenderbuffer);const n=o.convert(t.texture.format),i=o.convert(t.texture.type),a=b(t.texture.internalFormat,n,i),s=D(t);e.renderbufferStorageMultisample(36161,s,a,t.width,t.height),e.bindFramebuffer(36160,r.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064,36161,r.__webglColorRenderbuffer),e.bindRenderbuffer(36161,null),t.depthBuffer&&(r.__webglDepthRenderbuffer=e.createRenderbuffer(),B(r.__webglDepthRenderbuffer,t,!0)),e.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");if(c){n.bindTexture(34067,l.__webglTexture),C(34067,t.texture,u);for(let e=0;e<6;e++)R(r.__webglFramebuffer[e],t,36064,34069+e);y(t.texture,u)&&v(34067,t.texture,t.width,t.height),n.bindTexture(34067,null)}else n.bindTexture(3553,l.__webglTexture),C(3553,t.texture,u),R(r.__webglFramebuffer,t,36064,3553),y(t.texture,u)&&v(3553,t.texture,t.width,t.height),n.bindTexture(3553,null);t.depthBuffer&&function(t){const n=i.get(t),r=!0===t.isWebGLCubeRenderTarget;if(t.depthTexture){if(r)throw new Error("target.depthTexture not supported in Cube render targets");!function(t,n){if(n&&n.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(36160,t),!n.depthTexture||!n.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");i.get(n.depthTexture).__webglTexture&&n.depthTexture.image.width===n.width&&n.depthTexture.image.height===n.height||(n.depthTexture.image.width=n.width,n.depthTexture.image.height=n.height,n.depthTexture.needsUpdate=!0),M(n.depthTexture,0);const r=i.get(n.depthTexture).__webglTexture;if(n.depthTexture.format===ze)e.framebufferTexture2D(36160,36096,3553,r,0);else{if(n.depthTexture.format!==Ue)throw new Error("Unknown depthTexture format");e.framebufferTexture2D(36160,33306,3553,r,0)}}(n.__webglFramebuffer,t)}else if(r){n.__webglDepthbuffer=[];for(let i=0;i<6;i++)e.bindFramebuffer(36160,n.__webglFramebuffer[i]),n.__webglDepthbuffer[i]=e.createRenderbuffer(),B(n.__webglDepthbuffer[i],t,!1)}else e.bindFramebuffer(36160,n.__webglFramebuffer),n.__webglDepthbuffer=e.createRenderbuffer(),B(n.__webglDepthbuffer,t,!1);e.bindFramebuffer(36160,null)}(t)},this.updateRenderTargetMipmap=function(e){const t=e.texture;if(y(t,_(e)||s)){const r=e.isWebGLCubeRenderTarget?34067:3553,o=i.get(t).__webglTexture;n.bindTexture(r,o),v(r,t,e.width,e.height),n.bindTexture(r,null)}},this.updateMultisampleRenderTarget=function(t){if(t.isWebGLMultisampleRenderTarget)if(s){const n=i.get(t);e.bindFramebuffer(36008,n.__webglMultisampledFramebuffer),e.bindFramebuffer(36009,n.__webglFramebuffer);const r=t.width,o=t.height;let a=16384;t.depthBuffer&&(a|=256),t.stencilBuffer&&(a|=1024),e.blitFramebuffer(0,0,r,o,0,0,r,o,a,9728),e.bindFramebuffer(36160,n.__webglMultisampledFramebuffer)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")},this.safeSetTexture2D=function(e,t){e&&e.isWebGLRenderTarget&&(!1===O&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),O=!0),e=e.texture),M(e,t)},this.safeSetTextureCube=function(e,t){e&&e.isWebGLCubeRenderTarget&&(!1===F&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),F=!0),e=e.texture),e&&e.isCubeTexture||Array.isArray(e.image)&&6===e.image.length?E(e,t):T(e,t)}}function Ps(e,t,n){const i=n.isWebGL2;return{convert:function(e){let n;if(e===Se)return 5121;if(e===Le)return 32819;if(e===Re)return 32820;if(e===Be)return 33635;if(e===Me)return 5120;if(e===Ee)return 5122;if(e===Te)return 5123;if(e===ke)return 5124;if(e===Ie)return 5125;if(e===Ce)return 5126;if(e===Pe)return i?5131:(n=t.get("OES_texture_half_float"),null!==n?n.HALF_FLOAT_OES:null);if(e===Oe)return 6406;if(e===Fe)return 6407;if(e===Ge)return 6408;if(e===Ne)return 6409;if(e===je)return 6410;if(e===ze)return 6402;if(e===Ue)return 34041;if(e===Ve)return 6403;if(e===We)return 36244;if(e===Ze)return 33319;if(e===Ye)return 33320;if(e===Xe)return 36248;if(e===Je)return 36249;if(e===qe||e===Qe||e===Ke||e===$e){if(n=t.get("WEBGL_compressed_texture_s3tc"),null===n)return null;if(e===qe)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===Qe)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===Ke)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===$e)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(e===et||e===tt||e===nt||e===it){if(n=t.get("WEBGL_compressed_texture_pvrtc"),null===n)return null;if(e===et)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===tt)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===nt)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===it)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(e===rt)return n=t.get("WEBGL_compressed_texture_etc1"),null!==n?n.COMPRESSED_RGB_ETC1_WEBGL:null;if((e===ot||e===at)&&(n=t.get("WEBGL_compressed_texture_etc"),null!==n)){if(e===ot)return n.COMPRESSED_RGB8_ETC2;if(e===at)return n.COMPRESSED_RGBA8_ETC2_EAC}return e===st||e===lt||e===ct||e===ht||e===ut||e===dt||e===ft||e===pt||e===mt||e===gt||e===_t||e===yt||e===vt||e===bt||e===xt||e===At||e===St||e===Mt||e===Et||e===Tt||e===kt||e===It||e===Ct||e===Pt||e===Lt||e===Rt||e===Bt||e===Dt?(n=t.get("WEBGL_compressed_texture_astc"),null!==n?e:null):e===wt?(n=t.get("EXT_texture_compression_bptc"),null!==n?e:null):e===De?i?34042:(n=t.get("WEBGL_depth_texture"),null!==n?n.UNSIGNED_INT_24_8_WEBGL:null):void 0}}}function Ls(e){xo.call(this),this.cameras=e||[]}function Rs(){xi.call(this),this.type="Group"}function Bs(){this._targetRay=null,this._grip=null,this._hand=null}function Ds(e,t){const n=this;let i=null,r=1,o=null,a="local-floor",s=null;const l=[],c=new Map,h=new xo;h.layers.enable(1),h.viewport=new Vn;const u=new xo;u.layers.enable(2),u.viewport=new Vn;const d=[h,u],f=new Ls;f.layers.enable(1),f.layers.enable(2);let p=null,m=null;function g(e){const t=c.get(e.inputSource);t&&t.dispatchEvent({type:e.type})}function _(){c.forEach((function(e,t){e.disconnect(t)})),c.clear(),e.setFramebuffer(null),e.setRenderTarget(e.getRenderTarget()),S.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function y(e){o=e,S.setContext(i),S.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}function v(e){const t=i.inputSources;for(let e=0;e=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;for(let t=0;t=0&&e.numSupportedMorphNormals++}const p=i.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(i.numClippingPlanes=D.numPlanes,i.numIntersection=D.numIntersection,p.clippingPlanes=D.uniform),i.environment=e.isMeshStandardMaterial?t.environment:null,i.fog=t.fog,i.needsLights=function(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),i.lightsStateVersion=a,i.needsLights&&(p.ambientLightColor.value=r.state.ambient,p.lightProbe.value=r.state.probe,p.directionalLights.value=r.state.directional,p.directionalLightShadows.value=r.state.directionalShadow,p.spotLights.value=r.state.spot,p.spotLightShadows.value=r.state.spotShadow,p.rectAreaLights.value=r.state.rectArea,p.pointLights.value=r.state.point,p.pointLightShadows.value=r.state.pointShadow,p.hemisphereLights.value=r.state.hemi,p.directionalShadowMap.value=r.state.directionalShadowMap,p.directionalShadowMatrix.value=r.state.directionalShadowMatrix,p.spotShadowMap.value=r.state.spotShadowMap,p.spotShadowMatrix.value=r.state.spotShadowMatrix,p.pointShadowMap.value=r.state.pointShadowMap,p.pointShadowMatrix.value=r.state.pointShadowMatrix);const m=i.program.getUniforms(),g=Ya.seqWithValue(m.seq,p);i.uniformsList=g}function Ae(e,t,n,i){!0!==t.isScene&&(t=j),Y.resetTextureUnits();const r=t.fog,o=n.isMeshStandardMaterial?t.environment:null,a=null===y?f.outputEncoding:y.texture.encoding,s=Z.get(n),l=d.state.lights;if(!0===O&&(!0===F||e!==w)){const t=e===w&&n.id===b;D.setState(n.clippingPlanes,n.clipIntersection,n.clipShadows,e,s,t)}n.version===s.__version?void 0===s.program||n.fog&&s.fog!==r||s.environment!==o||s.needsLights&&s.lightsStateVersion!==l.state.version?xe(n,t,i):void 0===s.numClippingPlanes||s.numClippingPlanes===D.numPlanes&&s.numIntersection===D.numIntersection?s.outputEncoding!==a&&xe(n,t,i):xe(n,t,i):(xe(n,t,i),s.__version=n.version);let c=!1,h=!1,u=!1;const p=s.program,m=p.getUniforms(),g=s.uniforms;if(V.useProgram(p.program)&&(c=!0,h=!0,u=!0),n.id!==b&&(b=n.id,h=!0),c||w!==e){if(m.setValue(le,"projectionMatrix",e.projectionMatrix),U.logarithmicDepthBuffer&&m.setValue(le,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),w!==e&&(w=e,h=!0,u=!0),n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap){const t=m.map.cameraPosition;void 0!==t&&t.setValue(le,N.setFromMatrixPosition(e.matrixWorld))}(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&m.setValue(le,"isOrthographic",!0===e.isOrthographicCamera),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.isShadowMaterial||n.skinning)&&m.setValue(le,"viewMatrix",e.matrixWorldInverse)}if(n.skinning){m.setOptional(le,i,"bindMatrix"),m.setOptional(le,i,"bindMatrixInverse");const e=i.skeleton;if(e){const t=e.bones;if(U.floatVertexTextures){if(void 0===e.boneTexture){let n=Math.sqrt(4*t.length);n=Fn.ceilPowerOfTwo(n),n=Math.max(n,4);const i=new Float32Array(n*n*4);i.set(e.boneMatrices);const r=new Eo(i,n,n,Ge,Ce);e.boneMatrices=i,e.boneTexture=r,e.boneTextureSize=n}m.setValue(le,"boneTexture",e.boneTexture,Y),m.setValue(le,"boneTextureSize",e.boneTextureSize)}else m.setOptional(le,e,"boneMatrices")}}var _,v;return(h||s.receiveShadow!==i.receiveShadow)&&(s.receiveShadow=i.receiveShadow,m.setValue(le,"receiveShadow",i.receiveShadow)),h&&(m.setValue(le,"toneMappingExposure",f.toneMappingExposure),s.needsLights&&(v=u,(_=g).ambientLightColor.needsUpdate=v,_.lightProbe.needsUpdate=v,_.directionalLights.needsUpdate=v,_.directionalLightShadows.needsUpdate=v,_.pointLights.needsUpdate=v,_.pointLightShadows.needsUpdate=v,_.spotLights.needsUpdate=v,_.spotLightShadows.needsUpdate=v,_.rectAreaLights.needsUpdate=v,_.hemisphereLights.needsUpdate=v),r&&n.fog&&$.refreshFogUniforms(g,r),$.refreshMaterialUniforms(g,n,o,k,T),void 0!==g.ltc_1&&(g.ltc_1.value=Co.LTC_1),void 0!==g.ltc_2&&(g.ltc_2.value=Co.LTC_2),Ya.upload(le,s.uniformsList,g,Y)),n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(Ya.upload(le,s.uniformsList,g,Y),n.uniformsNeedUpdate=!1),n.isSpriteMaterial&&m.setValue(le,"center",i.center),m.setValue(le,"modelViewMatrix",i.modelViewMatrix),m.setValue(le,"normalMatrix",i.normalMatrix),m.setValue(le,"modelMatrix",i.matrixWorld),p}ye.setAnimationLoop((function(e){ue.isPresenting||_e&&_e(e)})),"undefined"!=typeof window&&ye.setContext(window),this.setAnimationLoop=function(e){_e=e,ue.setAnimationLoop(e),null===e?ye.stop():ye.start()},this.render=function(e,t){let n,i;if(void 0!==arguments[2]&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),n=arguments[2]),void 0!==arguments[3]&&(console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),i=arguments[3]),void 0!==t&&!0!==t.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===p)return;se.resetDefaultState(),b=-1,w=null,!0===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),!0===ue.enabled&&!0===ue.isPresenting&&(t=ue.getCamera(t)),!0===e.isScene&&e.onBeforeRender(f,e,t,n||y),d=te.get(e,t),d.init(),G.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),B.setFromProjectionMatrix(G),F=this.localClippingEnabled,O=D.init(this.clippingPlanes,F,t),u=ee.get(e,t),u.init(),ve(e,t,0,f.sortObjects),u.finish(),!0===f.sortObjects&&u.sort(I,C),!0===O&&D.beginShadows();const r=d.state.shadowsArray;de.render(r,e,t),d.setupLights(t),!0===O&&D.endShadows(),!0===this.info.autoReset&&this.info.reset(),void 0!==n&&this.setRenderTarget(n),ne.render(u,e,t,i);const o=u.opaque,a=u.transparent;o.length>0&&be(o,e,t),a.length>0&&be(a,e,t),!0===e.isScene&&e.onAfterRender(f,e,t),null!==y&&(Y.updateRenderTargetMipmap(y),Y.updateMultisampleRenderTarget(y)),V.buffers.depth.setTest(!0),V.buffers.depth.setMask(!0),V.buffers.color.setMask(!0),V.setPolygonOffset(!1),u=null,d=null},this.setFramebuffer=function(e){m!==e&&null===y&&le.bindFramebuffer(36160,e),m=e},this.getActiveCubeFace=function(){return g},this.getActiveMipmapLevel=function(){return _},this.getRenderTarget=function(){return y},this.setRenderTarget=function(e,t,n){y=e,g=t,_=n,e&&void 0===Z.get(e).__webglFramebuffer&&Y.setupRenderTarget(e);let i=m,r=!1;if(e){const n=Z.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(i=n[t||0],r=!0):i=e.isWebGLMultisampleRenderTarget?Z.get(e).__webglMultisampledFramebuffer:n,A.copy(e.viewport),S.copy(e.scissor),M=e.scissorTest}else A.copy(P).multiplyScalar(k).floor(),S.copy(L).multiplyScalar(k).floor(),M=R;if(v!==i&&(le.bindFramebuffer(36160,i),v=i),V.viewport(A),V.scissor(S),V.setScissorTest(M),r){const i=Z.get(e.texture);le.framebufferTexture2D(36160,36064,34069+(t||0),i.__webglTexture,n||0)}},this.readRenderTargetPixels=function(e,t,n,i,r,o,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let s=Z.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(s=s[a]),s){let a=!1;s!==v&&(le.bindFramebuffer(36160,s),a=!0);try{const s=e.texture,l=s.format,c=s.type;if(l!==Ge&&ae.convert(l)!==le.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(c===Se||ae.convert(c)===le.getParameter(35738)||c===Ce&&(U.isWebGL2||z.get("OES_texture_float")||z.get("WEBGL_color_buffer_float"))||c===Pe&&(U.isWebGL2?z.get("EXT_color_buffer_float"):z.get("EXT_color_buffer_half_float"))))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");36053===le.checkFramebufferStatus(36160)?t>=0&&t<=e.width-i&&n>=0&&n<=e.height-r&&le.readPixels(t,n,i,r,ae.convert(l),ae.convert(c),o):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{a&&le.bindFramebuffer(36160,v)}}},this.copyFramebufferToTexture=function(e,t,n){void 0===n&&(n=0);const i=Math.pow(2,-n),r=Math.floor(t.image.width*i),o=Math.floor(t.image.height*i),a=ae.convert(t.format);Y.setTexture2D(t,0),le.copyTexImage2D(3553,n,a,e.x,e.y,r,o,0),V.unbindTexture()},this.copyTextureToTexture=function(e,t,n,i){void 0===i&&(i=0);const r=t.image.width,o=t.image.height,a=ae.convert(n.format),s=ae.convert(n.type);Y.setTexture2D(n,0),le.pixelStorei(37440,n.flipY),le.pixelStorei(37441,n.premultiplyAlpha),le.pixelStorei(3317,n.unpackAlignment),t.isDataTexture?le.texSubImage2D(3553,i,e.x,e.y,r,o,a,s,t.image.data):t.isCompressedTexture?le.compressedTexSubImage2D(3553,i,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):le.texSubImage2D(3553,i,e.x,e.y,a,s,t.image),0===i&&n.generateMipmaps&&le.generateMipmap(3553),V.unbindTexture()},this.initTexture=function(e){Y.setTexture2D(e,0),V.unbindTexture()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function Gs(e){Fs.call(this,e)}function Ns(e,t){this.name="",this.color=new fr(e),this.density=void 0!==t?t:25e-5}function js(e,t,n){this.name="",this.color=new fr(e),this.near=void 0!==t?t:1,this.far=void 0!==n?n:1e3}function Hs(e,t){this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=Mn,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Fn.generateUUID()}Es.prototype=Object.create(vr.prototype),Es.prototype.constructor=Es,Es.prototype.isMeshDepthMaterial=!0,Es.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},Ts.prototype=Object.create(vr.prototype),Ts.prototype.constructor=Ts,Ts.prototype.isMeshDistanceMaterial=!0,Ts.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this},Ls.prototype=Object.assign(Object.create(xo.prototype),{constructor:Ls,isArrayCamera:!0}),Rs.prototype=Object.assign(Object.create(xi.prototype),{constructor:Rs,isGroup:!0}),Object.assign(Bs.prototype,{constructor:Bs,getHandSpace:function(){if(null===this._hand&&(this._hand=new Rs,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints=[],this._hand.inputState={pinching:!1},window.XRHand))for(let e=0;e<=window.XRHand.LITTLE_PHALANX_TIP;e++){let e=new Rs;e.matrixAutoUpdate=!1,e.visible=!1,this._hand.joints.push(e),this._hand.add(e)}return this._hand},getTargetRaySpace:function(){return null===this._targetRay&&(this._targetRay=new Rs,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1),this._targetRay},getGripSpace:function(){return null===this._grip&&(this._grip=new Rs,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1),this._grip},dispatchEvent:function(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this},disconnect:function(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this},update:function(e,t,n){let i=null,r=null,o=null;const a=this._targetRay,s=this._grip,l=this._hand;if(e)if(e.hand){o=!0;for(let i=0;i<=window.XRHand.LITTLE_PHALANX_TIP;i++)if(e.hand[i]){let r=t.getJointPose(e.hand[i],n);const o=l.joints[i];null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.jointRadius=r.radius),o.visible=null!==r;const a=l.joints[window.XRHand.INDEX_PHALANX_TIP],s=l.joints[window.XRHand.THUMB_PHALANX_TIP],c=a.position.distanceTo(s.position),h=.02,u=.005;l.inputState.pinching&&c>h+u?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&c<=h-u&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}}else null!==a&&(i=t.getPose(e.targetRaySpace,n),null!==i&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale))),null!==s&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),null!==r&&(s.matrix.fromArray(r.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale)));return null!==a&&(a.visible=null!==i),null!==s&&(s.visible=null!==r),null!==l&&(l.visible=null!==o),this}}),Object.assign(Ds.prototype,Bn.prototype),Gs.prototype=Object.assign(Object.create(Fs.prototype),{constructor:Gs,isWebGL1Renderer:!0}),Object.assign(Ns.prototype,{isFogExp2:!0,clone:function(){return new Ns(this.color,this.density)},toJSON:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}),Object.assign(js.prototype,{isFog:!0,clone:function(){return new js(this.color,this.near,this.far)},toJSON:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}),Object.defineProperty(Hs.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Hs.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;ie.far||t.push({distance:s,point:Zs.clone(),uv:cr.getUV(Zs,Ks,$s,el,tl,nl,il,new Gn),face:null,object:this})},copy:function(e){return xi.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}});const al=new qn,sl=new qn;function ll(){xi.call(this),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}function cl(e,t){e&&e.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),ao.call(this,e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new ri,this.bindMatrixInverse=new ri}ll.prototype=Object.assign(Object.create(xi.prototype),{constructor:ll,isLOD:!0,copy:function(e){xi.prototype.copy.call(this,e,!1);const t=e.levels;for(let e=0,n=t.length;e0){let n,i;for(n=1,i=t.length;n0){al.setFromMatrixPosition(this.matrixWorld);const n=e.ray.origin.distanceTo(al);this.getObjectForDistance(n).raycast(e,t)}},update:function(e){const t=this.levels;if(t.length>1){al.setFromMatrixPosition(e.matrixWorld),sl.setFromMatrixPosition(this.matrixWorld);const n=al.distanceTo(sl)/e.zoom;let i,r;for(t[0].object.visible=!0,i=1,r=t.length;i=t[i].distance;i++)t[i-1].object.visible=!1,t[i].object.visible=!0;for(this._currentLevel=i-1;ia)continue;h.applyMatrix4(this.matrixWorld);const d=e.ray.origin.distanceTo(h);de.far||t.push({distance:d,point:c.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else for(let n=0,i=r.length/3-1;na)continue;h.applyMatrix4(this.matrixWorld);const i=e.ray.origin.distanceTo(h);ie.far||t.push({distance:i,point:c.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}else if(n.isGeometry){const i=n.vertices,r=i.length;for(let n=0;na)continue;h.applyMatrix4(this.matrixWorld);const r=e.ray.origin.distanceTo(h);re.far||t.push({distance:r,point:c.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}},updateMorphTargets:function(){const e=this.geometry;if(e.isBufferGeometry){const t=e.morphAttributes,n=Object.keys(t);if(n.length>0){const e=t[n[0]];if(void 0!==e){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,n=e.length;t0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}});const El=new qn,Tl=new qn;function kl(e,t){Ml.call(this,e,t),this.type="LineSegments"}function Il(e,t){Ml.call(this,e,t),this.type="LineLoop"}function Cl(e){vr.call(this),this.type="PointsMaterial",this.color=new fr(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(e)}kl.prototype=Object.assign(Object.create(Ml.prototype),{constructor:kl,isLineSegments:!0,computeLineDistances:function(){const e=this.geometry;if(e.isBufferGeometry)if(null===e.index){const t=e.attributes.position,n=[];for(let e=0,i=t.count;er.far)return;o.push({distance:l,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,object:a})}}function Fl(e,t,n,i,r,o,a,s,l){Un.call(this,e,t,n,i,r,o,a,s,l),this.format=void 0!==a?a:Fe,this.minFilter=void 0!==o?o:ve,this.magFilter=void 0!==r?r:ve,this.generateMipmaps=!1;const c=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback((function t(){c.needsUpdate=!0,e.requestVideoFrameCallback(t)}))}function Gl(e,t,n,i,r,o,a,s,l,c,h,u){Un.call(this,null,o,a,s,l,c,i,r,h,u),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}function Nl(e,t,n,i,r,o,a,s,l){Un.call(this,e,t,n,i,r,o,a,s,l),this.needsUpdate=!0}function jl(e,t,n,i,r,o,a,s,l,c){if((c=void 0!==c?c:ze)!==ze&&c!==Ue)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===ze&&(n=Te),void 0===n&&c===Ue&&(n=De),Un.call(this,null,i,r,o,a,s,c,n,l),this.image={width:e,height:t},this.magFilter=void 0!==a?a:pe,this.minFilter=void 0!==s?s:pe,this.flipY=!1,this.generateMipmaps=!1}function Hl(e){zr.call(this),this.type="WireframeGeometry";const t=[],n=[0,0],i={},r=["a","b","c"];if(e&&e.isGeometry){const o=e.faces;for(let e=0,t=o.length;e=0?(e(i-s,f,h),u.subVectors(c,h)):(e(i+s,f,h),u.subVectors(h,c)),f-s>=0?(e(i,f-s,h),d.subVectors(c,h)):(e(i,f+s,h),d.subVectors(h,c)),l.crossVectors(u,d).normalize(),o.push(l.x,l.y,l.z),a.push(i,f)}}for(let e=0;e.9&&a<.1&&(t<.2&&(o[e+0]+=1),n<.2&&(o[e+2]+=1),i<.2&&(o[e+4]+=1))}}()}(),this.setAttribute("position",new Pr(r,3)),this.setAttribute("normal",new Pr(r.slice(),3)),this.setAttribute("uv",new Pr(o,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}function Zl(e,t){po.call(this),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Yl(e,t)),this.mergeVertices()}function Yl(e,t){Wl.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Xl(e,t){po.call(this),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Jl(e,t)),this.mergeVertices()}function Jl(e,t){Wl.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronBufferGeometry",this.parameters={radius:e,detail:t}}function ql(e,t){po.call(this),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Ql(e,t)),this.mergeVertices()}function Ql(e,t){const n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];Wl.call(this,i,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Kl(e,t){po.call(this),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new $l(e,t)),this.mergeVertices()}function $l(e,t){const n=(1+Math.sqrt(5))/2,i=1/n,r=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i];Wl.call(this,r,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:e,detail:t}}function ec(e,t,n,i,r,o){po.call(this),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},void 0!==o&&console.warn("THREE.TubeGeometry: taper has been removed.");const a=new tc(e,t,n,i,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals,this.fromBufferGeometry(a),this.mergeVertices()}function tc(e,t,n,i,r){zr.call(this),this.type="TubeBufferGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},t=t||64,n=n||1,i=i||8,r=r||!1;const o=e.computeFrenetFrames(t,r);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals;const a=new qn,s=new qn,l=new Gn;let c=new qn;const h=[],u=[],d=[],f=[];function p(r){c=e.getPointAt(r/t,c);const l=o.normals[r],d=o.binormals[r];for(let e=0;e<=i;e++){const t=e/i*Math.PI*2,r=Math.sin(t),o=-Math.cos(t);s.x=o*l.x+r*d.x,s.y=o*l.y+r*d.y,s.z=o*l.z+r*d.z,s.normalize(),u.push(s.x,s.y,s.z),a.x=c.x+n*s.x,a.y=c.y+n*s.y,a.z=c.z+n*s.z,h.push(a.x,a.y,a.z)}}!function(){for(let e=0;e0){const e=t[n[0]];if(void 0!==e){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,n=e.length;t0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}),Fl.prototype=Object.assign(Object.create(Un.prototype),{constructor:Fl,isVideoTexture:!0,update:function(){const e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Gl.prototype=Object.create(Un.prototype),Gl.prototype.constructor=Gl,Gl.prototype.isCompressedTexture=!0,Nl.prototype=Object.create(Un.prototype),Nl.prototype.constructor=Nl,Nl.prototype.isCanvasTexture=!0,jl.prototype=Object.create(Un.prototype),jl.prototype.constructor=jl,jl.prototype.isDepthTexture=!0,Hl.prototype=Object.create(zr.prototype),Hl.prototype.constructor=Hl,zl.prototype=Object.create(po.prototype),zl.prototype.constructor=zl,Ul.prototype=Object.create(zr.prototype),Ul.prototype.constructor=Ul,Vl.prototype=Object.create(po.prototype),Vl.prototype.constructor=Vl,Wl.prototype=Object.create(zr.prototype),Wl.prototype.constructor=Wl,Zl.prototype=Object.create(po.prototype),Zl.prototype.constructor=Zl,Yl.prototype=Object.create(Wl.prototype),Yl.prototype.constructor=Yl,Xl.prototype=Object.create(po.prototype),Xl.prototype.constructor=Xl,Jl.prototype=Object.create(Wl.prototype),Jl.prototype.constructor=Jl,ql.prototype=Object.create(po.prototype),ql.prototype.constructor=ql,Ql.prototype=Object.create(Wl.prototype),Ql.prototype.constructor=Ql,Kl.prototype=Object.create(po.prototype),Kl.prototype.constructor=Kl,$l.prototype=Object.create(Wl.prototype),$l.prototype.constructor=$l,ec.prototype=Object.create(po.prototype),ec.prototype.constructor=ec,tc.prototype=Object.create(zr.prototype),tc.prototype.constructor=tc,tc.prototype.toJSON=function(){const e=zr.prototype.toJSON.call(this);return e.path=this.parameters.path.toJSON(),e},nc.prototype=Object.create(po.prototype),nc.prototype.constructor=nc,ic.prototype=Object.create(zr.prototype),ic.prototype.constructor=ic,rc.prototype=Object.create(po.prototype),rc.prototype.constructor=rc,oc.prototype=Object.create(zr.prototype),oc.prototype.constructor=oc;function ac(e,t,n,i,r){let o,a;if(r===function(e,t,n,i){let r=0;for(let o=t,a=n-i;o0)for(o=t;o=t;o-=i)a=Tc(o,e[o],e[o+1],a);return a&&wc(a,a.next)&&(kc(a),a=a.next),a}function sc(e,t){if(!e)return e;t||(t=e);let n,i=e;do{if(n=!1,i.steiner||!wc(i,i.next)&&0!==bc(i.prev,i,i.next))i=i.next;else{if(kc(i),i=t=i.prev,i===i.next)break;n=!0}}while(n||i!==t);return t}function lc(e,t,n,i,r,o,a){if(!e)return;!a&&o&&function(e,t,n,i){let r=e;do{null===r.z&&(r.z=gc(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n,i,r,o,a,s,l,c=1;do{for(n=e,e=null,o=null,a=0;n;){for(a++,i=n,s=0,t=0;t0||l>0&&i;)0!==s&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,s--):(r=i,i=i.nextZ,l--),o?o.nextZ=r:e=r,r.prevZ=o,o=r;n=i}o.nextZ=null,c*=2}while(a>1)}(r)}(e,i,r,o);let s,l,c=e;for(;e.prev!==e.next;)if(s=e.prev,l=e.next,o?hc(e,i,r,o):cc(e))t.push(s.i/n),t.push(e.i/n),t.push(l.i/n),kc(e),e=l.next,c=l.next;else if((e=l)===c){a?1===a?lc(e=uc(sc(e),t,n),t,n,i,r,o,2):2===a&&dc(e,t,n,i,r,o):lc(sc(e),t,n,i,r,o,1);break}}function cc(e){let t=e.prev,n=e,i=e.next;if(bc(t,n,i)>=0)return!1;let r=e.next.next;for(;r!==e.prev;){if(yc(t.x,t.y,n.x,n.y,i.x,i.y,r.x,r.y)&&bc(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function hc(e,t,n,i){let r=e.prev,o=e,a=e.next;if(bc(r,o,a)>=0)return!1;let s=r.xo.x?r.x>a.x?r.x:a.x:o.x>a.x?o.x:a.x,h=r.y>o.y?r.y>a.y?r.y:a.y:o.y>a.y?o.y:a.y,u=gc(s,l,t,n,i),d=gc(c,h,t,n,i),f=e.prevZ,p=e.nextZ;for(;f&&f.z>=u&&p&&p.z<=d;){if(f!==e.prev&&f!==e.next&&yc(r.x,r.y,o.x,o.y,a.x,a.y,f.x,f.y)&&bc(f.prev,f,f.next)>=0)return!1;if(f=f.prevZ,p!==e.prev&&p!==e.next&&yc(r.x,r.y,o.x,o.y,a.x,a.y,p.x,p.y)&&bc(p.prev,p,p.next)>=0)return!1;p=p.nextZ}for(;f&&f.z>=u;){if(f!==e.prev&&f!==e.next&&yc(r.x,r.y,o.x,o.y,a.x,a.y,f.x,f.y)&&bc(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;p&&p.z<=d;){if(p!==e.prev&&p!==e.next&&yc(r.x,r.y,o.x,o.y,a.x,a.y,p.x,p.y)&&bc(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function uc(e,t,n){let i=e;do{let r=i.prev,o=i.next.next;!wc(r,o)&&xc(r,i,i.next,o)&&Mc(r,o)&&Mc(o,r)&&(t.push(r.i/n),t.push(i.i/n),t.push(o.i/n),kc(i),kc(i.next),i=e=o),i=i.next}while(i!==e);return sc(i)}function dc(e,t,n,i,r,o){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&vc(a,e)){let s=Ec(a,e);return a=sc(a,a.next),s=sc(s,s.next),lc(a,t,n,i,r,o),void lc(s,t,n,i,r,o)}e=e.next}a=a.next}while(a!==e)}function fc(e,t){return e.x-t.x}function pc(e,t){if(t=function(e,t){let n,i=t,r=e.x,o=e.y,a=-1/0;do{if(o<=i.y&&o>=i.next.y&&i.next.y!==i.y){let e=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=r&&e>a){if(a=e,e===r){if(o===i.y)return i;if(o===i.next.y)return i.next}n=i.x=i.x&&i.x>=c&&r!==i.x&&yc(on.x||i.x===n.x&&mc(n,i)))&&(n=i,u=s)),i=i.next}while(i!==l);return n}(e,t),t){const n=Ec(t,e);sc(t,t.next),sc(n,n.next)}}function mc(e,t){return bc(e.prev,e,t.prev)<0&&bc(t.next,e,e.next)<0}function gc(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function _c(e){let t=e,n=e;do{(t.x=0&&(e-a)*(i-s)-(n-a)*(t-s)>=0&&(n-a)*(o-s)-(r-a)*(i-s)>=0}function vc(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&xc(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(Mc(e,t)&&Mc(t,e)&&function(e,t){let n=e,i=!1,r=(e.x+t.x)/2,o=(e.y+t.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&r<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==e);return i}(e,t)&&(bc(e.prev,e,t.prev)||bc(e,t.prev,t))||wc(e,t)&&bc(e.prev,e,e.next)>0&&bc(t.prev,t,t.next)>0)}function bc(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function wc(e,t){return e.x===t.x&&e.y===t.y}function xc(e,t,n,i){const r=Sc(bc(e,t,n)),o=Sc(bc(e,t,i)),a=Sc(bc(n,i,e)),s=Sc(bc(n,i,t));return r!==o&&a!==s||!(0!==r||!Ac(e,n,t))||!(0!==o||!Ac(e,i,t))||!(0!==a||!Ac(n,e,i))||!(0!==s||!Ac(n,t,i))}function Ac(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function Sc(e){return e>0?1:e<0?-1:0}function Mc(e,t){return bc(e.prev,e,e.next)<0?bc(e,t,e.next)>=0&&bc(e,e.prev,t)>=0:bc(e,t,e.prev)<0||bc(e,e.next,t)<0}function Ec(e,t){let n=new Ic(e.i,e.x,e.y),i=new Ic(t.i,t.x,t.y),r=e.next,o=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,o.next=i,i.prev=o,i}function Tc(e,t,n,i){const r=new Ic(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function kc(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Ic(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}const Cc={area:function(e){const t=e.length;let n=0;for(let i=t-1,r=0;r80*n){i=o=e[0],r=a=e[1];for(let t=n;to&&(o=s),l>a&&(a=l);c=Math.max(o-i,a-r),c=0!==c?1/c:0}return lc(d,f,n,i,r,c),f}(n,i);for(let e=0;e2&&e[t-1].equals(e[0])&&e.pop()}function Lc(e,t){for(let n=0;nNumber.EPSILON){const u=Math.sqrt(h),d=Math.sqrt(l*l+c*c),f=t.x-s/u,p=t.y+a/u,m=((n.x-c/d-f)*c-(n.y+l/d-p)*l)/(a*c-s*l);i=f+a*m-e.x,r=p+s*m-e.y;const g=i*i+r*r;if(g<=2)return new Gn(i,r);o=Math.sqrt(g/2)}else{let e=!1;a>Number.EPSILON?l>Number.EPSILON&&(e=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(s)===Math.sign(c)&&(e=!0),e?(i=-s,r=a,o=Math.sqrt(h)):(i=a,r=s,o=Math.sqrt(h/2))}return new Gn(i/o,r/o)}const P=[];for(let e=0,t=E.length,n=t-1,i=e+1;e=0;e--){const t=e/f,n=h*Math.cos(t*Math.PI/2),i=u*Math.sin(t*Math.PI/2)+d;for(let e=0,t=E.length;e=0;){const i=n;let r=n-1;r<0&&(r=e.length-1);for(let e=0,n=s+2*f;e0)&&d.push(t,r,l),(e!==n-1||s0&&_(!0),t>0&&_(!1)),this.setIndex(c),this.setAttribute("position",new Pr(h,3)),this.setAttribute("normal",new Pr(u,3)),this.setAttribute("uv",new Pr(d,2))}function Qc(e,t,n,i,r,o,a){Jc.call(this,0,e,t,n,i,r,o,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:o,thetaLength:a}}function Kc(e,t,n,i,r,o,a){qc.call(this,0,e,t,n,i,r,o,a),this.type="ConeBufferGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:o,thetaLength:a}}function $c(e,t,n,i){po.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},this.fromBufferGeometry(new eh(e,t,n,i)),this.mergeVertices()}function eh(e,t,n,i){zr.call(this),this.type="CircleBufferGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},e=e||1,t=void 0!==t?Math.max(3,t):8,n=void 0!==n?n:0,i=void 0!==i?i:2*Math.PI;const r=[],o=[],a=[],s=[],l=new qn,c=new Gn;o.push(0,0,0),a.push(0,0,1),s.push(.5,.5);for(let r=0,h=3;r<=t;r++,h+=3){const u=n+r/t*i;l.x=e*Math.cos(u),l.y=e*Math.sin(u),o.push(l.x,l.y,l.z),a.push(0,0,1),c.x=(o[h]/e+1)/2,c.y=(o[h+1]/e+1)/2,s.push(c.x,c.y)}for(let e=1;e<=t;e++)r.push(e,e+1,0);this.setIndex(r),this.setAttribute("position",new Pr(o,3)),this.setAttribute("normal",new Pr(a,3)),this.setAttribute("uv",new Pr(s,2))}Fc.prototype=Object.create(po.prototype),Fc.prototype.constructor=Fc,Gc.prototype=Object.create(Bc.prototype),Gc.prototype.constructor=Gc,Nc.prototype=Object.create(po.prototype),Nc.prototype.constructor=Nc,jc.prototype=Object.create(zr.prototype),jc.prototype.constructor=jc,Hc.prototype=Object.create(po.prototype),Hc.prototype.constructor=Hc,zc.prototype=Object.create(zr.prototype),zc.prototype.constructor=zc,Uc.prototype=Object.create(po.prototype),Uc.prototype.constructor=Uc,Vc.prototype=Object.create(zr.prototype),Vc.prototype.constructor=Vc,Wc.prototype=Object.create(po.prototype),Wc.prototype.constructor=Wc,Wc.prototype.toJSON=function(){const e=po.prototype.toJSON.call(this);return Yc(this.parameters.shapes,e)},Zc.prototype=Object.create(zr.prototype),Zc.prototype.constructor=Zc,Zc.prototype.toJSON=function(){const e=zr.prototype.toJSON.call(this);return Yc(this.parameters.shapes,e)},Xc.prototype=Object.create(zr.prototype),Xc.prototype.constructor=Xc,Jc.prototype=Object.create(po.prototype),Jc.prototype.constructor=Jc,qc.prototype=Object.create(zr.prototype),qc.prototype.constructor=qc,Qc.prototype=Object.create(Jc.prototype),Qc.prototype.constructor=Qc,Kc.prototype=Object.create(qc.prototype),Kc.prototype.constructor=Kc,$c.prototype=Object.create(po.prototype),$c.prototype.constructor=$c,eh.prototype=Object.create(zr.prototype),eh.prototype.constructor=eh;var th=Object.freeze({__proto__:null,WireframeGeometry:Hl,ParametricGeometry:zl,ParametricBufferGeometry:Ul,TetrahedronGeometry:Zl,TetrahedronBufferGeometry:Yl,OctahedronGeometry:Xl,OctahedronBufferGeometry:Jl,IcosahedronGeometry:ql,IcosahedronBufferGeometry:Ql,DodecahedronGeometry:Kl,DodecahedronBufferGeometry:$l,PolyhedronGeometry:Vl,PolyhedronBufferGeometry:Wl,TubeGeometry:ec,TubeBufferGeometry:tc,TorusKnotGeometry:nc,TorusKnotBufferGeometry:ic,TorusGeometry:rc,TorusBufferGeometry:oc,TextGeometry:Fc,TextBufferGeometry:Gc,SphereGeometry:Nc,SphereBufferGeometry:jc,RingGeometry:Hc,RingBufferGeometry:zc,PlaneGeometry:Ro,PlaneBufferGeometry:Bo,LatheGeometry:Uc,LatheBufferGeometry:Vc,ShapeGeometry:Wc,ShapeBufferGeometry:Zc,ExtrudeGeometry:Rc,ExtrudeBufferGeometry:Bc,EdgesGeometry:Xc,ConeGeometry:Qc,ConeBufferGeometry:Kc,CylinderGeometry:Jc,CylinderBufferGeometry:qc,CircleGeometry:$c,CircleBufferGeometry:eh,BoxGeometry:mo,BoxBufferGeometry:go});function nh(e){vr.call(this),this.type="ShadowMaterial",this.color=new fr(0),this.transparent=!0,this.setValues(e)}function ih(e){bo.call(this,e),this.type="RawShaderMaterial"}function rh(e){vr.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new fr(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new fr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=sn,this.normalScale=new Gn(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.vertexTangents=!1,this.setValues(e)}function oh(e){rh.call(this),this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoat=0,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Gn(1,1),this.clearcoatNormalMap=null,this.reflectivity=.5,this.sheen=null,this.transmission=0,this.transmissionMap=null,this.setValues(e)}function ah(e){vr.call(this),this.type="MeshPhongMaterial",this.color=new fr(16777215),this.specular=new fr(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new fr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=sn,this.normalScale=new Gn(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=J,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function sh(e){vr.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new fr(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new fr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=sn,this.normalScale=new Gn(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function lh(e){vr.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=sn,this.normalScale=new Gn(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function ch(e){vr.call(this),this.type="MeshLambertMaterial",this.color=new fr(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new fr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=J,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function hh(e){vr.call(this),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new fr(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=sn,this.normalScale=new Gn(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function uh(e){vl.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}nh.prototype=Object.create(vr.prototype),nh.prototype.constructor=nh,nh.prototype.isShadowMaterial=!0,nh.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this},ih.prototype=Object.create(bo.prototype),ih.prototype.constructor=ih,ih.prototype.isRawShaderMaterial=!0,rh.prototype=Object.create(vr.prototype),rh.prototype.constructor=rh,rh.prototype.isMeshStandardMaterial=!0,rh.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.vertexTangents=e.vertexTangents,this},oh.prototype=Object.create(rh.prototype),oh.prototype.constructor=oh,oh.prototype.isMeshPhysicalMaterial=!0,oh.prototype.copy=function(e){return rh.prototype.copy.call(this,e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.reflectivity=e.reflectivity,e.sheen?this.sheen=(this.sheen||new fr).copy(e.sheen):this.sheen=null,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this},ah.prototype=Object.create(vr.prototype),ah.prototype.constructor=ah,ah.prototype.isMeshPhongMaterial=!0,ah.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},sh.prototype=Object.create(vr.prototype),sh.prototype.constructor=sh,sh.prototype.isMeshToonMaterial=!0,sh.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},lh.prototype=Object.create(vr.prototype),lh.prototype.constructor=lh,lh.prototype.isMeshNormalMaterial=!0,lh.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},ch.prototype=Object.create(vr.prototype),ch.prototype.constructor=ch,ch.prototype.isMeshLambertMaterial=!0,ch.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},hh.prototype=Object.create(vr.prototype),hh.prototype.constructor=hh,hh.prototype.isMeshMatcapMaterial=!0,hh.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},uh.prototype=Object.create(vl.prototype),uh.prototype.constructor=uh,uh.prototype.isLineDashedMaterial=!0,uh.prototype.copy=function(e){return vl.prototype.copy.call(this,e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this};var dh=Object.freeze({__proto__:null,ShadowMaterial:nh,SpriteMaterial:Vs,RawShaderMaterial:ih,ShaderMaterial:bo,PointsMaterial:Cl,MeshPhysicalMaterial:oh,MeshStandardMaterial:rh,MeshPhongMaterial:ah,MeshToonMaterial:sh,MeshNormalMaterial:lh,MeshLambertMaterial:ch,MeshDepthMaterial:Es,MeshDistanceMaterial:Ts,MeshBasicMaterial:br,MeshMatcapMaterial:hh,LineDashedMaterial:uh,LineBasicMaterial:vl,Material:vr});const fh={arraySlice:function(e,t,n){return fh.isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)},convertArray:function(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(e){const t=e.length,n=new Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort((function(t,n){return e[t]-e[n]})),n},sortedArray:function(e,t,n){const i=e.length,r=new e.constructor(i);for(let o=0,a=0;a!==i;++o){const i=n[o]*t;for(let n=0;n!==t;++n)r[a++]=e[i+n]}return r},flattenJSON:function(e,t,n,i){let r=1,o=e[0];for(;void 0!==o&&void 0===o[i];)o=e[r++];if(void 0===o)return;let a=o[i];if(void 0!==a)if(Array.isArray(a))do{a=o[i],void 0!==a&&(t.push(o.time),n.push.apply(n,a)),o=e[r++]}while(void 0!==o);else if(void 0!==a.toArray)do{a=o[i],void 0!==a&&(t.push(o.time),a.toArray(n,n.length)),o=e[r++]}while(void 0!==o);else do{a=o[i],void 0!==a&&(t.push(o.time),n.push(a)),o=e[r++]}while(void 0!==o)},subclip:function(e,t,n,i,r){r=r||30;const o=e.clone();o.name=t;const a=[];for(let e=0;e=i)){l.push(t.times[e]);for(let n=0;no.tracks[e].times[0]&&(s=o.tracks[e].times[0]);for(let e=0;e=i.times[l]){const e=l*s;c=fh.arraySlice(i.values,e)}else{const e=i.createInterpolant();e.evaluate(o),c=e.resultBuffer}"quaternion"===r&&new Yn(c[0],c[1],c[2],c[3]).normalize().conjugate().toArray(c);const h=a.times.length;for(let e=0;e=r)break e;{const a=t[1];e=r)break t}o=n,n=0}}for(;n>>1;et;)--o;if(++o,0!==r||o!==i){r>=o&&(o=Math.max(o,1),r=o-1);const e=this.getValueSize();this.times=fh.arraySlice(n,r,o),this.values=fh.arraySlice(this.values,r*e,o*e)}return this},validate:function(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let t=0;t!==r;t++){const i=n[t];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==o&&o>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,i,o),e=!1;break}o=i}if(void 0!==i&&fh.isTypedArray(i))for(let t=0,n=i.length;t!==n;++t){const n=i[t];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,n),e=!1;break}}return e},optimize:function(){const e=fh.arraySlice(this.times),t=fh.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===Ht,r=e.length-1;let o=1;for(let a=1;a0){e[o]=e[r];for(let e=r*n,i=o*n,a=0;a!==n;++a)t[i+a]=t[e+a];++o}return o!==e.length?(this.times=fh.arraySlice(e,0,o),this.values=fh.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this},clone:function(){const e=fh.arraySlice(this.times,0),t=fh.arraySlice(this.values,0),n=new(0,this.constructor)(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}),vh.prototype=Object.assign(Object.create(yh.prototype),{constructor:vh,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:Nt,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),bh.prototype=Object.assign(Object.create(yh.prototype),{constructor:bh,ValueTypeName:"color"}),wh.prototype=Object.assign(Object.create(yh.prototype),{constructor:wh,ValueTypeName:"number"}),xh.prototype=Object.assign(Object.create(ph.prototype),{constructor:xh,interpolate_:function(e,t,n,i){const r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,s=(n-t)/(i-t);let l=e*a;for(let e=l+a;l!==e;l+=4)Yn.slerpFlat(r,0,o,l-a,o,l,s);return r}}),Ah.prototype=Object.assign(Object.create(yh.prototype),{constructor:Ah,ValueTypeName:"quaternion",DefaultInterpolation:jt,InterpolantFactoryMethodLinear:function(e){return new xh(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:void 0}),Sh.prototype=Object.assign(Object.create(yh.prototype),{constructor:Sh,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:Nt,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Mh.prototype=Object.assign(Object.create(yh.prototype),{constructor:Mh,ValueTypeName:"vector"}),Object.assign(Eh,{parse:function(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push(Th(n[e]).scale(i));return new Eh(e.name,e.duration,t,e.blendMode)},toJSON:function(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,i=n.length;e!==i;++e)t.push(yh.toJSON(n[e]));return i},CreateFromMorphTargetSequence:function(e,t,n,i){const r=t.length,o=[];for(let e=0;e1){const e=o[1];let t=i[e];t||(i[e]=t=[]),t.push(n)}}const o=[];for(const e in i)o.push(Eh.CreateFromMorphTargetSequence(e,i[e],t,n));return o},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(e,t,n,i,r){if(0!==n.length){const o=[],a=[];fh.flattenJSON(n,o,a,i),0!==o.length&&r.push(new e(t,o,a))}},i=[],r=e.name||"default",o=e.fps||30,a=e.blendMode;let s=e.length||-1;const l=e.hierarchy||[];for(let e=0;e0||0===e.search(/^data\:image\/jpeg/);r.format=i?Fe:Ge,r.needsUpdate=!0,void 0!==t&&t(r)}),n,i),r}}),Object.assign(jh.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)},getPoints:function(e){void 0===e&&(e=5);const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t},getSpacedPoints:function(e){void 0===e&&(e=5);const t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t},getLength:function(){const e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,i=this.getPoint(0),r=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){const n=this.getLengths();let i,r=0,o=n.length;i=t||e*n[o-1];let a,s=0,l=o-1;for(;s<=l;)if(r=Math.floor(s+(l-s)/2),a=n[r]-i,a<0)s=r+1;else{if(!(a>0)){l=r;break}l=r-1}if(r=l,n[r]===i)return r/(o-1);const c=n[r];return(r+(i-c)/(n[r+1]-c))/(o-1)},getTangent:function(e,t){const n=1e-4;let i=e-n,r=e+n;i<0&&(i=0),r>1&&(r=1);const o=this.getPoint(i),a=this.getPoint(r),s=t||(o.isVector2?new Gn:new qn);return s.copy(a).sub(o).normalize(),s},getTangentAt:function(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)},computeFrenetFrames:function(e,t){const n=new qn,i=[],r=[],o=[],a=new qn,s=new ri;for(let t=0;t<=e;t++){const n=t/e;i[t]=this.getTangentAt(n,new qn),i[t].normalize()}r[0]=new qn,o[0]=new qn;let l=Number.MAX_VALUE;const c=Math.abs(i[0].x),h=Math.abs(i[0].y),u=Math.abs(i[0].z);c<=l&&(l=c,n.set(1,0,0)),h<=l&&(l=h,n.set(0,1,0)),u<=l&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],a),o[0].crossVectors(i[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),o[t]=o[t-1].clone(),a.crossVectors(i[t-1],i[t]),a.length()>Number.EPSILON){a.normalize();const e=Math.acos(Fn.clamp(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(s.makeRotationAxis(a,e))}o[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(Fn.clamp(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(a.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n<=e;n++)r[n].applyMatrix4(s.makeRotationAxis(i[n],t*n)),o[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:o}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),Hh.prototype=Object.create(jh.prototype),Hh.prototype.constructor=Hh,Hh.prototype.isEllipseCurve=!0,Hh.prototype.getPoint=function(e,t){const n=t||new Gn,i=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const o=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(h)/r)+1)*r:0===u&&h===r-1&&(h=r-2,u=1),this.closed||h>0?a=i[(h-1)%r]:(Vh.subVectors(i[0],i[1]).add(i[0]),a=Vh),s=i[h%r],l=i[(h+1)%r],this.closed||h+2i.length-2?i.length-1:o+1],h=i[o>i.length-3?i.length-1:o+2];return n.set(Jh(a,s.x,l.x,c.x,h.x),Jh(a,s.y,l.y,c.y,h.y)),n},ru.prototype.copy=function(e){jh.prototype.copy.call(this,e),this.points=[];for(let t=0,n=e.points.length;t=t){const e=n[i]-t,r=this.curves[i],o=r.getLength(),a=0===o?0:1-e/o;return r.getPointAt(a)}i++}return null},getLength:function(){const e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,i=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t},copy:function(e){jh.prototype.copy.call(this,e),this.curves=[];for(let t=0,n=e.curves.length;t0){const e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this},copy:function(e){return au.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){const e=au.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return au.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),lu.prototype=Object.assign(Object.create(su.prototype),{constructor:lu,getPointsHoles:function(e){const t=[];for(let n=0,i=this.holes.length;n0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(const t in e.uniforms){const r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case"t":i.uniforms[t].value=n(r.value);break;case"c":i.uniforms[t].value=(new fr).setHex(r.value);break;case"v2":i.uniforms[t].value=(new Gn).fromArray(r.value);break;case"v3":i.uniforms[t].value=(new qn).fromArray(r.value);break;case"v4":i.uniforms[t].value=(new Vn).fromArray(r.value);break;case"m3":i.uniforms[t].value=(new Nn).fromArray(r.value);case"m4":i.uniforms[t].value=(new ri).fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.extensions)for(const t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.shading&&(i.flatShading=1===e.shading),void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=(new Gn).fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=(new Gn).fromArray(e.clearcoatNormalScale)),void 0!==e.transmission&&(i.transmission=e.transmission),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),i},setTextures:function(e){return this.textures=e,this}});const Su={decodeText:function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let n=0,i=e.length;n0){const a=new Ih(t);r=new Fh(a),r.setCrossOrigin(this.crossOrigin);for(let t=0,r=e.length;tNumber.EPSILON){if(l<0&&(n=t[o],s=-s,a=t[r],l=-l),e.ya.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{const t=l*(e.x-n.x)-s*(e.y-n.y);if(0===t)return!0;if(t<0)continue;i=!i}}else{if(e.y!==n.y)continue;if(a.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=a.x)return!0}}return i}const r=Cc.isClockWise,o=this.subPaths;if(0===o.length)return[];if(!0===t)return n(o);let a,s,l,c=[];if(1===o.length)return s=o[0],l=new lu,l.curves=s.curves,c.push(l),c;let h=!r(o[0].getPoints());h=e?!h:h;const u=[],d=[];let f,p,m=[],g=0;d[g]=void 0,m[g]=[];for(let t=0,n=o.length;t1){let e=!1;const t=[];for(let e=0,t=d.length;e0&&(e||(m=u))}for(let e=0,t=d.length;e0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){a.setValue(n,i);break}},saveOriginalState:function(){const e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n,r=i;e!==r;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0},restoreOriginalState:function(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)},_setAdditiveIdentityNumeric:function(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]},_slerp:function(e,t,n,i){Yn.slerpFlat(e,t,e,t,e,n,i)},_slerpAdditive:function(e,t,n,i,r){const o=this._workIndex*r;Yn.multiplyQuaternionsFlat(e,o,e,t,e,n),Yn.slerpFlat(e,t,e,t,e,o,i)},_lerp:function(e,t,n,i,r){const o=1-i;for(let a=0;a!==r;++a){const r=t+a;e[r]=e[r]*o+e[n+a]*i}},_lerpAdditive:function(e,t,n,i,r){for(let o=0;o!==r;++o){const r=t+o;e[r]=e[r]+e[n+o]*i}}});const ad=new RegExp("[\\[\\]\\.:\\/]","g"),sd="[^\\[\\]\\.:\\/]",ld="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",cd=/((?:WC+[\/:])*)/.source.replace("WC",sd),hd=/(WCOD+)?/.source.replace("WCOD",ld),ud=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",sd),dd=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",sd),fd=new RegExp("^"+cd+hd+ud+dd+"$"),pd=["material","materials","bones"];function md(e,t,n){const i=n||gd.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}function gd(e,t,n){this.path=t,this.parsedPath=n||gd.parseTrackName(t),this.node=gd.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function _d(){this.uuid=Fn.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const e={};this._indicesByUUID=e;for(let t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const t=this;this.stats={objects:{get total(){return t._objects.length},get inUse(){return this.total-t.nCachedObjects_}},get bindingsPerObject(){return t._bindings.length}}}function yd(e,t,n,i){this._mixer=e,this._clip=t,this._localRoot=n||null,this.blendMode=i||t.blendMode;const r=t.tracks,o=r.length,a=new Array(o),s={endingStart:zt,endingEnd:zt};for(let e=0;e!==o;++e){const t=r[e].createInterpolant(null);a[e]=t,t.settings=s}this._interpolantSettings=s,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Ft,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function vd(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function bd(e){"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}function wd(e,t,n){Hs.call(this,e,t),this.meshPerAttribute=n||1}function xd(e,t,n,i){this.ray=new Xi(e,t),this.near=n||0,this.far=i||1/0,this.camera=null,this.layers=new li,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}},Object.defineProperties(this.params,{PointCloud:{get:function(){return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),this.Points}}})}function Ad(e,t){return e.distance-t.distance}function Sd(e,t,n,i){if(e.layers.test(t.layers)&&e.raycast(t,n),!0===i){const i=e.children;for(let e=0,r=i.length;e=r){const o=r++,c=e[o];t[c.uuid]=l,e[l]=c,t[s]=o,e[o]=a;for(let e=0,t=i;e!==t;++e){const t=n[e],i=t[o],r=t[l];t[l]=i,t[o]=r}}}this.nCachedObjects_=r},uncache:function(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_,o=e.length;for(let a=0,s=arguments.length;a!==s;++a){const s=arguments[a].uuid,l=t[s];if(void 0!==l)if(delete t[s],l0){const e=this._interpolants,t=this._propertyBindings;if(this.blendMode===Zt)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(o),t[n].accumulateAdditive(a);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(o),t[n].accumulate(i,a)}},_updateWeight:function(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(null!==n){const i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t},_updateTime:function(e){const t=this._clip.duration,n=this.loop;let i=this.time+e,r=this._loopCount;const o=n===Gt;if(0===e)return-1===r?i:o&&1==(1&r)?t-i:i;if(n===Ot){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else{if(!(i<0)){this.time=i;break e}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,o)):this._setEndings(0===this.repetitions,!0,o)),i>=t||i<0){const n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===a){const t=e<0;this._setEndings(t,!t,o)}else this._setEndings(!1,!1,o);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(o&&1==(1&r))return t-i}return i},_setEndings:function(e,t,n){const i=this._interpolantSettings;n?(i.endingStart=Ut,i.endingEnd=Ut):(i.endingStart=e?this.zeroSlopeAtStart?Ut:zt:Vt,i.endingEnd=t?this.zeroSlopeAtEnd?Ut:zt:Vt)},_scheduleFading:function(e,t,n){const i=this._mixer,r=i.time;let o=this._weightInterpolant;null===o&&(o=i._lendControlInterpolant(),this._weightInterpolant=o);const a=o.parameterPositions,s=o.sampleValues;return a[0]=r,s[0]=t,a[1]=r+e,s[1]=n,this}}),vd.prototype=Object.assign(Object.create(Bn.prototype),{constructor:vd,_bindAction:function(e,t){const n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,o=e._propertyBindings,a=e._interpolants,s=n.uuid,l=this._bindingsByRootAndName;let c=l[s];void 0===c&&(c={},l[s]=c);for(let e=0;e!==r;++e){const r=i[e],l=r.name;let h=c[l];if(void 0!==h)o[e]=h;else{if(h=o[e],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,s,l));continue}const i=t&&t._propertyBindings[e].binding.parsedPath;h=new od(gd.create(n,l,i),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,s,l),o[e]=h}a[e].resultBuffer=h.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){const t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){const t=e._cacheIndex;return null!==t&&t=0;--t)e[t].stop();return this},update:function(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),o=this._accuIndex^=1;for(let a=0;a!==n;++a)t[a]._update(i,e,r,o);const a=this._bindings,s=this._nActiveBindings;for(let e=0;e!==s;++e)a[e].apply(o);return this},setTime:function(e){this.time=0;for(let e=0;ethis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new Gn),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new Gn),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return Td.copy(e).clamp(this.min,this.max).sub(e).length()},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});const Id=new qn,Cd=new qn;function Pd(e,t){this.start=void 0!==e?e:new qn,this.end=void 0!==t?t:new qn}function Ld(e){xi.call(this),this.material=e,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}Object.assign(Pd.prototype,{set:function(e,t){return this.start.copy(e),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},getCenter:function(e){return void 0===e&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new qn),e.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return void 0===e&&(console.warn("THREE.Line3: .delta() target is now required"),e=new qn),e.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new qn),this.delta(t).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(e,t){Id.subVectors(e,this.start),Cd.subVectors(this.end,this.start);const n=Cd.dot(Cd);let i=Cd.dot(Id)/n;return t&&(i=Fn.clamp(i,0,1)),i},closestPointToPoint:function(e,t,n){const i=this.closestPointToPointParameter(e,t);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new qn),this.delta(n).multiplyScalar(i).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}),Ld.prototype=Object.create(xi.prototype),Ld.prototype.constructor=Ld,Ld.prototype.isImmediateRenderObject=!0;const Rd=new qn;function Bd(e,t){xi.call(this),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;const n=new zr,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1,n=32;e.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{af.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(af,t)}},cf.prototype.setLength=function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()},cf.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},cf.prototype.copy=function(e){return xi.prototype.copy.call(this,e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this},hf.prototype=Object.create(kl.prototype),hf.prototype.constructor=hf;const uf=Math.pow(2,8),df=[.125,.215,.35,.446,.526,.582],ff=5+df.length,pf={[qt]:0,[Qt]:1,[$t]:2,[tn]:3,[nn]:4,[rn]:5,[Kt]:6},mf=new gu,{_lodPlanes:gf,_sizeLods:_f,_sigmas:yf}=function(){const e=[],t=[],n=[];let i=8;for(let r=0;r4?a=df[r-8+4-1]:0==r&&(a=0),n.push(a);const s=1/(o-1),l=-s/2,c=1+s/2,h=[l,l,c,l,c,c,l,l,c,c,l,c],u=6,d=6,f=3,p=2,m=1,g=new Float32Array(f*d*u),_=new Float32Array(p*d*u),y=new Float32Array(m*d*u);for(let e=0;e2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];g.set(i,f*d*e),_.set(h,p*d*e);const r=[e,e,e,e,e,e];y.set(r,m*d*e)}const v=new zr;v.setAttribute("position",new Ar(g,f)),v.setAttribute("uv",new Ar(_,p)),v.setAttribute("faceIndex",new Ar(y,m)),e.push(v),i>4&&i--}return{_lodPlanes:e,_sizeLods:t,_sigmas:n}}();let vf=null;const bf=(1+Math.sqrt(5))/2,wf=1/bf,xf=[new qn(1,1,1),new qn(-1,1,1),new qn(1,1,-1),new qn(-1,1,-1),new qn(0,bf,wf),new qn(0,bf,-wf),new qn(wf,0,bf),new qn(-wf,0,bf),new qn(bf,wf,0),new qn(-bf,wf,0)];function Af(e){this._renderer=e,this._pingPongRenderTarget=null,this._blurMaterial=new ih({name:"SphericalGaussianBlur",defines:{n:20},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new qn(0,1,0)},inputEncoding:{value:pf[qt]},outputEncoding:{value:pf[qt]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:v,depthTest:!1,depthWrite:!1}),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}function Sf(e){return void 0!==e&&e.type===Se&&(e.encoding===qt||e.encoding===Qt||e.encoding===Kt)}function Mf(e){const t=new Wn(3*uf,3*uf,e);return t.texture.mapping=ce,t.texture.name="PMREM.cubeUv",t.scissorTest=!0,t}function Ef(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function Tf(){return new ih({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:new Gn(1,1)},inputEncoding:{value:pf[qt]},outputEncoding:{value:pf[qt]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:v,depthTest:!1,depthWrite:!1})}function kf(){return new ih({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:pf[qt]},outputEncoding:{value:pf[qt]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:v,depthTest:!1,depthWrite:!1})}function If(e,t,n,i,r,o,a){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new _r(e,t,n,r,o,a)}Af.prototype={constructor:Af,fromScene:function(e,t=0,n=.1,i=100){vf=this._renderer.getRenderTarget();const r=this._allocateTargets();return this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r},fromEquirectangular:function(e){return this._fromTexture(e)},fromCubemap:function(e){return this._fromTexture(e)},compileCubemapShader:function(){null===this._cubemapShader&&(this._cubemapShader=kf(),this._compileMaterial(this._cubemapShader))},compileEquirectangularShader:function(){null===this._equirectShader&&(this._equirectShader=Tf(),this._compileMaterial(this._equirectShader))},dispose:function(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(let e=0;e2?uf:0,uf,uf),s.setRenderTarget(i),s.render(e,r)}s.toneMapping=c,s.outputEncoding=l,s.setClearColor(h,u)},_textureToCubeUV:function(e,t){const n=this._renderer;e.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=kf()):null==this._equirectShader&&(this._equirectShader=Tf());const i=e.isCubeTexture?this._cubemapShader:this._equirectShader,r=new ao(gf[0],i),o=i.uniforms;o.envMap.value=e,e.isCubeTexture||o.texelSize.value.set(1/e.image.width,1/e.image.height),o.inputEncoding.value=pf[e.encoding],o.outputEncoding.value=pf[t.texture.encoding],Ef(t,0,0,3*uf,2*uf),n.setRenderTarget(t),n.render(r,mf)},_applyPMREM:function(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let t=1;t20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${p} samples when the maximum is set to 20`);const m=[];let g=0;for(let e=0;e<20;++e){const t=e/f,n=Math.exp(-t*t/2);m.push(n),0==e?g+=n:e4?i-8+4:0),3*_,2*_),s.setRenderTarget(t),s.render(c,mf)}};const Cf=0,Pf=1,Lf=0,Rf=1,Bf=2;function Df(e){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),e}function Of(e){return void 0===e&&(e=[]),console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),e.isMultiMaterial=!0,e.materials=e,e.clone=function(){return e.slice()},e}function Ff(e,t){return console.warn("THREE.PointCloud has been renamed to THREE.Points."),new Dl(e,t)}function Gf(e){return console.warn("THREE.Particle has been renamed to THREE.Sprite."),new rl(e)}function Nf(e,t){return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),new Dl(e,t)}function jf(e){return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),new Cl(e)}function Hf(e){return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),new Cl(e)}function zf(e){return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),new Cl(e)}function Uf(e,t,n){return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),new qn(e,t,n)}function Vf(e,t){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),new Ar(e,t).setUsage(En)}function Wf(e,t){return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),new Sr(e,t)}function Zf(e,t){return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),new Mr(e,t)}function Yf(e,t){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),new Er(e,t)}function Xf(e,t){return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),new Tr(e,t)}function Jf(e,t){return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),new kr(e,t)}function qf(e,t){return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),new Ir(e,t)}function Qf(e,t){return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),new Cr(e,t)}function Kf(e,t){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new Pr(e,t)}function $f(e,t){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new Lr(e,t)}function ep(e){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Xh.call(this,e),this.type="catmullrom",this.closed=!0}function tp(e){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Xh.call(this,e),this.type="catmullrom"}function np(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),Xh.call(this,e),this.type="catmullrom"}function ip(e){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new hf(e)}function rp(e,t){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new nf(e,t)}function op(e,t){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new kl(new Xc(e.geometry),new vl({color:void 0!==t?t:16777215}))}function ap(e,t){return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),new kl(new Hl(e.geometry),new vl({color:void 0!==t?t:16777215}))}function sp(e){return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),new Rh(e)}function lp(e){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new Oh(e)}function cp(e,t,n){return console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),new Mo(e,n)}jh.create=function(e,t){return console.log("THREE.Curve.create() has been deprecated"),e.prototype=Object.create(jh.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},Object.assign(au.prototype,{createPointsGeometry:function(e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");const t=this.getPoints(e);return this.createGeometry(t)},createSpacedPointsGeometry:function(e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");const t=this.getSpacedPoints(e);return this.createGeometry(t)},createGeometry:function(e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");const t=new po;for(let n=0,i=e.length;n=o+1e3&&(s.update(1e3*a/(e-o),100),o=e,a=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){r=this.end()},domElement:t,setMode:i}};mp.Panel=function(e,t,n){var i=1/0,r=0,o=Math.round,a=o(window.devicePixelRatio||1),s=80*a,l=48*a,c=3*a,h=2*a,u=3*a,d=15*a,f=74*a,p=30*a,m=document.createElement("canvas");m.width=s,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*a+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=n,g.fillRect(0,0,s,l),g.fillStyle=t,g.fillText(e,c,h),g.fillRect(u,d,f,p),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(u,d,f,p),{dom:m,update:function(l,_){i=Math.min(i,l),r=Math.max(r,l),g.fillStyle=n,g.globalAlpha=1,g.fillRect(0,0,s,d),g.fillStyle=t,g.fillText(o(l)+" "+e+" ("+o(i)+"-"+o(r)+")",c,h),g.drawImage(m,u+a,d,f-a,p,u,d,f-a,p),g.fillRect(u+f-a,d,a,p),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(u+f-a,d,a,o((1-l/_)*p))}}};class gp{constructor(e,t,n,i,r="div"){this.parent=e,this.object=t,this.property=n,this._disabled=!1,this.initialValue=this.getValue(),this.domElement=document.createElement("div"),this.domElement.classList.add("controller"),this.domElement.classList.add(i),this.$name=document.createElement("div"),this.$name.classList.add("name"),gp.nextNameID=gp.nextNameID||0,this.$name.id="lil-gui-name-"+ ++gp.nextNameID,this.$widget=document.createElement(r),this.$widget.classList.add("widget"),this.$disable=this.$widget,this.domElement.appendChild(this.$name),this.domElement.appendChild(this.$widget),this.parent.children.push(this),this.parent.controllers.push(this),this.parent.$children.appendChild(this.domElement),this._listenCallback=this._listenCallback.bind(this),this.name(n)}name(e){return this._name=e,this.$name.innerHTML=e,this}onChange(e){return this._onChange=e,this}_callOnChange(){this.parent._callOnChange(this),void 0!==this._onChange&&this._onChange.call(this,this.getValue()),this._changed=!0}onFinishChange(e){return this._onFinishChange=e,this}_callOnFinishChange(){this._changed&&(this.parent._callOnFinishChange(this),void 0!==this._onFinishChange&&this._onFinishChange.call(this,this.getValue())),this._changed=!1}reset(){return this.setValue(this.initialValue),this._callOnFinishChange(),this}enable(e=!0){return this.disable(!e)}disable(e=!0){return e===this._disabled||(this._disabled=e,this.domElement.classList.toggle("disabled",e),this.$disable.toggleAttribute("disabled",e)),this}options(e){const t=this.parent.add(this.object,this.property,e);return t.name(this._name),this.destroy(),t}min(e){return this}max(e){return this}step(e){return this}listen(e=!0){return this._listening=e,void 0!==this._listenCallbackID&&(cancelAnimationFrame(this._listenCallbackID),this._listenCallbackID=void 0),this._listening&&this._listenCallback(),this}_listenCallback(){this._listenCallbackID=requestAnimationFrame(this._listenCallback),this.updateDisplay()}getValue(){return this.object[this.property]}setValue(e){return this.object[this.property]=e,this._callOnChange(),this.updateDisplay(),this}updateDisplay(){return this}load(e){return this.setValue(e),this._callOnFinishChange(),this}save(){return this.getValue()}destroy(){this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.controllers.splice(this.parent.controllers.indexOf(this),1),this.parent.$children.removeChild(this.domElement)}}class _p extends gp{constructor(e,t,n){super(e,t,n,"boolean","label"),this.$input=document.createElement("input"),this.$input.setAttribute("type","checkbox"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$input.addEventListener("change",(()=>{this.setValue(this.$input.checked),this._callOnFinishChange()})),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.checked=this.getValue(),this}}function yp(e){let t,n;return(t=e.match(/(#|0x)?([a-f0-9]{6})/i))?n=t[2]:(t=e.match(/rgb\(\s*(\d*)\s*,\s*(\d*)\s*,\s*(\d*)\s*\)/))?n=parseInt(t[1]).toString(16).padStart(2,0)+parseInt(t[2]).toString(16).padStart(2,0)+parseInt(t[3]).toString(16).padStart(2,0):(t=e.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i))&&(n=t[1]+t[1]+t[2]+t[2]+t[3]+t[3]),!!n&&"#"+n}const vp={isPrimitive:!0,match:e=>"string"==typeof e,fromHexString:yp,toHexString:yp},bp={isPrimitive:!0,match:e=>"number"==typeof e,fromHexString:e=>parseInt(e.substring(1),16),toHexString:e=>"#"+e.toString(16).padStart(6,0)},wp={isPrimitive:!1,match:Array.isArray,fromHexString(e,t,n=1){const i=bp.fromHexString(e);t[0]=(i>>16&255)/255*n,t[1]=(i>>8&255)/255*n,t[2]=(255&i)/255*n},toHexString:([e,t,n],i=1)=>bp.toHexString(e*(i=255/i)<<16^t*i<<8^n*i<<0)},xp={isPrimitive:!1,match:e=>Object(e)===e,fromHexString(e,t,n=1){const i=bp.fromHexString(e);t.r=(i>>16&255)/255*n,t.g=(i>>8&255)/255*n,t.b=(255&i)/255*n},toHexString:({r:e,g:t,b:n},i=1)=>bp.toHexString(e*(i=255/i)<<16^t*i<<8^n*i<<0)},Ap=[vp,bp,wp,xp];class Sp extends gp{constructor(e,t,n,i){var r;super(e,t,n,"color"),this.$input=document.createElement("input"),this.$input.setAttribute("type","color"),this.$input.setAttribute("tabindex",-1),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$text=document.createElement("input"),this.$text.setAttribute("type","text"),this.$text.setAttribute("spellcheck","false"),this.$text.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this.$display.appendChild(this.$input),this.$widget.appendChild(this.$display),this.$widget.appendChild(this.$text),this._format=(r=this.initialValue,Ap.find((e=>e.match(r)))),this._rgbScale=i,this._initialValueHexString=this.save(),this._textFocused=!1,this.$input.addEventListener("input",(()=>{this._setValueFromHexString(this.$input.value)})),this.$input.addEventListener("blur",(()=>{this._callOnFinishChange()})),this.$text.addEventListener("input",(()=>{const e=yp(this.$text.value);e&&this._setValueFromHexString(e)})),this.$text.addEventListener("focus",(()=>{this._textFocused=!0,this.$text.select()})),this.$text.addEventListener("blur",(()=>{this._textFocused=!1,this.updateDisplay(),this._callOnFinishChange()})),this.$disable=this.$text,this.updateDisplay()}reset(){return this._setValueFromHexString(this._initialValueHexString),this}_setValueFromHexString(e){if(this._format.isPrimitive){const t=this._format.fromHexString(e);this.setValue(t)}else this._format.fromHexString(e,this.getValue(),this._rgbScale),this._callOnChange(),this.updateDisplay()}save(){return this._format.toHexString(this.getValue(),this._rgbScale)}load(e){return this._setValueFromHexString(e),this._callOnFinishChange(),this}updateDisplay(){return this.$input.value=this._format.toHexString(this.getValue(),this._rgbScale),this._textFocused||(this.$text.value=this.$input.value.substring(1)),this.$display.style.backgroundColor=this.$input.value,this}}class Mp extends gp{constructor(e,t,n){super(e,t,n,"function"),this.$button=document.createElement("button"),this.$button.appendChild(this.$name),this.$widget.appendChild(this.$button),this.$button.addEventListener("click",(e=>{e.preventDefault(),this.getValue().call(this.object)})),this.$button.addEventListener("touchstart",(()=>{})),this.$disable=this.$button}}class Ep extends gp{constructor(e,t,n,i,r,o){super(e,t,n,"number"),this._initInput(),this.min(i),this.max(r);const a=void 0!==o;this.step(a?o:this._getImplicitStep(),a),this.updateDisplay()}min(e){return this._min=e,this._onUpdateMinMax(),this}max(e){return this._max=e,this._onUpdateMinMax(),this}step(e,t=!0){return this._step=e,this._stepExplicit=t,this}updateDisplay(){const e=this.getValue();if(this._hasSlider){let t=(e-this._min)/(this._max-this._min);t=Math.max(0,Math.min(t,1)),this.$fill.style.width=100*t+"%"}return this._inputFocused||(this.$input.value=e),this}_initInput(){this.$input=document.createElement("input"),this.$input.setAttribute("type","number"),this.$input.setAttribute("step","any"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$disable=this.$input;const e=e=>{const t=parseFloat(this.$input.value);isNaN(t)||(this._snapClampSetValue(t+e),this.$input.value=this.getValue())};let t,n,i,r,o,a=!1;const s=e=>{if(a){const i=e.clientX-t,r=e.clientY-n;Math.abs(r)>5?(e.preventDefault(),this.$input.blur(),a=!1,this._setDraggingStyle(!0,"vertical")):Math.abs(i)>5&&l()}if(!a){const t=e.clientY-i;o-=t*this._step*this._arrowKeyMultiplier(e),r+o>this._max?o=this._max-r:r+o{this._setDraggingStyle(!1,"vertical"),this._callOnFinishChange(),window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",l)};this.$input.addEventListener("input",(()=>{const e=parseFloat(this.$input.value);isNaN(e)||this.setValue(this._clamp(e))})),this.$input.addEventListener("keydown",(t=>{"Enter"===t.code&&this.$input.blur(),"ArrowUp"===t.code&&(t.preventDefault(),e(this._step*this._arrowKeyMultiplier(t))),"ArrowDown"===t.code&&(t.preventDefault(),e(this._step*this._arrowKeyMultiplier(t)*-1))})),this.$input.addEventListener("wheel",(t=>{this._inputFocused&&(t.preventDefault(),e(this._step*this._normalizeMouseWheel(t)))})),this.$input.addEventListener("mousedown",(e=>{t=e.clientX,n=i=e.clientY,a=!0,r=this.getValue(),o=0,window.addEventListener("mousemove",s),window.addEventListener("mouseup",l)})),this.$input.addEventListener("focus",(()=>{this._inputFocused=!0})),this.$input.addEventListener("blur",(()=>{this._inputFocused=!1,this.updateDisplay(),this._callOnFinishChange()}))}_initSlider(){this._hasSlider=!0,this.$slider=document.createElement("div"),this.$slider.classList.add("slider"),this.$fill=document.createElement("div"),this.$fill.classList.add("fill"),this.$slider.appendChild(this.$fill),this.$widget.insertBefore(this.$slider,this.$input),this.domElement.classList.add("hasSlider");const e=e=>{const t=this.$slider.getBoundingClientRect();let n=(i=e,r=t.left,o=t.right,a=this._min,(i-r)/(o-r)*(this._max-a)+a);var i,r,o,a;this._snapClampSetValue(n)},t=t=>{e(t.clientX)},n=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",n)};let i,r,o=!1;const a=t=>{t.preventDefault(),this._setDraggingStyle(!0),e(t.touches[0].clientX),o=!1},s=t=>{if(o){const e=t.touches[0].clientX-i,n=t.touches[0].clientY-r;Math.abs(e)>Math.abs(n)?a(t):(window.removeEventListener("touchmove",s),window.removeEventListener("touchend",l))}else t.preventDefault(),e(t.touches[0].clientX)},l=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("touchmove",s),window.removeEventListener("touchend",l)},c=this._callOnFinishChange.bind(this);let h;this.$slider.addEventListener("mousedown",(i=>{this._setDraggingStyle(!0),e(i.clientX),window.addEventListener("mousemove",t),window.addEventListener("mouseup",n)})),this.$slider.addEventListener("touchstart",(e=>{e.touches.length>1||(this._hasScrollBar?(i=e.touches[0].clientX,r=e.touches[0].clientY,o=!0):a(e),window.addEventListener("touchmove",s),window.addEventListener("touchend",l))})),this.$slider.addEventListener("wheel",(e=>{if(Math.abs(e.deltaX)this._max&&(e=this._max),e}_snapClampSetValue(e){this.setValue(this._clamp(this._snap(e)))}get _hasScrollBar(){const e=this.parent.root.$children;return e.scrollHeight>e.clientHeight}get _hasMin(){return void 0!==this._min}get _hasMax(){return void 0!==this._max}}class Tp extends gp{constructor(e,t,n,i){super(e,t,n,"option"),this.$select=document.createElement("select"),this.$select.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this._values=Array.isArray(i)?i:Object.values(i),this._names=Array.isArray(i)?i:Object.keys(i),this._names.forEach((e=>{const t=document.createElement("option");t.innerHTML=e,this.$select.appendChild(t)})),this.$select.addEventListener("change",(()=>{this.setValue(this._values[this.$select.selectedIndex]),this._callOnFinishChange()})),this.$select.addEventListener("focus",(()=>{this.$display.classList.add("focus")})),this.$select.addEventListener("blur",(()=>{this.$display.classList.remove("focus")})),this.$widget.appendChild(this.$select),this.$widget.appendChild(this.$display),this.$disable=this.$select,this.updateDisplay()}updateDisplay(){const e=this.getValue(),t=this._values.indexOf(e);return this.$select.selectedIndex=t,this.$display.innerHTML=-1===t?e:this._names[t],this}}class kp extends gp{constructor(e,t,n){super(e,t,n,"string"),this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$input.addEventListener("input",(()=>{this.setValue(this.$input.value)})),this.$input.addEventListener("keydown",(e=>{"Enter"===e.code&&this.$input.blur()})),this.$input.addEventListener("blur",(()=>{this._callOnFinishChange()})),this.$widget.appendChild(this.$input),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.value=this.getValue(),this}}let Ip=!1;class Cp{constructor({parent:e,autoPlace:t=void 0===e,container:n,width:i,title:r="Controls",injectStyles:o=!0,touchStyles:a=!0}={}){if(this.parent=e,this.root=e?e.root:this,this.children=[],this.controllers=[],this.folders=[],this._closed=!1,this._hidden=!1,this.domElement=document.createElement("div"),this.domElement.classList.add("lil-gui"),this.$title=document.createElement("div"),this.$title.classList.add("title"),this.$title.setAttribute("role","button"),this.$title.setAttribute("aria-expanded",!0),this.$title.setAttribute("tabindex",0),this.$title.addEventListener("click",(()=>this.openAnimated(this._closed))),this.$title.addEventListener("keydown",(e=>{"Enter"!==e.code&&"Space"!==e.code||(e.preventDefault(),this.$title.click())})),this.$title.addEventListener("touchstart",(()=>{})),this.$children=document.createElement("div"),this.$children.classList.add("children"),this.domElement.appendChild(this.$title),this.domElement.appendChild(this.$children),this.title(r),a&&this.domElement.classList.add("allow-touch-styles"),this.parent)return this.parent.children.push(this),this.parent.folders.push(this),void this.parent.$children.appendChild(this.domElement);this.domElement.classList.add("root"),!Ip&&o&&(function(e){const t=document.createElement("style");t.innerHTML='.lil-gui {\n font-family: var(--font-family);\n font-size: var(--font-size);\n line-height: 1;\n font-weight: normal;\n font-style: normal;\n text-align: left;\n background-color: var(--background-color);\n color: var(--text-color);\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n --background-color: #1f1f1f;\n --text-color: #ebebeb;\n --title-background-color: #111111;\n --title-text-color: #ebebeb;\n --widget-color: #424242;\n --hover-color: #4f4f4f;\n --focus-color: #595959;\n --number-color: #2cc9ff;\n --string-color: #a2db3c;\n --font-size: 11px;\n --input-font-size: 11px;\n --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;\n --font-family-mono: Menlo, Monaco, Consolas, "Droid Sans Mono", monospace;\n --padding: 4px;\n --spacing: 4px;\n --widget-height: 20px;\n --name-width: 45%;\n --slider-knob-width: 2px;\n --slider-input-width: 27%;\n --color-input-width: 27%;\n --slider-input-min-width: 45px;\n --color-input-min-width: 45px;\n --folder-indent: 7px;\n --widget-padding: 0 0 0 3px;\n --widget-border-radius: 2px;\n --checkbox-size: calc(0.75 * var(--widget-height));\n --scrollbar-width: 5px;\n}\n.lil-gui, .lil-gui * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n.lil-gui.root {\n width: var(--width, 245px);\n display: flex;\n flex-direction: column;\n}\n.lil-gui.root > .title {\n background: var(--title-background-color);\n color: var(--title-text-color);\n}\n.lil-gui.root > .children {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.lil-gui.root > .children::-webkit-scrollbar {\n width: var(--scrollbar-width);\n height: var(--scrollbar-width);\n background: var(--background-color);\n}\n.lil-gui.root > .children::-webkit-scrollbar-thumb {\n border-radius: var(--scrollbar-width);\n background: var(--focus-color);\n}\n@media (pointer: coarse) {\n .lil-gui.allow-touch-styles {\n --widget-height: 28px;\n --padding: 6px;\n --spacing: 6px;\n --font-size: 13px;\n --input-font-size: 16px;\n --folder-indent: 10px;\n --scrollbar-width: 7px;\n --slider-input-min-width: 50px;\n --color-input-min-width: 65px;\n }\n}\n.lil-gui.force-touch-styles {\n --widget-height: 28px;\n --padding: 6px;\n --spacing: 6px;\n --font-size: 13px;\n --input-font-size: 16px;\n --folder-indent: 10px;\n --scrollbar-width: 7px;\n --slider-input-min-width: 50px;\n --color-input-min-width: 65px;\n}\n.lil-gui.autoPlace {\n max-height: 100%;\n position: fixed;\n top: 0;\n right: 15px;\n z-index: 1001;\n}\n\n.lil-gui .controller {\n display: flex;\n align-items: center;\n padding: 0 var(--padding);\n margin: var(--spacing) 0;\n}\n.lil-gui .controller.disabled {\n opacity: 0.5;\n}\n.lil-gui .controller.disabled, .lil-gui .controller.disabled * {\n pointer-events: none !important;\n}\n.lil-gui .controller > .name {\n min-width: var(--name-width);\n flex-shrink: 0;\n white-space: pre;\n padding-right: var(--spacing);\n line-height: var(--widget-height);\n}\n.lil-gui .controller .widget {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: var(--widget-height);\n}\n.lil-gui .controller.string input {\n color: var(--string-color);\n}\n.lil-gui .controller.boolean .widget {\n cursor: pointer;\n}\n.lil-gui .controller.color .display {\n width: 100%;\n height: var(--widget-height);\n border-radius: var(--widget-border-radius);\n position: relative;\n}\n@media (hover: hover) {\n .lil-gui .controller.color .display:hover:before {\n content: " ";\n display: block;\n position: absolute;\n border-radius: var(--widget-border-radius);\n border: 1px solid #fff9;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n}\n.lil-gui .controller.color input[type=color] {\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.lil-gui .controller.color input[type=text] {\n margin-left: var(--spacing);\n font-family: var(--font-family-mono);\n min-width: var(--color-input-min-width);\n width: var(--color-input-width);\n flex-shrink: 0;\n}\n.lil-gui .controller.option select {\n opacity: 0;\n position: absolute;\n width: 100%;\n max-width: 100%;\n}\n.lil-gui .controller.option .display {\n position: relative;\n pointer-events: none;\n border-radius: var(--widget-border-radius);\n height: var(--widget-height);\n line-height: var(--widget-height);\n max-width: 100%;\n overflow: hidden;\n word-break: break-all;\n padding-left: 0.55em;\n padding-right: 1.75em;\n background: var(--widget-color);\n}\n@media (hover: hover) {\n .lil-gui .controller.option .display.focus {\n background: var(--focus-color);\n }\n}\n.lil-gui .controller.option .display.active {\n background: var(--focus-color);\n}\n.lil-gui .controller.option .display:after {\n font-family: "lil-gui";\n content: "↕";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n padding-right: 0.375em;\n}\n.lil-gui .controller.option .widget,\n.lil-gui .controller.option select {\n cursor: pointer;\n}\n@media (hover: hover) {\n .lil-gui .controller.option .widget:hover .display {\n background: var(--hover-color);\n }\n}\n.lil-gui .controller.number input {\n color: var(--number-color);\n}\n.lil-gui .controller.number.hasSlider input {\n margin-left: var(--spacing);\n width: var(--slider-input-width);\n min-width: var(--slider-input-min-width);\n flex-shrink: 0;\n}\n.lil-gui .controller.number .slider {\n width: 100%;\n height: var(--widget-height);\n background-color: var(--widget-color);\n border-radius: var(--widget-border-radius);\n padding-right: var(--slider-knob-width);\n overflow: hidden;\n cursor: ew-resize;\n touch-action: pan-y;\n}\n@media (hover: hover) {\n .lil-gui .controller.number .slider:hover {\n background-color: var(--hover-color);\n }\n}\n.lil-gui .controller.number .slider.active {\n background-color: var(--focus-color);\n}\n.lil-gui .controller.number .slider.active .fill {\n opacity: 0.95;\n}\n.lil-gui .controller.number .fill {\n height: 100%;\n border-right: var(--slider-knob-width) solid var(--number-color);\n box-sizing: content-box;\n}\n\n.lil-gui-dragging .lil-gui {\n --hover-color: var(--widget-color);\n}\n.lil-gui-dragging * {\n cursor: ew-resize !important;\n}\n\n.lil-gui-dragging.lil-gui-vertical * {\n cursor: ns-resize !important;\n}\n\n.lil-gui .title {\n --title-height: calc(var(--widget-height) + var(--spacing) * 1.25);\n height: var(--title-height);\n line-height: calc(var(--title-height) - 4px);\n font-weight: 600;\n padding: 0 var(--padding);\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n outline: none;\n text-decoration-skip: objects;\n}\n.lil-gui .title:before {\n font-family: "lil-gui";\n content: "▾";\n padding-right: 2px;\n display: inline-block;\n}\n.lil-gui .title:active {\n background: var(--title-background-color);\n opacity: 0.75;\n}\n@media (hover: hover) {\n body:not(.lil-gui-dragging) .lil-gui .title:hover {\n background: var(--title-background-color);\n opacity: 0.85;\n }\n .lil-gui .title:focus {\n text-decoration: underline var(--focus-color);\n }\n}\n.lil-gui.root > .title:focus {\n text-decoration: none !important;\n}\n.lil-gui.closed > .title:before {\n content: "▸";\n}\n.lil-gui.closed > .children {\n transform: translateY(-7px);\n opacity: 0;\n}\n.lil-gui.closed:not(.transition) > .children {\n display: none;\n}\n.lil-gui.transition > .children {\n transition-duration: 300ms;\n transition-property: height, opacity, transform;\n transition-timing-function: cubic-bezier(0.2, 0.6, 0.35, 1);\n overflow: hidden;\n pointer-events: none;\n}\n.lil-gui .children:empty:before {\n content: "Empty";\n padding: 0 var(--padding);\n margin: var(--spacing) 0;\n display: block;\n height: var(--widget-height);\n font-style: italic;\n line-height: var(--widget-height);\n opacity: 0.5;\n}\n.lil-gui.root > .children > .lil-gui > .title {\n border: 0 solid var(--widget-color);\n border-width: 1px 0;\n transition: border-color 300ms;\n}\n.lil-gui.root > .children > .lil-gui.closed > .title {\n border-bottom-color: transparent;\n}\n.lil-gui + .controller {\n border-top: 1px solid var(--widget-color);\n margin-top: 0;\n padding-top: var(--spacing);\n}\n.lil-gui .lil-gui .lil-gui > .title {\n border: none;\n}\n.lil-gui .lil-gui .lil-gui > .children {\n border: none;\n margin-left: var(--folder-indent);\n border-left: 2px solid var(--widget-color);\n}\n.lil-gui .lil-gui .controller {\n border: none;\n}\n\n.lil-gui input {\n -webkit-tap-highlight-color: transparent;\n border: 0;\n outline: none;\n font-family: var(--font-family);\n font-size: var(--input-font-size);\n border-radius: var(--widget-border-radius);\n height: var(--widget-height);\n background: var(--widget-color);\n color: var(--text-color);\n width: 100%;\n}\n@media (hover: hover) {\n .lil-gui input:hover {\n background: var(--hover-color);\n }\n .lil-gui input:active {\n background: var(--focus-color);\n }\n}\n.lil-gui input:disabled {\n opacity: 1;\n}\n.lil-gui input[type=text],\n.lil-gui input[type=number] {\n padding: var(--widget-padding);\n}\n.lil-gui input[type=text]:focus,\n.lil-gui input[type=number]:focus {\n background: var(--focus-color);\n}\n.lil-gui input::-webkit-outer-spin-button,\n.lil-gui input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.lil-gui input[type=number] {\n -moz-appearance: textfield;\n}\n.lil-gui input[type=checkbox] {\n appearance: none;\n -webkit-appearance: none;\n height: var(--checkbox-size);\n width: var(--checkbox-size);\n border-radius: var(--widget-border-radius);\n text-align: center;\n cursor: pointer;\n}\n.lil-gui input[type=checkbox]:checked:before {\n font-family: "lil-gui";\n content: "✓";\n font-size: var(--checkbox-size);\n line-height: var(--checkbox-size);\n}\n@media (hover: hover) {\n .lil-gui input[type=checkbox]:focus {\n box-shadow: inset 0 0 0 1px var(--focus-color);\n }\n}\n.lil-gui button {\n -webkit-tap-highlight-color: transparent;\n outline: none;\n cursor: pointer;\n font-family: var(--font-family);\n font-size: var(--font-size);\n color: var(--text-color);\n width: 100%;\n height: var(--widget-height);\n text-transform: none;\n background: var(--widget-color);\n border-radius: var(--widget-border-radius);\n border: 1px solid var(--widget-color);\n text-align: center;\n line-height: calc(var(--widget-height) - 4px);\n}\n@media (hover: hover) {\n .lil-gui button:hover {\n background: var(--hover-color);\n border-color: var(--hover-color);\n }\n .lil-gui button:focus {\n border-color: var(--focus-color);\n }\n}\n.lil-gui button:active {\n background: var(--focus-color);\n}\n\n@font-face {\n font-family: "lil-gui";\n src: url("data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAUsAAsAAAAACJwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAH4AAADAImwmYE9TLzIAAAGIAAAAPwAAAGBKqH5SY21hcAAAAcgAAAD0AAACrukyyJBnbHlmAAACvAAAAF8AAACEIZpWH2hlYWQAAAMcAAAAJwAAADZfcj2zaGhlYQAAA0QAAAAYAAAAJAC5AHhobXR4AAADXAAAABAAAABMAZAAAGxvY2EAAANsAAAAFAAAACgCEgIybWF4cAAAA4AAAAAeAAAAIAEfABJuYW1lAAADoAAAASIAAAIK9SUU/XBvc3QAAATEAAAAZgAAAJCTcMc2eJxVjbEOgjAURU+hFRBK1dGRL+ALnAiToyMLEzFpnPz/eAshwSa97517c/MwwJmeB9kwPl+0cf5+uGPZXsqPu4nvZabcSZldZ6kfyWnomFY/eScKqZNWupKJO6kXN3K9uCVoL7iInPr1X5baXs3tjuMqCtzEuagm/AAlzQgPAAB4nGNgYRBlnMDAysDAYM/gBiT5oLQBAwuDJAMDEwMrMwNWEJDmmsJwgCFeXZghBcjlZMgFCzOiKOIFAB71Bb8AeJy1kjFuwkAQRZ+DwRAwBtNQRUGKQ8OdKCAWUhAgKLhIuAsVSpWz5Bbkj3dEgYiUIszqWdpZe+Z7/wB1oCYmIoboiwiLT2WjKl/jscrHfGg/pKdMkyklC5Zs2LEfHYpjcRoPzme9MWWmk3dWbK9ObkWkikOetJ554fWyoEsmdSlt+uR0pCJR34b6t/TVg1SY3sYvdf8vuiKrpyaDXDISiegp17p7579Gp3p++y7HPAiY9pmTibljrr85qSidtlg4+l25GLCaS8e6rRxNBmsnERunKbaOObRz7N72ju5vdAjYpBXHgJylOAVsMseDAPEP8LYoUHicY2BiAAEfhiAGJgZWBgZ7RnFRdnVJELCQlBSRlATJMoLV2DK4glSYs6ubq5vbKrJLSbGrgEmovDuDJVhe3VzcXFwNLCOILB/C4IuQ1xTn5FPilBTj5FPmBAB4WwoqAHicY2BkYGAA4sk1sR/j+W2+MnAzpDBgAyEMQUCSg4EJxAEAwUgFHgB4nGNgZGBgSGFggJMhDIwMqEAYAByHATJ4nGNgAIIUNEwmAABl3AGReJxjYAACIQYlBiMGJ3wQAEcQBEV4nGNgZGBgEGZgY2BiAAEQyQWEDAz/wXwGAAsPATIAAHicXdBNSsNAHAXwl35iA0UQXYnMShfS9GPZA7T7LgIu03SSpkwzYTIt1BN4Ak/gKTyAeCxfw39jZkjymzcvAwmAW/wgwHUEGDb36+jQQ3GXGot79L24jxCP4gHzF/EIr4jEIe7wxhOC3g2TMYy4Q7+Lu/SHuEd/ivt4wJd4wPxbPEKMX3GI5+DJFGaSn4qNzk8mcbKSR6xdXdhSzaOZJGtdapd4vVPbi6rP+cL7TGXOHtXKll4bY1Xl7EGnPtp7Xy2n00zyKLVHfkHBa4IcJ2oD3cgggWvt/V/FbDrUlEUJhTn/0azVWbNTNr0Ens8de1tceK9xZmfB1CPjOmPH4kitmvOubcNpmVTN3oFJyjzCvnmrwhJTzqzVj9jiSX911FjeAAB4nG3HMRKCMBBA0f0giiKi4DU8k0V2GWbIZDOh4PoWWvq6J5V8If9NVNQcaDhyouXMhY4rPTcG7jwYmXhKq8Wz+p762aNaeYXom2n3m2dLTVgsrCgFJ7OTmIkYbwIbC6vIB7WmFfAAAA==") format("woff");\n}';const n=document.querySelector("head link[rel=stylesheet], head style");n?document.head.insertBefore(t,n):document.head.appendChild(t)}(),Ip=!0),n?n.appendChild(this.domElement):t&&(this.domElement.classList.add("autoPlace"),document.body.appendChild(this.domElement)),i&&this.domElement.style.setProperty("--width",i+"px"),this.domElement.addEventListener("keydown",(e=>e.stopPropagation())),this.domElement.addEventListener("keyup",(e=>e.stopPropagation()))}add(e,t,n,i,r){if(Object(n)===n)return new Tp(this,e,t,n);const o=e[t];switch(typeof o){case"number":return new Ep(this,e,t,n,i,r);case"boolean":return new _p(this,e,t);case"string":return new kp(this,e,t);case"function":return new Mp(this,e,t)}console.error("gui.add failed\n\tproperty:",t,"\n\tobject:",e,"\n\tvalue:",o)}addColor(e,t,n=1){return new Sp(this,e,t,n)}addFolder(e){return new Cp({parent:this,title:e})}load(e,t=!0){return e.controllers&&this.controllers.forEach((t=>{t instanceof Mp||t._name in e.controllers&&t.load(e.controllers[t._name])})),t&&e.folders&&this.folders.forEach((t=>{t._title in e.folders&&t.load(e.folders[t._title])})),this}save(e=!0){const t={controllers:{},folders:{}};return this.controllers.forEach((e=>{if(!(e instanceof Mp)){if(e._name in t.controllers)throw new Error(`Cannot save GUI with duplicate property "${e._name}"`);t.controllers[e._name]=e.save()}})),e&&this.folders.forEach((e=>{if(e._title in t.folders)throw new Error(`Cannot save GUI with duplicate folder "${e._title}"`);t.folders[e._title]=e.save()})),t}open(e=!0){return this._closed=!e,this.$title.setAttribute("aria-expanded",!this._closed),this.domElement.classList.toggle("closed",this._closed),this}close(){return this.open(!1)}show(e=!0){return this._hidden=!e,this.domElement.style.display=this._hidden?"none":"",this}hide(){return this.show(!1)}openAnimated(e=!0){return this._closed=!e,this.$title.setAttribute("aria-expanded",!this._closed),requestAnimationFrame((()=>{const t=this.$children.clientHeight;this.$children.style.height=t+"px",this.domElement.classList.add("transition");const n=e=>{e.target===this.$children&&(this.$children.style.height="",this.domElement.classList.remove("transition"),this.$children.removeEventListener("transitionend",n))};this.$children.addEventListener("transitionend",n);const i=e?this.$children.scrollHeight:0;this.domElement.classList.toggle("closed",!e),requestAnimationFrame((()=>{this.$children.style.height=i+"px"}))})),this}title(e){return this._title=e,this.$title.innerHTML=e,this}reset(e=!0){return(e?this.controllersRecursive():this.controllers).forEach((e=>e.reset())),this}onChange(e){return this._onChange=e,this}_callOnChange(e){this.parent&&this.parent._callOnChange(e),void 0!==this._onChange&&this._onChange.call(this,{object:e.object,property:e.property,value:e.getValue(),controller:e})}onFinishChange(e){return this._onFinishChange=e,this}_callOnFinishChange(e){this.parent&&this.parent._callOnFinishChange(e),void 0!==this._onFinishChange&&this._onFinishChange.call(this,{object:e.object,property:e.property,value:e.getValue(),controller:e})}destroy(){this.parent&&(this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.folders.splice(this.parent.folders.indexOf(this),1)),this.domElement.parentElement&&this.domElement.parentElement.removeChild(this.domElement),Array.from(this.children).forEach((e=>e.destroy()))}controllersRecursive(){let e=Array.from(this.controllers);return this.folders.forEach((t=>{e=e.concat(t.controllersRecursive())})),e}foldersRecursive(){let e=Array.from(this.folders);return this.folders.forEach((t=>{e=e.concat(t.foldersRecursive())})),e}}function Pp(e){var t=new ao(new mo(100,100,100),new ah({color:"red"}));e.mesh=t,e.scene.add(t)}function Lp(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Rp(e,t){for(var n=0;n0?t[t.length-1]:"",smooth:void 0!==n?n.smooth:this.smooth,groupStart:void 0!==n?n.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){var t={index:"number"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(i),i},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){var t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(var n=this.materials.length-1;n>=0;n--)this.materials[n].groupCount<=0&&this.materials.splice(n,1);return e&&0===this.materials.length&&this.materials.push({name:"",smooth:this.smooth}),t}},n&&n.name&&"function"==typeof n.clone){var i=n.clone(0);i.inherited=!0,this.object.materials.push(i)}this.objects.push(this.object)},finalize:function(){this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){var n=parseInt(e,10);return 3*(n>=0?n-1:n+t/3)},parseNormalIndex:function(e,t){var n=parseInt(e,10);return 3*(n>=0?n-1:n+t/3)},parseUVIndex:function(e,t){var n=parseInt(e,10);return 2*(n>=0?n-1:n+t/2)},addVertex:function(e,t,n){var i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){var i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){var i=this.vertices,c=this.object.geometry.normals;r.fromArray(i,e),o.fromArray(i,t),a.fromArray(i,n),l.subVectors(a,o),s.subVectors(r,o),l.cross(s),l.normalize(),c.push(l.x,l.y,l.z),c.push(l.x,l.y,l.z),c.push(l.x,l.y,l.z)},addColor:function(e,t,n){var i=this.colors,r=this.object.geometry.colors;void 0!==i[e]&&r.push(i[e+0],i[e+1],i[e+2]),void 0!==i[t]&&r.push(i[t+0],i[t+1],i[t+2]),void 0!==i[n]&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){var i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){var e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){var t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,o,a,s,l){var c=this.vertices.length,h=this.parseVertexIndex(e,c),u=this.parseVertexIndex(t,c),d=this.parseVertexIndex(n,c);if(this.addVertex(h,u,d),this.addColor(h,u,d),void 0!==a&&""!==a){var f=this.normals.length;h=this.parseNormalIndex(a,f),u=this.parseNormalIndex(s,f),d=this.parseNormalIndex(l,f),this.addNormal(h,u,d),this.object.geometry.hasNormalIndices=!0}else this.addFaceNormal(h,u,d);if(void 0!==i&&""!==i){var p=this.uvs.length;h=this.parseUVIndex(i,p),u=this.parseUVIndex(r,p),d=this.parseUVIndex(o,p),this.addUV(h,u,d),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";for(var t=this.vertices.length,n=0,i=e.length;n=7?o.colors.push(parseFloat(p[4]),parseFloat(p[5]),parseFloat(p[6])):o.colors.push(void 0,void 0,void 0);break;case"vn":o.normals.push(parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3]));break;case"vt":o.uvs.push(parseFloat(p[1]),parseFloat(p[2]))}}else if("f"===l){for(var m=s.substr(1).trim().split(/\s+/),g=[],_=0,y=m.length;_0){var b=v.split("/");g.push(b)}}var w=g[0];for(_=1,y=g.length-1;_1){var L=h[1].trim().toLowerCase();o.object.smooth="0"!==L&&"off"!==L}else o.object.smooth=!0;(Z=o.object.currentMaterial())&&(Z.smooth=o.object.smooth)}else{if("\0"===s)continue;console.warn('THREE.OBJLoader: Unexpected line: "'+s+'"')}o.finalize();var R=new Rs;for(R.materialLibraries=[].concat(o.materialLibraries),d=0,f=o.objects.length;d0&&(N=!0,j.setAttribute("color",new Pr(D.colors,3))),!0===D.hasUVIndices&&j.setAttribute("uv",new Pr(D.uvs,2));for(var H,z=[],U=0,V=O.length;U1){for(U=0,V=O.length;U=0?s.substring(0,l):s;c=c.toLowerCase();var h=l>=0?s.substring(l+1):"";if(h=h.trim(),"newmtl"===c)i={name:h},o[h]=i;else if("ka"===c||"kd"===c||"ks"===c||"ke"===c){var u=h.split(r,3);i[c]=[parseFloat(u[0]),parseFloat(u[1]),parseFloat(u[2])]}else i[c]=h}}var d=new Vp.MaterialCreator(this.resourcePath||t,this.materialOptions);return d.setCrossOrigin(this.crossOrigin),d.setManager(this.manager),d.setMaterials(o),d}}),(Vp.MaterialCreator=function(e,t){this.baseUrl=e||"",this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.side=this.options&&this.options.side?this.options.side:p,this.wrap=this.options&&this.options.wrap?this.options.wrap:ue}).prototype={constructor:Vp.MaterialCreator,crossOrigin:"anonymous",setCrossOrigin:function(e){return this.crossOrigin=e,this},setManager:function(e){this.manager=e},setMaterials:function(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}},convert:function(e){if(!this.options)return e;var t={};for(var n in e){var i=e[n],r={};for(var o in t[n]=r,i){var a=!0,s=i[o],l=o.toLowerCase();switch(l){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(s=[s[0]/255,s[1]/255,s[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===s[0]&&0===s[1]&&0===s[2]&&(a=!1)}a&&(r[l]=s)}}return t},preload:function(){for(var e in this.materialsInfo)this.create(e)},getIndex:function(e){return this.nameLookup[e]},getAsArray:function(){var e=0;for(var t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray},create:function(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]},createMaterial_:function(e){var t=this,n=this.materialsInfo[e],i={name:e,side:this.side};function r(e,n){if(!i[e]){var r,o,a=t.getTextureParams(n,i),s=t.loadTexture((r=t.baseUrl,"string"!=typeof(o=a.url)||""===o?"":/^https?:\/\//i.test(o)?o:r+o));s.repeat.copy(a.scale),s.offset.copy(a.offset),s.wrapS=t.wrap,s.wrapT=t.wrap,i[e]=s}}for(var o in n){var a,s=n[o];if(""!==s)switch(o.toLowerCase()){case"kd":i.color=(new fr).fromArray(s);break;case"ks":i.specular=(new fr).fromArray(s);break;case"ke":i.emissive=(new fr).fromArray(s);break;case"map_kd":r("map",s);break;case"map_ks":r("specularMap",s);break;case"map_ke":r("emissiveMap",s);break;case"norm":r("normalMap",s);break;case"map_bump":case"bump":r("bumpMap",s);break;case"map_d":r("alphaMap",s),i.transparent=!0;break;case"ns":i.shininess=parseFloat(s);break;case"d":(a=parseFloat(s))<1&&(i.opacity=a,i.transparent=!0);break;case"tr":a=parseFloat(s),this.options&&this.options.invertTrProperty&&(a=1-a),a>0&&(i.opacity=1-a,i.transparent=!0)}}return this.materials[e]=new ah(i),this.materials[e]},getTextureParams:function(e,t){var n,i={scale:new Gn(1,1),offset:new Gn(0,0)},r=e.split(/\s+/);return(n=r.indexOf("-bm"))>=0&&(t.bumpScale=parseFloat(r[n+1]),r.splice(n,2)),(n=r.indexOf("-s"))>=0&&(i.scale.set(parseFloat(r[n+1]),parseFloat(r[n+2])),r.splice(n,4)),(n=r.indexOf("-o"))>=0&&(i.offset.set(parseFloat(r[n+1]),parseFloat(r[n+2])),r.splice(n,4)),i.url=r.join(" ").trim(),i},loadTexture:function(e,t,n,i,r){var o,a=void 0!==this.manager?this.manager:Ch,s=a.getHandler(e);return null===s&&(s=new Nh(a)),s.setCrossOrigin&&s.setCrossOrigin(this.crossOrigin),o=s.load(e,n,i,r),void 0!==t&&(o.mapping=t),o}};var Wp=function(){function e(e){Ph.call(this,e),this.dracoLoader=null,this.ddsLoader=null,this.ktx2Loader=null,this.pluginCallbacks=[],this.register((function(e){return new a(e)})),this.register((function(e){return new l(e)})),this.register((function(e){return new s(e)}))}function t(){var e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}e.prototype=Object.assign(Object.create(Ph.prototype),{constructor:e,load:function(e,t,n,i){var r,o=this;r=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:Su.extractUrlBase(e),o.manager.itemStart(e);var a=function(t){i?i(t):console.error(t),o.manager.itemError(e),o.manager.itemEnd(e)},s=new Rh(o.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),"use-credentials"===o.crossOrigin&&s.setWithCredentials(!0),s.load(e,(function(n){try{o.parse(n,r,(function(n){t(n),o.manager.itemEnd(e)}),a)}catch(e){a(e)}}),n,a)},setDRACOLoader:function(e){return this.dracoLoader=e,this},setDDSLoader:function(e){return this.ddsLoader=e,this},setKTX2Loader:function(e){return this.ktx2Loader=e,this},register:function(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this},unregister:function(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this},parse:function(e,t,a,s){var l,f={},p={};if("string"==typeof e)l=e;else if(Su.decodeText(new Uint8Array(e,0,4))===c){try{f[n.KHR_BINARY_GLTF]=new h(e)}catch(e){return void(s&&s(e))}l=f[n.KHR_BINARY_GLTF].content}else l=Su.decodeText(new Uint8Array(e));var g=JSON.parse(l);if(void 0===g.asset||g.asset.version[0]<2)s&&s(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));else{var y=new L(g,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,manager:this.manager,ktx2Loader:this.ktx2Loader});y.fileLoader.setRequestHeader(this.requestHeader);for(var v=0;v=0&&void 0===p[w]&&console.warn('THREE.GLTFLoader: Unknown extension "'+w+'".')}}y.setExtensions(f),y.setPlugins(p),y.parse(a,s)}}});var n={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",MSFT_TEXTURE_DDS:"MSFT_texture_dds"};function i(e){if(!e)throw new Error("THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader");this.name=n.MSFT_TEXTURE_DDS,this.ddsLoader=e}function r(e){this.name=n.KHR_LIGHTS_PUNCTUAL;var t=e.extensions&&e.extensions[n.KHR_LIGHTS_PUNCTUAL]||{};this.lightDefs=t.lights||[]}function o(){this.name=n.KHR_MATERIALS_UNLIT}function a(e){this.parser=e,this.name=n.KHR_MATERIALS_CLEARCOAT}function s(e){this.parser=e,this.name=n.KHR_MATERIALS_TRANSMISSION}function l(e){this.parser=e,this.name=n.KHR_TEXTURE_BASISU}r.prototype.loadLight=function(e){var t,n=this.lightDefs[e],i=new fr(16777215);void 0!==n.color&&i.fromArray(n.color);var r=void 0!==n.range?n.range:0;switch(n.type){case"directional":(t=new yu(i)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new mu(i)).distance=r;break;case"spot":(t=new fu(i)).distance=r,n.spot=n.spot||{},n.spot.innerConeAngle=void 0!==n.spot.innerConeAngle?n.spot.innerConeAngle:0,n.spot.outerConeAngle=void 0!==n.spot.outerConeAngle?n.spot.outerConeAngle:Math.PI/4,t.angle=n.spot.outerConeAngle,t.penumbra=1-n.spot.innerConeAngle/n.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw new Error('THREE.GLTFLoader: Unexpected light type, "'+n.type+'".')}return t.position.set(0,0,0),t.decay=2,void 0!==n.intensity&&(t.intensity=n.intensity),t.name=n.name||"light_"+e,Promise.resolve(t)},o.prototype.getMaterialType=function(){return br},o.prototype.extendParams=function(e,t,n){var i=[];e.color=new fr(1,1,1),e.opacity=1;var r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){var o=r.baseColorFactor;e.color.fromArray(o),e.opacity=o[3]}void 0!==r.baseColorTexture&&i.push(n.assignTexture(e,"map",r.baseColorTexture))}return Promise.all(i)},a.prototype.getMaterialType=function(){return oh},a.prototype.extendMaterialParams=function(e,t){var n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();var r=[],o=i.extensions[this.name];if(void 0!==o.clearcoatFactor&&(t.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&r.push(n.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&r.push(n.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(r.push(n.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){var a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new Gn(a,a)}return Promise.all(r)},s.prototype.getMaterialType=function(){return oh},s.prototype.extendMaterialParams=function(e,t){var n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();var r=[],o=i.extensions[this.name];return void 0!==o.transmissionFactor&&(t.transmission=o.transmissionFactor),void 0!==o.transmissionTexture&&r.push(n.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(r)},l.prototype.loadTexture=function(e){var t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;var r=i.extensions[this.name],o=n.images[r.source],a=t.options.ktx2Loader;if(!a)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,o,a)};var c="glTF";function h(e){this.name=n.KHR_BINARY_GLTF,this.content=null,this.body=null;var t=new DataView(e,0,12);if(this.header={magic:Su.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==c)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");for(var i=new DataView(e,12),r=0;r",t),e.fragmentShader=e.fragmentShader.replace("#include ",n),e.fragmentShader=e.fragmentShader.replace("#include ",i),e.fragmentShader=e.fragmentShader.replace("#include ",r),e.fragmentShader=e.fragmentShader.replace("#include ",o)},Object.defineProperties(this,{specular:{get:function(){return a.specular.value},set:function(e){a.specular.value=e}},specularMap:{get:function(){return a.specularMap.value},set:function(e){a.specularMap.value=e}},glossiness:{get:function(){return a.glossiness.value},set:function(e){a.glossiness.value=e}},glossinessMap:{get:function(){return a.glossinessMap.value},set:function(e){a.glossinessMap.value=e,e?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_ROUGHNESSMAP=""):(delete this.defines.USE_ROUGHNESSMAP,delete this.defines.USE_GLOSSINESSMAP)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}function m(){return{name:n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,specularGlossinessParams:["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"],getMaterialType:function(){return f},extendParams:function(e,t,n){var i=t.extensions[this.name];e.color=new fr(1,1,1),e.opacity=1;var r=[];if(Array.isArray(i.diffuseFactor)){var o=i.diffuseFactor;e.color.fromArray(o),e.opacity=o[3]}if(void 0!==i.diffuseTexture&&r.push(n.assignTexture(e,"map",i.diffuseTexture)),e.emissive=new fr(0,0,0),e.glossiness=void 0!==i.glossinessFactor?i.glossinessFactor:1,e.specular=new fr(1,1,1),Array.isArray(i.specularFactor)&&e.specular.fromArray(i.specularFactor),void 0!==i.specularGlossinessTexture){var a=i.specularGlossinessTexture;r.push(n.assignTexture(e,"glossinessMap",a)),r.push(n.assignTexture(e,"specularMap",a))}return Promise.all(r)},createMaterial:function(e){var t=new f(e);return t.fog=!0,t.color=e.color,t.map=void 0===e.map?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=void 0===e.aoMap?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=1,t.emissiveMap=void 0===e.emissiveMap?null:e.emissiveMap,t.bumpMap=void 0===e.bumpMap?null:e.bumpMap,t.bumpScale=1,t.normalMap=void 0===e.normalMap?null:e.normalMap,t.normalMapType=sn,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=void 0===e.specularMap?null:e.specularMap,t.specular=e.specular,t.glossinessMap=void 0===e.glossinessMap?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=void 0===e.envMap?null:e.envMap,t.envMapIntensity=1,t.refractionRatio=.98,t}}}function _(){this.name=n.KHR_MESH_QUANTIZATION}function y(e,t,n,i){ph.call(this,e,t,n,i)}u.prototype.decodePrimitive=function(e,t){var n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},s={},l={};for(var c in o){var h=A[c]||c.toLowerCase();a[h]=o[c]}for(c in e.attributes)if(h=A[c]||c.toLowerCase(),void 0!==o[c]){var u=n.accessors[e.attributes[c]],d=v[u.componentType];l[h]=d,s[h]=!0===u.normalized}return t.getDependency("bufferView",r).then((function(e){return new Promise((function(t){i.decodeDracoFile(e,(function(e){for(var n in e.attributes){var i=e.attributes[n],r=s[n];void 0!==r&&(i.normalized=r)}t(e)}),a,l)}))}))},d.prototype.extendTexture=function(e,t){return e=e.clone(),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),void 0!==t.texCoord&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),e.needsUpdate=!0,e},f.prototype=Object.create(rh.prototype),f.prototype.constructor=f,f.prototype.copy=function(e){return rh.prototype.copy.call(this,e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this},y.prototype=Object.create(ph.prototype),y.prototype.constructor=y,y.prototype.copySampleValue_=function(e){for(var t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i,o=0;o!==i;o++)t[o]=n[r+o];return t},y.prototype.beforeStart_=y.prototype.copySampleValue_,y.prototype.afterEnd_=y.prototype.copySampleValue_,y.prototype.interpolate_=function(e,t,n,i){for(var r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,s=2*a,l=3*a,c=i-t,h=(n-t)/c,u=h*h,d=u*h,f=e*l,p=f-l,m=-2*d+3*u,g=d-u,_=1-m,y=g-u+h,v=0;v!==a;v++){var b=o[p+v+a],w=o[p+v+s]*c,x=o[f+v+a],A=o[f+v]*c;r[v]=_*b+y*w+m*x+g*A}return r};var v={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},b={9728:pe,9729:ve,9984:me,9985:be,9986:_e,9987:xe},w={33071:de,33648:fe,10497:ue},x={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},A={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},S={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},M={CUBICSPLINE:void 0,LINEAR:jt,STEP:Nt},E={"image/png":Ge,"image/jpeg":Fe};function T(e,t){return"string"!=typeof e||""===e?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}function k(e,t,n){for(var i in n.extensions)void 0===e[i]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function I(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function C(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(var n=0,i=t.weights.length;n=2&&r.setY(E,A[S*a+1]),a>=3&&r.setZ(E,A[S*a+2]),a>=4&&r.setW(E,A[S*a+3]),a>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return r}))},L.prototype.loadTexture=function(e){var t,i,r=this.json,o=this.options,a=r.textures[e],s=a.extensions||{};return(t=s[n.MSFT_TEXTURE_DDS]?r.images[s[n.MSFT_TEXTURE_DDS].source]:r.images[a.source]).uri&&(i=o.manager.getHandler(t.uri)),i||(i=s[n.MSFT_TEXTURE_DDS]?this.extensions[n.MSFT_TEXTURE_DDS].ddsLoader:this.textureLoader),this.loadTextureImage(e,t,i)},L.prototype.loadTextureImage=function(e,t,n){var i=this,r=this.json,o=this.options,a=r.textures[e],s=self.URL||self.webkitURL,l=t.uri,c=!1;return void 0!==t.bufferView&&(l=i.getDependency("bufferView",t.bufferView).then((function(e){c=!0;var n=new Blob([e],{type:t.mimeType});return l=s.createObjectURL(n)}))),Promise.resolve(l).then((function(e){return new Promise((function(t,i){var r=t;!0===n.isImageBitmapLoader&&(r=function(e){t(new Nl(e))}),n.load(T(e,o.path),r,void 0,i)}))})).then((function(n){!0===c&&s.revokeObjectURL(l),n.flipY=!1,a.name&&(n.name=a.name),t.mimeType in E&&(n.format=E[t.mimeType]);var o=(r.samplers||{})[a.sampler]||{};return n.magFilter=b[o.magFilter]||ve,n.minFilter=b[o.minFilter]||xe,n.wrapS=w[o.wrapS]||ue,n.wrapT=w[o.wrapT]||ue,i.associations.set(n,{type:"textures",index:e}),n}))},L.prototype.assignTexture=function(e,t,i){var r=this;return this.getDependency("texture",i.index).then((function(o){if(!o.isCompressedTexture)switch(t){case"aoMap":case"emissiveMap":case"metalnessMap":case"normalMap":case"roughnessMap":o.format=Fe}if(void 0===i.texCoord||0==i.texCoord||"aoMap"===t&&1==i.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[n.KHR_TEXTURE_TRANSFORM]){var a=void 0!==i.extensions?i.extensions[n.KHR_TEXTURE_TRANSFORM]:void 0;if(a){var s=r.associations.get(o);o=r.extensions[n.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),r.associations.set(o,s)}}e[t]=o}))},L.prototype.assignFinalMaterial=function(e){var t=e.geometry,n=e.material,i=void 0!==t.attributes.tangent,r=void 0!==t.attributes.color,o=void 0===t.attributes.normal,a=!0===e.isSkinnedMesh,s=Object.keys(t.morphAttributes).length>0,l=s&&void 0!==t.morphAttributes.normal;if(e.isPoints){var c="PointsMaterial:"+n.uuid,h=this.cache.get(c);h||(h=new Cl,vr.prototype.copy.call(h,n),h.color.copy(n.color),h.map=n.map,h.sizeAttenuation=!1,this.cache.add(c,h)),n=h}else if(e.isLine){c="LineBasicMaterial:"+n.uuid;var u=this.cache.get(c);u||(u=new vl,vr.prototype.copy.call(u,n),u.color.copy(n.color),this.cache.add(c,u)),n=u}if(i||r||o||a||s){c="ClonedMaterial:"+n.uuid+":",n.isGLTFSpecularGlossinessMaterial&&(c+="specular-glossiness:"),a&&(c+="skinning:"),i&&(c+="vertex-tangents:"),r&&(c+="vertex-colors:"),o&&(c+="flat-shading:"),s&&(c+="morph-targets:"),l&&(c+="morph-normals:");var d=this.cache.get(c);d||(d=n.clone(),a&&(d.skinning=!0),i&&(d.vertexTangents=!0),r&&(d.vertexColors=!0),o&&(d.flatShading=!0),s&&(d.morphTargets=!0),l&&(d.morphNormals=!0),this.cache.add(c,d),this.associations.set(d,this.associations.get(n))),n=d}n.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),n.normalScale&&!i&&(n.normalScale.y=-n.normalScale.y),n.clearcoatNormalScale&&!i&&(n.clearcoatNormalScale.y=-n.clearcoatNormalScale.y),e.material=n},L.prototype.getMaterialType=function(){return rh},L.prototype.loadMaterial=function(e){var t,i=this,r=this.json,o=this.extensions,a=r.materials[e],s={},l=a.extensions||{},c=[];if(l[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){var h=o[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];t=h.getMaterialType(),c.push(h.extendParams(s,a,i))}else if(l[n.KHR_MATERIALS_UNLIT]){var u=o[n.KHR_MATERIALS_UNLIT];t=u.getMaterialType(),c.push(u.extendParams(s,a,i))}else{var d=a.pbrMetallicRoughness||{};if(s.color=new fr(1,1,1),s.opacity=1,Array.isArray(d.baseColorFactor)){var p=d.baseColorFactor;s.color.fromArray(p),s.opacity=p[3]}void 0!==d.baseColorTexture&&c.push(i.assignTexture(s,"map",d.baseColorTexture)),s.metalness=void 0!==d.metallicFactor?d.metallicFactor:1,s.roughness=void 0!==d.roughnessFactor?d.roughnessFactor:1,void 0!==d.metallicRoughnessTexture&&(c.push(i.assignTexture(s,"metalnessMap",d.metallicRoughnessTexture)),c.push(i.assignTexture(s,"roughnessMap",d.metallicRoughnessTexture))),t=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),c.push(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===a.doubleSided&&(s.side=g);var m=a.alphaMode||"OPAQUE";return"BLEND"===m?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,"MASK"===m&&(s.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&t!==br&&(c.push(i.assignTexture(s,"normalMap",a.normalTexture)),s.normalScale=new Gn(1,1),void 0!==a.normalTexture.scale&&s.normalScale.set(a.normalTexture.scale,a.normalTexture.scale)),void 0!==a.occlusionTexture&&t!==br&&(c.push(i.assignTexture(s,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(s.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&t!==br&&(s.emissive=(new fr).fromArray(a.emissiveFactor)),void 0!==a.emissiveTexture&&t!==br&&c.push(i.assignTexture(s,"emissiveMap",a.emissiveTexture)),Promise.all(c).then((function(){var r;return r=t===f?o[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(s):new t(s),a.name&&(r.name=a.name),r.map&&(r.map.encoding=Qt),r.emissiveMap&&(r.emissiveMap.encoding=Qt),I(r,a),i.associations.set(r,{type:"materials",index:e}),a.extensions&&k(o,r,a),r}))},L.prototype.loadGeometries=function(e){var t=this,i=this.extensions,r=this.primitiveCache;function o(e){return i[n.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(n){return R(n,e,t)}))}for(var a,s,l=[],c=0,h=e.length;c0&&C(h,i),h.name=i.name||"mesh_"+e,a.length>1&&(h.name+="_"+l),I(h,i),n.assignFinalMaterial(h),s.push(h)}if(1===s.length)return s[0];var p=new Rs;for(l=0,c=s.length;l1?new Rs:1===t.length?t[0]:new xi)!==t[0])for(var a=0,s=t.length;a3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,o=new Up;o.setMaterials(i),o.load(e,(function(e){0==!!i&&e.traverse((function(e){e.isMesh&&(e.material=Yp())})),n.position.z=e.position.z+10,t.add(e)}),(function(e){r&&Zp(e,r)}),(function(e){console.error(e)}))}function Jp(e,t,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,o=new Vp;o.load(e,(function(e){e.preload(),Xp(t,n,i,e,r)}))}function qp(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=new Wp;r.load(e,(function(e){n.position.z=e.scene.position.z+10,t.add(e.scene),console.log(e.scene)}),(function(e){i&&Zp(e,i)}),(function(e){console.error(e)}))}function Qp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Kp=function(e,t){void 0===t&&console.warn('THREE.TrackballControls: The second parameter "domElement" is now mandatory.'),t===document&&console.error('THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');var n=this,i=-1;this.object=e,this.domElement=t,this.enabled=!0,this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.keys=[65,83,68],this.mouseButtons={LEFT:r.ROTATE,MIDDLE:r.ZOOM,RIGHT:r.PAN},this.target=new qn;var o=1e-6,a=new qn,s=1,l=i,c=i,h=new qn,u=new Gn,d=new Gn,f=new qn,p=0,m=new Gn,g=new Gn,_=0,y=0,v=new Gn,b=new Gn;this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom;var w={type:"change"},x={type:"start"},A={type:"end"};this.handleResize=function(){var e=n.domElement.getBoundingClientRect(),t=n.domElement.ownerDocument.documentElement;n.screen.left=e.left+window.pageXOffset-t.clientLeft,n.screen.top=e.top+window.pageYOffset-t.clientTop,n.screen.width=e.width,n.screen.height=e.height};var S,M,E,T,k,I,C,P,L,R,B,D=(S=new Gn,function(e,t){return S.set((e-n.screen.left)/n.screen.width,(t-n.screen.top)/n.screen.height),S}),O=function(){var e=new Gn;return function(t,i){return e.set((t-.5*n.screen.width-n.screen.left)/(.5*n.screen.width),(n.screen.height+2*(n.screen.top-i))/n.screen.width),e}}();function F(e){!1!==n.enabled&&(window.removeEventListener("keydown",F),c===i&&(e.keyCode!==n.keys[0]||n.noRotate?e.keyCode!==n.keys[1]||n.noZoom?e.keyCode!==n.keys[2]||n.noPan||(c=2):c=1:c=0))}function G(){!1!==n.enabled&&(c=i,window.addEventListener("keydown",F,!1))}function N(e){if(!1!==n.enabled){if(e.preventDefault(),e.stopPropagation(),l===i)switch(e.button){case n.mouseButtons.LEFT:l=0;break;case n.mouseButtons.MIDDLE:l=1;break;case n.mouseButtons.RIGHT:l=2;break;default:l=i}var t=c!==i?c:l;0!==t||n.noRotate?1!==t||n.noZoom?2!==t||n.noPan||(v.copy(D(e.pageX,e.pageY)),b.copy(v)):(m.copy(D(e.pageX,e.pageY)),g.copy(m)):(d.copy(O(e.pageX,e.pageY)),u.copy(d)),n.domElement.ownerDocument.addEventListener("mousemove",j,!1),n.domElement.ownerDocument.addEventListener("mouseup",H,!1),n.dispatchEvent(x)}}function j(e){if(!1!==n.enabled){e.preventDefault(),e.stopPropagation();var t=c!==i?c:l;0!==t||n.noRotate?1!==t||n.noZoom?2!==t||n.noPan||b.copy(D(e.pageX,e.pageY)):g.copy(D(e.pageX,e.pageY)):(u.copy(d),d.copy(O(e.pageX,e.pageY)))}}function H(e){!1!==n.enabled&&(e.preventDefault(),e.stopPropagation(),l=i,n.domElement.ownerDocument.removeEventListener("mousemove",j),n.domElement.ownerDocument.removeEventListener("mouseup",H),n.dispatchEvent(A))}function z(e){if(!1!==n.enabled&&!0!==n.noZoom){switch(e.preventDefault(),e.stopPropagation(),e.deltaMode){case 2:m.y-=.025*e.deltaY;break;case 1:m.y-=.01*e.deltaY;break;default:m.y-=25e-5*e.deltaY}n.dispatchEvent(x),n.dispatchEvent(A)}}function U(e){if(!1!==n.enabled){if(e.preventDefault(),1===e.touches.length)l=3,d.copy(O(e.touches[0].pageX,e.touches[0].pageY)),u.copy(d);else{l=4;var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY;y=_=Math.sqrt(t*t+i*i);var r=(e.touches[0].pageX+e.touches[1].pageX)/2,o=(e.touches[0].pageY+e.touches[1].pageY)/2;v.copy(D(r,o)),b.copy(v)}n.dispatchEvent(x)}}function V(e){if(!1!==n.enabled)if(e.preventDefault(),e.stopPropagation(),1===e.touches.length)u.copy(d),d.copy(O(e.touches[0].pageX,e.touches[0].pageY));else{var t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY;y=Math.sqrt(t*t+i*i);var r=(e.touches[0].pageX+e.touches[1].pageX)/2,o=(e.touches[0].pageY+e.touches[1].pageY)/2;b.copy(D(r,o))}}function W(e){if(!1!==n.enabled){switch(e.touches.length){case 0:l=i;break;case 1:l=3,d.copy(O(e.touches[0].pageX,e.touches[0].pageY)),u.copy(d)}n.dispatchEvent(A)}}function Z(e){!1!==n.enabled&&e.preventDefault()}this.rotateCamera=(E=new qn,T=new Yn,k=new qn,I=new qn,C=new qn,P=new qn,function(){P.set(d.x-u.x,d.y-u.y,0),(M=P.length())?(h.copy(n.object.position).sub(n.target),k.copy(h).normalize(),I.copy(n.object.up).normalize(),C.crossVectors(I,k).normalize(),I.setLength(d.y-u.y),C.setLength(d.x-u.x),P.copy(I.add(C)),E.crossVectors(P,h).normalize(),M*=n.rotateSpeed,T.setFromAxisAngle(E,M),h.applyQuaternion(T),n.object.up.applyQuaternion(T),f.copy(E),p=M):!n.staticMoving&&p&&(p*=Math.sqrt(1-n.dynamicDampingFactor),h.copy(n.object.position).sub(n.target),T.setFromAxisAngle(f,p),h.applyQuaternion(T),n.object.up.applyQuaternion(T)),u.copy(d)}),this.zoomCamera=function(){var e;4===l?(e=_/y,_=y,n.object.isPerspectiveCamera?h.multiplyScalar(e):n.object.isOrthographicCamera?(n.object.zoom*=e,n.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(1!=(e=1+(g.y-m.y)*n.zoomSpeed)&&e>0&&(n.object.isPerspectiveCamera?h.multiplyScalar(e):n.object.isOrthographicCamera?(n.object.zoom/=e,n.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),n.staticMoving?m.copy(g):m.y+=(g.y-m.y)*this.dynamicDampingFactor)},this.panCamera=(L=new Gn,R=new qn,B=new qn,function(){if(L.copy(b).sub(v),L.lengthSq()){if(n.object.isOrthographicCamera){var e=(n.object.right-n.object.left)/n.object.zoom/n.domElement.clientWidth,t=(n.object.top-n.object.bottom)/n.object.zoom/n.domElement.clientWidth;L.x*=e,L.y*=t}L.multiplyScalar(h.length()*n.panSpeed),B.copy(h).cross(n.object.up).setLength(L.x),B.add(R.copy(n.object.up).setLength(L.y)),n.object.position.add(B),n.target.add(B),n.staticMoving?v.copy(b):v.add(L.subVectors(b,v).multiplyScalar(n.dynamicDampingFactor))}}),this.checkDistances=function(){n.noZoom&&n.noPan||(h.lengthSq()>n.maxDistance*n.maxDistance&&(n.object.position.addVectors(n.target,h.setLength(n.maxDistance)),m.copy(g)),h.lengthSq()o&&(n.dispatchEvent(w),a.copy(n.object.position))):n.object.isOrthographicCamera?(n.object.lookAt(n.target),(a.distanceToSquared(n.object.position)>o||s!==n.object.zoom)&&(n.dispatchEvent(w),a.copy(n.object.position),s=n.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")},this.reset=function(){l=i,c=i,n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.up.copy(n.up0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),h.subVectors(n.object.position,n.target),n.object.lookAt(n.target),n.dispatchEvent(w),a.copy(n.object.position),s=n.object.zoom},this.dispose=function(){n.domElement.removeEventListener("contextmenu",Z,!1),n.domElement.removeEventListener("mousedown",N,!1),n.domElement.removeEventListener("wheel",z,!1),n.domElement.removeEventListener("touchstart",U,!1),n.domElement.removeEventListener("touchend",W,!1),n.domElement.removeEventListener("touchmove",V,!1),n.domElement.ownerDocument.removeEventListener("mousemove",j,!1),n.domElement.ownerDocument.removeEventListener("mouseup",H,!1),window.removeEventListener("keydown",F,!1),window.removeEventListener("keyup",G,!1)},this.domElement.addEventListener("contextmenu",Z,!1),this.domElement.addEventListener("mousedown",N,!1),this.domElement.addEventListener("wheel",z,!1),this.domElement.addEventListener("touchstart",U,!1),this.domElement.addEventListener("touchend",W,!1),this.domElement.addEventListener("touchmove",V,!1),window.addEventListener("keydown",F,!1),window.addEventListener("keyup",G,!1),this.handleResize(),this.update()};(Kp.prototype=Object.create(Bn.prototype)).constructor=Kp;var $p=function(e,t){var n,i,a,s,l,c;void 0===t&&console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.'),t===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.object=e,this.domElement=t,this.enabled=!0,this.target=new qn,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={LEFT:r.ROTATE,MIDDLE:r.DOLLY,RIGHT:r.PAN},this.touches={ONE:o.ROTATE,TWO:o.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=function(){return _.phi},this.getAzimuthalAngle=function(){return _.theta},this.saveState=function(){h.target0.copy(h.target),h.position0.copy(h.object.position),h.zoom0=h.object.zoom},this.reset=function(){h.target.copy(h.target0),h.object.position.copy(h.position0),h.object.zoom=h.zoom0,h.object.updateProjectionMatrix(),h.dispatchEvent(u),h.update(),m=p.NONE},this.update=(n=new qn,i=(new Yn).setFromUnitVectors(e.up,new qn(0,1,0)),a=i.clone().inverse(),s=new qn,l=new Yn,c=2*Math.PI,function(){var e=h.object.position;n.copy(e).sub(h.target),n.applyQuaternion(i),_.setFromVector3(n),h.autoRotate&&m===p.NONE&&L(2*Math.PI/60/60*h.autoRotateSpeed),h.enableDamping?(_.theta+=y.theta*h.dampingFactor,_.phi+=y.phi*h.dampingFactor):(_.theta+=y.theta,_.phi+=y.phi);var t=h.minAzimuthAngle,r=h.maxAzimuthAngle;return isFinite(t)&&isFinite(r)&&(t<-Math.PI?t+=c:t>Math.PI&&(t-=c),r<-Math.PI?r+=c:r>Math.PI&&(r-=c),_.theta=t(t+r)/2?Math.max(t,_.theta):Math.min(r,_.theta)),_.phi=Math.max(h.minPolarAngle,Math.min(h.maxPolarAngle,_.phi)),_.makeSafe(),_.radius*=v,_.radius=Math.max(h.minDistance,Math.min(h.maxDistance,_.radius)),!0===h.enableDamping?h.target.addScaledVector(b,h.dampingFactor):h.target.add(b),n.setFromSpherical(_),n.applyQuaternion(a),e.copy(h.target).add(n),h.object.lookAt(h.target),!0===h.enableDamping?(y.theta*=1-h.dampingFactor,y.phi*=1-h.dampingFactor,b.multiplyScalar(1-h.dampingFactor)):(y.set(0,0,0),b.set(0,0,0)),v=1,!!(w||s.distanceToSquared(h.object.position)>g||8*(1-l.dot(h.object.quaternion))>g)&&(h.dispatchEvent(u),s.copy(h.object.position),l.copy(h.object.quaternion),w=!1,!0)}),this.dispose=function(){h.domElement.removeEventListener("contextmenu",ne,!1),h.domElement.removeEventListener("mousedown",X,!1),h.domElement.removeEventListener("wheel",Q,!1),h.domElement.removeEventListener("touchstart",$,!1),h.domElement.removeEventListener("touchend",te,!1),h.domElement.removeEventListener("touchmove",ee,!1),h.domElement.ownerDocument.removeEventListener("mousemove",J,!1),h.domElement.ownerDocument.removeEventListener("mouseup",q,!1),h.domElement.removeEventListener("keydown",K,!1)};var h=this,u={type:"change"},d={type:"start"},f={type:"end"},p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},m=p.NONE,g=1e-6,_=new Md,y=new Md,v=1,b=new qn,w=!1,x=new Gn,A=new Gn,S=new Gn,M=new Gn,E=new Gn,T=new Gn,k=new Gn,I=new Gn,C=new Gn;function P(){return Math.pow(.95,h.zoomSpeed)}function L(e){y.theta-=e}function R(e){y.phi-=e}var B,D=(B=new qn,function(e,t){B.setFromMatrixColumn(t,0),B.multiplyScalar(-e),b.add(B)}),O=function(){var e=new qn;return function(t,n){!0===h.screenSpacePanning?e.setFromMatrixColumn(n,1):(e.setFromMatrixColumn(n,0),e.crossVectors(h.object.up,e)),e.multiplyScalar(t),b.add(e)}}(),F=function(){var e=new qn;return function(t,n){var i=h.domElement;if(h.object.isPerspectiveCamera){var r=h.object.position;e.copy(r).sub(h.target);var o=e.length();o*=Math.tan(h.object.fov/2*Math.PI/180),D(2*t*o/i.clientHeight,h.object.matrix),O(2*n*o/i.clientHeight,h.object.matrix)}else h.object.isOrthographicCamera?(D(t*(h.object.right-h.object.left)/h.object.zoom/i.clientWidth,h.object.matrix),O(n*(h.object.top-h.object.bottom)/h.object.zoom/i.clientHeight,h.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),h.enablePan=!1)}}();function G(e){h.object.isPerspectiveCamera?v/=e:h.object.isOrthographicCamera?(h.object.zoom=Math.max(h.minZoom,Math.min(h.maxZoom,h.object.zoom*e)),h.object.updateProjectionMatrix(),w=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),h.enableZoom=!1)}function N(e){h.object.isPerspectiveCamera?v*=e:h.object.isOrthographicCamera?(h.object.zoom=Math.max(h.minZoom,Math.min(h.maxZoom,h.object.zoom/e)),h.object.updateProjectionMatrix(),w=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),h.enableZoom=!1)}function j(e){x.set(e.clientX,e.clientY)}function H(e){M.set(e.clientX,e.clientY)}function z(e){if(1==e.touches.length)x.set(e.touches[0].pageX,e.touches[0].pageY);else{var t=.5*(e.touches[0].pageX+e.touches[1].pageX),n=.5*(e.touches[0].pageY+e.touches[1].pageY);x.set(t,n)}}function U(e){if(1==e.touches.length)M.set(e.touches[0].pageX,e.touches[0].pageY);else{var t=.5*(e.touches[0].pageX+e.touches[1].pageX),n=.5*(e.touches[0].pageY+e.touches[1].pageY);M.set(t,n)}}function V(e){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+n*n);k.set(0,i)}function W(e){if(1==e.touches.length)A.set(e.touches[0].pageX,e.touches[0].pageY);else{var t=.5*(e.touches[0].pageX+e.touches[1].pageX),n=.5*(e.touches[0].pageY+e.touches[1].pageY);A.set(t,n)}S.subVectors(A,x).multiplyScalar(h.rotateSpeed);var i=h.domElement;L(2*Math.PI*S.x/i.clientHeight),R(2*Math.PI*S.y/i.clientHeight),x.copy(A)}function Z(e){if(1==e.touches.length)E.set(e.touches[0].pageX,e.touches[0].pageY);else{var t=.5*(e.touches[0].pageX+e.touches[1].pageX),n=.5*(e.touches[0].pageY+e.touches[1].pageY);E.set(t,n)}T.subVectors(E,M).multiplyScalar(h.panSpeed),F(T.x,T.y),M.copy(E)}function Y(e){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,i=Math.sqrt(t*t+n*n);I.set(0,i),C.set(0,Math.pow(I.y/k.y,h.zoomSpeed)),G(C.y),k.copy(I)}function X(e){if(!1!==h.enabled){var t;switch(e.preventDefault(),h.domElement.focus?h.domElement.focus():window.focus(),e.button){case 0:t=h.mouseButtons.LEFT;break;case 1:t=h.mouseButtons.MIDDLE;break;case 2:t=h.mouseButtons.RIGHT;break;default:t=-1}switch(t){case r.DOLLY:if(!1===h.enableZoom)return;!function(e){k.set(e.clientX,e.clientY)}(e),m=p.DOLLY;break;case r.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===h.enablePan)return;H(e),m=p.PAN}else{if(!1===h.enableRotate)return;j(e),m=p.ROTATE}break;case r.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===h.enableRotate)return;j(e),m=p.ROTATE}else{if(!1===h.enablePan)return;H(e),m=p.PAN}break;default:m=p.NONE}m!==p.NONE&&(h.domElement.ownerDocument.addEventListener("mousemove",J,!1),h.domElement.ownerDocument.addEventListener("mouseup",q,!1),h.dispatchEvent(d))}}function J(e){if(!1!==h.enabled)switch(e.preventDefault(),m){case p.ROTATE:if(!1===h.enableRotate)return;!function(e){A.set(e.clientX,e.clientY),S.subVectors(A,x).multiplyScalar(h.rotateSpeed);var t=h.domElement;L(2*Math.PI*S.x/t.clientHeight),R(2*Math.PI*S.y/t.clientHeight),x.copy(A),h.update()}(e);break;case p.DOLLY:if(!1===h.enableZoom)return;!function(e){I.set(e.clientX,e.clientY),C.subVectors(I,k),C.y>0?G(P()):C.y<0&&N(P()),k.copy(I),h.update()}(e);break;case p.PAN:if(!1===h.enablePan)return;!function(e){E.set(e.clientX,e.clientY),T.subVectors(E,M).multiplyScalar(h.panSpeed),F(T.x,T.y),M.copy(E),h.update()}(e)}}function q(e){!1!==h.enabled&&(h.domElement.ownerDocument.removeEventListener("mousemove",J,!1),h.domElement.ownerDocument.removeEventListener("mouseup",q,!1),h.dispatchEvent(f),m=p.NONE)}function Q(e){!1===h.enabled||!1===h.enableZoom||m!==p.NONE&&m!==p.ROTATE||(e.preventDefault(),e.stopPropagation(),h.dispatchEvent(d),function(e){e.deltaY<0?N(P()):e.deltaY>0&&G(P()),h.update()}(e),h.dispatchEvent(f))}function K(e){!1!==h.enabled&&!1!==h.enableKeys&&!1!==h.enablePan&&function(e){var t=!1;switch(e.keyCode){case h.keys.UP:F(0,h.keyPanSpeed),t=!0;break;case h.keys.BOTTOM:F(0,-h.keyPanSpeed),t=!0;break;case h.keys.LEFT:F(h.keyPanSpeed,0),t=!0;break;case h.keys.RIGHT:F(-h.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),h.update())}(e)}function $(e){if(!1!==h.enabled){switch(e.preventDefault(),e.touches.length){case 1:switch(h.touches.ONE){case o.ROTATE:if(!1===h.enableRotate)return;z(e),m=p.TOUCH_ROTATE;break;case o.PAN:if(!1===h.enablePan)return;U(e),m=p.TOUCH_PAN;break;default:m=p.NONE}break;case 2:switch(h.touches.TWO){case o.DOLLY_PAN:if(!1===h.enableZoom&&!1===h.enablePan)return;!function(e){h.enableZoom&&V(e),h.enablePan&&U(e)}(e),m=p.TOUCH_DOLLY_PAN;break;case o.DOLLY_ROTATE:if(!1===h.enableZoom&&!1===h.enableRotate)return;!function(e){h.enableZoom&&V(e),h.enableRotate&&z(e)}(e),m=p.TOUCH_DOLLY_ROTATE;break;default:m=p.NONE}break;default:m=p.NONE}m!==p.NONE&&h.dispatchEvent(d)}}function ee(e){if(!1!==h.enabled)switch(e.preventDefault(),e.stopPropagation(),m){case p.TOUCH_ROTATE:if(!1===h.enableRotate)return;W(e),h.update();break;case p.TOUCH_PAN:if(!1===h.enablePan)return;Z(e),h.update();break;case p.TOUCH_DOLLY_PAN:if(!1===h.enableZoom&&!1===h.enablePan)return;!function(e){h.enableZoom&&Y(e),h.enablePan&&Z(e)}(e),h.update();break;case p.TOUCH_DOLLY_ROTATE:if(!1===h.enableZoom&&!1===h.enableRotate)return;!function(e){h.enableZoom&&Y(e),h.enableRotate&&W(e)}(e),h.update();break;default:m=p.NONE}}function te(e){!1!==h.enabled&&(h.dispatchEvent(f),m=p.NONE)}function ne(e){!1!==h.enabled&&e.preventDefault()}h.domElement.addEventListener("contextmenu",ne,!1),h.domElement.addEventListener("mousedown",X,!1),h.domElement.addEventListener("wheel",Q,!1),h.domElement.addEventListener("touchstart",$,!1),h.domElement.addEventListener("touchend",te,!1),h.domElement.addEventListener("touchmove",ee,!1),h.domElement.addEventListener("keydown",K,!1),-1===h.domElement.tabIndex&&(h.domElement.tabIndex=0),this.update()};($p.prototype=Object.create(Bn.prototype)).constructor=$p;var em=function(e,t){$p.call(this,e,t),this.screenSpacePanning=!1,this.mouseButtons.LEFT=r.PAN,this.mouseButtons.RIGHT=r.ROTATE,this.touches.ONE=o.PAN,this.touches.TWO=o.DOLLY_ROTATE};(em.prototype=Object.create(Bn.prototype)).constructor=em;var tm=function(){function e(t,n,i){var r=this;Lp(this,e),Qp(this,"renderSceneInfo",(function(e){var t=e.scene,n=e.camera,i=e.controls,o=e.elem.getBoundingClientRect(),a=o.left,s=o.right,l=o.top,c=o.bottom,h=o.width,u=o.height;if(!(c<0||l>r.renderer.domElement.clientHeight||s<0||a>r.renderer.domElement.clientWidth)){n.aspect=h/u,n.updateProjectionMatrix(),i.update();var d=r.renderer.domElement.clientHeight-c;r.renderer.setScissor(a,d,h,u),r.renderer.setViewport(a,d,h,u),r.renderer.render(t,n)}})),Qp(this,"resizeRendererToDisplaySize",(function(){var e=r.renderer.domElement.clientWidth,t=r.renderer.domElement.clientHeight;(r.renderer.domElement.width!==e||r.renderer.domElement.height!==t)&&(r.elems.map((function(e,t){t===r.numberOfScene-1&&r.numberOfScene%2!=0?e.style.width=r.container.clientWidth+"px":e.style.width=r.container.clientWidth/2-2+"px",e.style.height=r.container.clientHeight/Math.ceil(r.numberOfScene/2)+"px"})),r.renderer.setSize(e,t,!1))})),Qp(this,"animate",(function(e){var t=new fr("#000");r.renderer.setScissorTest(!1),r.renderer.setClearColor(t,0),r.renderer.clear(!0,!0),r.renderer.setScissorTest(!0),r.resizeRendererToDisplaySize(),r.sceneInfos.forEach((function(e){r.renderSceneInfo(e)}));var n=r.sceneInfos;window.document.body,window.document.body.onmouseover=function(e){"abithree_scene_div"===e.target.className?n.forEach((function(e){e.controls.enabled=!0,e.controls.update()})):n.forEach((function(e){e.controls.enabled=!1,e.controls.update()}))};var i="translateY(".concat(window.scrollY,"px)");r.renderer.domElement.style.transform=i,window.requestAnimationFrame(r.animate)})),this.numberOfScene=n>0?n:1,this.container=t,this.cameraPosition=i||{x:0,y:0,z:500},this.elems=[],this.scenes=[],this.cameras=[],this.sceneInfos=[],this.init()}return Bp(e,[{key:"init",value:function(){this.renderer=new Fs({alpha:!0,antialias:!0}),this.canvas=this.renderer.domElement,this.canvas.className="abithree_canvas",this.container.className="abithree_container_root",this.container.appendChild(this.canvas);for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:0,t=this.sceneInfos.find((function(t){return t.id===e}));if(t)return t;console.log("Oops...No scenes have been found!")}}]),e}();const nm=tm;var im=n(379),rm=n.n(im),om=n(795),am=n.n(om),sm=n(569),lm=n.n(sm),cm=n(565),hm=n.n(cm),um=n(216),dm=n.n(um),fm=n(589),pm=n.n(fm),mm=n(810),gm={};gm.styleTagTransform=pm(),gm.setAttributes=hm(),gm.insert=lm().bind(null,"head"),gm.domAPI=am(),gm.insertStyleElement=dm(),rm()(mm.Z,gm),mm.Z&&mm.Z.locals&&mm.Z.locals})(),i})()})); \ No newline at end of file diff --git a/build/ABIThree.js.LICENSE.txt b/build/ABIThree.js.LICENSE.txt new file mode 100644 index 0000000..5841e65 --- /dev/null +++ b/build/ABIThree.js.LICENSE.txt @@ -0,0 +1,1194 @@ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +/*! ../../external/scripts/jpeg */ + +/*! ../../external/scripts/jpx */ + +/*! ../core/core.colors */ + +/*! ../core/core.intersections */ + +/*! ../core/core.utils */ + +/*! ../core/core.validators */ + +/*! ../decoders/decoders.rle */ + +/*! ../geometries/geometries.slice */ + +/*! ../helpers/helpers.border */ + +/*! ../helpers/helpers.boundingbox */ + +/*! ../helpers/helpers.material.mixin */ + +/*! ../helpers/helpers.progressbar */ + +/*! ../helpers/helpers.slice */ + +/*! ../helpers/shaders.helpers.texture3d */ + +/*! ../helpers/shaders.helpers.unpack */ + +/*! ../math/Ray.js */ + +/*! ../models/models.base */ + +/*! ../models/models.frame */ + +/*! ../models/models.series */ + +/*! ../models/models.stack */ + +/*! ../models/models.voxel */ + +/*! ../node_modules/three/package.json */ + +/*! ../package.json */ + +/*! ../parsers/parsers.dicom */ + +/*! ../parsers/parsers.mgh */ + +/*! ../parsers/parsers.mhd */ + +/*! ../parsers/parsers.nifti */ + +/*! ../parsers/parsers.nrrd */ + +/*! ../shaders.base */ + +/*! ../shaders/shaders.contour.fragment */ + +/*! ../shaders/shaders.contour.uniform */ + +/*! ../shaders/shaders.contour.vertex */ + +/*! ../shaders/shaders.data.fragment */ + +/*! ../shaders/shaders.data.uniform */ + +/*! ../shaders/shaders.data.vertex */ + +/*! ../shaders/shaders.localizer.fragment */ + +/*! ../shaders/shaders.localizer.uniform */ + +/*! ../shaders/shaders.localizer.vertex */ + +/*! ../shaders/shaders.vr.fragment */ + +/*! ../shaders/shaders.vr.uniform */ + +/*! ../shaders/shaders.vr.vertex */ + +/*! ../utils/common */ + +/*! ./../../buffer/index.js */ + +/*! ./../../process/browser.js */ + +/*! ./../process/browser.js */ + +/*! ./../webpack/buildin/global.js */ + +/*! ./Box3.js */ + +/*! ./Math.js */ + +/*! ./Matrix4.js */ + +/*! ./Quaternion.js */ + +/*! ./Sphere.js */ + +/*! ./Vector3.js */ + +/*! ./adler32 */ + +/*! ./cameras.orthographic */ + +/*! ./cameras/cameras */ + +/*! ./common */ + +/*! ./component-spec.js */ + +/*! ./controls.orbit */ + +/*! ./controls.trackball */ + +/*! ./controls.trackballortho */ + +/*! ./controls/controls */ + +/*! ./core.colors */ + +/*! ./core.intersections */ + +/*! ./core.utils */ + +/*! ./core.validators */ + +/*! ./core/core */ + +/*! ./crc32 */ + +/*! ./data-stream.js */ + +/*! ./decoder.js */ + +/*! ./div2.js */ + +/*! ./frame-header.js */ + +/*! ./geometries.slice */ + +/*! ./geometries.voxel */ + +/*! ./geometries/geometries */ + +/*! ./helpers.border */ + +/*! ./helpers.boundingbox */ + +/*! ./helpers.contour */ + +/*! ./helpers.localizer */ + +/*! ./helpers.lut */ + +/*! ./helpers.progressbar */ + +/*! ./helpers.progressbar.eventbased */ + +/*! ./helpers.segmentationlut */ + +/*! ./helpers.slice */ + +/*! ./helpers.stack */ + +/*! ./helpers.volumerendering */ + +/*! ./helpers/helpers */ + +/*! ./helpers/shaders.helpers.intersectBox */ + +/*! ./huffman-table.js */ + +/*! ./inffast */ + +/*! ./inftrees */ + +/*! ./interpolation/shaders.interpolation */ + +/*! ./lib/deflate */ + +/*! ./lib/inflate */ + +/*! ./lib/utils/common */ + +/*! ./lib/zlib/constants */ + +/*! ./loaders.base */ + +/*! ./loaders.volume */ + +/*! ./loaders/loaders */ + +/*! ./messages */ + +/*! ./models.frame */ + +/*! ./models.series */ + +/*! ./models.stack */ + +/*! ./models.voxel */ + +/*! ./models/models */ + +/*! ./mult2.js */ + +/*! ./nifti1.js */ + +/*! ./nifti2.js */ + +/*! ./parsers.dicom */ + +/*! ./parsers.mgh */ + +/*! ./parsers.nifti */ + +/*! ./parsers.nrrd */ + +/*! ./parsers.volume */ + +/*! ./parsers/parsers */ + +/*! ./presets.segmentation */ + +/*! ./presets.segmentation.freesurfer */ + +/*! ./presets/presets */ + +/*! ./quantization-table.js */ + +/*! ./scan-component.js */ + +/*! ./scan-header.js */ + +/*! ./shaders.contour.fragment */ + +/*! ./shaders.contour.uniform */ + +/*! ./shaders.contour.vertex */ + +/*! ./shaders.data.fragment */ + +/*! ./shaders.data.uniform */ + +/*! ./shaders.data.vertex */ + +/*! ./shaders.interpolation.identity */ + +/*! ./shaders.interpolation.trilinear */ + +/*! ./shaders.layer.fragment */ + +/*! ./shaders.layer.uniform */ + +/*! ./shaders.layer.vertex */ + +/*! ./shaders.localizer.fragment */ + +/*! ./shaders.localizer.uniform */ + +/*! ./shaders.localizer.vertex */ + +/*! ./shaders.vr.fragment */ + +/*! ./shaders.vr.uniform */ + +/*! ./shaders.vr.vertex */ + +/*! ./shaders/shaders */ + +/*! ./src/ami.ts */ + +/*! ./support/isBuffer */ + +/*! ./trees */ + +/*! ./utilities.js */ + +/*! ./utils.js */ + +/*! ./utils/common */ + +/*! ./utils/strings */ + +/*! ./widgets.angle */ + +/*! ./widgets.annotation */ + +/*! ./widgets.base */ + +/*! ./widgets.biruler */ + +/*! ./widgets.crossRuler */ + +/*! ./widgets.css */ + +/*! ./widgets.ellipse */ + +/*! ./widgets.freehand */ + +/*! ./widgets.handle */ + +/*! ./widgets.peakVelocity */ + +/*! ./widgets.polygon */ + +/*! ./widgets.pressureHalfTime */ + +/*! ./widgets.rectangle */ + +/*! ./widgets.ruler */ + +/*! ./widgets.velocityTimeIntegral */ + +/*! ./widgets.voxelProbe */ + +/*! ./widgets/widgets */ + +/*! ./zlib/constants */ + +/*! ./zlib/deflate */ + +/*! ./zlib/gzheader */ + +/*! ./zlib/inflate */ + +/*! ./zlib/messages */ + +/*! ./zlib/zstream */ + +/*! OpenJPEG.js/dist/openJPEG-DynamicMemory-browser.js */ + +/*! assert */ + +/*! base64-js */ + +/*! const-ninf-float32 */ + +/*! const-pinf-float32 */ + +/*! dicom-parser */ + +/*! dicom-parser - 1.8.1 - 2018-05-16 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */ + +/*! events */ + +/*! exports provided: BorderHelper, borderHelperFactory, BoundingBoxHelper, boundingBoxHelperFactory, ContourHelper, contourHelperFactory, LocalizerHelper, localizerHelperFactory, LutHelper, lutHelperFactory, SegmentationLutHelper, ProgressBarHelper, ProgressBarEventBasedHelper, SliceHelper, sliceHelperFactory, StackHelper, stackHelperFactory, VolumeRenderingHelper, VolumeRenderingHelperFactory */ + +/*! exports provided: Box3 */ + +/*! exports provided: ColorsCore, IntersectionsCore, UtilsCore, ValidatorsCore */ + +/*! exports provided: ContourUniformShader, ContourFragmentShader, ContourVertexShader, DataUniformShader, DataFragmentShader, DataVertexShader, VRUniformShader, VRFragmentShader, VRVertexShader, LayerUniformShader, LayerFragmentShader, LayerVertexShader, LocalizerUniformShader, LocalizerFragmentShader, LocalizerVertexShader */ + +/*! exports provided: DicomParser, MghParser, NiftiParser, NrrdParser */ + +/*! exports provided: FrameModel, StackModel, SeriesModel, VoxelModel */ + +/*! exports provided: Matrix4 */ + +/*! exports provided: OrthographicCamera, orthographicCameraFactory */ + +/*! exports provided: Quaternion */ + +/*! exports provided: REVISION, MOUSE, CullFaceNone, CullFaceBack, CullFaceFront, CullFaceFrontBack, FrontFaceDirectionCW, FrontFaceDirectionCCW, BasicShadowMap, PCFShadowMap, PCFSoftShadowMap, FrontSide, BackSide, DoubleSide, FlatShading, SmoothShading, NoColors, FaceColors, VertexColors, NoBlending, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, CustomBlending, AddEquation, SubtractEquation, ReverseSubtractEquation, MinEquation, MaxEquation, ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstAlphaFactor, OneMinusDstAlphaFactor, DstColorFactor, OneMinusDstColorFactor, SrcAlphaSaturateFactor, NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth, MultiplyOperation, MixOperation, AddOperation, NoToneMapping, LinearToneMapping, ReinhardToneMapping, Uncharted2ToneMapping, CineonToneMapping, ACESFilmicToneMapping, UVMapping, CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping, SphericalReflectionMapping, CubeUVReflectionMapping, CubeUVRefractionMapping, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping, NearestFilter, NearestMipMapNearestFilter, NearestMipMapLinearFilter, LinearFilter, LinearMipMapNearestFilter, LinearMipMapLinearFilter, UnsignedByteType, ByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedInt248Type, AlphaFormat, RGBFormat, RGBAFormat, LuminanceFormat, LuminanceAlphaFormat, RGBEFormat, DepthFormat, DepthStencilFormat, RedFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, LoopOnce, LoopRepeat, LoopPingPong, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, ZeroCurvatureEnding, ZeroSlopeEnding, WrapAroundEnding, TrianglesDrawMode, TriangleStripDrawMode, TriangleFanDrawMode, LinearEncoding, sRGBEncoding, GammaEncoding, RGBEEncoding, LogLuvEncoding, RGBM7Encoding, RGBM16Encoding, RGBDEncoding, BasicDepthPacking, RGBADepthPacking, TangentSpaceNormalMap, ObjectSpaceNormalMap */ + +/*! exports provided: RLEDecoder */ + +/*! exports provided: Ray */ + +/*! exports provided: Raycaster */ + +/*! exports provided: SegmentationPreset */ + +/*! exports provided: SliceGeometry, sliceGeometryFactory, VoxelGeometry, voxelGeometryFactory */ + +/*! exports provided: Sphere */ + +/*! exports provided: TrackballControl, trackballControlFactory, TrackballOrthoControl, trackballOrthoControlFactory, OrbitControl, orbitControlFactory */ + +/*! exports provided: Triangle */ + +/*! exports provided: Vector2 */ + +/*! exports provided: Vector3 */ + +/*! exports provided: VolumeLoader */ + +/*! exports provided: WidgetsCss, AngleWidget, angleWidgetFactory, AnnotationWidget, annotationWidgetFactory, BiRulerWidget, birulerWidgetFactory, CrossRulerWidget, crossrulerWidgetFactory, EllipseWidget, ellipseWidgetFactory, FreehandWidget, freehandWidgetFactory, HandleWidget, handleWidgetFactory, PeakVelocityWidget, peakVelocityWidgetFactory, PressureHalfTimeWidget, pressureHalfTimeWidgetFactory, PolygonWidget, polygonWidgetFactory, RectangleWidget, rectangleWidgetFactory, RulerWidget, rulerWidgetFactory, VelocityTimeIntegralWidget, velocityTimeIntegralWidgetFactory, VoxelProbeWidget, voxelprobeWidgetFactory */ + +/*! exports provided: _Math */ + +/*! exports provided: camerasOrthographic, default */ + +/*! exports provided: default */ + +/*! exports provided: geometriesSlice, default */ + +/*! exports provided: geometriesVoxel, default */ + +/*! exports provided: helpersBorder, default */ + +/*! exports provided: helpersBoundingBox, default */ + +/*! exports provided: helpersContour, default */ + +/*! exports provided: helpersLocalizer, default */ + +/*! exports provided: helpersLut, default */ + +/*! exports provided: helpersMaterialMixin, default */ + +/*! exports provided: helpersSlice, default */ + +/*! exports provided: helpersStack, default */ + +/*! exports provided: helpersVolumeRendering, default */ + +/*! exports provided: name, version, description, main, repository, jsnext:main, module, files, directories, eslintConfig, scripts, keywords, author, license, bugs, homepage, devDependencies, jspm, default */ + +/*! exports provided: name, version, main, keywords, author, license, repository, config, lint-staged, prettier, sideEffects, dependencies, scripts, devDependencies, engines, default */ + +/*! exports provided: orbit, default */ + +/*! exports provided: trackball, default */ + +/*! exports provided: trackballOrtho, default */ + +/*! exports provided: widgetsAngle, default */ + +/*! exports provided: widgetsAnnotation, default */ + +/*! exports provided: widgetsBiruler, default */ + +/*! exports provided: widgetsCrossRuler, default */ + +/*! exports provided: widgetsEllipse, default */ + +/*! exports provided: widgetsFreehand, default */ + +/*! exports provided: widgetsHandle, default */ + +/*! exports provided: widgetsPeakVelocity, default */ + +/*! exports provided: widgetsPolygon, default */ + +/*! exports provided: widgetsPressureHalfTime, default */ + +/*! exports provided: widgetsRectangle, default */ + +/*! exports provided: widgetsRuler, default */ + +/*! exports provided: widgetsVelocityTimeIntegral, default */ + +/*! exports provided: widgetsVoxelprobe, default */ + +/*! fs */ + +/*! ieee754 */ + +/*! image-JPEG2000 - v0.3.1 - 2015-08-26 | https://github.com/OHIF/image-JPEG2000 */ + +/*! inherits */ + +/*! isarray */ + +/*! jpeg-lossless-decoder-js */ + +/*! math-abs */ + +/*! math-ceil */ + +/*! math-float32-to-binary-string */ + +/*! math-floor */ + +/*! nifti-reader-js/src/nifti */ + +/*! no static exports found */ + +/*! nrrd-js */ + +/*! pako */ + +/*! path */ + +/*! three/src/constants */ + +/*! three/src/core/Raycaster */ + +/*! three/src/math/Box3 */ + +/*! three/src/math/Matrix4 */ + +/*! three/src/math/Triangle */ + +/*! three/src/math/Vector2 */ + +/*! three/src/math/Vector3 */ + +/*! util/ */ + +/*! utils-left-pad-string */ + +/*! utils-repeat-string */ + +/*! utils-right-pad-string */ + +/*! validate.io-integer */ + +/*! validate.io-nonnegative-integer */ + +/*! validate.io-number */ + +/*! validate.io-string-primitive */ + +/*!********************!*\ + !*** ./src/ami.ts ***! + \********************/ + +/*!**********************!*\ + !*** ./package.json ***! + \**********************/ + +/*!**************************!*\ + !*** ./src/core/core.js ***! + \**************************/ + +/*!**************************!*\ + !*** multi ./src/ami.ts ***! + \**************************/ + +/*!******************************!*\ + !*** ./src/models/models.js ***! + \******************************/ + +/*!********************************!*\ + !*** ./src/cameras/cameras.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/core/core.utils.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/helpers/helpers.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/loaders/loaders.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/parsers/parsers.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/presets/presets.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/shaders/shaders.js ***! + \********************************/ + +/*!********************************!*\ + !*** ./src/widgets/widgets.js ***! + \********************************/ + +/*!*********************************!*\ + !*** ./external/scripts/jpx.js ***! + \*********************************/ + +/*!*********************************!*\ + !*** ./src/core/core.colors.ts ***! + \*********************************/ + +/*!**********************************!*\ + !*** ./external/scripts/jpeg.js ***! + \**********************************/ + +/*!**********************************!*\ + !*** ./src/controls/controls.js ***! + \**********************************/ + +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ + +/*!***********************************!*\ + !*** ./node_modules/util/util.js ***! + \***********************************/ + +/*!***********************************!*\ + !*** ./src/models/models.base.js ***! + \***********************************/ + +/*!************************************!*\ + !*** ./node_modules/pako/index.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/helpers/helpers.lut.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/models/models.frame.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/models/models.stack.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/models/models.voxel.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/parsers/parsers.mgh.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/parsers/parsers.mhd.js ***! + \************************************/ + +/*!************************************!*\ + !*** ./src/widgets/widgets.css.js ***! + \************************************/ + +/*!*************************************!*\ + !*** ./src/core/core.validators.js ***! + \*************************************/ + +/*!*************************************!*\ + !*** ./src/loaders/loaders.base.js ***! + \*************************************/ + +/*!*************************************!*\ + !*** ./src/models/models.series.js ***! + \*************************************/ + +/*!*************************************!*\ + !*** ./src/parsers/parsers.nrrd.js ***! + \*************************************/ + +/*!*************************************!*\ + !*** ./src/shaders/shaders.base.js ***! + \*************************************/ + +/*!*************************************!*\ + !*** ./src/widgets/widgets.base.ts ***! + \*************************************/ + +/*!**************************************!*\ + !*** ./node_modules/buffer/index.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./node_modules/nrrd-js/nrrd.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/decoders/decoders.rle.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/geometries/geometries.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/helpers/helpers.slice.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/helpers/helpers.stack.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/parsers/parsers.dicom.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/parsers/parsers.nifti.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/widgets/widgets.angle.js ***! + \**************************************/ + +/*!**************************************!*\ + !*** ./src/widgets/widgets.ruler.js ***! + \**************************************/ + +/*!***************************************!*\ + !*** ./node_modules/assert/assert.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./node_modules/events/events.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./node_modules/ieee754/index.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./node_modules/isarray/index.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./src/helpers/helpers.border.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./src/loaders/loaders.volume.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./src/parsers/parsers.volume.js ***! + \***************************************/ + +/*!***************************************!*\ + !*** ./src/widgets/widgets.handle.js ***! + \***************************************/ + +/*!****************************************!*\ + !*** ./src/controls/controls.orbit.js ***! + \****************************************/ + +/*!****************************************!*\ + !*** ./src/core/core.intersections.js ***! + \****************************************/ + +/*!****************************************!*\ + !*** ./src/helpers/helpers.contour.js ***! + \****************************************/ + +/*!****************************************!*\ + !*** ./src/widgets/widgets.biruler.js ***! + \****************************************/ + +/*!****************************************!*\ + !*** ./src/widgets/widgets.ellipse.js ***! + \****************************************/ + +/*!****************************************!*\ + !*** ./src/widgets/widgets.polygon.js ***! + \****************************************/ + +/*!*****************************************!*\ + !*** ./node_modules/base64-js/index.js ***! + \*****************************************/ + +/*!*****************************************!*\ + !*** ./node_modules/process/browser.js ***! + \*****************************************/ + +/*!*****************************************!*\ + !*** ./node_modules/three/package.json ***! + \*****************************************/ + +/*!*****************************************!*\ + !*** ./src/widgets/widgets.freehand.js ***! + \*****************************************/ + +/*!******************************************!*\ + !*** ./node_modules/pako/lib/deflate.js ***! + \******************************************/ + +/*!******************************************!*\ + !*** ./node_modules/pako/lib/inflate.js ***! + \******************************************/ + +/*!******************************************!*\ + !*** ./src/helpers/helpers.localizer.js ***! + \******************************************/ + +/*!******************************************!*\ + !*** ./src/shaders/shaders.vr.vertex.js ***! + \******************************************/ + +/*!******************************************!*\ + !*** ./src/widgets/widgets.rectangle.js ***! + \******************************************/ + +/*!*******************************************!*\ + !*** ./src/shaders/shaders.vr.uniform.js ***! + \*******************************************/ + +/*!*******************************************!*\ + !*** ./src/widgets/widgets.annotation.js ***! + \*******************************************/ + +/*!*******************************************!*\ + !*** ./src/widgets/widgets.crossRuler.js ***! + \*******************************************/ + +/*!*******************************************!*\ + !*** ./src/widgets/widgets.voxelProbe.js ***! + \*******************************************/ + +/*!********************************************!*\ + !*** ./node_modules/math-abs/lib/index.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./node_modules/three/src/math/Ray.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/controls/controls.trackball.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/geometries/geometries.slice.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/geometries/geometries.voxel.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/helpers/helpers.boundingbox.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/helpers/helpers.progressbar.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/shaders/shaders.data.vertex.js ***! + \********************************************/ + +/*!********************************************!*\ + !*** ./src/shaders/shaders.vr.fragment.js ***! + \********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/math-ceil/lib/index.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/pako/lib/zlib/crc32.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/pako/lib/zlib/trees.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/three/src/constants.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/three/src/math/Box3.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./node_modules/three/src/math/Math.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./src/cameras/cameras.orthographic.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./src/presets/presets.segmentation.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./src/shaders/shaders.data.uniform.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./src/shaders/shaders.layer.vertex.js ***! + \*********************************************/ + +/*!*********************************************!*\ + !*** ./src/widgets/widgets.peakVelocity.js ***! + \*********************************************/ + +/*!**********************************************!*\ + !*** ./node_modules/math-floor/lib/index.js ***! + \**********************************************/ + +/*!**********************************************!*\ + !*** ./src/shaders/shaders.data.fragment.js ***! + \**********************************************/ + +/*!**********************************************!*\ + !*** ./src/shaders/shaders.layer.uniform.js ***! + \**********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/utils/common.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/adler32.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/deflate.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/inffast.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/inflate.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/zstream.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/path-browserify/index.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./node_modules/three/src/math/Sphere.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./src/helpers/helpers.material.mixin.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./src/shaders/shaders.contour.vertex.js ***! + \***********************************************/ + +/*!***********************************************!*\ + !*** ./src/shaders/shaders.layer.fragment.js ***! + \***********************************************/ + +/*!************************************************!*\ + !*** ./node_modules/pako/lib/utils/strings.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/gzheader.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/inftrees.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/messages.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/three/src/math/Matrix4.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/three/src/math/Vector2.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./node_modules/three/src/math/Vector3.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./src/helpers/helpers.segmentationlut.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./src/helpers/helpers.volumerendering.js ***! + \************************************************/ + +/*!************************************************!*\ + !*** ./src/shaders/shaders.contour.uniform.js ***! + \************************************************/ + +/*!*************************************************!*\ + !*** ./node_modules/pako/lib/zlib/constants.js ***! + \*************************************************/ + +/*!*************************************************!*\ + !*** ./node_modules/three/src/math/Triangle.js ***! + \*************************************************/ + +/*!*************************************************!*\ + !*** ./src/controls/controls.trackballortho.js ***! + \*************************************************/ + +/*!*************************************************!*\ + !*** ./src/shaders/shaders.contour.fragment.js ***! + \*************************************************/ + +/*!*************************************************!*\ + !*** ./src/shaders/shaders.localizer.vertex.js ***! + \*************************************************/ + +/*!*************************************************!*\ + !*** ./src/widgets/widgets.pressureHalfTime.js ***! + \*************************************************/ + +/*!**************************************************!*\ + !*** ./node_modules/three/src/core/Raycaster.js ***! + \**************************************************/ + +/*!**************************************************!*\ + !*** ./src/shaders/shaders.localizer.uniform.js ***! + \**************************************************/ + +/*!***************************************************!*\ + !*** ./node_modules/inherits/inherits_browser.js ***! + \***************************************************/ + +/*!***************************************************!*\ + !*** ./node_modules/nifti-reader-js/src/nifti.js ***! + \***************************************************/ + +/*!***************************************************!*\ + !*** ./node_modules/three/src/math/Quaternion.js ***! + \***************************************************/ + +/*!***************************************************!*\ + !*** ./src/shaders/shaders.localizer.fragment.js ***! + \***************************************************/ + +/*!****************************************************!*\ + !*** ./node_modules/nifti-reader-js/src/nifti1.js ***! + \****************************************************/ + +/*!****************************************************!*\ + !*** ./node_modules/nifti-reader-js/src/nifti2.js ***! + \****************************************************/ + +/*!*****************************************************!*\ + !*** ./src/widgets/widgets.velocityTimeIntegral.js ***! + \*****************************************************/ + +/*!******************************************************!*\ + !*** ./node_modules/const-ninf-float32/lib/index.js ***! + \******************************************************/ + +/*!******************************************************!*\ + !*** ./node_modules/const-pinf-float32/lib/index.js ***! + \******************************************************/ + +/*!******************************************************!*\ + !*** ./node_modules/node-libs-browser/mock/empty.js ***! + \******************************************************/ + +/*!******************************************************!*\ + !*** ./node_modules/util/support/isBufferBrowser.js ***! + \******************************************************/ + +/*!******************************************************!*\ + !*** ./node_modules/validate.io-number/lib/index.js ***! + \******************************************************/ + +/*!*******************************************************!*\ + !*** ./node_modules/nifti-reader-js/src/utilities.js ***! + \*******************************************************/ + +/*!*******************************************************!*\ + !*** ./node_modules/utils-repeat-string/lib/index.js ***! + \*******************************************************/ + +/*!*******************************************************!*\ + !*** ./node_modules/validate.io-integer/lib/index.js ***! + \*******************************************************/ + +/*!*******************************************************!*\ + !*** ./src/helpers/helpers.progressbar.eventbased.js ***! + \*******************************************************/ + +/*!*******************************************************!*\ + !*** ./src/shaders/helpers/shaders.helpers.unpack.js ***! + \*******************************************************/ + +/*!********************************************************!*\ + !*** ./src/presets/presets.segmentation.freesurfer.js ***! + \********************************************************/ + +/*!*********************************************************!*\ + !*** ./node_modules/utils-left-pad-string/lib/index.js ***! + \*********************************************************/ + +/*!**********************************************************!*\ + !*** ./node_modules/utils-right-pad-string/lib/index.js ***! + \**********************************************************/ + +/*!**********************************************************!*\ + !*** ./src/shaders/helpers/shaders.helpers.texture3d.js ***! + \**********************************************************/ + +/*!***********************************************************!*\ + !*** ./node_modules/dicom-parser/dist/dicomParser.min.js ***! + \***********************************************************/ + +/*!***********************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/main.js ***! + \***********************************************************/ + +/*!************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/utils.js ***! + \************************************************************/ + +/*!************************************************************!*\ + !*** ./src/shaders/interpolation/shaders.interpolation.js ***! + \************************************************************/ + +/*!*************************************************************!*\ + !*** ./src/shaders/helpers/shaders.helpers.intersectBox.js ***! + \*************************************************************/ + +/*!**************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/decoder.js ***! + \**************************************************************/ + +/*!****************************************************************!*\ + !*** ./node_modules/math-float32-to-binary-string/lib/div2.js ***! + \****************************************************************/ + +/*!****************************************************************!*\ + !*** ./node_modules/validate.io-string-primitive/lib/index.js ***! + \****************************************************************/ + +/*!*****************************************************************!*\ + !*** ./node_modules/math-float32-to-binary-string/lib/index.js ***! + \*****************************************************************/ + +/*!*****************************************************************!*\ + !*** ./node_modules/math-float32-to-binary-string/lib/mult2.js ***! + \*****************************************************************/ + +/*!******************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/data-stream.js ***! + \******************************************************************/ + +/*!******************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/scan-header.js ***! + \******************************************************************/ + +/*!*******************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/frame-header.js ***! + \*******************************************************************/ + +/*!*******************************************************************!*\ + !*** ./node_modules/validate.io-nonnegative-integer/lib/index.js ***! + \*******************************************************************/ + +/*!********************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/huffman-table.js ***! + \********************************************************************/ + +/*!*********************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/component-spec.js ***! + \*********************************************************************/ + +/*!*********************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/scan-component.js ***! + \*********************************************************************/ + +/*!*********************************************************************!*\ + !*** ./src/shaders/interpolation/shaders.interpolation.identity.js ***! + \*********************************************************************/ + +/*!**********************************************************************!*\ + !*** ./src/shaders/interpolation/shaders.interpolation.trilinear.js ***! + \**********************************************************************/ + +/*!*************************************************************************!*\ + !*** ./node_modules/OpenJPEG.js/dist/openJPEG-DynamicMemory-browser.js ***! + \*************************************************************************/ + +/*!*************************************************************************!*\ + !*** ./node_modules/jpeg-lossless-decoder-js/src/quantization-table.js ***! + \*************************************************************************/ + +/** + * lil-gui + * https://lil-gui.georgealways.com + * @version 0.16.0 + * @author George Michael Brower + * @license MIT + */ diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle new file mode 100644 index 0000000..4c513ae Binary files /dev/null and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree new file mode 100644 index 0000000..48cf736 Binary files /dev/null and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo new file mode 100644 index 0000000..d73bcc8 --- /dev/null +++ b/docs/_build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: b194ff34520c0f25200ffe049335e610 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..fec40aa --- /dev/null +++ b/docs/_build/html/_sources/index.rst.txt @@ -0,0 +1,39 @@ +.. ABIThree Documentation documentation master file, created by + sphinx-quickstart on Mon Jan 10 11:34:10 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ABIThree Documentation's documentation! +================================================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +Guide +============ +Class +^^^^^^^ +.. js:autoclass:: Scenes(constructor, args[container, numberOfScene, cameraPosition]) + :members: +.. js:autoclass:: ImageLoader(constructor, args[label,dicom_file_paths,scene,camera,container,gui,callbackFunction]) + :members: + +LoadModule Functions +^^^^^^^^^^^^^^^^^^^^^^ +.. js:autofunction:: loadObjFile(url, scene, camera [, material=null, progressBar=null]) +.. js:autofunction:: loadMTLFile(url_mtl, url_obj, scene, camera [, progressBar=null]) +.. js:autofunction:: loadGLTFFile(url, scene, camera [, progressBar=null]) + +Helper +^^^^^^^^^ +.. js:autoclass:: CameraHelper(constructor, args[object, prop]) + :members: +.. js:autoclass:: ColorGUIHelper(constructor, args[object, prop]) + :members: + + diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css new file mode 100644 index 0000000..24bc73e --- /dev/null +++ b/docs/_build/html/_static/basic.css @@ -0,0 +1,855 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css new file mode 100644 index 0000000..e380325 --- /dev/null +++ b/docs/_build/html/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff b/docs/_build/html/_static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff2 b/docs/_build/html/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-bold.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff b/docs/_build/html/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal.woff differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff2 b/docs/_build/html/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/docs/_build/html/_static/css/fonts/lato-normal.woff2 differ diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css new file mode 100644 index 0000000..0d9ae7e --- /dev/null +++ b/docs/_build/html/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js new file mode 100644 index 0000000..daccd20 --- /dev/null +++ b/docs/_build/html/_static/doctools.js @@ -0,0 +1,315 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('
\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..23fc755 --- /dev/null +++ b/docs/_build/html/_static/documentation_options.js @@ -0,0 +1,12 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '0.0.1', + LANGUAGE: 'None', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false +}; \ No newline at end of file diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/docs/_build/html/_static/file.png differ diff --git a/docs/_build/html/_static/jquery-3.5.1.js b/docs/_build/html/_static/jquery-3.5.1.js new file mode 100644 index 0000000..5093733 --- /dev/null +++ b/docs/_build/html/_static/jquery-3.5.1.js @@ -0,0 +1,10872 @@ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.5.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • »
  • +
  • Index
  • +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ C + | I + | L + | S + +
+

C

+ + + +
+ +

I

+ + + +
+ +

L

+ + + +
+ +

S

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2022, Auckland Bioengineering Institute.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html new file mode 100644 index 0000000..3387f61 --- /dev/null +++ b/docs/_build/html/index.html @@ -0,0 +1,504 @@ + + + + + + Welcome to ABIThree Documentation’s documentation! — ABIThree Documentation 0.0.1 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • »
  • +
  • Welcome to ABIThree Documentation’s documentation!
  • +
  • + View page source +
  • +
+
+
+
+
+ +
+

Welcome to ABIThree Documentation’s documentation!

+ +
+
+
+
+

Guide

+
+

Class

+
+
+class Scenes(constructor, args[container, numberOfScene, cameraPosition])
+

<p>Base class for making multiple scenes, it includes webGLRender, camera information, three.js controls. +The default number of scene is one, and the default camera position is { x: 0, y: 0, z: 500 }.</p>

+

Examples:

+
const allScenes = new Scenes(HTMLElement, 4, {0, 0, 1000});
+allScenes.animate();
+
+
+
+
+Scenes.animate
+

<p>This function is for create animation and render the canvas.</p>

+
+ +
+
+Scenes.cameraPosition
+

type: object

+

<p>The camera postion, it is a object and the format is {x:number, y:number, z:number}</p>

+

Examples:

+
{ x: 0, y: 0, z: 1000 }
+
+
+
+ +
+
+Scenes.cameras
+

type: Array

+

<p>It stores all camera information.</p>

+
+ +
+
+Scenes.container
+

type: HTMLElement

+

<p>The main container for all scenes</p>

+
+ +
+
+Scenes.elems
+

type: Array

+

<p>It stores all scenes’ parent domElements.</p>

+
+ +
+
+Scenes.numberOfScene
+

type: number

+

<p>How many scenes the user want to create.</p>

+
+ +
+
+Scenes.renderSceneInfo
+

<p>This function is for render all scenes on canvas.</p>

+
+ +
+
+Scenes.resizeRendererToDisplaySize
+

<p>This method causes the layout of the canvas to change responsively with the user’s window.</p>

+
+ +
+
+Scenes.sceneInfos
+

<p>It stores all scenes’ information. Each scene’s info includes scene’s ID, scene,camera, domElement, controls, GUI.</p>

+
+ +
+
+Scenes.scenes
+

type: Array

+

<p>It stores all scenes.</p>

+
+ +
+
+Scenes.getScene(id=0)
+

<p>Get the scene infomation with the corresponding id by entering the parameter ID.</p>

+
+
Arguments
+
    +
  • id (Number) –

  • +
+
+
Returns
+

Scenes – <ul> <li>If found the id of the scence</li> </ul>

+
+
+

Examples:

+
const scene = getScene()
+const sceneTwo = getScene(1)
+
+
+
+ +
+
+Scenes.init()
+

<p>The initial function. +It will create a WebGLRenderer, and depends on the number of scenes to create each scene and it’s parent domElement. +And it also can automatically create gui for each scene. +All the informations will be stored in the sceneInfo object, such as: scene,camera, domElement, controls, GUI.</p>

+
+ +
+
+Scenes.makeScene(elem, cameraPosition)
+

<p>This functions is for init function to create multiple scenes.</p>

+
+
Arguments
+
    +
  • elem (HTMLElement) – <p>the scene parent domElement.</p>

  • +
  • cameraPosition (object) – <p>the cameraPostion</p>

  • +
+
+
Returns
+

object – <ul> <li>{scene, camera, controls}</li> </ul>

+
+
+
+ +
+ +
+
+class ImageLoader(constructor, args[label,dicom_file_paths,scene,camera,container,gui,callbackFunction])
+

<p>This class is for loading dicom images with using ami.js.</p>

+

Examples:

+
const container = document.querySelector("#container_root");
+const allScenes = new ABIThree.Scenes(container, 3);
+const scene3 = allScenes.getScene(2);
+const imageLoader = new ABIThree.ImageLoader(
+        "Image",
+        dicom_file_paths,
+        scene3.scene,
+        scene3.camera,
+        scene3.elem,
+        gui,
+        callback,
+      );
+imageLoader.viewImage();
+
+
+
+
+ImageLoader.callbackFunction
+

type: function

+

<p>Callback function</p>

+
+ +
+
+ImageLoader.camera
+

type: object

+

<p>Current scene camera</p>

+
+ +
+
+ImageLoader.container
+

type: HTMLElement

+

<p>Current domElemet</p>

+
+ +
+
+ImageLoader.gui
+

type: object

+

<p>Current domElemet gui</p>

+
+ +
+
+ImageLoader.label
+

type: string

+

<p>the image label</p>

+
+ +
+
+ImageLoader.path
+

type: Array.<string>

+

<p>The dicom image paths</p>

+
+ +
+
+ImageLoader.scene
+

type: object

+

<p>Current domElemet scene</p>

+
+ +
+
+ImageLoader.addGUI(stackHelper)
+

<p>add dicom image gui</p>

+
+
Arguments
+
    +
  • stackHelper (object) –

  • +
+
+
+
+ +
+
+ImageLoader.imageLoader(paths)
+

<p>loading dicom images by using ami.js</p>

+
+
Arguments
+
    +
  • paths (Array.<string>) –

  • +
+
+
+
+ +
+
+ImageLoader.setRenderFunction(render)
+

<p>set current render</p>

+
+
Arguments
+
    +
  • render (object) –

  • +
+
+
+
+ +
+
+ImageLoader.viewImage()
+

<p>after load dicom image, then call this function to display.</p>

+
+ +
+ +
+
+

LoadModule Functions

+
+
+loadObjFile(url, scene, camera[, material=null, progressBar=null])
+

<p>This function is for load .obj file</p>

+
+
Arguments
+
    +
  • url (string) – <p>the .obj file url</p>

  • +
  • scene (object) – <p>the current domElement’s scene</p>

  • +
  • camera (object) – <p>the current scene’s camera</p>

  • +
  • material (object) – <p>the material for .obj file (optional), the default material is THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true })</p>

  • +
  • progressBar (HTMLElement) – <p>the progress html domelment bar for loading.(optional)</p>

  • +
+
+
+

Examples:

+
const container = document.getElementById("container_root");
+const progressBar = document.getElementById("progressBar");
+const allScenes = new ABIThree.Scenes(container);
+const scene = allScenes.getScene();
+ABIThree.loadObjFile(monkey_g, scene.scene, scene.camera, progressBar);
+
+
+
+ +
+
+loadMTLFile(url_mtl, url_obj, scene, camera[, progressBar=null])
+

<p>This function is for loading .mtl module. +.mtl module is .obj file with material</p>

+
+
Arguments
+
    +
  • url_mtl (string) – <p>.mtl file url</p>

  • +
  • url_obj (string) – <p>.obj file url</p>

  • +
  • scene (object) – <p>the current domElement’s scene</p>

  • +
  • camera (object) – <p>the current scene’s camera</p>

  • +
  • progressBar (object) – <p>the progress html domelment bar for loading.(optional)</p>

  • +
+
+
+

Examples:

+
const container = document.getElementById("container_root");
+const progressBar = document.getElementById("progressBar");
+const allScenes = new ABIThree.Scenes(container);
+const scene1 = allScenes.getScene();
+ABIThree.loadMTLFile(
+    monkey_m,
+    monkey_g,
+    scene1.scene,
+    scene1.camera,
+    progressBar
+  );
+
+
+
+ +
+
+loadGLTFFile(url, scene, camera[, progressBar=null])
+

<p>This function is for loading .gltf module</p>

+
+
Arguments
+
    +
  • url (*) – <p>.gltf file url</p>

  • +
  • scene (*) – <p>the current domElement’s scene</p>

  • +
  • camera (*) – <p>the current scene’s camera</p>

  • +
  • progressBar (*) – <p>the progress html domelment bar for loading.(optional)</p>

  • +
+
+
+

Examples:

+
const container = document.getElementById("container_root");
+const progressBar = document.getElementById("progressBar");
+const allScenes = new ABIThree.Scenes(container, 1);
+const scene1 = allScenes.getScene();
+ABIThree.loadGLTFFile(monkey, scene1.scene, scene1.camera, progressBar);
+
+
+
+ +
+
+

Helper

+
+
+class CameraHelper(constructor, args[object, prop])
+

<p>This helper is for setting camera position</p>

+

Examples:

+
const allScenes = new ABIThree.Scenes(container);
+const scene1 = allScenes.getScene();
+const gui = scene1.gui;
+let camerafolder = gui.addFolder("camera");
+    camerafolder.add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value")
+                   .name("x");
+
+
+
+
+CameraHelper.object
+

type: object

+

<p>The object that the user want to control in GUI</p>

+
+ +
+
+CameraHelper.prop
+

type: string

+

<p>The object’ attribute that the user want to set</p>

+
+ +
+ +
+
+class ColorGUIHelper(constructor, args[object, prop])
+

<p>This helper is for setting color on object</p>

+

Examples:

+
const allScenes = new ABIThree.Scenes(container);
+const scene1 = allScenes.getScene();
+const gui = scene1.gui;
+gui.addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value").name("background_color");
+
+
+
+
+ColorGUIHelper.object
+

type: object

+

<p>The object that the user want to control in GUI</p>

+
+ +
+
+ColorGUIHelper.prop
+

type: string

+

<p>The object’ attribute that the user want to set</p>

+
+ +
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2022, Auckland Bioengineering Institute.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv new file mode 100644 index 0000000..60cd027 Binary files /dev/null and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html new file mode 100644 index 0000000..d650bf9 --- /dev/null +++ b/docs/_build/html/search.html @@ -0,0 +1,111 @@ + + + + + + Search — ABIThree Documentation 0.0.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • »
  • +
  • Search
  • +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2022, Auckland Bioengineering Institute.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js new file mode 100644 index 0000000..6852d8b --- /dev/null +++ b/docs/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst"],objects:{"":{CameraHelper:[0,0,1,""],ColorGUIHelper:[0,0,1,""],ImageLoader:[0,0,1,""],Scenes:[0,0,1,""],loadGLTFFile:[0,2,1,""],loadMTLFile:[0,2,1,""],loadObjFile:[0,2,1,""]},CameraHelper:{object:[0,1,1,""],prop:[0,1,1,""]},ColorGUIHelper:{object:[0,1,1,""],prop:[0,1,1,""]},ImageLoader:{addGUI:[0,2,1,""],callbackFunction:[0,1,1,""],camera:[0,1,1,""],container:[0,1,1,""],gui:[0,1,1,""],imageLoader:[0,2,1,""],label:[0,1,1,""],path:[0,1,1,""],scene:[0,1,1,""],setRenderFunction:[0,2,1,""],viewImage:[0,2,1,""]},Scenes:{animate:[0,1,1,""],cameraPosition:[0,1,1,""],cameras:[0,1,1,""],container:[0,1,1,""],elems:[0,1,1,""],getScene:[0,2,1,""],init:[0,2,1,""],makeScene:[0,2,1,""],numberOfScene:[0,1,1,""],renderSceneInfo:[0,1,1,""],resizeRendererToDisplaySize:[0,1,1,""],sceneInfos:[0,1,1,""],scenes:[0,1,1,""]}},objnames:{"0":["js","class","JavaScript class"],"1":["js","attribute","JavaScript attribute"],"2":["js","function","JavaScript function"]},objtypes:{"0":"js:class","1":"js:attribute","2":"js:function"},terms:{"0x00ff00":0,"1000":0,"500":0,"class":[],"const":0,"default":0,"function":[],"new":0,"null":0,"return":0,"true":0,And:0,The:0,add:0,addcolor:0,addfold:0,addgui:0,after:0,all:0,allscen:0,also:0,ami:0,anim:0,arg:0,argument:0,arrai:0,attribut:0,automat:0,background:0,background_color:0,bar:0,base:0,call:0,callback:0,callbackfunct:0,camera:0,camerafold:0,camerahelp:0,cameraposit:0,camerapost:0,can:0,canva:0,caus:0,chang:0,color:0,colorguihelp:0,constructor:0,contain:0,container_root:0,control:0,correspond:0,creat:0,current:0,depend:0,dicom:0,dicom_file_path:0,displai:0,domel:0,domelemet:0,each:0,elem:0,enter:0,exampl:0,file:0,format:0,found:0,get:0,getelementbyid:0,getscen:0,gltf:0,gui:0,how:0,html:0,htmlelement:0,imag:0,imageload:0,includ:0,index:0,info:0,infom:0,inform:0,init:0,initi:0,label:0,layout:0,let:0,load:0,loadgltffil:0,loadmtlfil:0,loadobjfil:0,main:0,make:0,makescen:0,mani:0,materi:0,meshbasicmateri:0,method:0,modul:0,monkei:0,monkey_g:0,monkey_m:0,mtl:0,multipl:0,name:0,number:0,numberofscen:0,obj:0,object:0,one:0,option:0,page:0,paramet:0,parent:0,path:0,posit:0,postion:0,progress:0,progressbar:0,prop:0,queryselector:0,render:0,rendersceneinfo:0,resizerenderertodisplays:0,respons:0,scenc:0,scene1:0,scene3:0,scene:0,sceneinfo:0,scenetwo:0,search:0,set:0,setrenderfunct:0,stackhelp:0,store:0,string:0,thi:0,three:0,type:0,url:0,url_mtl:0,url_obj:0,user:0,using:0,valu:0,viewimag:0,want:0,webglrend:0,webglrender:0,window:0,wirefram:0,wish:[],you:[]},titles:["Welcome to ABIThree Documentation\u2019s documentation!"],titleterms:{"class":0,"function":0,abithre:0,document:0,guid:0,helper:0,loadmodul:0,welcom:0}}) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..675dcfa --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,63 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'ABIThree Documentation' +copyright = '2022, Auckland Bioengineering Institute' +author = 'Auckland Bioengineering Institute' + +# The full version, including alpha/beta/rc tags +release = '0.0.1' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx_js'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +import sphinx_rtd_theme +# html_theme = 'alabaster' + +html_theme = 'sphinx_rtd_theme' +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +js_source_path = '../src/ABIThreeLibrary/' + +jsdoc_config_path = '../jsdoc.json' +primary_domain = 'js' \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..fec40aa --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,39 @@ +.. ABIThree Documentation documentation master file, created by + sphinx-quickstart on Mon Jan 10 11:34:10 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ABIThree Documentation's documentation! +================================================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +Guide +============ +Class +^^^^^^^ +.. js:autoclass:: Scenes(constructor, args[container, numberOfScene, cameraPosition]) + :members: +.. js:autoclass:: ImageLoader(constructor, args[label,dicom_file_paths,scene,camera,container,gui,callbackFunction]) + :members: + +LoadModule Functions +^^^^^^^^^^^^^^^^^^^^^^ +.. js:autofunction:: loadObjFile(url, scene, camera [, material=null, progressBar=null]) +.. js:autofunction:: loadMTLFile(url_mtl, url_obj, scene, camera [, progressBar=null]) +.. js:autofunction:: loadGLTFFile(url, scene, camera [, progressBar=null]) + +Helper +^^^^^^^^^ +.. js:autoclass:: CameraHelper(constructor, args[object, prop]) + :members: +.. js:autoclass:: ColorGUIHelper(constructor, args[object, prop]) + :members: + + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..922152e --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/jsdoc.json b/jsdoc.json new file mode 100644 index 0000000..7a2537d --- /dev/null +++ b/jsdoc.json @@ -0,0 +1,17 @@ +{ + "source": { + "include": ["src"], + "includePattern": ".js$", + "excludePattern": "(node_modules/|docs|src/examples/)" + }, + "plugins": ["plugins/markdown"], + "templates": { + "cleverLinks": true, + "monospaceLinks": true + }, + "opts": { + "recurse": true, + "destination": "./jsdoc/", + "template": "./jsdoc/custom-template" + } +} diff --git a/jsdoc/LoadModules%0A%0AThis%20module%20is%20for%20user%20to%20load%20.obj%20.mtl%20.gltf%203D%20module.module_.html b/jsdoc/LoadModules%0A%0AThis%20module%20is%20for%20user%20to%20load%20.obj%20.mtl%20.gltf%203D%20module.module_.html new file mode 100644 index 0000000..3c861b5 --- /dev/null +++ b/jsdoc/LoadModules%0A%0AThis%20module%20is%20for%20user%20to%20load%20.obj%20.mtl%20.gltf%203D%20module.module_.html @@ -0,0 +1,550 @@ + + + + + JSDoc: Module: LoadModules + +This module is for user to load .obj .mtl .gltf 3D module. + + + + + + + + + + +
+ +

Module: LoadModules + +This module is for user to load .obj .mtl .gltf 3D module.

+ + + + + + +
+ +
+ +
+ +
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

(inner) getMaterial() → {object}

+ + + + + + +
+

This function will return a default material for obj module

+
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + +
+
    +
  • threejs material
  • +
+
+ + + +
+
+ Type +
+
+ +object + + +
+
+ + + + + + + + + + + + + +

(inner) loadObjFile(url, scene, camera, materialopt, progressBaropt)

+ + + + + + +
+

This function is for load .obj file

+
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDefaultDescription
url + + +string + + + + + + + + + + + +

the .obj file url

scene + + +object + + + + + + + + + + + +

the current domElement's scene

camera + + +object + + + + + + + + + + + +

the current scene's camera

material + + +object + + + + + + <optional>
+ + + + + +
+ + null + +

the material for .obj file (optional), the default material is THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true })

progressBar + + +HTMLElement + + + + + + <optional>
+ + + + + +
+ + null + +

the progress html domelment bar for loading.(optional)

+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.6.7 on Sun Jan 09 2022 23:31:04 GMT+1300 (新西兰夏令时间) +
+ + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/README.md b/jsdoc/custom-template/README.md new file mode 100644 index 0000000..1946bef --- /dev/null +++ b/jsdoc/custom-template/README.md @@ -0,0 +1,12 @@ +The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://underscorejs.org/). + + +## Generating Typeface Fonts + +The default template uses the [OpenSans](https://www.google.com/fonts/specimen/Open+Sans) typeface. The font files can be regenerated as follows: + +1. Open the [OpenSans page at Font Squirrel](). +2. Click on the 'Webfont Kit' tab. +3. Either leave the subset drop-down as 'Western Latin (Default)', or, if we decide we need more glyphs, than change it to 'No Subsetting'. +4. Click the 'DOWNLOAD @FONT-FACE KIT' button. +5. For each typeface variant we plan to use, copy the 'eot', 'svg' and 'woff' files into the 'templates/default/static/fonts' directory. diff --git a/jsdoc/custom-template/publish.js b/jsdoc/custom-template/publish.js new file mode 100644 index 0000000..346d8e4 --- /dev/null +++ b/jsdoc/custom-template/publish.js @@ -0,0 +1,772 @@ +const doop = require("jsdoc/util/doop"); +const env = require("jsdoc/env"); +const fs = require("jsdoc/fs"); +const helper = require("jsdoc/util/templateHelper"); +const logger = require("jsdoc/util/logger"); +const path = require("jsdoc/path"); +const taffy = require("taffydb").taffy; +const template = require("jsdoc/template"); +const util = require("util"); + +const htmlsafe = helper.htmlsafe; +const linkto = helper.linkto; +const resolveAuthorLinks = helper.resolveAuthorLinks; +const hasOwnProp = Object.prototype.hasOwnProperty; + +let data; +let view; + +let outdir = path.normalize(env.opts.destination); + +function find(spec) { + return helper.find(data, spec); +} + +function tutoriallink(tutorial) { + return helper.toTutorial(tutorial, null, { + tag: "em", + classname: "disabled", + prefix: "Tutorial: ", + }); +} + +function getAncestorLinks(doclet) { + return helper.getAncestorLinks(data, doclet); +} + +function hashToLink(doclet, hash) { + let url; + + if (!/^(#.+)/.test(hash)) { + return hash; + } + + url = helper.createLink(doclet); + url = url.replace(/(#.+|$)/, hash); + + return `${hash}`; +} + +function needsSignature({ kind, type, meta }) { + let needsSig = false; + + // function and class definitions always get a signature + if (kind === "function" || kind === "class") { + needsSig = true; + } + // typedefs that contain functions get a signature, too + else if (kind === "typedef" && type && type.names && type.names.length) { + for (let i = 0, l = type.names.length; i < l; i++) { + if (type.names[i].toLowerCase() === "function") { + needsSig = true; + break; + } + } + } + // and namespaces that are functions get a signature (but finding them is a + // bit messy) + else if ( + kind === "namespace" && + meta && + meta.code && + meta.code.type && + meta.code.type.match(/[Ff]unction/) + ) { + needsSig = true; + } + + return needsSig; +} + +function getSignatureAttributes({ optional, nullable }) { + const attributes = []; + + if (optional) { + attributes.push("opt"); + } + + if (nullable === true) { + attributes.push("nullable"); + } else if (nullable === false) { + attributes.push("non-null"); + } + + return attributes; +} + +function updateItemName(item) { + const attributes = getSignatureAttributes(item); + let itemName = item.name || ""; + + if (item.variable) { + itemName = `…${itemName}`; + } + + if (attributes && attributes.length) { + itemName = util.format( + '%s%s', + itemName, + attributes.join(", ") + ); + } + + return itemName; +} + +function addParamAttributes(params) { + return params + .filter(({ name }) => name && !name.includes(".")) + .map(updateItemName); +} + +function buildItemTypeStrings(item) { + const types = []; + + if (item && item.type && item.type.names) { + item.type.names.forEach((name) => { + types.push(linkto(name, htmlsafe(name))); + }); + } + + return types; +} + +function buildAttribsString(attribs) { + let attribsString = ""; + + if (attribs && attribs.length) { + attribsString = htmlsafe(util.format("(%s) ", attribs.join(", "))); + } + + return attribsString; +} + +function addNonParamAttributes(items) { + let types = []; + + items.forEach((item) => { + types = types.concat(buildItemTypeStrings(item)); + }); + + return types; +} + +function addSignatureParams(f) { + const params = f.params ? addParamAttributes(f.params) : []; + + f.signature = util.format("%s(%s)", f.signature || "", params.join(", ")); +} + +function addSignatureReturns(f) { + const attribs = []; + let attribsString = ""; + let returnTypes = []; + let returnTypesString = ""; + const source = f.yields || f.returns; + + // jam all the return-type attributes into an array. this could create odd results (for example, + // if there are both nullable and non-nullable return types), but let's assume that most people + // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa. + if (source) { + source.forEach((item) => { + helper.getAttribs(item).forEach((attrib) => { + if (!attribs.includes(attrib)) { + attribs.push(attrib); + } + }); + }); + + attribsString = buildAttribsString(attribs); + } + + if (source) { + returnTypes = addNonParamAttributes(source); + } + if (returnTypes.length) { + returnTypesString = util.format( + " → %s{%s}", + attribsString, + returnTypes.join("|") + ); + } + + f.signature = `${ + f.signature || "" + }${returnTypesString}`; +} + +function addSignatureTypes(f) { + const types = f.type ? buildItemTypeStrings(f) : []; + + f.signature = `${f.signature || ""}${ + types.length ? ` :${types.join("|")}` : "" + }`; +} + +function addAttribs(f) { + const attribs = helper.getAttribs(f); + const attribsString = buildAttribsString(attribs); + + f.attribs = util.format( + '%s', + attribsString + ); +} + +function shortenPaths(files, commonPrefix) { + Object.keys(files).forEach((file) => { + files[file].shortened = files[file].resolved + .replace(commonPrefix, "") + // always use forward slashes + .replace(/\\/g, "/"); + }); + + return files; +} + +function getPathFromDoclet({ meta }) { + if (!meta) { + return null; + } + + return meta.path && meta.path !== "null" + ? path.join(meta.path, meta.filename) + : meta.filename; +} + +function generate(title, docs, filename, resolveLinks) { + let docData; + let html; + let outpath; + + resolveLinks = resolveLinks !== false; + + docData = { + env: env, + title: title, + docs: docs, + }; + + outpath = path.join(outdir, filename); + html = view.render("container.tmpl", docData); + + if (resolveLinks) { + html = helper.resolveLinks(html); // turn {@link foo} into foo + } + + fs.writeFileSync(outpath, html, "utf8"); +} + +function generateSourceFiles(sourceFiles, encoding = "utf8") { + Object.keys(sourceFiles).forEach((file) => { + let source; + // links are keyed to the shortened path in each doclet's `meta.shortpath` property + const sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened); + + helper.registerLink(sourceFiles[file].shortened, sourceOutfile); + + try { + source = { + kind: "source", + code: helper.htmlsafe( + fs.readFileSync(sourceFiles[file].resolved, encoding) + ), + }; + } catch (e) { + logger.error( + "Error while generating source file %s: %s", + file, + e.message + ); + } + + generate( + `Source: ${sourceFiles[file].shortened}`, + [source], + sourceOutfile, + false + ); + }); +} + +/** + * Look for classes or functions with the same name as modules (which indicates that the module + * exports only that class or function), then attach the classes or functions to the `module` + * property of the appropriate module doclets. The name of each class or function is also updated + * for display purposes. This function mutates the original arrays. + * + * @private + * @param {Array.} doclets - The array of classes and functions to + * check. + * @param {Array.} modules - The array of module doclets to search. + */ +function attachModuleSymbols(doclets, modules) { + const symbols = {}; + + // build a lookup table + doclets.forEach((symbol) => { + symbols[symbol.longname] = symbols[symbol.longname] || []; + symbols[symbol.longname].push(symbol); + }); + + modules.forEach((module) => { + if (symbols[module.longname]) { + module.modules = symbols[module.longname] + // Only show symbols that have a description. Make an exception for classes, because + // we want to show the constructor-signature heading no matter what. + .filter(({ description, kind }) => description || kind === "class") + .map((symbol) => { + symbol = doop(symbol); + + if (symbol.kind === "class" || symbol.kind === "function") { + symbol.name = `${symbol.name.replace("module:", '(require("')}"))`; + } + + return symbol; + }); + } + }); +} + +function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) { + let nav = ""; + + if (items.length) { + let itemsNav = ""; + + items.forEach((item) => { + let displayName; + + if (!hasOwnProp.call(item, "longname")) { + itemsNav += `
  • ${linktoFn("", item.name)}
  • `; + } else if (!hasOwnProp.call(itemsSeen, item.longname)) { + if (env.conf.templates.default.useLongnameInNav) { + displayName = item.longname; + } else { + displayName = item.name; + } + itemsNav += `
  • ${linktoFn( + item.longname, + displayName.replace(/\b(module|event):/g, "") + )}
  • `; + + itemsSeen[item.longname] = true; + } + }); + + if (itemsNav !== "") { + nav += `

    ${itemHeading}

      ${itemsNav}
    `; + } + } + + return nav; +} + +function linktoTutorial(longName, name) { + return tutoriallink(name); +} + +function linktoExternal(longName, name) { + return linkto(longName, name.replace(/(^"|"$)/g, "")); +} + +/** + * Create the navigation sidebar. + * @param {object} members The members that will be used to create the sidebar. + * @param {array} members.classes + * @param {array} members.externals + * @param {array} members.globals + * @param {array} members.mixins + * @param {array} members.modules + * @param {array} members.namespaces + * @param {array} members.tutorials + * @param {array} members.events + * @param {array} members.interfaces + * @return {string} The HTML for the navigation sidebar. + */ +function buildNav(members) { + let globalNav; + let nav = '

    ABITHREE Documentation

    '; + const seen = {}; + const seenTutorials = {}; + + nav += buildMemberNav(members.modules, "Modules", {}, linkto); + nav += buildMemberNav(members.externals, "Externals", seen, linktoExternal); + nav += buildMemberNav(members.namespaces, "Namespaces", seen, linkto); + nav += buildMemberNav(members.classes, "Classes", seen, linkto); + nav += buildMemberNav(members.interfaces, "Interfaces", seen, linkto); + nav += buildMemberNav(members.events, "Events", seen, linkto); + nav += buildMemberNav(members.mixins, "Mixins", seen, linkto); + nav += buildMemberNav( + members.tutorials, + "Tutorials", + seenTutorials, + linktoTutorial + ); + + if (members.globals.length) { + globalNav = ""; + + members.globals.forEach(({ kind, longname, name }) => { + if (kind !== "typedef" && !hasOwnProp.call(seen, longname)) { + globalNav += `
  • ${linkto(longname, name)}
  • `; + } + seen[longname] = true; + }); + + if (!globalNav) { + // turn the heading into a link so you can actually get to the global page + nav += `

    ${linkto("global", "Global")}

    `; + } else { + nav += `

    Global

      ${globalNav}
    `; + } + } + + return nav; +} + +/** + @param {TAFFY} taffyData See . + @param {object} opts + @param {Tutorial} tutorials + */ +exports.publish = (taffyData, opts, tutorials) => { + let classes; + let conf; + let externals; + let files; + let fromDir; + let globalUrl; + let indexUrl; + let interfaces; + let members; + let mixins; + let modules; + let namespaces; + let outputSourceFiles; + let packageInfo; + let packages; + const sourceFilePaths = []; + let sourceFiles = {}; + let staticFileFilter; + let staticFilePaths; + let staticFiles; + let staticFileScanner; + let templatePath; + + data = taffyData; + + conf = env.conf.templates || {}; + conf.default = conf.default || {}; + + templatePath = path.normalize(opts.template); + view = new template.Template(path.join(templatePath, "tmpl")); + + // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness + // doesn't try to hand them out later + indexUrl = helper.getUniqueFilename("index"); + // don't call registerLink() on this one! 'index' is also a valid longname + + globalUrl = helper.getUniqueFilename("global"); + helper.registerLink("global", globalUrl); + + // set up templating + view.layout = conf.default.layoutFile + ? path.getResourcePath( + path.dirname(conf.default.layoutFile), + path.basename(conf.default.layoutFile) + ) + : "layout.tmpl"; + + // set up tutorials for helper + helper.setTutorials(tutorials); + + data = helper.prune(data); + data.sort("longname, version, since"); + helper.addEventListeners(data); + + data().each((doclet) => { + let sourcePath; + + doclet.attribs = ""; + + if (doclet.examples) { + doclet.examples = doclet.examples.map((example) => { + let caption; + let code; + + if ( + example.match( + /^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i + ) + ) { + caption = RegExp.$1; + code = RegExp.$3; + } + + return { + caption: caption || "", + code: code || example, + }; + }); + } + if (doclet.see) { + doclet.see.forEach((seeItem, i) => { + doclet.see[i] = hashToLink(doclet, seeItem); + }); + } + + // build a list of source files + if (doclet.meta) { + sourcePath = getPathFromDoclet(doclet); + sourceFiles[sourcePath] = { + resolved: sourcePath, + shortened: null, + }; + if (!sourceFilePaths.includes(sourcePath)) { + sourceFilePaths.push(sourcePath); + } + } + }); + + // update outdir if necessary, then create outdir + packageInfo = (find({ kind: "package" }) || [])[0]; + if (packageInfo && packageInfo.name) { + outdir = path.join(outdir, packageInfo.name, packageInfo.version || ""); + } + fs.mkPath(outdir); + + // copy the template's static files to outdir + fromDir = path.join(templatePath, "static"); + staticFiles = fs.ls(fromDir, 3); + + staticFiles.forEach((fileName) => { + const toDir = fs.toDir(fileName.replace(fromDir, outdir)); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + + // copy user-specified static files to outdir + if (conf.default.staticFiles) { + // The canonical property name is `include`. We accept `paths` for backwards compatibility + // with a bug in JSDoc 3.2.x. + staticFilePaths = + conf.default.staticFiles.include || conf.default.staticFiles.paths || []; + staticFileFilter = new (require("jsdoc/src/filter").Filter)( + conf.default.staticFiles + ); + staticFileScanner = new (require("jsdoc/src/scanner").Scanner)(); + + staticFilePaths.forEach((filePath) => { + let extraStaticFiles; + + filePath = path.resolve(env.pwd, filePath); + extraStaticFiles = staticFileScanner.scan( + [filePath], + 10, + staticFileFilter + ); + + extraStaticFiles.forEach((fileName) => { + const sourcePath = fs.toDir(filePath); + const toDir = fs.toDir(fileName.replace(sourcePath, outdir)); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + }); + } + + if (sourceFilePaths.length) { + sourceFiles = shortenPaths(sourceFiles, path.commonPrefix(sourceFilePaths)); + } + data().each((doclet) => { + let docletPath; + const url = helper.createLink(doclet); + + helper.registerLink(doclet.longname, url); + + // add a shortened version of the full path + if (doclet.meta) { + docletPath = getPathFromDoclet(doclet); + docletPath = sourceFiles[docletPath].shortened; + if (docletPath) { + doclet.meta.shortpath = docletPath; + } + } + }); + + data().each((doclet) => { + const url = helper.longnameToUrl[doclet.longname]; + + if (url.includes("#")) { + doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); + } else { + doclet.id = doclet.name; + } + + if (needsSignature(doclet)) { + addSignatureParams(doclet); + addSignatureReturns(doclet); + addAttribs(doclet); + } + }); + + // do this after the urls have all been generated + data().each((doclet) => { + doclet.ancestors = getAncestorLinks(doclet); + + if (doclet.kind === "member") { + addSignatureTypes(doclet); + addAttribs(doclet); + } + + if (doclet.kind === "constant") { + addSignatureTypes(doclet); + addAttribs(doclet); + doclet.kind = "member"; + } + }); + + members = helper.getMembers(data); + members.tutorials = tutorials.children; + + // output pretty-printed source files by default + outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false; + + // add template helpers + view.find = find; + view.linkto = linkto; + view.resolveAuthorLinks = resolveAuthorLinks; + view.tutoriallink = tutoriallink; + view.htmlsafe = htmlsafe; + view.outputSourceFiles = outputSourceFiles; + + // once for all + view.nav = buildNav(members); + attachModuleSymbols(find({ longname: { left: "module:" } }), members.modules); + + // generate the pretty-printed source files first so other pages can link to them + if (outputSourceFiles) { + generateSourceFiles(sourceFiles, opts.encoding); + } + + if (members.globals.length) { + generate("Global", [{ kind: "globalobj" }], globalUrl); + } + + // index page displays information from package.json and lists files + files = find({ kind: "file" }); + packages = find({ kind: "package" }); + + generate( + "ABITHREE Documentation", + packages + .concat([ + { + kind: "mainpage", + readme: opts.readme, + longname: opts.mainpagetitle ? opts.mainpagetitle : "Main Page", + }, + ]) + .concat(files), + indexUrl + ); + + // set up the lists that we'll use to generate pages + classes = taffy(members.classes); + modules = taffy(members.modules); + namespaces = taffy(members.namespaces); + mixins = taffy(members.mixins); + externals = taffy(members.externals); + interfaces = taffy(members.interfaces); + + Object.keys(helper.longnameToUrl).forEach((longname) => { + const myClasses = helper.find(classes, { longname: longname }); + const myExternals = helper.find(externals, { longname: longname }); + const myInterfaces = helper.find(interfaces, { longname: longname }); + const myMixins = helper.find(mixins, { longname: longname }); + const myModules = helper.find(modules, { longname: longname }); + const myNamespaces = helper.find(namespaces, { longname: longname }); + + if (myModules.length) { + generate( + `Module: ${myModules[0].name}`, + myModules, + helper.longnameToUrl[longname] + ); + } + + if (myClasses.length) { + generate( + `Class: ${myClasses[0].name}`, + myClasses, + helper.longnameToUrl[longname] + ); + } + + if (myNamespaces.length) { + generate( + `Namespace: ${myNamespaces[0].name}`, + myNamespaces, + helper.longnameToUrl[longname] + ); + } + + if (myMixins.length) { + generate( + `Mixin: ${myMixins[0].name}`, + myMixins, + helper.longnameToUrl[longname] + ); + } + + if (myExternals.length) { + generate( + `External: ${myExternals[0].name}`, + myExternals, + helper.longnameToUrl[longname] + ); + } + + if (myInterfaces.length) { + generate( + `Interface: ${myInterfaces[0].name}`, + myInterfaces, + helper.longnameToUrl[longname] + ); + } + }); + + // TODO: move the tutorial functions to templateHelper.js + function generateTutorial(title, tutorial, filename) { + const tutorialData = { + title: title, + header: tutorial.title, + content: tutorial.parse(), + children: tutorial.children, + }; + const tutorialPath = path.join(outdir, filename); + let html = view.render("tutorial.tmpl", tutorialData); + + // yes, you can use {@link} in tutorials too! + html = helper.resolveLinks(html); // turn {@link foo} into foo + + fs.writeFileSync(tutorialPath, html, "utf8"); + } + + // tutorials can have only one parent so there is no risk for loops + function saveChildren({ children }) { + children.forEach((child) => { + generateTutorial( + `Tutorial: ${child.title}`, + child, + helper.tutorialToUrl(child.name) + ); + saveChildren(child); + }); + } + + saveChildren(tutorials); +}; diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Bold-webfont.woff differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Italic-webfont.woff differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Light-webfont.woff differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.eot b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.eot differ diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.svg b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.woff b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 Binary files /dev/null and b/jsdoc/custom-template/static/fonts/OpenSans-Regular-webfont.woff differ diff --git a/jsdoc/custom-template/static/scripts/linenumber.js b/jsdoc/custom-template/static/scripts/linenumber.js new file mode 100644 index 0000000..4354785 --- /dev/null +++ b/jsdoc/custom-template/static/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/jsdoc/custom-template/static/scripts/prettify/Apache-License-2.0.txt b/jsdoc/custom-template/static/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/jsdoc/custom-template/static/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/jsdoc/custom-template/static/scripts/prettify/lang-css.js b/jsdoc/custom-template/static/scripts/prettify/lang-css.js new file mode 100644 index 0000000..041e1f5 --- /dev/null +++ b/jsdoc/custom-template/static/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/jsdoc/custom-template/static/scripts/prettify/prettify.js b/jsdoc/custom-template/static/scripts/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/jsdoc/custom-template/static/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/jsdoc/custom-template/static/styles/prettify-jsdoc.css b/jsdoc/custom-template/static/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/jsdoc/custom-template/static/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/jsdoc/custom-template/static/styles/prettify-tomorrow.css b/jsdoc/custom-template/static/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/jsdoc/custom-template/static/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/jsdoc/custom-template/tmpl/augments.tmpl b/jsdoc/custom-template/tmpl/augments.tmpl new file mode 100644 index 0000000..446d28a --- /dev/null +++ b/jsdoc/custom-template/tmpl/augments.tmpl @@ -0,0 +1,10 @@ + + + +
      +
    • +
    + diff --git a/jsdoc/custom-template/tmpl/container.tmpl b/jsdoc/custom-template/tmpl/container.tmpl new file mode 100644 index 0000000..1b94004 --- /dev/null +++ b/jsdoc/custom-template/tmpl/container.tmpl @@ -0,0 +1,196 @@ + + + + + + + + + +
    + +
    + +

    + +

    + +
    + + + + +
    + + + +
    + +
    +
    + + +
    + + + + + + + + + +
    + + + + + +

    Example 1? 's':'' ?>

    + + + +
    + + +

    Extends

    + + + + + +

    Requires

    + +
      +
    • +
    + + + +

    Classes

    + +
    +
    +
    +
    + + + +

    Interfaces

    + +
    +
    +
    +
    + + + +

    Mixins

    + +
    +
    +
    +
    + + + +

    Namespaces

    + +
    +
    +
    +
    + + + +

    Members

    + + + + + + + +

    Methods

    + + + + + + + +

    Type Definitions

    + + + + + + + + + +

    Events

    + + + + + +
    + +
    + + + diff --git a/jsdoc/custom-template/tmpl/details.tmpl b/jsdoc/custom-template/tmpl/details.tmpl new file mode 100644 index 0000000..4a5bd49 --- /dev/null +++ b/jsdoc/custom-template/tmpl/details.tmpl @@ -0,0 +1,143 @@ +" + data.defaultvalue + ""; + defaultObjectClass = ' class="object-value"'; +} +?> + + +
    Properties:
    + + + + + +
    + + +
    Version:
    +
    + + + +
    Since:
    +
    + + + +
    Inherited From:
    +
    • + +
    + + + +
    Overrides:
    +
    • + +
    + + + +
    Implementations:
    +
      + +
    • + +
    + + + +
    Implements:
    +
      + +
    • + +
    + + + +
    Mixes In:
    + +
      + +
    • + +
    + + + +
    Deprecated:
    • Yes
    + + + +
    Author:
    +
    +
      +
    • +
    +
    + + + + + + + + +
    License:
    +
    + + + +
    Default Value:
    +
      + > +
    + + + +
    Source:
    +
    • + , +
    + + + +
    Tutorials:
    +
    +
      +
    • +
    +
    + + + +
    See:
    +
    +
      +
    • +
    +
    + + + +
    To Do:
    +
    +
      +
    • +
    +
    + +
    diff --git a/jsdoc/custom-template/tmpl/example.tmpl b/jsdoc/custom-template/tmpl/example.tmpl new file mode 100644 index 0000000..e87caa5 --- /dev/null +++ b/jsdoc/custom-template/tmpl/example.tmpl @@ -0,0 +1,2 @@ + +
    diff --git a/jsdoc/custom-template/tmpl/examples.tmpl b/jsdoc/custom-template/tmpl/examples.tmpl new file mode 100644 index 0000000..04d975e --- /dev/null +++ b/jsdoc/custom-template/tmpl/examples.tmpl @@ -0,0 +1,13 @@ + +

    + +
    + \ No newline at end of file diff --git a/jsdoc/custom-template/tmpl/exceptions.tmpl b/jsdoc/custom-template/tmpl/exceptions.tmpl new file mode 100644 index 0000000..9cef6c7 --- /dev/null +++ b/jsdoc/custom-template/tmpl/exceptions.tmpl @@ -0,0 +1,32 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + Type +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + + +
    + diff --git a/jsdoc/custom-template/tmpl/layout.tmpl b/jsdoc/custom-template/tmpl/layout.tmpl new file mode 100644 index 0000000..bc7e335 --- /dev/null +++ b/jsdoc/custom-template/tmpl/layout.tmpl @@ -0,0 +1,38 @@ + + + + + JSDoc: <?js= title ?> + + + + + + + + + + +
    + +

    + + +
    + + + +
    + +
    + Documentation generated by JSDoc on +
    + + + + + diff --git a/jsdoc/custom-template/tmpl/mainpage.tmpl b/jsdoc/custom-template/tmpl/mainpage.tmpl new file mode 100644 index 0000000..64e9e59 --- /dev/null +++ b/jsdoc/custom-template/tmpl/mainpage.tmpl @@ -0,0 +1,14 @@ + + + +

    + + + +
    +
    +
    + diff --git a/jsdoc/custom-template/tmpl/members.tmpl b/jsdoc/custom-template/tmpl/members.tmpl new file mode 100644 index 0000000..154c17b --- /dev/null +++ b/jsdoc/custom-template/tmpl/members.tmpl @@ -0,0 +1,38 @@ + +

    + + +

    + + + +
    + +
    + + + +
    Type:
    +
      +
    • + +
    • +
    + + + + + +
    Fires:
    +
      +
    • +
    + + + +
    Example 1? 's':'' ?>
    + + diff --git a/jsdoc/custom-template/tmpl/method.tmpl b/jsdoc/custom-template/tmpl/method.tmpl new file mode 100644 index 0000000..0125fe2 --- /dev/null +++ b/jsdoc/custom-template/tmpl/method.tmpl @@ -0,0 +1,131 @@ + + + +

    Constructor

    + + + +

    + + + +

    + + + + +
    + +
    + + + +
    Extends:
    + + + + +
    Type:
    +
      +
    • + +
    • +
    + + + +
    This:
    +
    + + + +
    Parameters:
    + + + + + + +
    Requires:
    +
      +
    • +
    + + + +
    Fires:
    +
      +
    • +
    + + + +
    Listens to Events:
    +
      +
    • +
    + + + +
    Listeners of This Event:
    +
      +
    • +
    + + + +
    Modifies:
    + 1) { ?>
      +
    • +
    + + + + +
    Throws:
    + 1) { ?>
      +
    • +
    + + + + +
    Returns:
    + 1) { ?>
      +
    • +
    + + + + +
    Yields:
    + 1) { ?>
      +
    • +
    + + + + +
    Example 1? 's':'' ?>
    + + diff --git a/jsdoc/custom-template/tmpl/modifies.tmpl b/jsdoc/custom-template/tmpl/modifies.tmpl new file mode 100644 index 0000000..16ccbf8 --- /dev/null +++ b/jsdoc/custom-template/tmpl/modifies.tmpl @@ -0,0 +1,14 @@ + + + +
    +
    + Type +
    +
    + +
    +
    + diff --git a/jsdoc/custom-template/tmpl/params.tmpl b/jsdoc/custom-template/tmpl/params.tmpl new file mode 100644 index 0000000..1fb4049 --- /dev/null +++ b/jsdoc/custom-template/tmpl/params.tmpl @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + + + + <repeatable>
    + +
    + + + + +
    Properties
    + +
    diff --git a/jsdoc/custom-template/tmpl/properties.tmpl b/jsdoc/custom-template/tmpl/properties.tmpl new file mode 100644 index 0000000..40e0909 --- /dev/null +++ b/jsdoc/custom-template/tmpl/properties.tmpl @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + +
    + + + + +
    Properties
    +
    diff --git a/jsdoc/custom-template/tmpl/returns.tmpl b/jsdoc/custom-template/tmpl/returns.tmpl new file mode 100644 index 0000000..d070459 --- /dev/null +++ b/jsdoc/custom-template/tmpl/returns.tmpl @@ -0,0 +1,19 @@ + +
    + +
    + + + +
    +
    + Type +
    +
    + +
    +
    + \ No newline at end of file diff --git a/jsdoc/custom-template/tmpl/source.tmpl b/jsdoc/custom-template/tmpl/source.tmpl new file mode 100644 index 0000000..e559b5d --- /dev/null +++ b/jsdoc/custom-template/tmpl/source.tmpl @@ -0,0 +1,8 @@ + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/jsdoc/custom-template/tmpl/tutorial.tmpl b/jsdoc/custom-template/tmpl/tutorial.tmpl new file mode 100644 index 0000000..88a0ad5 --- /dev/null +++ b/jsdoc/custom-template/tmpl/tutorial.tmpl @@ -0,0 +1,19 @@ +
    + +
    + 0) { ?> +
      +
    • +
    + + +

    +
    + +
    + +
    + +
    diff --git a/jsdoc/custom-template/tmpl/type.tmpl b/jsdoc/custom-template/tmpl/type.tmpl new file mode 100644 index 0000000..ec2c6c0 --- /dev/null +++ b/jsdoc/custom-template/tmpl/type.tmpl @@ -0,0 +1,7 @@ + + +| + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-Bold-webfont.eot b/jsdoc/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Bold-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-Bold-webfont.svg b/jsdoc/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/jsdoc/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-Bold-webfont.woff b/jsdoc/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Bold-webfont.woff differ diff --git a/jsdoc/fonts/OpenSans-BoldItalic-webfont.eot b/jsdoc/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 Binary files /dev/null and b/jsdoc/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-BoldItalic-webfont.svg b/jsdoc/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/jsdoc/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-BoldItalic-webfont.woff b/jsdoc/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 Binary files /dev/null and b/jsdoc/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/jsdoc/fonts/OpenSans-Italic-webfont.eot b/jsdoc/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae Binary files /dev/null and b/jsdoc/fonts/OpenSans-Italic-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-Italic-webfont.svg b/jsdoc/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/jsdoc/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-Italic-webfont.woff b/jsdoc/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Italic-webfont.woff differ diff --git a/jsdoc/fonts/OpenSans-Light-webfont.eot b/jsdoc/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Light-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-Light-webfont.svg b/jsdoc/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/jsdoc/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-Light-webfont.woff b/jsdoc/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Light-webfont.woff differ diff --git a/jsdoc/fonts/OpenSans-LightItalic-webfont.eot b/jsdoc/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 Binary files /dev/null and b/jsdoc/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-LightItalic-webfont.svg b/jsdoc/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/jsdoc/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-LightItalic-webfont.woff b/jsdoc/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e Binary files /dev/null and b/jsdoc/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/jsdoc/fonts/OpenSans-Regular-webfont.eot b/jsdoc/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf Binary files /dev/null and b/jsdoc/fonts/OpenSans-Regular-webfont.eot differ diff --git a/jsdoc/fonts/OpenSans-Regular-webfont.svg b/jsdoc/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/jsdoc/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsdoc/fonts/OpenSans-Regular-webfont.woff b/jsdoc/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 Binary files /dev/null and b/jsdoc/fonts/OpenSans-Regular-webfont.woff differ diff --git a/jsdoc/global.html b/jsdoc/global.html new file mode 100644 index 0000000..601d3cc --- /dev/null +++ b/jsdoc/global.html @@ -0,0 +1,573 @@ + + + + + JSDoc: Global + + + + + + + + + + +
    + +

    Global

    + + + + + + +
    + +
    + +

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + +

    Methods

    + + + + + + + +

    getScene(id) → {Scenes}

    + + + + + + +
    +

    Get the scene infomation with the corresponding id by entering the parameter ID.

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDefaultDescription
    id + + +Number + + + + + + 0 + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • If found the id of the scence
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Scenes + + +
    +
    + + + + + + + + + + + + + +

    init()

    + + + + + + +
    +

    The initial function. +It will create a WebGLRenderer, and depends on the number of scenes to create each scene and it's parent domElement. +And it also can automatically create gui for each scene. +All the informations will be stored in the sceneInfo object, such as: scene,camera, domElement, controls, GUI.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    makeScene(elem, cameraPosition) → {object}

    + + + + + + +
    +

    This functions is for init function to create multiple scenes.

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    elem + + +HTMLElement + + + +

    the scene parent domElement.

    cameraPosition + + +object + + + +

    the cameraPostion

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • {scene, camera, controls}
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Sun Jan 09 2022 22:07:30 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/guiHelper.js.html b/jsdoc/guiHelper.js.html new file mode 100644 index 0000000..3d71179 --- /dev/null +++ b/jsdoc/guiHelper.js.html @@ -0,0 +1,120 @@ + + + + + JSDoc: Source: guiHelper.js + + + + + + + + + + +
    + +

    Source: guiHelper.js

    + + + + + + +
    +
    +
    import * as THREE from "three";
    +
    +/**
    + * @module GUIHelper
    + */
    +
    +/**
    + * This helper is for setting color on object
    + * @example
    + * const allScenes = new ABIThree.Scenes(container);
    + * const scene1 = allScenes.getScene();
    + * const gui = scene1.gui;
    + * gui.addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value").name("background_color");
    + *
    + */
    +class ColorGUIHelper {
    +  constructor(object, prop) {
    +    /**
    +     * The object that the user want to control in GUI
    +     * @type {object}
    +     */
    +    this.object = object;
    +    /**
    +     * The object' attribute that the user want to set
    +     * @type {string}
    +     */
    +    this.prop = prop;
    +  }
    +  get value() {
    +    return `#${this.object[this.prop].getHexString()}`;
    +  }
    +  set value(hexString) {
    +    this.object[this.prop] = new THREE.Color(hexString);
    +  }
    +}
    +
    +/**
    + * This helper is for setting camera position
    + * @example
    + * const allScenes = new ABIThree.Scenes(container);
    + * const scene1 = allScenes.getScene();
    + * const gui = scene1.gui;
    + * let camerafolder = gui.addFolder("camera");
    + *     camerafolder.add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value")
    +                   .name("x");
    + *
    + */
    +class CameraHelper {
    +  constructor(object, prop) {
    +    /**
    +     * The object that the user want to control in GUI
    +     * @type {object}
    +     */
    +    this.object = object;
    +    /**
    +     * The object' attribute that the user want to set
    +     * @type {string}
    +     */
    +    this.prop = prop;
    +  }
    +  get value() {
    +    return this.object[this.prop];
    +  }
    +  set value(v) {
    +    this.object[this.prop] = v;
    +  }
    +}
    +
    +export { ColorGUIHelper, CameraHelper };
    +
    +
    +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + diff --git a/jsdoc/imageLoader.js.html b/jsdoc/imageLoader.js.html new file mode 100644 index 0000000..e4bc1da --- /dev/null +++ b/jsdoc/imageLoader.js.html @@ -0,0 +1,217 @@ + + + + + JSDoc: Source: imageLoader.js + + + + + + + + + + +
    + +

    Source: imageLoader.js

    + + + + + + +
    +
    +
    import * as THREE from "three";
    +import { stackHelperFactory, VolumeLoader } from "ami.js";
    +
    +/**
    + * @module ImageLoader
    + */
    +
    +/**
    + * This class is for loading dicom images with using ami.js.
    + * @example
    + * const container = document.querySelector("#container_root");
    + * const allScenes = new ABIThree.Scenes(container, 3);
    + * const scene3 = allScenes.getScene(2);
    + * const imageLoader = new ABIThree.ImageLoader(
    +        "Image",
    +        dicom_file_paths,
    +        scene3.scene,
    +        scene3.camera,
    +        scene3.elem,
    +        gui,
    +        callback,
    +      );
    + * imageLoader.viewImage();
    + */
    +
    +class ImageLoader {
    +  constructor(
    +    label,
    +    dicom_file_paths,
    +    scene,
    +    camera,
    +    container,
    +    gui,
    +    callbackFunction
    +  ) {
    +    /**
    +     * the image label
    +     * @type {string}
    +     */
    +    this.label = label;
    +
    +    /**
    +     * The dicom image paths
    +     * @type {Array<string>}
    +     */
    +    this.path = dicom_file_paths;
    +    /**
    +     * Current domElemet scene
    +     * @type {object}
    +     */
    +    this.scene = scene;
    +    /**
    +     * Current scene camera
    +     * @type {object}
    +     */
    +    this.camera = camera;
    +    /**
    +     * Current domElemet gui
    +     * @type {object}
    +     */
    +    this.gui = gui;
    +    /**
    +     * Current domElemet
    +     * @type {HTMLElement}
    +     */
    +    this.container = container;
    +    /**
    +     * Callback function
    +     * @type {Function}
    +     */
    +    this.callbackFunction = callbackFunction;
    +
    +    this.newIndex = -1;
    +    this.image = null;
    +    this.render = null;
    +  }
    +
    +  /**
    +   * loading dicom images by using ami.js
    +   * @param {Array<string>} paths
    +   */
    +  async imageLoader(paths) {
    +    // Add participant's image.
    +    // Instantiate the loader that loads and parses the dicom image.
    +
    +    const loader = new VolumeLoader(this.container);
    +    // load sequence for all files
    +    await loader
    +      .load(paths)
    +      .then(() => {
    +        let series = loader.data[0].mergeSeries(loader.data)[0];
    +
    +        this.stack = series.stack[0];
    +        for (let frameIdx in this.stack._frame) {
    +          this.stack._frame[frameIdx]._imageOrientation[0] = 1;
    +          this.stack._frame[frameIdx]._imageOrientation[1] = 0;
    +          this.stack._frame[frameIdx]._imageOrientation[2] = 0;
    +          this.stack._frame[frameIdx]._imageOrientation[3] = 0;
    +          this.stack._frame[frameIdx]._imageOrientation[4] = 1;
    +          this.stack._frame[frameIdx]._imageOrientation[5] = 0;
    +        }
    +
    +        this.StackHelper = stackHelperFactory(THREE);
    +        this.stackHelper = new this.StackHelper(this.stack);
    +
    +        this.stackHelper.bbox.color = 0xf9f9f9;
    +        this.stackHelper.border.color = 0xf9f9f9;
    +        // Label mesh for use in subsequent ray interests for identifying
    +        // this image during gui interactions.
    +        this.stackHelper.slice.mesh.name = this.label;
    +        // this.stackHelper.slice.mesh.position.set(0, 0, 0);
    +        console.log("stackHelper", this.stackHelper.position);
    +        console.log("mesh", this.stackHelper.slice.mesh.position);
    +
    +        this.camera.lookAt(this.stackHelper.position);
    +        loader.free();
    +        // this.stackHelper.index = 2;
    +      })
    +      .catch(function (error) {
    +        window.console.log("oops... something went wrong...");
    +        window.console.log(error);
    +      });
    +  }
    +
    +  /**
    +   * set current render
    +   * @param {object} render
    +   */
    +  setRenderFunction(render) {
    +    this.render = render;
    +  }
    +  //   setCameraFunction(camera) {
    +  //     this.camera = camera;
    +  //   }
    +
    +  /**
    +   * after load dicom image, then call this function to display.
    +   *
    +   */
    +  viewImage() {
    +    this.imageLoader(this.path).then(() => {
    +      this.addGUI(this.stackHelper);
    +      this.scene.add(this.stackHelper);
    +    });
    +  }
    +
    +  /**
    +   * add dicom image gui
    +   * @param {object} stackHelper
    +   */
    +  addGUI(stackHelper) {
    +    const stack = stackHelper.stack;
    +    console.log(this.gui);
    +    const stackFolder = this.gui.addFolder("Stack");
    +    // index range depends on stackHelper orientation.
    +
    +    stackFolder
    +      .add(stackHelper, "index", 0, stack.dimensionsIJK.z - 1)
    +      .step(1)
    +      .name("ImageLayer");
    +
    +    stackFolder.open();
    +  }
    +}
    +
    +export default ImageLoader;
    +
    +
    +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + diff --git a/jsdoc/index.html b/jsdoc/index.html new file mode 100644 index 0000000..b77d7ed --- /dev/null +++ b/jsdoc/index.html @@ -0,0 +1,65 @@ + + + + + JSDoc: ABITHREE Documentation + + + + + + + + + + +
    + +

    ABITHREE Documentation

    + + + + + + + + +

    + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/loadModules.js.html b/jsdoc/loadModules.js.html new file mode 100644 index 0000000..30d82e1 --- /dev/null +++ b/jsdoc/loadModules.js.html @@ -0,0 +1,193 @@ + + + + + JSDoc: Source: loadModules.js + + + + + + + + + + +
    + +

    Source: loadModules.js

    + + + + + + +
    +
    +
    import * as THREE from "three";
    +import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js";
    +import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader.js";
    +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
    +
    +/**
    + * @module LoadModules
    + *
    + */
    +
    +/**
    + *
    + * inner function just for deal with loading
    + */
    +function loadingBar(xhr, progressBar) {
    +  if (xhr.total !== 0) {
    +    const percentComplete = (xhr.loaded / xhr.total) * 100;
    +    progressBar.value = percentComplete;
    +    progressBar.style.display = "none";
    +  } else {
    +    progressBar.style.display = "none";
    +  }
    +}
    +
    +/**
    + * This function will return a default material for obj module
    + * @returns {object} - threejs material
    + */
    +function getMaterial() {
    +  return new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true });
    +}
    +
    +/**
    + * This function is for load .obj file
    + * @param {string} url - the .obj file url
    + * @param {object} scene - the current domElement's scene
    + * @param {object} camera - the current scene's camera
    + * @param {object} [material] - the material for .obj file (optional), the default material is THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true })
    + * @param {HTMLElement} [progressBar] - the progress html domelment bar for loading.(optional)
    + * @example
    + * const container = document.getElementById("container_root");
    + * const progressBar = document.getElementById("progressBar");
    + * const allScenes = new ABIThree.Scenes(container);
    + * const scene = allScenes.getScene();
    + * ABIThree.loadObjFile(monkey_g, scene.scene, scene.camera, progressBar);
    + *
    + *
    + */
    +function loadObjFile(url, scene, camera, material = null, progressBar = null) {
    +  const objLoader = new OBJLoader();
    +  !!material & objLoader.setMaterials(material);
    +  objLoader.load(
    +    url,
    +    (object) => {
    +      if (!!material === false) {
    +        object.traverse(function (child) {
    +          if (child.isMesh) {
    +            child.material = getMaterial();
    +          }
    +        });
    +      }
    +      camera.position.z = object.position.z + 10;
    +      scene.add(object);
    +    },
    +    (xhr) => {
    +      if (progressBar) {
    +        loadingBar(xhr, progressBar);
    +      }
    +    },
    +    (error) => {
    +      console.error(error);
    +    }
    +  );
    +}
    +
    +/**
    + * This function is for loading .mtl module. 
    + * .mtl module is .obj file with material
    + * @param {string} url_mtl - .mtl file url
    + * @param {string} url_obj - .obj file url
    + * @param {object} scene - the current domElement's scene
    + * @param {object} camera  - the current scene's camera
    + * @param {object} [progressBar] - the progress html domelment bar for loading.(optional)
    + * @example
    + * const container = document.getElementById("container_root");
    + * const progressBar = document.getElementById("progressBar");
    + * const allScenes = new ABIThree.Scenes(container);
    + * const scene1 = allScenes.getScene();
    + * ABIThree.loadMTLFile(
    +    monkey_m,
    +    monkey_g,
    +    scene1.scene,
    +    scene1.camera,
    +    progressBar
    +  );
    + *
    + *
    + */
    +function loadMTLFile(url_mtl, url_obj, scene, camera, progressBar = null) {
    +  const mtlLoader = new MTLLoader();
    +  mtlLoader.load(url_mtl, (material) => {
    +    material.preload();
    +    loadObjFile(url_obj, scene, camera, material, progressBar);
    +  });
    +}
    +
    +/**
    + * This function is for loading .gltf module
    + * @param {*} url - .gltf file url
    + * @param {*} scene - the current domElement's scene
    + * @param {*} camera - the current scene's camera
    + * @param {*} progressBar - the progress html domelment bar for loading.(optional)
    + * @example
    + * const container = document.getElementById("container_root");
    + * const progressBar = document.getElementById("progressBar");
    + * const allScenes = new ABIThree.Scenes(container, 1);
    + * const scene1 = allScenes.getScene();
    + * ABIThree.loadGLTFFile(monkey, scene1.scene, scene1.camera, progressBar);
    + *
    + *
    + */
    +function loadGLTFFile(url, scene, camera, progressBar = null) {
    +  const gltfLoader = new GLTFLoader();
    +  gltfLoader.load(
    +    url,
    +    (gltf) => {
    +      camera.position.z = gltf.scene.position.z + 10;
    +
    +      scene.add(gltf.scene);
    +    },
    +    (xhr) => {
    +      if (progressBar) {
    +        loadingBar(xhr, progressBar);
    +      }
    +    },
    +    (error) => {
    +      console.error(error);
    +    }
    +  );
    +}
    +
    +export { loadObjFile, loadMTLFile, loadGLTFFile };
    +
    +
    +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + diff --git a/jsdoc/module-GUIHelper-CameraHelper.html b/jsdoc/module-GUIHelper-CameraHelper.html new file mode 100644 index 0000000..b3b42ff --- /dev/null +++ b/jsdoc/module-GUIHelper-CameraHelper.html @@ -0,0 +1,329 @@ + + + + + JSDoc: Class: CameraHelper + + + + + + + + + + +
    + +

    Class: CameraHelper

    + + + + + + +
    + +
    + +

    + GUIHelper~CameraHelper()

    + +

    This helper is for setting camera position

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new CameraHelper()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new ABIThree.Scenes(container);
    +const scene1 = allScenes.getScene();
    +const gui = scene1.gui;
    +let camerafolder = gui.addFolder("camera");
    +    camerafolder.add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value")
    +                   .name("x");
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    object :object

    + + + + +
    +

    The object that the user want to control in GUI

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    prop :string

    + + + + +
    +

    The object' attribute that the user want to set

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-GUIHelper-ColorGUIHelper.html b/jsdoc/module-GUIHelper-ColorGUIHelper.html new file mode 100644 index 0000000..30dd1a0 --- /dev/null +++ b/jsdoc/module-GUIHelper-ColorGUIHelper.html @@ -0,0 +1,327 @@ + + + + + JSDoc: Class: ColorGUIHelper + + + + + + + + + + +
    + +

    Class: ColorGUIHelper

    + + + + + + +
    + +
    + +

    + GUIHelper~ColorGUIHelper()

    + +

    This helper is for setting color on object

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new ColorGUIHelper()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new ABIThree.Scenes(container);
    +const scene1 = allScenes.getScene();
    +const gui = scene1.gui;
    +gui.addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value").name("background_color");
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    object :object

    + + + + +
    +

    The object that the user want to control in GUI

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    prop :string

    + + + + +
    +

    The object' attribute that the user want to set

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-GUIHelper.CameraHelper.html b/jsdoc/module-GUIHelper.CameraHelper.html new file mode 100644 index 0000000..b635597 --- /dev/null +++ b/jsdoc/module-GUIHelper.CameraHelper.html @@ -0,0 +1,329 @@ + + + + + JSDoc: Class: CameraHelper + + + + + + + + + + +
    + +

    Class: CameraHelper

    + + + + + + +
    + +
    + +

    + GUIHelper.CameraHelper()

    + +

    This helper is for setting camera position

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new CameraHelper()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new ABIThree.Scenes(container);
    +const scene1 = allScenes.getScene();
    +const gui = scene1.gui;
    +let camerafolder = gui.addFolder("camera");
    +    camerafolder.add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value")
    +                   .name("x");
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    object :object

    + + + + +
    +

    The object that the user want to control in GUI

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    prop :string

    + + + + +
    +

    The object' attribute that the user want to set

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 11:17:29 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-GUIHelper.ColorGUIHelper.html b/jsdoc/module-GUIHelper.ColorGUIHelper.html new file mode 100644 index 0000000..f7075bd --- /dev/null +++ b/jsdoc/module-GUIHelper.ColorGUIHelper.html @@ -0,0 +1,451 @@ + + + + + JSDoc: Class: ColorGUIHelper + + + + + + + + + + +
    + +

    Class: ColorGUIHelper

    + + + + + + +
    + +
    + +

    + GUIHelper.ColorGUIHelper()

    + +

    This helper is for setting color on object

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new ColorGUIHelper()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new ABIThree.Scenes(container);
    +const scene1 = allScenes.getScene();
    +const gui = scene1.gui;
    +gui.addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value").name("background_color");
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    object :object

    + + + + +
    +

    The object that the user want to control in GUI

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    prop :string

    + + + + +
    +

    The object' attribute that the user want to set

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    value

    + + + + +
    +

    Get current object color

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    value

    + + + + +
    +

    Set current object color

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 11:17:29 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-GUIHelper.html b/jsdoc/module-GUIHelper.html new file mode 100644 index 0000000..f90d3ac --- /dev/null +++ b/jsdoc/module-GUIHelper.html @@ -0,0 +1,95 @@ + + + + + JSDoc: Module: GUIHelper + + + + + + + + + + +
    + +

    Module: GUIHelper

    + + + + + + +
    + +
    + + + +
    + + + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-ImageLoader-ImageLoader.html b/jsdoc/module-ImageLoader-ImageLoader.html new file mode 100644 index 0000000..3e4d9fb --- /dev/null +++ b/jsdoc/module-ImageLoader-ImageLoader.html @@ -0,0 +1,1199 @@ + + + + + JSDoc: Class: ImageLoader + + + + + + + + + + +
    + +

    Class: ImageLoader

    + + + + + + +
    + +
    + +

    + ImageLoader~ImageLoader()

    + +

    This class is for loading dicom images with using ami.js.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new ImageLoader()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const container = document.querySelector("#container_root");
    +const allScenes = new ABIThree.Scenes(container, 3);
    +const scene3 = allScenes.getScene(2);
    +const imageLoader = new ABIThree.ImageLoader(
    +        "Image",
    +        dicom_file_paths,
    +        scene3.scene,
    +        scene3.camera,
    +        scene3.elem,
    +        gui,
    +        callback,
    +      );
    +imageLoader.viewImage();
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    callbackFunction :function

    + + + + +
    +

    Callback function

    +
    + + + +
    Type:
    +
      +
    • + +function + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    camera :object

    + + + + +
    +

    Current scene camera

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    container :HTMLElement

    + + + + +
    +

    Current domElemet

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    gui :object

    + + + + +
    +

    Current domElemet gui

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    label :string

    + + + + +
    +

    the image label

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    path :Array.<string>

    + + + + +
    +

    The dicom image paths

    +
    + + + +
    Type:
    +
      +
    • + +Array.<string> + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    scene :object

    + + + + +
    +

    Current domElemet scene

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + +

    Methods

    + + + + + + + +

    addGUI(stackHelper)

    + + + + + + +
    +

    add dicom image gui

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    stackHelper + + +object + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (async) imageLoader(paths)

    + + + + + + +
    +

    loading dicom images by using ami.js

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    paths + + +Array.<string> + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    setRenderFunction(render)

    + + + + + + +
    +

    set current render

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    render + + +object + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    viewImage()

    + + + + + + +
    +

    after load dicom image, then call this function to display.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-ImageLoader.html b/jsdoc/module-ImageLoader.html new file mode 100644 index 0000000..8062152 --- /dev/null +++ b/jsdoc/module-ImageLoader.html @@ -0,0 +1,92 @@ + + + + + JSDoc: Module: ImageLoader + + + + + + + + + + +
    + +

    Module: ImageLoader

    + + + + + + +
    + +
    + + + +
    + +
    +
    + + + + + +
    + + + + + + +

    Classes

    + +
    +
    ImageLoader
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-LoadModules.html b/jsdoc/module-LoadModules.html new file mode 100644 index 0000000..d206add --- /dev/null +++ b/jsdoc/module-LoadModules.html @@ -0,0 +1,1147 @@ + + + + + JSDoc: Module: LoadModules + + + + + + + + + + +
    + +

    Module: LoadModules

    + + + + + + +
    + +
    + + + +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +

    Methods

    + + + + + + + +

    (inner) getMaterial() → {object}

    + + + + + + +
    +

    This function will return a default material for obj module

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • threejs material
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + + + + + + + +

    (inner) loadGLTFFile(url, scene, camera, progressBar)

    + + + + + + +
    +

    This function is for loading .gltf module

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDefaultDescription
    url + + +* + + + + + +

    .gltf file url

    scene + + +* + + + + + +

    the current domElement's scene

    camera + + +* + + + + + +

    the current scene's camera

    progressBar + + +* + + + + + + null + +

    the progress html domelment bar for loading.(optional)

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const container = document.getElementById("container_root");
    +const progressBar = document.getElementById("progressBar");
    +const allScenes = new ABIThree.Scenes(container, 1);
    +const scene1 = allScenes.getScene();
    +ABIThree.loadGLTFFile(monkey, scene1.scene, scene1.camera, progressBar);
    + + + + + + + + + +

    (inner) loadingBar()

    + + + + + + +
    +

    inner function just for deal with loading

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    (inner) loadMTLFile(url_mtl, url_obj, scene, camera, progressBaropt)

    + + + + + + +
    +

    This function is for loading .mtl module. +.mtl module is .obj file with material

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    url_mtl + + +string + + + + + + + + + + + +

    .mtl file url

    url_obj + + +string + + + + + + + + + + + +

    .obj file url

    scene + + +object + + + + + + + + + + + +

    the current domElement's scene

    camera + + +object + + + + + + + + + + + +

    the current scene's camera

    progressBar + + +object + + + + + + <optional>
    + + + + + +
    + + null + +

    the progress html domelment bar for loading.(optional)

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const container = document.getElementById("container_root");
    +const progressBar = document.getElementById("progressBar");
    +const allScenes = new ABIThree.Scenes(container);
    +const scene1 = allScenes.getScene();
    +ABIThree.loadMTLFile(
    +    monkey_m,
    +    monkey_g,
    +    scene1.scene,
    +    scene1.camera,
    +    progressBar
    +  );
    + + + + + + + + + +

    (inner) loadObjFile(url, scene, camera, materialopt, progressBaropt)

    + + + + + + +
    +

    This function is for load .obj file

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    url + + +string + + + + + + + + + + + +

    the .obj file url

    scene + + +object + + + + + + + + + + + +

    the current domElement's scene

    camera + + +object + + + + + + + + + + + +

    the current scene's camera

    material + + +object + + + + + + <optional>
    + + + + + +
    + + null + +

    the material for .obj file (optional), the default material is THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true })

    progressBar + + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + null + +

    the progress html domelment bar for loading.(optional)

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const container = document.getElementById("container_root");
    +const progressBar = document.getElementById("progressBar");
    +const allScenes = new ABIThree.Scenes(container);
    +const scene = allScenes.getScene();
    +ABIThree.loadObjFile(monkey_g, scene.scene, scene.camera, progressBar);
    + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-Scenes-Scenes.html b/jsdoc/module-Scenes-Scenes.html new file mode 100644 index 0000000..23312c2 --- /dev/null +++ b/jsdoc/module-Scenes-Scenes.html @@ -0,0 +1,1321 @@ + + + + + JSDoc: Class: Scenes + + + + + + + + + + +
    + +

    Class: Scenes

    + + + + + + +
    + +
    + +

    + Scenes~Scenes()

    + +

    Base class for making multiple scenes, it includes webGLRender, camera information, three.js controls. +The default number of scene is one, and the default camera position is { x: 0, y: 0, z: 500 }.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new Scenes()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new Scenes(HTMLElement, 4, {0, 0, 1000});
    +allScenes.animate();
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    animate

    + + + + +
    +

    This function is for create animation and render the canvas.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    cameraPosition :object

    + + + + +
    +

    The camera postion, it is a object and the format is {x:number, y:number, z:number}

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + +
    Example
    + +
    { x: 0, y: 0, z: 1000 }
    + + + + + +

    cameras :Array

    + + + + +
    +

    It stores all camera information.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    container :HTMLElement

    + + + + +
    +

    The main container for all scenes

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    elems :Array

    + + + + +
    +

    It stores all scenes' parent domElements.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    numberOfScene :number

    + + + + +
    +

    How many scenes the user want to create.

    +
    + + + +
    Type:
    +
      +
    • + +number + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    renderSceneInfo

    + + + + +
    +

    This function is for render all scenes on canvas.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    resizeRendererToDisplaySize

    + + + + +
    +

    This method causes the layout of the canvas to change responsively with the user's window.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    sceneInfos

    + + + + +
    +

    It stores all scenes' information. Each scene's info includes scene's ID, scene,camera, domElement, controls, GUI.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    scenes :Array

    + + + + +
    +

    It stores all scenes.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + +

    Methods

    + + + + + + + +

    getScene(id) → {Scenes}

    + + + + + + +
    +

    Get the scene infomation with the corresponding id by entering the parameter ID.

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDefaultDescription
    id + + +Number + + + + + + 0 + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • If found the id of the scence
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Scenes + + +
    +
    + + + + + + +
    Example
    + +
    const scene = getScene()
    +const sceneTwo = getScene(1)
    + + + + + + + + + +

    init()

    + + + + + + +
    +

    The initial function. +It will create a WebGLRenderer, and depends on the number of scenes to create each scene and it's parent domElement. +And it also can automatically create gui for each scene. +All the informations will be stored in the sceneInfo object, such as: scene,camera, domElement, controls, GUI.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    makeScene(elem, cameraPosition) → {object}

    + + + + + + +
    +

    This functions is for init function to create multiple scenes.

    +
    + + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    elem + + +HTMLElement + + + +

    the scene parent domElement.

    cameraPosition + + +object + + + +

    the cameraPostion

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • {scene, camera, controls}
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module-Scenes.html b/jsdoc/module-Scenes.html new file mode 100644 index 0000000..2311b33 --- /dev/null +++ b/jsdoc/module-Scenes.html @@ -0,0 +1,92 @@ + + + + + JSDoc: Module: Scenes + + + + + + + + + + +
    + +

    Module: Scenes

    + + + + + + +
    + +
    + + + +
    + +
    +
    + + + + + +
    + + + + + + +

    Classes

    + +
    +
    Scenes
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/module.exports.html b/jsdoc/module.exports.html new file mode 100644 index 0000000..8a74349 --- /dev/null +++ b/jsdoc/module.exports.html @@ -0,0 +1,866 @@ + + + + + JSDoc: Class: exports + + + + + + + + + + +
    + +

    Class: exports

    + + + + + + +
    + +
    + +

    exports()

    + +

    Base class for making multiple scenes, it includes webGLRender, camera information, three.js controls. +The default number of scene is one, and the default camera position is { x: 0, y: 0, z: 500 }.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new exports()

    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Example
    + +
    const allScenes = new Scenes(HTMLElement, 4, {0, 0, 1000});
    +allScenes.animate();
    + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + + +

    animate

    + + + + +
    +

    This function is for create animation and render the canvas.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    cameraPosition :object

    + + + + +
    +

    The camera postion, it is a object and the format is {x:number, y:number, z:number}

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + +
    Example
    + +
    { x: 0, y: 0, z: 1000 }
    + + + + + +

    cameras :Array

    + + + + +
    +

    It stores all camera information.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    container :HTMLElement

    + + + + +
    +

    The main container for all scenes

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    elems :Array

    + + + + +
    +

    It stores all scenes' parent domElements.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    numberOfScene :number

    + + + + +
    +

    How many scenes the user want to create.

    +
    + + + +
    Type:
    +
      +
    • + +number + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    renderSceneInfo

    + + + + +
    +

    This function is for render all scenes on canvas.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    resizeRendererToDisplaySize

    + + + + +
    +

    This method causes the layout of the canvas to change responsively with the user's window.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    sceneInfos

    + + + + +
    +

    It stores all scenes' information. Each scene's info includes scene's ID, scene,camera, domElement, controls, GUI.

    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + +

    scenes :Array

    + + + + +
    +

    It stores all scenes.

    +
    + + + +
    Type:
    +
      +
    • + +Array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Sun Jan 09 2022 22:07:30 GMT+1300 (新西兰夏令时间) +
    + + + + + \ No newline at end of file diff --git a/jsdoc/scenes.js.html b/jsdoc/scenes.js.html new file mode 100644 index 0000000..7c4a9b9 --- /dev/null +++ b/jsdoc/scenes.js.html @@ -0,0 +1,295 @@ + + + + + JSDoc: Source: scenes.js + + + + + + + + + + +
    + +

    Source: scenes.js

    + + + + + + +
    +
    +
    import * as THREE from "three";
    +import { createLight } from "./base";
    +import { GUI } from "lil-gui";
    +import { TrackballControls } from "three/examples/jsm/controls/TrackballControls";
    +
    +/**
    + * @module Scenes
    + */
    +
    +/**
    + * Base class for making multiple scenes, it includes webGLRender, camera information, three.js controls.
    + * The default number of scene is one, and the default camera position is { x: 0, y: 0, z: 500 }.
    + * @example
    + * const allScenes = new Scenes(HTMLElement, 4, {0, 0, 1000});
    + * allScenes.animate();
    + */
    +
    +class Scenes {
    +  constructor(container, numberOfScene, cameraPosition) {
    +    /**
    +     * How many scenes the user want to create.
    +     * @type {number}
    +     * */
    +    this.numberOfScene = numberOfScene > 0 ? numberOfScene : 1;
    +    /**
    +     * The main container for all scenes
    +     * @type {HTMLElement}
    +     */
    +    this.container = container;
    +    /**
    +     * The camera postion, it is a object and the format is {x:number, y:number, z:number}
    +     * @type {object}
    +     * @example
    +     * { x: 0, y: 0, z: 1000 }
    +     */
    +    this.cameraPosition = cameraPosition || { x: 0, y: 0, z: 500 };
    +    /**
    +     * It stores all scenes' parent domElements.
    +     * @type {Array}
    +     */
    +    this.elems = [];
    +    /**
    +     * It stores all scenes.
    +     * @type {Array}
    +     */
    +    this.scenes = [];
    +    /**
    +     * It stores all camera information.
    +     * @type {Array}
    +     */
    +    this.cameras = [];
    +    /**
    +     * It stores all scenes' information. Each scene's info includes scene's ID, scene,camera, domElement, controls, GUI.
    +     */
    +    this.sceneInfos = [];
    +
    +    this.init();
    +    // this.animate();
    +  }
    +
    +  /**
    +   * The initial function.
    +   * It will create a WebGLRenderer, and depends on the number of scenes to create each scene and it's parent domElement.
    +   * And it also can automatically create gui for each scene.
    +   * All the informations will be stored in the sceneInfo object, such as:  scene,camera, domElement, controls, GUI.
    +   */
    +  init() {
    +    this.renderer = new THREE.WebGLRenderer({
    +      alpha: true,
    +      antialias: true,
    +    });
    +    this.canvas = this.renderer.domElement;
    +    this.canvas.className = "abithree_canvas";
    +    this.container.className = "abithree_container_root";
    +    this.container.appendChild(this.canvas);
    +    for (let i = 0; i < this.numberOfScene; i++) {
    +      const elem = document.createElement("div");
    +      elem.className = "abithree_scene_div";
    +      this.container.appendChild(elem);
    +
    +      this.elems.push(elem);
    +      const gui = new GUI({ container: elem });
    +      const sceneInfo = this.makeScene(elem, this.cameraPosition);
    +      sceneInfo.id = i;
    +      sceneInfo.elem = elem;
    +      sceneInfo.gui = gui;
    +      this.scenes.push(sceneInfo.scene);
    +      this.cameras.push(sceneInfo.camera);
    +      this.sceneInfos.push(sceneInfo);
    +    }
    +  }
    +  /**
    +   * This functions is for init function to create multiple scenes.
    +   * @param {HTMLElement} elem - the scene parent domElement.
    +   * @param {object} cameraPosition - the cameraPostion
    +   * @returns {object}- {scene, camera, controls}
    +   */
    +  makeScene(elem, cameraPosition) {
    +    const scene = new THREE.Scene();
    +
    +    const fov = 75;
    +    const aspect = elem.clientWidth / elem.clientHeight;
    +    const near = 0.1;
    +    const far = 1000;
    +
    +    const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
    +
    +    camera.position.set(cameraPosition.x, cameraPosition.y, cameraPosition.z);
    +    camera.lookAt(scene.position);
    +    scene.add(camera);
    +    const controls = new TrackballControls(camera, elem);
    +    controls.enabled = false;
    +    // light
    +    {
    +      const color = 0xffffff;
    +      const intensity = 1;
    +      const light = createLight(color, intensity);
    +      scene.add(light.pointLight);
    +
    +      const cameraLight = new THREE.DirectionalLight(color, intensity);
    +      cameraLight.position.set(-1, 2, 4);
    +      camera.add(cameraLight);
    +    }
    +    scene.background = new THREE.Color("black");
    +
    +    return { scene, camera, controls };
    +  }
    +  /**
    +   * Get the scene infomation with the corresponding id by entering the  parameter ID.
    +   * @param {Number} id
    +   * @returns {Scenes} - If found the id of the scence
    +   *
    +   * @example
    +   * const scene = getScene()
    +   * const sceneTwo = getScene(1)
    +   */
    +  getScene(id = 0) {
    +    const scene = this.sceneInfos.find((element) => element.id === id);
    +    if (scene) {
    +      return scene;
    +    } else {
    +      console.log("Oops...No scenes have been found!");
    +    }
    +  }
    +
    +  /**
    +   * This function is for render all scenes on canvas.
    +   * @param {object} sceneInfo
    +   *
    +   */
    +  renderSceneInfo = (sceneInfo) => {
    +    const { scene, camera, controls, elem } = sceneInfo;
    +
    +    // get the viewpoint relative position of this element
    +    const { left, right, top, bottom, width, height } =
    +      elem.getBoundingClientRect();
    +    const isOffscreen =
    +      bottom < 0 ||
    +      top > this.renderer.domElement.clientHeight ||
    +      right < 0 ||
    +      left > this.renderer.domElement.clientWidth;
    +    if (isOffscreen) {
    +      return;
    +    }
    +    camera.aspect = width / height;
    +    camera.updateProjectionMatrix();
    +    controls.handleResize();
    +    controls.update();
    +
    +    const positiveYUpBottom = this.renderer.domElement.clientHeight - bottom;
    +    this.renderer.setScissor(left, positiveYUpBottom, width, height);
    +    this.renderer.setViewport(left, positiveYUpBottom, width, height);
    +    this.renderer.render(scene, camera);
    +  };
    +
    +  /**
    +   * This method causes the layout of the canvas to change responsively with the user's window.
    +   */
    +  resizeRendererToDisplaySize = () => {
    +    const width = this.renderer.domElement.clientWidth;
    +    const height = this.renderer.domElement.clientHeight;
    +    const needResize =
    +      this.renderer.domElement.width !== width ||
    +      this.renderer.domElement.height !== height;
    +    if (needResize) {
    +      // to create a grid for multiple scenes
    +      this.elems.map((elem, index) => {
    +        if (index === this.numberOfScene - 1 && this.numberOfScene % 2 !== 0) {
    +          elem.style.width = this.container.clientWidth + "px";
    +        } else {
    +          elem.style.width = this.container.clientWidth / 2 - 2 + "px";
    +        }
    +        elem.style.height =
    +          this.container.clientHeight / Math.ceil(this.numberOfScene / 2) +
    +          "px";
    +      });
    +      this.renderer.setSize(width, height, false);
    +    }
    +  };
    +
    +  /**
    +   * This function is for create animation and render the canvas.
    +   *
    +   * @param {number} time
    +   */
    +  animate = (time) => {
    +    time *= 0.001;
    +    const clearColor = new THREE.Color("#000");
    +    this.renderer.setScissorTest(false);
    +    this.renderer.setClearColor(clearColor, 0);
    +    this.renderer.clear(true, true);
    +    this.renderer.setScissorTest(true);
    +    this.resizeRendererToDisplaySize();
    +
    +    // for (let info of this.sceneInfos) {
    +    // }
    +    this.sceneInfos.forEach((info) => {
    +      this.renderSceneInfo(info);
    +    });
    +    const infos = this.sceneInfos;
    +    var el = window.document.body; //set default value is body
    +    window.document.body.onmouseover = function (event) {
    +      el = event.target.className; //when mouse over which element then get the element classname
    +      if (el === "abithree_scene_div") {
    +        infos.forEach((info) => {
    +          info.controls.enabled = true;
    +          info.controls.update();
    +        });
    +      } else {
    +        infos.forEach((info) => {
    +          info.controls.enabled = false;
    +          info.controls.update();
    +        });
    +      }
    +    };
    +
    +    const transform = `translateY(${window.scrollY}px)`;
    +    this.renderer.domElement.style.transform = transform;
    +
    +    window.requestAnimationFrame(this.animate);
    +  };
    +}
    +
    +export default Scenes;
    +
    +
    +
    + + + + +
    + + + +
    + +
    + Documentation generated by JSDoc 3.6.7 on Mon Jan 10 2022 13:13:28 GMT+1300 (新西兰夏令时间) +
    + + + + + diff --git a/jsdoc/scripts/linenumber.js b/jsdoc/scripts/linenumber.js new file mode 100644 index 0000000..4354785 --- /dev/null +++ b/jsdoc/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/jsdoc/scripts/prettify/Apache-License-2.0.txt b/jsdoc/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/jsdoc/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/jsdoc/scripts/prettify/lang-css.js b/jsdoc/scripts/prettify/lang-css.js new file mode 100644 index 0000000..041e1f5 --- /dev/null +++ b/jsdoc/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/jsdoc/scripts/prettify/prettify.js b/jsdoc/scripts/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/jsdoc/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/jsdoc/styles/prettify-jsdoc.css b/jsdoc/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/jsdoc/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/jsdoc/styles/prettify-tomorrow.css b/jsdoc/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/jsdoc/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8bd1ffc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8915 @@ +{ + "name": "abithree-modules", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz", + "integrity": "sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/eslint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", + "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "OpenJPEG.js": { + "version": "github:joedrago/openjpeg#797aeec0c953fa826f8243a3a1924a7f0a0266fd", + "from": "github:joedrago/openjpeg#master" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ami.js": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/ami.js/-/ami.js-0.33.0.tgz", + "integrity": "sha512-IRdFPAvFP2W0JCtSaANYBuMggMUOEx1Y+IO9Ll8cVfCpgRG7AvLCcuEKT6jJAchXQ6Cmrjg4eKs7JoGVVghMWQ==", + "requires": { + "OpenJPEG.js": "github:joedrago/openjpeg#master", + "dicom-parser": "1.8.1", + "image-JPEG2000": "github:ReflexionMed/image-JPEG2000#master", + "jpeg-lossless-decoder-js": "1.2.3", + "math-float32-to-binary-string": "^1.0.0", + "nifti-reader-js": "v0.5.3", + "nrrd-js": "^0.2.1", + "pako": "1.0.1", + "three": "^0.135.0" + }, + "dependencies": { + "three": { + "version": "0.135.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.135.0.tgz", + "integrity": "sha512-kuEpuuxRzLv0MDsXai9huCxOSQPZ4vje6y0gn80SRmQvgz6/+rI0NAvCRAw56zYaWKMGMfqKWsxF9Qa2Z9xymQ==" + } + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "autoprefixer": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", + "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", + "dev": true, + "requires": { + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001272", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.1.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.3.1.tgz", + "integrity": "sha1-p9iYJDrmIvertrtgTXQKdsalRhs=", + "requires": { + "chalk": "^1.1.1", + "filled-array": "^1.0.0", + "object-assign": "^4.0.1", + "repeating": "^2.0.0", + "string-width": "^1.0.1", + "widest-line": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "requires": { + "resolve": "^1.17.0" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserify": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + } + } + }, + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cached-path-relative": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001285", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", + "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "requires": { + "del": "^4.1.1" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "requires": { + "dot-prop": "^3.0.0", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.1", + "os-tmpdir": "^1.0.0", + "osenv": "^0.1.0", + "uuid": "^2.0.1", + "write-file-atomic": "^1.1.2", + "xdg-basedir": "^2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "const-ninf-float32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/const-ninf-float32/-/const-ninf-float32-1.0.0.tgz", + "integrity": "sha1-zigDwcfbYZFfwVedfxPduemVHYA=" + }, + "const-pinf-float32": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/const-pinf-float32/-/const-pinf-float32-1.0.1.tgz", + "integrity": "sha1-TaxrEIVE9fW5ZbcQ3pr1euUL3/M=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, + "core-js-compat": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", + "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", + "dev": true, + "requires": { + "browserslist": "^4.18.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "dicom-parser": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/dicom-parser/-/dicom-parser-1.8.1.tgz", + "integrity": "sha512-8lgmQ+p4KD9lWdDpte/goUFZW9BrNCqYM/mEpO2IZl1srHj+2kmzWNbIMnYdQH60IMreS0ECJ8BnWE0rHSvBGA==" + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz", + "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, + "follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "globule": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "dev": true + }, + "image-JPEG2000": { + "version": "github:ReflexionMed/image-JPEG2000#77ea3cb026de90629c2d013bda46e82a36edaeb6", + "from": "github:ReflexionMed/image-JPEG2000#master" + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "~0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jest-worker": { + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", + "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "jpeg-lossless-decoder-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jpeg-lossless-decoder-js/-/jpeg-lossless-decoder-js-1.2.3.tgz", + "integrity": "sha1-XjWUdOHKFIRd84kBI9+2R8FANe4=", + "requires": { + "browserify": "*", + "mocha": "*", + "uglifyjs": "*" + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "requires": { + "xmlcreate": "^2.0.4" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdoc": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", + "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", + "requires": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^2.0.3", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "requires": { + "package-json": "^2.0.0" + } + }, + "less": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + } + }, + "less-loader": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", + "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "lil-gui": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.16.0.tgz", + "integrity": "sha512-wDySFozDfOed8UymoMprgQ+xuEZhbOP9h6cagszu/gIRpGjfoo8lHPYXXJN5OluHoM1Z4Y2ac0FJhiMQC5Ac0Q==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + } + } + }, + "markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==" + }, + "marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==" + }, + "math-abs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/math-abs/-/math-abs-1.0.2.tgz", + "integrity": "sha1-j7JnXZaTJ6YaYpgh/CPkH6rFxNM=" + }, + "math-ceil": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-ceil/-/math-ceil-1.0.0.tgz", + "integrity": "sha1-tZN8IvW2fqVn5fnO8eLzwnj0nIU=" + }, + "math-float32-to-binary-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-float32-to-binary-string/-/math-float32-to-binary-string-1.0.0.tgz", + "integrity": "sha1-S0/9WBs2SREVOF4UNYxbF0Fb/gE=", + "requires": { + "const-ninf-float32": "^1.0.0", + "const-pinf-float32": "^1.0.0", + "math-abs": "^1.0.2", + "math-floor": "^1.0.1", + "utils-left-pad-string": "^1.0.1", + "utils-repeat-string": "^1.0.3", + "utils-right-pad-string": "^1.0.0" + } + }, + "math-floor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-floor/-/math-floor-1.0.1.tgz", + "integrity": "sha1-fzEJkimBA0ihcJzJ/Nr75bTvhTo=" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.0.tgz", + "integrity": "sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "minipass": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", + "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mocha": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", + "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.2", + "debug": "4.3.2", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.7", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.25", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.1.5", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "nanoid": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + } + } + }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true + }, + "needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nifti-reader-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/nifti-reader-js/-/nifti-reader-js-0.5.3.tgz", + "integrity": "sha1-711pVHo4640zxGTIR7DZ0/jUTqk=", + "requires": { + "pako": "*" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + } + } + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node-sass": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.0.tgz", + "integrity": "sha512-6yUnsD3L8fVbgMX6nKQqZkjRcG7a/PpmF0pEyeWf+BgbTj2ToJlCYrnUifL2KbjV5gIY22I3oppahBWA3B+jUg==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^7.1.0", + "npmlog": "^5.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.1.tgz", + "integrity": "sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "nrrd-js": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nrrd-js/-/nrrd-js-0.2.1.tgz", + "integrity": "sha1-tHfPeC8s1cWKhTObJVyAFnhagEU=" + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "requires": { + "got": "^5.0.0", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "pako": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.1.tgz", + "integrity": "sha1-AwJn/WGTR2HHAzFyj/pZqahFFS4=" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "postcss": { + "version": "8.4.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz", + "integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "requires": { + "lodash": "^4.17.14" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, + "sass-loader": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", + "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "^5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "^1.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "requires": { + "acorn-node": "^1.2.0" + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "dev": true, + "requires": { + "jest-worker": "^27.0.6", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "three": { + "version": "0.119.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.119.0.tgz", + "integrity": "sha512-mZgc+zW5SdwZt+bGgfGZlouMuisvwx+rlh2p51curZ0dnMIp4UbdVs12zrTPzPwJffQRATm9WgLFeAi/ucnlCQ==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "~0.11.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uglifyjs": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/uglifyjs/-/uglifyjs-2.4.11.tgz", + "integrity": "sha1-NEDWTgRXWViVJEGOtkHGi7kNET4=" + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "underscore": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" + }, + "update-notifier": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.6.3.tgz", + "integrity": "sha1-d23sjaoT6WKjQeih2YNUMGtnrgg=", + "requires": { + "boxen": "^0.3.1", + "chalk": "^1.0.0", + "configstore": "^2.0.0", + "is-npm": "^1.0.0", + "latest-version": "^2.0.0", + "semver-diff": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-left-pad-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-left-pad-string/-/utils-left-pad-string-1.0.1.tgz", + "integrity": "sha1-afuV06d6AS0hiKchiUZCTO8g74o=", + "requires": { + "math-ceil": "^1.0.0", + "minimist": "^1.2.0", + "pkginfo": "^0.3.1", + "update-notifier": "^0.6.0", + "utils-repeat-string": "^1.0.2", + "validate.io-nonnegative-integer": "^1.0.0", + "validate.io-string-primitive": "^1.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "utils-repeat-string": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/utils-repeat-string/-/utils-repeat-string-1.0.3.tgz", + "integrity": "sha1-Zc5MeZiGe6rqWeOzUJ1VeXXjoME=", + "requires": { + "minimist": "^1.2.0", + "pkginfo": "^0.3.1", + "update-notifier": "^0.6.0", + "validate.io-nonnegative-integer": "^1.0.0", + "validate.io-string-primitive": "^1.0.0" + } + }, + "utils-right-pad-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-right-pad-string/-/utils-right-pad-string-1.0.0.tgz", + "integrity": "sha1-FxgMESpaUN+PE9ZSLX0GR/EFKrE=", + "requires": { + "math-ceil": "^1.0.0", + "minimist": "^1.2.0", + "pkginfo": "^0.3.1", + "update-notifier": "^0.6.0", + "utils-repeat-string": "^1.0.2", + "validate.io-nonnegative-integer": "^1.0.0", + "validate.io-string-primitive": "^1.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", + "requires": { + "validate.io-number": "^1.0.3" + } + }, + "validate.io-nonnegative-integer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz", + "integrity": "sha1-gGkkOgjF+Y6VQTySnf17GPP28p8=", + "requires": { + "validate.io-integer": "^1.0.5" + } + }, + "validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=" + }, + "validate.io-string-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz", + "integrity": "sha1-uBNbn7E3K94C/dU60dDM1t55j+4=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + } + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.65.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", + "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.2" + } + }, + "webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz", + "integrity": "sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz", + "integrity": "sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==", + "dev": true, + "requires": { + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^5.2.1", + "ws": "^8.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "requires": { + "string-width": "^1.0.1" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "workerpool": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "ws": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz", + "integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==", + "dev": true + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "requires": { + "os-homedir": "^1.0.0" + } + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==" + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..91bb953 --- /dev/null +++ b/package.json @@ -0,0 +1,58 @@ +{ + "name": "abithree-modules", + "version": "1.0.0", + "description": "## How to use:", + "main": "./src/ABIThreeLibrary/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "webpack", + "serve": "webpack serve --open --host 127.0.0.1 --port 3000", + "build:abi": "webpack -c webpack.config.production.js", + "doc": "jsdoc -c jsdoc.json" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/LinkunGao/threejs-modules.git" + }, + "keywords": [], + "author": "Auckland Bioengineering Institute", + "license": "ISC", + "bugs": { + "url": "https://github.com/LinkunGao/threejs-modules/issues" + }, + "homepage": "https://github.com/LinkunGao/threejs-modules#readme", + "devDependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/runtime": "^7.16.3", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^6.5.1", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.0", + "less": "^4.1.2", + "less-loader": "^10.2.0", + "node-sass": "^7.0.0", + "postcss-loader": "^6.2.1", + "sass-loader": "^12.4.0", + "style-loader": "^3.3.1", + "url-loader": "^4.1.1", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.6.0" + }, + "dependencies": { + "ami.js": "^0.33.0", + "glob": "^7.2.0", + "jquery": "^3.6.0", + "jsdoc": "^3.6.7", + "lil-gui": "^0.16.0", + "three": "0.119.0" + }, + "directories": { + "doc": "docs" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..4351ebb --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +const autoprefixer = require("autoprefixer"); + +module.exports = { + plugins: [autoprefixer], +}; diff --git a/public/images/1.png b/public/images/1.png new file mode 100644 index 0000000..ed6e874 Binary files /dev/null and b/public/images/1.png differ diff --git a/public/images/2.png b/public/images/2.png new file mode 100644 index 0000000..509609e Binary files /dev/null and b/public/images/2.png differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..6ac9eaa --- /dev/null +++ b/public/index.html @@ -0,0 +1,21 @@ + + + + + + + Document + + + + + + + + + + diff --git a/src/ABIThreeLibrary/base.js b/src/ABIThreeLibrary/base.js new file mode 100644 index 0000000..3f3ac54 --- /dev/null +++ b/src/ABIThreeLibrary/base.js @@ -0,0 +1,36 @@ +import * as THREE from "three"; + +function createCamera(type, aspect, fov = 75, near = 1, far = 1000, s = 500) { + let camera = null; + if (type) { + camera = new THREE.PerspectiveCamera(fov, aspect, near, far); + } else { + camera = new THREE.OrthographicCamera( + -s * aspect, + s * aspect, + s, + -s, + near, + far + ); + } + camera.position.set(0, 0, 500); + return camera; +} + +function createLight(color, intensity) { + const pointLight = new THREE.PointLight(color, intensity); + const ambientLight = new THREE.AmbientLight(color, intensity); + pointLight.position.set(400, 200, 300); + return { pointLight, ambientLight }; +} + +function createTestMesh(sceneInfo) { + const geometry = new THREE.BoxGeometry(100, 100, 100); + const material = new THREE.MeshPhongMaterial({ color: "red" }); + const mesh = new THREE.Mesh(geometry, material); + sceneInfo.mesh = mesh; + sceneInfo.scene.add(mesh); +} + +export { createCamera, createLight, createTestMesh }; diff --git a/src/ABIThreeLibrary/css/style.css b/src/ABIThreeLibrary/css/style.css new file mode 100644 index 0000000..4914079 --- /dev/null +++ b/src/ABIThreeLibrary/css/style.css @@ -0,0 +1,30 @@ +html, +body { + margin: 0; + /*background-color: black;*/ + /*z-index: -999;*/ +} + +.abithree_canvas { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: block; + z-index: -1; +} +.abithree_container_root { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} +.abithree_container_root > div { + border: 1px solid grey; +} + +.force-touch-styles { + position: fixed; + z-index: 1000; +} diff --git a/src/ABIThreeLibrary/guiHelper.js b/src/ABIThreeLibrary/guiHelper.js new file mode 100644 index 0000000..61c93da --- /dev/null +++ b/src/ABIThreeLibrary/guiHelper.js @@ -0,0 +1,69 @@ +import * as THREE from "three"; + +/** + * @module GUIHelper + */ + +/** + * This helper is for setting color on object + * @example + * const allScenes = new ABIThree.Scenes(container); + * const scene1 = allScenes.getScene(); + * const gui = scene1.gui; + * gui.addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value").name("background_color"); + * + */ +class ColorGUIHelper { + constructor(object, prop) { + /** + * The object that the user want to control in GUI + * @type {object} + */ + this.object = object; + /** + * The object' attribute that the user want to set + * @type {string} + */ + this.prop = prop; + } + get value() { + return `#${this.object[this.prop].getHexString()}`; + } + set value(hexString) { + this.object[this.prop] = new THREE.Color(hexString); + } +} + +/** + * This helper is for setting camera position + * @example + * const allScenes = new ABIThree.Scenes(container); + * const scene1 = allScenes.getScene(); + * const gui = scene1.gui; + * let camerafolder = gui.addFolder("camera"); + * camerafolder.add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value") + .name("x"); + * + */ +class CameraHelper { + constructor(object, prop) { + /** + * The object that the user want to control in GUI + * @type {object} + */ + this.object = object; + /** + * The object' attribute that the user want to set + * @type {string} + */ + this.prop = prop; + } + get value() { + return this.object[this.prop]; + } + set value(v) { + this.object[this.prop] = v; + } +} + +export { ColorGUIHelper, CameraHelper }; diff --git a/src/ABIThreeLibrary/imageLoader.js b/src/ABIThreeLibrary/imageLoader.js new file mode 100644 index 0000000..d3166d8 --- /dev/null +++ b/src/ABIThreeLibrary/imageLoader.js @@ -0,0 +1,166 @@ +import * as THREE from "three"; +import { stackHelperFactory, VolumeLoader } from "ami.js"; + +/** + * @module ImageLoader + */ + +/** + * This class is for loading dicom images with using ami.js. + * @example + * const container = document.querySelector("#container_root"); + * const allScenes = new ABIThree.Scenes(container, 3); + * const scene3 = allScenes.getScene(2); + * const imageLoader = new ABIThree.ImageLoader( + "Image", + dicom_file_paths, + scene3.scene, + scene3.camera, + scene3.elem, + gui, + callback, + ); + * imageLoader.viewImage(); + */ + +class ImageLoader { + constructor( + label, + dicom_file_paths, + scene, + camera, + container, + gui, + callbackFunction + ) { + /** + * the image label + * @type {string} + */ + this.label = label; + + /** + * The dicom image paths + * @type {Array} + */ + this.path = dicom_file_paths; + /** + * Current domElemet scene + * @type {object} + */ + this.scene = scene; + /** + * Current scene camera + * @type {object} + */ + this.camera = camera; + /** + * Current domElemet gui + * @type {object} + */ + this.gui = gui; + /** + * Current domElemet + * @type {HTMLElement} + */ + this.container = container; + /** + * Callback function + * @type {Function} + */ + this.callbackFunction = callbackFunction; + + this.newIndex = -1; + this.image = null; + this.render = null; + } + + /** + * loading dicom images by using ami.js + * @param {Array} paths + */ + async imageLoader(paths) { + // Add participant's image. + // Instantiate the loader that loads and parses the dicom image. + + const loader = new VolumeLoader(this.container); + // load sequence for all files + await loader + .load(paths) + .then(() => { + let series = loader.data[0].mergeSeries(loader.data)[0]; + + this.stack = series.stack[0]; + for (let frameIdx in this.stack._frame) { + this.stack._frame[frameIdx]._imageOrientation[0] = 1; + this.stack._frame[frameIdx]._imageOrientation[1] = 0; + this.stack._frame[frameIdx]._imageOrientation[2] = 0; + this.stack._frame[frameIdx]._imageOrientation[3] = 0; + this.stack._frame[frameIdx]._imageOrientation[4] = 1; + this.stack._frame[frameIdx]._imageOrientation[5] = 0; + } + + this.StackHelper = stackHelperFactory(THREE); + this.stackHelper = new this.StackHelper(this.stack); + + this.stackHelper.bbox.color = 0xf9f9f9; + this.stackHelper.border.color = 0xf9f9f9; + // Label mesh for use in subsequent ray interests for identifying + // this image during gui interactions. + this.stackHelper.slice.mesh.name = this.label; + // this.stackHelper.slice.mesh.position.set(0, 0, 0); + console.log("stackHelper", this.stackHelper.position); + console.log("mesh", this.stackHelper.slice.mesh.position); + + this.camera.lookAt(this.stackHelper.position); + loader.free(); + // this.stackHelper.index = 2; + }) + .catch(function (error) { + window.console.log("oops... something went wrong..."); + window.console.log(error); + }); + } + + /** + * set current render + * @param {object} render + */ + setRenderFunction(render) { + this.render = render; + } + // setCameraFunction(camera) { + // this.camera = camera; + // } + + /** + * after load dicom image, then call this function to display. + * + */ + viewImage() { + this.imageLoader(this.path).then(() => { + this.addGUI(this.stackHelper); + this.scene.add(this.stackHelper); + }); + } + + /** + * add dicom image gui + * @param {object} stackHelper + */ + addGUI(stackHelper) { + const stack = stackHelper.stack; + console.log(this.gui); + const stackFolder = this.gui.addFolder("Stack"); + // index range depends on stackHelper orientation. + + stackFolder + .add(stackHelper, "index", 0, stack.dimensionsIJK.z - 1) + .step(1) + .name("ImageLayer"); + + stackFolder.open(); + } +} + +export default ImageLoader; diff --git a/src/ABIThreeLibrary/loadModules.js b/src/ABIThreeLibrary/loadModules.js new file mode 100644 index 0000000..b536724 --- /dev/null +++ b/src/ABIThreeLibrary/loadModules.js @@ -0,0 +1,145 @@ +import * as THREE from "three"; +import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js"; +import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader.js"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js"; + +/** + * @module LoadModules + * + */ + +/** + * + * inner function just for deal with loading + */ +function loadingBar(xhr, progressBar) { + if (xhr.total !== 0) { + const percentComplete = (xhr.loaded / xhr.total) * 100; + progressBar.value = percentComplete; + progressBar.style.display = "none"; + } else { + progressBar.style.display = "none"; + } +} + +/** + * This function will return a default material for obj module + * @returns {object} - threejs material + */ +function getMaterial() { + return new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true }); +} + +/** + * This function is for load .obj file + * @param {string} url - the .obj file url + * @param {object} scene - the current domElement's scene + * @param {object} camera - the current scene's camera + * @param {object} [material] - the material for .obj file (optional), the default material is THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true }) + * @param {HTMLElement} [progressBar] - the progress html domelment bar for loading.(optional) + * @example + * const container = document.getElementById("container_root"); + * const progressBar = document.getElementById("progressBar"); + * const allScenes = new ABIThree.Scenes(container); + * const scene = allScenes.getScene(); + * ABIThree.loadObjFile(monkey_g, scene.scene, scene.camera, progressBar); + * + * + */ +function loadObjFile(url, scene, camera, material = null, progressBar = null) { + const objLoader = new OBJLoader(); + !!material & objLoader.setMaterials(material); + + objLoader.load( + url, + (object) => { + if (!!material === false) { + object.traverse(function (child) { + if (child.isMesh) { + child.material = getMaterial(); + } + }); + } + camera.position.z = object.position.z + 10; + scene.add(object); + }, + (xhr) => { + if (progressBar) { + loadingBar(xhr, progressBar); + } + }, + (error) => { + console.error(error); + } + ); +} + +/** + * This function is for loading .mtl module. + * .mtl module is .obj file with material + * @param {string} url_mtl - .mtl file url + * @param {string} url_obj - .obj file url + * @param {object} scene - the current domElement's scene + * @param {object} camera - the current scene's camera + * @param {object} [progressBar] - the progress html domelment bar for loading.(optional) + * @example + * const container = document.getElementById("container_root"); + * const progressBar = document.getElementById("progressBar"); + * const allScenes = new ABIThree.Scenes(container); + * const scene1 = allScenes.getScene(); + * ABIThree.loadMTLFile( + monkey_m, + monkey_g, + scene1.scene, + scene1.camera, + progressBar + ); + * + * + */ +function loadMTLFile(url_mtl, url_obj, scene, camera, progressBar = null) { + const mtlLoader = new MTLLoader(); + + mtlLoader.load(url_mtl, (material) => { + material.preload(); + loadObjFile(url_obj, scene, camera, material, progressBar); + }); +} + +/** + * This function is for loading .gltf module + * @param {*} url - .gltf file url + * @param {*} scene - the current domElement's scene + * @param {*} camera - the current scene's camera + * @param {*} progressBar - the progress html domelment bar for loading.(optional) + * + * @example + * const container = document.getElementById("container_root"); + * const progressBar = document.getElementById("progressBar"); + * const allScenes = new ABIThree.Scenes(container, 1); + * const scene1 = allScenes.getScene(); + * ABIThree.loadGLTFFile(monkey, scene1.scene, scene1.camera, progressBar); + * + * + */ +function loadGLTFFile(url, scene, camera, progressBar = null) { + const gltfLoader = new GLTFLoader(); + + gltfLoader.load( + url, + (gltf) => { + camera.position.z = gltf.scene.position.z + 10; + scene.add(gltf.scene); + }, + (xhr) => { + if (progressBar) { + loadingBar(xhr, progressBar); + } + }, + (error) => { + console.error(error); + } + ); +} + +export { loadObjFile, loadMTLFile, loadGLTFFile }; diff --git a/src/ABIThreeLibrary/main.js b/src/ABIThreeLibrary/main.js new file mode 100644 index 0000000..cab3baa --- /dev/null +++ b/src/ABIThreeLibrary/main.js @@ -0,0 +1,20 @@ +import * as THREE from "three"; +import Stats from "three/examples/jsm/libs/stats.module.js"; +import { GUI } from "lil-gui"; +import { createCamera, createLight, createTestMesh } from "./base.js"; +import { ColorGUIHelper, CameraHelper } from "./guiHelper.js"; +import ImageLoader from "./imageLoader.js"; +import { loadObjFile, loadMTLFile, loadGLTFFile } from "./loadModules"; +import Scenes from "./scenes.js"; +import "./css/style.css"; + +export { + Scenes, + loadObjFile, + loadMTLFile, + loadGLTFFile, + ImageLoader, + createTestMesh, + ColorGUIHelper, + CameraHelper, +}; diff --git a/src/ABIThreeLibrary/scenes.js b/src/ABIThreeLibrary/scenes.js new file mode 100644 index 0000000..55e54fd --- /dev/null +++ b/src/ABIThreeLibrary/scenes.js @@ -0,0 +1,246 @@ +import * as THREE from "three"; +import { createLight } from "./base"; +import { GUI } from "lil-gui"; +import { TrackballControls } from "three/examples/jsm/controls/TrackballControls"; +import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; + +/** + * @module Scenes + */ + +/** + * Base class for making multiple scenes, it includes webGLRender, camera information, three.js controls. + * The default number of scene is one, and the default camera position is { x: 0, y: 0, z: 500 }. + * @example + * const allScenes = new Scenes(HTMLElement, 4, {0, 0, 1000}); + * allScenes.animate(); + */ + +class Scenes { + constructor(container, numberOfScene, cameraPosition) { + /** + * How many scenes the user want to create. + * @type {number} + * */ + this.numberOfScene = numberOfScene > 0 ? numberOfScene : 1; + /** + * The main container for all scenes + * @type {HTMLElement} + */ + this.container = container; + /** + * The camera postion, it is a object and the format is {x:number, y:number, z:number} + * @type {object} + * @example + * { x: 0, y: 0, z: 1000 } + */ + this.cameraPosition = cameraPosition || { x: 0, y: 0, z: 500 }; + /** + * It stores all scenes' parent domElements. + * @type {Array} + */ + this.elems = []; + /** + * It stores all scenes. + * @type {Array} + */ + this.scenes = []; + /** + * It stores all camera information. + * @type {Array} + */ + this.cameras = []; + /** + * It stores all scenes' information. Each scene's info includes scene's ID, scene,camera, domElement, controls, GUI. + */ + this.sceneInfos = []; + + this.init(); + // this.animate(); + } + + /** + * The initial function. + * It will create a WebGLRenderer, and depends on the number of scenes to create each scene and it's parent domElement. + * And it also can automatically create gui for each scene. + * All the informations will be stored in the sceneInfo object, such as: scene,camera, domElement, controls, GUI. + */ + init() { + this.renderer = new THREE.WebGLRenderer({ + alpha: true, + antialias: true, + }); + this.canvas = this.renderer.domElement; + this.canvas.className = "abithree_canvas"; + this.container.className = "abithree_container_root"; + this.container.appendChild(this.canvas); + for (let i = 0; i < this.numberOfScene; i++) { + const elem = document.createElement("div"); + elem.className = "abithree_scene_div"; + this.container.appendChild(elem); + + this.elems.push(elem); + const gui = new GUI({ container: elem }); + const sceneInfo = this.makeScene(elem, this.cameraPosition); + sceneInfo.id = i; + sceneInfo.elem = elem; + sceneInfo.gui = gui; + this.scenes.push(sceneInfo.scene); + this.cameras.push(sceneInfo.camera); + this.sceneInfos.push(sceneInfo); + } + } + /** + * This functions is for init function to create multiple scenes. + * @param {HTMLElement} elem - the scene parent domElement. + * @param {object} cameraPosition - the cameraPostion + * @returns {object}- {scene, camera, controls} + */ + makeScene(elem, cameraPosition) { + const scene = new THREE.Scene(); + + const fov = 75; + const aspect = elem.clientWidth / elem.clientHeight; + const near = 0.1; + const far = 1000; + + const camera = new THREE.PerspectiveCamera(fov, aspect, near, far); + + camera.position.set(cameraPosition.x, cameraPosition.y, cameraPosition.z); + camera.lookAt(scene.position); + scene.add(camera); + // const controls = new TrackballControls(camera, elem); + const controls = new OrbitControls(camera, elem); + controls.enabled = false; + // light + { + const color = 0xffffff; + const intensity = 1; + const light = createLight(color, intensity); + scene.add(light.pointLight); + + const cameraLight = new THREE.DirectionalLight(color, intensity); + cameraLight.position.set(-1, 2, 4); + camera.add(cameraLight); + } + scene.background = new THREE.Color("black"); + + return { scene, camera, controls }; + } + /** + * Get the scene infomation with the corresponding id by entering the parameter ID. + * @param {Number} id + * @returns {Scenes} - If found the id of the scence + * + * @example + * const scene = getScene() + * const sceneTwo = getScene(1) + */ + getScene(id = 0) { + const scene = this.sceneInfos.find((element) => element.id === id); + if (scene) { + return scene; + } else { + console.log("Oops...No scenes have been found!"); + } + } + + /** + * This function is for render all scenes on canvas. + * @param {object} sceneInfo + * + */ + renderSceneInfo = (sceneInfo) => { + const { scene, camera, controls, elem } = sceneInfo; + + // get the viewpoint relative position of this element + const { left, right, top, bottom, width, height } = + elem.getBoundingClientRect(); + const isOffscreen = + bottom < 0 || + top > this.renderer.domElement.clientHeight || + right < 0 || + left > this.renderer.domElement.clientWidth; + if (isOffscreen) { + return; + } + camera.aspect = width / height; + camera.updateProjectionMatrix(); + // controls.handleResize(); + controls.update(); + + const positiveYUpBottom = this.renderer.domElement.clientHeight - bottom; + this.renderer.setScissor(left, positiveYUpBottom, width, height); + this.renderer.setViewport(left, positiveYUpBottom, width, height); + this.renderer.render(scene, camera); + }; + + /** + * This method causes the layout of the canvas to change responsively with the user's window. + */ + resizeRendererToDisplaySize = () => { + const width = this.renderer.domElement.clientWidth; + const height = this.renderer.domElement.clientHeight; + const needResize = + this.renderer.domElement.width !== width || + this.renderer.domElement.height !== height; + if (needResize) { + // to create a grid for multiple scenes + this.elems.map((elem, index) => { + if (index === this.numberOfScene - 1 && this.numberOfScene % 2 !== 0) { + elem.style.width = this.container.clientWidth + "px"; + } else { + elem.style.width = this.container.clientWidth / 2 - 2 + "px"; + } + elem.style.height = + this.container.clientHeight / Math.ceil(this.numberOfScene / 2) + + "px"; + }); + this.renderer.setSize(width, height, false); + } + }; + + /** + * This function is for create animation and render the canvas. + * + * @param {number} time + */ + animate = (time) => { + time *= 0.001; + const clearColor = new THREE.Color("#000"); + this.renderer.setScissorTest(false); + this.renderer.setClearColor(clearColor, 0); + this.renderer.clear(true, true); + this.renderer.setScissorTest(true); + this.resizeRendererToDisplaySize(); + + // for (let info of this.sceneInfos) { + // } + this.sceneInfos.forEach((info) => { + this.renderSceneInfo(info); + }); + const infos = this.sceneInfos; + var el = window.document.body; //set default value is body + window.document.body.onmouseover = function (event) { + el = event.target.className; //when mouse over which element then get the element classname + if (el === "abithree_scene_div") { + infos.forEach((info) => { + info.controls.enabled = true; + info.controls.update(); + }); + } else { + infos.forEach((info) => { + info.controls.enabled = false; + info.controls.update(); + }); + } + }; + + const transform = `translateY(${window.scrollY}px)`; + this.renderer.domElement.style.transform = transform; + + window.requestAnimationFrame(this.animate); + }; +} + +export default Scenes; diff --git a/src/examples/assets/css/style.css b/src/examples/assets/css/style.css new file mode 100644 index 0000000..e89f3ba --- /dev/null +++ b/src/examples/assets/css/style.css @@ -0,0 +1,23 @@ +html, +body { + margin: 0; +} +#bg { + width: 100vw; + height: 100vh; + position: fixed; + left: 0; + top: 0; +} +canvas { + width: 100%; + height: 100%; +} +#progressBar { + width: 500px; + height: 24px; + position: absolute; + left: 50%; + top: 10px; + margin-left: -250px; +} diff --git a/src/examples/assets/images/dicom1/brain_001.dcm b/src/examples/assets/images/dicom1/brain_001.dcm new file mode 100755 index 0000000..f039aa1 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_001.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_002.dcm b/src/examples/assets/images/dicom1/brain_002.dcm new file mode 100755 index 0000000..457c028 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_002.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_003.dcm b/src/examples/assets/images/dicom1/brain_003.dcm new file mode 100755 index 0000000..008f432 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_003.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_004.dcm b/src/examples/assets/images/dicom1/brain_004.dcm new file mode 100755 index 0000000..321d50c Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_004.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_005.dcm b/src/examples/assets/images/dicom1/brain_005.dcm new file mode 100755 index 0000000..5917f9c Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_005.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_006.dcm b/src/examples/assets/images/dicom1/brain_006.dcm new file mode 100755 index 0000000..7ef8a6c Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_006.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_007.dcm b/src/examples/assets/images/dicom1/brain_007.dcm new file mode 100755 index 0000000..0c3d9b5 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_007.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_008.dcm b/src/examples/assets/images/dicom1/brain_008.dcm new file mode 100755 index 0000000..28d45ce Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_008.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_009.dcm b/src/examples/assets/images/dicom1/brain_009.dcm new file mode 100755 index 0000000..76d7fac Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_009.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_010.dcm b/src/examples/assets/images/dicom1/brain_010.dcm new file mode 100755 index 0000000..a2d9a9d Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_010.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_011.dcm b/src/examples/assets/images/dicom1/brain_011.dcm new file mode 100755 index 0000000..fc54439 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_011.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_012.dcm b/src/examples/assets/images/dicom1/brain_012.dcm new file mode 100755 index 0000000..8a3298c Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_012.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_013.dcm b/src/examples/assets/images/dicom1/brain_013.dcm new file mode 100755 index 0000000..55cf84f Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_013.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_014.dcm b/src/examples/assets/images/dicom1/brain_014.dcm new file mode 100755 index 0000000..c52aa91 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_014.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_015.dcm b/src/examples/assets/images/dicom1/brain_015.dcm new file mode 100755 index 0000000..b8f11e6 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_015.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_016.dcm b/src/examples/assets/images/dicom1/brain_016.dcm new file mode 100755 index 0000000..4946dcd Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_016.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_017.dcm b/src/examples/assets/images/dicom1/brain_017.dcm new file mode 100755 index 0000000..d9874e2 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_017.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_018.dcm b/src/examples/assets/images/dicom1/brain_018.dcm new file mode 100755 index 0000000..e9a67f5 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_018.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_019.dcm b/src/examples/assets/images/dicom1/brain_019.dcm new file mode 100755 index 0000000..9b28007 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_019.dcm differ diff --git a/src/examples/assets/images/dicom1/brain_020.dcm b/src/examples/assets/images/dicom1/brain_020.dcm new file mode 100755 index 0000000..380e233 Binary files /dev/null and b/src/examples/assets/images/dicom1/brain_020.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000001.dcm b/src/examples/assets/images/dicom2/image-000001.dcm new file mode 100644 index 0000000..93a68f9 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000001.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000002.dcm b/src/examples/assets/images/dicom2/image-000002.dcm new file mode 100644 index 0000000..6bae31c Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000002.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000003.dcm b/src/examples/assets/images/dicom2/image-000003.dcm new file mode 100644 index 0000000..b721547 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000003.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000004.dcm b/src/examples/assets/images/dicom2/image-000004.dcm new file mode 100644 index 0000000..7a47d61 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000004.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000005.dcm b/src/examples/assets/images/dicom2/image-000005.dcm new file mode 100644 index 0000000..bfd575a Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000005.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000006.dcm b/src/examples/assets/images/dicom2/image-000006.dcm new file mode 100644 index 0000000..0b58454 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000006.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000007.dcm b/src/examples/assets/images/dicom2/image-000007.dcm new file mode 100644 index 0000000..b202467 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000007.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000008.dcm b/src/examples/assets/images/dicom2/image-000008.dcm new file mode 100644 index 0000000..24b5141 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000008.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000009.dcm b/src/examples/assets/images/dicom2/image-000009.dcm new file mode 100644 index 0000000..085c4c8 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000009.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000010.dcm b/src/examples/assets/images/dicom2/image-000010.dcm new file mode 100644 index 0000000..8573eb6 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000010.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000011.dcm b/src/examples/assets/images/dicom2/image-000011.dcm new file mode 100644 index 0000000..407325d Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000011.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000012.dcm b/src/examples/assets/images/dicom2/image-000012.dcm new file mode 100644 index 0000000..72664db Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000012.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000013.dcm b/src/examples/assets/images/dicom2/image-000013.dcm new file mode 100644 index 0000000..6044900 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000013.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000014.dcm b/src/examples/assets/images/dicom2/image-000014.dcm new file mode 100644 index 0000000..9bf7e0f Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000014.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000015.dcm b/src/examples/assets/images/dicom2/image-000015.dcm new file mode 100644 index 0000000..b6e81cd Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000015.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000016.dcm b/src/examples/assets/images/dicom2/image-000016.dcm new file mode 100644 index 0000000..0ff5112 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000016.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000017.dcm b/src/examples/assets/images/dicom2/image-000017.dcm new file mode 100644 index 0000000..641fe40 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000017.dcm differ diff --git a/src/examples/assets/images/dicom2/image-000018.dcm b/src/examples/assets/images/dicom2/image-000018.dcm new file mode 100644 index 0000000..4e326c6 Binary files /dev/null and b/src/examples/assets/images/dicom2/image-000018.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00000.dcm b/src/examples/assets/images/dicom3/image-00000.dcm new file mode 100644 index 0000000..93a68f9 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00001.dcm b/src/examples/assets/images/dicom3/image-00001.dcm new file mode 100644 index 0000000..6bae31c Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00002.dcm b/src/examples/assets/images/dicom3/image-00002.dcm new file mode 100644 index 0000000..b721547 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00003.dcm b/src/examples/assets/images/dicom3/image-00003.dcm new file mode 100644 index 0000000..7a47d61 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00004.dcm b/src/examples/assets/images/dicom3/image-00004.dcm new file mode 100644 index 0000000..bfd575a Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00005.dcm b/src/examples/assets/images/dicom3/image-00005.dcm new file mode 100644 index 0000000..0b58454 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00006.dcm b/src/examples/assets/images/dicom3/image-00006.dcm new file mode 100644 index 0000000..b202467 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00007.dcm b/src/examples/assets/images/dicom3/image-00007.dcm new file mode 100644 index 0000000..24b5141 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00008.dcm b/src/examples/assets/images/dicom3/image-00008.dcm new file mode 100644 index 0000000..085c4c8 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00009.dcm b/src/examples/assets/images/dicom3/image-00009.dcm new file mode 100644 index 0000000..8573eb6 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00010.dcm b/src/examples/assets/images/dicom3/image-00010.dcm new file mode 100644 index 0000000..407325d Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00011.dcm b/src/examples/assets/images/dicom3/image-00011.dcm new file mode 100644 index 0000000..72664db Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00012.dcm b/src/examples/assets/images/dicom3/image-00012.dcm new file mode 100644 index 0000000..6044900 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00013.dcm b/src/examples/assets/images/dicom3/image-00013.dcm new file mode 100644 index 0000000..9bf7e0f Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00014.dcm b/src/examples/assets/images/dicom3/image-00014.dcm new file mode 100644 index 0000000..b6e81cd Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00015.dcm b/src/examples/assets/images/dicom3/image-00015.dcm new file mode 100644 index 0000000..0ff5112 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00016.dcm b/src/examples/assets/images/dicom3/image-00016.dcm new file mode 100644 index 0000000..641fe40 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00017.dcm b/src/examples/assets/images/dicom3/image-00017.dcm new file mode 100644 index 0000000..4e326c6 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00018.dcm b/src/examples/assets/images/dicom3/image-00018.dcm new file mode 100644 index 0000000..2d20c07 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00019.dcm b/src/examples/assets/images/dicom3/image-00019.dcm new file mode 100644 index 0000000..33fc179 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00020.dcm b/src/examples/assets/images/dicom3/image-00020.dcm new file mode 100644 index 0000000..5ff0cec Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00020.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00021.dcm b/src/examples/assets/images/dicom3/image-00021.dcm new file mode 100644 index 0000000..ed986b4 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00021.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00022.dcm b/src/examples/assets/images/dicom3/image-00022.dcm new file mode 100644 index 0000000..2b663e8 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00022.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00023.dcm b/src/examples/assets/images/dicom3/image-00023.dcm new file mode 100644 index 0000000..7f2317f Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00023.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00024.dcm b/src/examples/assets/images/dicom3/image-00024.dcm new file mode 100644 index 0000000..f423562 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00024.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00025.dcm b/src/examples/assets/images/dicom3/image-00025.dcm new file mode 100644 index 0000000..2b8bbf4 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00025.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00026.dcm b/src/examples/assets/images/dicom3/image-00026.dcm new file mode 100644 index 0000000..ed58cc6 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00026.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00027.dcm b/src/examples/assets/images/dicom3/image-00027.dcm new file mode 100644 index 0000000..dfe1021 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00027.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00028.dcm b/src/examples/assets/images/dicom3/image-00028.dcm new file mode 100644 index 0000000..ac5585e Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00028.dcm differ diff --git a/src/examples/assets/images/dicom3/image-00029.dcm b/src/examples/assets/images/dicom3/image-00029.dcm new file mode 100644 index 0000000..e1fad13 Binary files /dev/null and b/src/examples/assets/images/dicom3/image-00029.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00000.dcm b/src/examples/assets/images/dicom4/series-00000/image-00000.dcm new file mode 100644 index 0000000..caea65b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00001.dcm b/src/examples/assets/images/dicom4/series-00000/image-00001.dcm new file mode 100644 index 0000000..d566181 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00002.dcm b/src/examples/assets/images/dicom4/series-00000/image-00002.dcm new file mode 100644 index 0000000..c9c2f09 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00003.dcm b/src/examples/assets/images/dicom4/series-00000/image-00003.dcm new file mode 100644 index 0000000..b9356b2 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00004.dcm b/src/examples/assets/images/dicom4/series-00000/image-00004.dcm new file mode 100644 index 0000000..0bfce00 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00005.dcm b/src/examples/assets/images/dicom4/series-00000/image-00005.dcm new file mode 100644 index 0000000..c23352b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00006.dcm b/src/examples/assets/images/dicom4/series-00000/image-00006.dcm new file mode 100644 index 0000000..399ea5d Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00007.dcm b/src/examples/assets/images/dicom4/series-00000/image-00007.dcm new file mode 100644 index 0000000..5e060cd Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00008.dcm b/src/examples/assets/images/dicom4/series-00000/image-00008.dcm new file mode 100644 index 0000000..e045bb0 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00009.dcm b/src/examples/assets/images/dicom4/series-00000/image-00009.dcm new file mode 100644 index 0000000..4362bed Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00010.dcm b/src/examples/assets/images/dicom4/series-00000/image-00010.dcm new file mode 100644 index 0000000..d6cf354 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00011.dcm b/src/examples/assets/images/dicom4/series-00000/image-00011.dcm new file mode 100644 index 0000000..a05e45c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00012.dcm b/src/examples/assets/images/dicom4/series-00000/image-00012.dcm new file mode 100644 index 0000000..5f83c3b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00013.dcm b/src/examples/assets/images/dicom4/series-00000/image-00013.dcm new file mode 100644 index 0000000..a14b008 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00014.dcm b/src/examples/assets/images/dicom4/series-00000/image-00014.dcm new file mode 100644 index 0000000..34acf3f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00015.dcm b/src/examples/assets/images/dicom4/series-00000/image-00015.dcm new file mode 100644 index 0000000..b2be7c3 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00016.dcm b/src/examples/assets/images/dicom4/series-00000/image-00016.dcm new file mode 100644 index 0000000..8d3a1ad Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00017.dcm b/src/examples/assets/images/dicom4/series-00000/image-00017.dcm new file mode 100644 index 0000000..89b1333 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00018.dcm b/src/examples/assets/images/dicom4/series-00000/image-00018.dcm new file mode 100644 index 0000000..cacd4fe Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00019.dcm b/src/examples/assets/images/dicom4/series-00000/image-00019.dcm new file mode 100644 index 0000000..2d5e01e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00020.dcm b/src/examples/assets/images/dicom4/series-00000/image-00020.dcm new file mode 100644 index 0000000..d3e59ac Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00020.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00021.dcm b/src/examples/assets/images/dicom4/series-00000/image-00021.dcm new file mode 100644 index 0000000..f30a4da Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00021.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00022.dcm b/src/examples/assets/images/dicom4/series-00000/image-00022.dcm new file mode 100644 index 0000000..0bf4e69 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00022.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00023.dcm b/src/examples/assets/images/dicom4/series-00000/image-00023.dcm new file mode 100644 index 0000000..7ee7077 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00023.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00024.dcm b/src/examples/assets/images/dicom4/series-00000/image-00024.dcm new file mode 100644 index 0000000..8e4e2cb Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00024.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00025.dcm b/src/examples/assets/images/dicom4/series-00000/image-00025.dcm new file mode 100644 index 0000000..e5e3253 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00025.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00000/image-00026.dcm b/src/examples/assets/images/dicom4/series-00000/image-00026.dcm new file mode 100644 index 0000000..4be112a Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00000/image-00026.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00000.dcm b/src/examples/assets/images/dicom4/series-00001/image-00000.dcm new file mode 100644 index 0000000..58c21a0 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00001.dcm b/src/examples/assets/images/dicom4/series-00001/image-00001.dcm new file mode 100644 index 0000000..b5a769e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00002.dcm b/src/examples/assets/images/dicom4/series-00001/image-00002.dcm new file mode 100644 index 0000000..6420b6c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00003.dcm b/src/examples/assets/images/dicom4/series-00001/image-00003.dcm new file mode 100644 index 0000000..4d87746 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00004.dcm b/src/examples/assets/images/dicom4/series-00001/image-00004.dcm new file mode 100644 index 0000000..f40569e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00005.dcm b/src/examples/assets/images/dicom4/series-00001/image-00005.dcm new file mode 100644 index 0000000..940c1ec Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00006.dcm b/src/examples/assets/images/dicom4/series-00001/image-00006.dcm new file mode 100644 index 0000000..f2be6b0 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00007.dcm b/src/examples/assets/images/dicom4/series-00001/image-00007.dcm new file mode 100644 index 0000000..711626e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00008.dcm b/src/examples/assets/images/dicom4/series-00001/image-00008.dcm new file mode 100644 index 0000000..bcb9847 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00009.dcm b/src/examples/assets/images/dicom4/series-00001/image-00009.dcm new file mode 100644 index 0000000..abbc98e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00010.dcm b/src/examples/assets/images/dicom4/series-00001/image-00010.dcm new file mode 100644 index 0000000..eca46ce Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00011.dcm b/src/examples/assets/images/dicom4/series-00001/image-00011.dcm new file mode 100644 index 0000000..b99e4dd Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00012.dcm b/src/examples/assets/images/dicom4/series-00001/image-00012.dcm new file mode 100644 index 0000000..4a79f0b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00013.dcm b/src/examples/assets/images/dicom4/series-00001/image-00013.dcm new file mode 100644 index 0000000..e9983e9 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00014.dcm b/src/examples/assets/images/dicom4/series-00001/image-00014.dcm new file mode 100644 index 0000000..5e2b5b6 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00015.dcm b/src/examples/assets/images/dicom4/series-00001/image-00015.dcm new file mode 100644 index 0000000..d83b6dd Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00016.dcm b/src/examples/assets/images/dicom4/series-00001/image-00016.dcm new file mode 100644 index 0000000..c9edd8f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00017.dcm b/src/examples/assets/images/dicom4/series-00001/image-00017.dcm new file mode 100644 index 0000000..26b7caa Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00018.dcm b/src/examples/assets/images/dicom4/series-00001/image-00018.dcm new file mode 100644 index 0000000..0152e6e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00019.dcm b/src/examples/assets/images/dicom4/series-00001/image-00019.dcm new file mode 100644 index 0000000..aa3292b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00020.dcm b/src/examples/assets/images/dicom4/series-00001/image-00020.dcm new file mode 100644 index 0000000..e9388e4 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00020.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00001/image-00021.dcm b/src/examples/assets/images/dicom4/series-00001/image-00021.dcm new file mode 100644 index 0000000..58baa33 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00001/image-00021.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00000.dcm b/src/examples/assets/images/dicom4/series-00002/image-00000.dcm new file mode 100644 index 0000000..634094f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00001.dcm b/src/examples/assets/images/dicom4/series-00002/image-00001.dcm new file mode 100644 index 0000000..48c0ff2 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00002.dcm b/src/examples/assets/images/dicom4/series-00002/image-00002.dcm new file mode 100644 index 0000000..d80c3f7 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00003.dcm b/src/examples/assets/images/dicom4/series-00002/image-00003.dcm new file mode 100644 index 0000000..5fbd41f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00004.dcm b/src/examples/assets/images/dicom4/series-00002/image-00004.dcm new file mode 100644 index 0000000..2d80e26 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00005.dcm b/src/examples/assets/images/dicom4/series-00002/image-00005.dcm new file mode 100644 index 0000000..7570bae Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00006.dcm b/src/examples/assets/images/dicom4/series-00002/image-00006.dcm new file mode 100644 index 0000000..aa62124 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00007.dcm b/src/examples/assets/images/dicom4/series-00002/image-00007.dcm new file mode 100644 index 0000000..f8774eb Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00008.dcm b/src/examples/assets/images/dicom4/series-00002/image-00008.dcm new file mode 100644 index 0000000..aa4d52f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00009.dcm b/src/examples/assets/images/dicom4/series-00002/image-00009.dcm new file mode 100644 index 0000000..debe1de Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00010.dcm b/src/examples/assets/images/dicom4/series-00002/image-00010.dcm new file mode 100644 index 0000000..2579548 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00011.dcm b/src/examples/assets/images/dicom4/series-00002/image-00011.dcm new file mode 100644 index 0000000..209f811 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00012.dcm b/src/examples/assets/images/dicom4/series-00002/image-00012.dcm new file mode 100644 index 0000000..ad79832 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00013.dcm b/src/examples/assets/images/dicom4/series-00002/image-00013.dcm new file mode 100644 index 0000000..6e474aa Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00014.dcm b/src/examples/assets/images/dicom4/series-00002/image-00014.dcm new file mode 100644 index 0000000..aa69a09 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00015.dcm b/src/examples/assets/images/dicom4/series-00002/image-00015.dcm new file mode 100644 index 0000000..d561d46 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00016.dcm b/src/examples/assets/images/dicom4/series-00002/image-00016.dcm new file mode 100644 index 0000000..5123915 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00017.dcm b/src/examples/assets/images/dicom4/series-00002/image-00017.dcm new file mode 100644 index 0000000..55c130f Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00018.dcm b/src/examples/assets/images/dicom4/series-00002/image-00018.dcm new file mode 100644 index 0000000..b6062ed Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00002/image-00019.dcm b/src/examples/assets/images/dicom4/series-00002/image-00019.dcm new file mode 100644 index 0000000..ff84965 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00002/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00000.dcm b/src/examples/assets/images/dicom4/series-00003/image-00000.dcm new file mode 100644 index 0000000..89ec903 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00001.dcm b/src/examples/assets/images/dicom4/series-00003/image-00001.dcm new file mode 100644 index 0000000..3c9f0d7 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00002.dcm b/src/examples/assets/images/dicom4/series-00003/image-00002.dcm new file mode 100644 index 0000000..bbfb232 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00003.dcm b/src/examples/assets/images/dicom4/series-00003/image-00003.dcm new file mode 100644 index 0000000..dc1ebf3 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00004.dcm b/src/examples/assets/images/dicom4/series-00003/image-00004.dcm new file mode 100644 index 0000000..f2b3b5b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00005.dcm b/src/examples/assets/images/dicom4/series-00003/image-00005.dcm new file mode 100644 index 0000000..6b95df3 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00006.dcm b/src/examples/assets/images/dicom4/series-00003/image-00006.dcm new file mode 100644 index 0000000..07a456e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00007.dcm b/src/examples/assets/images/dicom4/series-00003/image-00007.dcm new file mode 100644 index 0000000..7db68f8 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00008.dcm b/src/examples/assets/images/dicom4/series-00003/image-00008.dcm new file mode 100644 index 0000000..bad4a2a Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00009.dcm b/src/examples/assets/images/dicom4/series-00003/image-00009.dcm new file mode 100644 index 0000000..cdda1f4 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00010.dcm b/src/examples/assets/images/dicom4/series-00003/image-00010.dcm new file mode 100644 index 0000000..68e7cc3 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00011.dcm b/src/examples/assets/images/dicom4/series-00003/image-00011.dcm new file mode 100644 index 0000000..74469c5 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00012.dcm b/src/examples/assets/images/dicom4/series-00003/image-00012.dcm new file mode 100644 index 0000000..e529103 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00013.dcm b/src/examples/assets/images/dicom4/series-00003/image-00013.dcm new file mode 100644 index 0000000..2cd89fe Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00014.dcm b/src/examples/assets/images/dicom4/series-00003/image-00014.dcm new file mode 100644 index 0000000..7113b02 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00015.dcm b/src/examples/assets/images/dicom4/series-00003/image-00015.dcm new file mode 100644 index 0000000..ba58308 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00016.dcm b/src/examples/assets/images/dicom4/series-00003/image-00016.dcm new file mode 100644 index 0000000..2dc6dfa Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00017.dcm b/src/examples/assets/images/dicom4/series-00003/image-00017.dcm new file mode 100644 index 0000000..a190b08 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00018.dcm b/src/examples/assets/images/dicom4/series-00003/image-00018.dcm new file mode 100644 index 0000000..1336136 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00019.dcm b/src/examples/assets/images/dicom4/series-00003/image-00019.dcm new file mode 100644 index 0000000..895eb9d Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00020.dcm b/src/examples/assets/images/dicom4/series-00003/image-00020.dcm new file mode 100644 index 0000000..b175575 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00020.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00021.dcm b/src/examples/assets/images/dicom4/series-00003/image-00021.dcm new file mode 100644 index 0000000..ce740c1 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00021.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00022.dcm b/src/examples/assets/images/dicom4/series-00003/image-00022.dcm new file mode 100644 index 0000000..8c50457 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00022.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00003/image-00023.dcm b/src/examples/assets/images/dicom4/series-00003/image-00023.dcm new file mode 100644 index 0000000..378a2f1 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00003/image-00023.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00000.dcm b/src/examples/assets/images/dicom4/series-00004/image-00000.dcm new file mode 100644 index 0000000..355093b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00001.dcm b/src/examples/assets/images/dicom4/series-00004/image-00001.dcm new file mode 100644 index 0000000..c8394ad Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00002.dcm b/src/examples/assets/images/dicom4/series-00004/image-00002.dcm new file mode 100644 index 0000000..c54eaa5 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00003.dcm b/src/examples/assets/images/dicom4/series-00004/image-00003.dcm new file mode 100644 index 0000000..297cfb9 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00004.dcm b/src/examples/assets/images/dicom4/series-00004/image-00004.dcm new file mode 100644 index 0000000..389eb1c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00005.dcm b/src/examples/assets/images/dicom4/series-00004/image-00005.dcm new file mode 100644 index 0000000..1837c62 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00006.dcm b/src/examples/assets/images/dicom4/series-00004/image-00006.dcm new file mode 100644 index 0000000..71efc1e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00007.dcm b/src/examples/assets/images/dicom4/series-00004/image-00007.dcm new file mode 100644 index 0000000..2e7b367 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00008.dcm b/src/examples/assets/images/dicom4/series-00004/image-00008.dcm new file mode 100644 index 0000000..19ea28e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00009.dcm b/src/examples/assets/images/dicom4/series-00004/image-00009.dcm new file mode 100644 index 0000000..f59776c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00010.dcm b/src/examples/assets/images/dicom4/series-00004/image-00010.dcm new file mode 100644 index 0000000..e25ccbe Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00011.dcm b/src/examples/assets/images/dicom4/series-00004/image-00011.dcm new file mode 100644 index 0000000..9e3542b Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00012.dcm b/src/examples/assets/images/dicom4/series-00004/image-00012.dcm new file mode 100644 index 0000000..282d662 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00013.dcm b/src/examples/assets/images/dicom4/series-00004/image-00013.dcm new file mode 100644 index 0000000..afdd99c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00014.dcm b/src/examples/assets/images/dicom4/series-00004/image-00014.dcm new file mode 100644 index 0000000..b6618c1 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00015.dcm b/src/examples/assets/images/dicom4/series-00004/image-00015.dcm new file mode 100644 index 0000000..1ff565d Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00016.dcm b/src/examples/assets/images/dicom4/series-00004/image-00016.dcm new file mode 100644 index 0000000..f587cdf Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00017.dcm b/src/examples/assets/images/dicom4/series-00004/image-00017.dcm new file mode 100644 index 0000000..a186f2e Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00018.dcm b/src/examples/assets/images/dicom4/series-00004/image-00018.dcm new file mode 100644 index 0000000..f3f0ea2 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00019.dcm b/src/examples/assets/images/dicom4/series-00004/image-00019.dcm new file mode 100644 index 0000000..ca7e5b0 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00019.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00020.dcm b/src/examples/assets/images/dicom4/series-00004/image-00020.dcm new file mode 100644 index 0000000..0bf12fb Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00020.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00004/image-00021.dcm b/src/examples/assets/images/dicom4/series-00004/image-00021.dcm new file mode 100644 index 0000000..cc468d6 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00004/image-00021.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00000.dcm b/src/examples/assets/images/dicom4/series-00005/image-00000.dcm new file mode 100644 index 0000000..97ae2a2 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00000.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00001.dcm b/src/examples/assets/images/dicom4/series-00005/image-00001.dcm new file mode 100644 index 0000000..ade40f3 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00001.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00002.dcm b/src/examples/assets/images/dicom4/series-00005/image-00002.dcm new file mode 100644 index 0000000..c08a165 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00002.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00003.dcm b/src/examples/assets/images/dicom4/series-00005/image-00003.dcm new file mode 100644 index 0000000..c8df7b0 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00003.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00004.dcm b/src/examples/assets/images/dicom4/series-00005/image-00004.dcm new file mode 100644 index 0000000..b66e863 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00004.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00005.dcm b/src/examples/assets/images/dicom4/series-00005/image-00005.dcm new file mode 100644 index 0000000..e0b9e56 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00005.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00006.dcm b/src/examples/assets/images/dicom4/series-00005/image-00006.dcm new file mode 100644 index 0000000..b2f7262 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00006.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00007.dcm b/src/examples/assets/images/dicom4/series-00005/image-00007.dcm new file mode 100644 index 0000000..d293e83 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00007.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00008.dcm b/src/examples/assets/images/dicom4/series-00005/image-00008.dcm new file mode 100644 index 0000000..4fde005 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00008.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00009.dcm b/src/examples/assets/images/dicom4/series-00005/image-00009.dcm new file mode 100644 index 0000000..adb307c Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00009.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00010.dcm b/src/examples/assets/images/dicom4/series-00005/image-00010.dcm new file mode 100644 index 0000000..1e6ec65 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00010.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00011.dcm b/src/examples/assets/images/dicom4/series-00005/image-00011.dcm new file mode 100644 index 0000000..ec4714a Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00011.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00012.dcm b/src/examples/assets/images/dicom4/series-00005/image-00012.dcm new file mode 100644 index 0000000..117f0ec Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00012.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00013.dcm b/src/examples/assets/images/dicom4/series-00005/image-00013.dcm new file mode 100644 index 0000000..e466629 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00013.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00014.dcm b/src/examples/assets/images/dicom4/series-00005/image-00014.dcm new file mode 100644 index 0000000..edd3776 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00014.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00015.dcm b/src/examples/assets/images/dicom4/series-00005/image-00015.dcm new file mode 100644 index 0000000..0ab8580 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00015.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00016.dcm b/src/examples/assets/images/dicom4/series-00005/image-00016.dcm new file mode 100644 index 0000000..73b5531 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00016.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00017.dcm b/src/examples/assets/images/dicom4/series-00005/image-00017.dcm new file mode 100644 index 0000000..8885c73 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00017.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00018.dcm b/src/examples/assets/images/dicom4/series-00005/image-00018.dcm new file mode 100644 index 0000000..f61a1c5 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00018.dcm differ diff --git a/src/examples/assets/images/dicom4/series-00005/image-00019.dcm b/src/examples/assets/images/dicom4/series-00005/image-00019.dcm new file mode 100644 index 0000000..1d3ad71 Binary files /dev/null and b/src/examples/assets/images/dicom4/series-00005/image-00019.dcm differ diff --git a/src/examples/assets/modules/Pikachu-music.png b/src/examples/assets/modules/Pikachu-music.png new file mode 100644 index 0000000..9b917fd Binary files /dev/null and b/src/examples/assets/modules/Pikachu-music.png differ diff --git a/src/examples/assets/modules/model.js b/src/examples/assets/modules/model.js new file mode 100644 index 0000000..58ef779 --- /dev/null +++ b/src/examples/assets/modules/model.js @@ -0,0 +1,23 @@ +import { Clock, Group, SpotLight } from "three"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; +import somethingModel from "./monkey.glb"; + +export class Something extends Group { + clock = new Clock(); + // lamp: SpotLight | undefined; + + constructor() { + super(); + const gltfLoader = new GLTFLoader(); + console.log(somethingModel); + gltfLoader.load(somethingModel, (gltf) => { + const model = gltf.scene; + this.add(model); + }); + } + + animate() { + var delta = this.clock.getDelta(); + this.mixer?.update(delta); + } +} diff --git a/src/examples/assets/modules/monkey.glb b/src/examples/assets/modules/monkey.glb new file mode 100644 index 0000000..fc5fdb8 Binary files /dev/null and b/src/examples/assets/modules/monkey.glb differ diff --git a/src/examples/assets/modules/monkey.gltf b/src/examples/assets/modules/monkey.gltf new file mode 100644 index 0000000..9f5671a --- /dev/null +++ b/src/examples/assets/modules/monkey.gltf @@ -0,0 +1,255 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v1.6.16", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3 + ] + } + ], + "nodes" : [ + { + "name" : "Light", + "rotation" : [ + 0.16907575726509094, + 0.7558803558349609, + -0.27217137813568115, + 0.570947527885437 + ], + "translation" : [ + 4.076245307922363, + 5.903861999511719, + -1.0054539442062378 + ] + }, + { + "name" : "Camera", + "rotation" : [ + 0.483536034822464, + 0.33687159419059753, + -0.20870360732078552, + 0.7804827094078064 + ], + "translation" : [ + 7.358891487121582, + 4.958309173583984, + 6.925790786743164 + ] + }, + { + "mesh" : 0, + "name" : "Suzanne", + "translation" : [ + 0.07217776775360107, + 0.07451135665178299, + -0.25526249408721924 + ] + }, + { + "mesh" : 1, + "name" : "Plane", + "scale" : [ + 4.168084144592285, + 3.8068654537200928, + 4.168084144592285 + ], + "translation" : [ + -0.429220050573349, + -1.7319687604904175, + 0.6526930928230286 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Material.001", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Suzanne", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Plane", + "primitives" : [ + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + } + ], + "images" : [ + { + "bufferView" : 4, + "mimeType" : "image/png", + "name" : "Pikachu-music" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 1966, + "max" : [ + 1.3671875, + 0.984375, + 0.8515625 + ], + "min" : [ + -1.3671875, + -0.984375, + -0.8515625 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 1966, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 1966, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 2904, + "type" : "SCALAR" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 4, + "max" : [ + 1, + 0, + 1 + ], + "min" : [ + -1, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 4, + "type" : "VEC2" + }, + { + "bufferView" : 8, + "componentType" : 5123, + "count" : 6, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 23592, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 23592, + "byteOffset" : 23592 + }, + { + "buffer" : 0, + "byteLength" : 15728, + "byteOffset" : 47184 + }, + { + "buffer" : 0, + "byteLength" : 5808, + "byteOffset" : 62912 + }, + { + "buffer" : 0, + "byteLength" : 34007, + "byteOffset" : 68720 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 102728 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 102776 + }, + { + "buffer" : 0, + "byteLength" : 32, + "byteOffset" : 102824 + }, + { + "buffer" : 0, + "byteLength" : 12, + "byteOffset" : 102856 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 102868, + "uri" : "data:application/octet-stream;base64,AADgPgAAKD4AAEQ/AADgPgAAKD4AAEQ/AADgPgAAKD4AAEQ/AADgPgAAKD4AAEQ/AADgvgAAKD4AAEQ/AADgvgAAKD4AAEQ/AADgvgAAKD4AAEQ/AADgvgAAKD4AAEQ/AAAAPwAAwD0AADA/AAAAPwAAwD0AADA/AAAAPwAAwD0AADA/AAAAPwAAwD0AADA/AAAAvwAAwD0AADA/AAAAvwAAwD0AADA/AAAAvwAAwD0AADA/AAAAvwAAwD0AADA/AAAMPwAAYD0AABQ/AAAMPwAAYD0AABQ/AAAMvwAAYD0AABQ/AAAMvwAAYD0AABQ/AAC0PgAAwLwAAB4/AAC0PgAAwLwAAB4/AAC0vgAAwLwAAB4/AAC0vgAAwLwAAB4/AAC0PgAAAD0AADg/AAC0PgAAAD0AADg/AAC0PgAAAD0AADg/AAC0PgAAAD0AADg/AAC0vgAAAD0AADg/AAC0vgAAAD0AADg/AAC0vgAAAD0AADg/AAC0vgAAAD0AADg/AAC0PgAACD4AAEg/AAC0PgAACD4AAEg/AAC0PgAACD4AAEg/AAC0PgAACD4AAEg/AAC0vgAACD4AAEg/AAC0vgAACD4AAEg/AAC0vgAACD4AAEg/AAC0vgAACD4AAEg/AACMPgAAKD4AAEw/AACMPgAAKD4AAEw/AACMPgAAKD4AAEw/AACMPgAAKD4AAEw/AACMvgAAKD4AAEw/AACMvgAAKD4AAEw/AACMvgAAKD4AAEw/AACMvgAAKD4AAEw/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AAAgPgAAYD0AACY/AAAgPgAAYD0AACY/AAAgvgAAYD0AACY/AAAgvgAAYD0AACY/AACgPQAAeD4AACg/AACgPQAAeD4AACg/AACgvQAAeD4AACg/AACgvQAAeD4AACg/AAAQPgAAeD4AAD4/AAAQPgAAeD4AAD4/AAAQPgAAeD4AAD4/AAAQPgAAeD4AAD4/AAAQvgAAeD4AAD4/AAAQvgAAeD4AAD4/AAAQvgAAeD4AAD4/AAAQvgAAeD4AAD4/AAB4PgAAeD4AAEw/AAB4PgAAeD4AAEw/AAB4PgAAeD4AAEw/AAB4PgAAeD4AAEw/AAB4vgAAeD4AAEw/AAB4vgAAeD4AAEw/AAB4vgAAeD4AAEw/AAB4vgAAeD4AAEw/AACMPgAAqD4AAEw/AACMPgAAqD4AAEw/AACMPgAAqD4AAEw/AACMPgAAqD4AAEw/AACMvgAAqD4AAEw/AACMvgAAqD4AAEw/AACMvgAAqD4AAEw/AACMvgAAqD4AAEw/AABQPgAAyD4AAD4/AABQPgAAyD4AAD4/AABQPgAAyD4AAD4/AABQPgAAyD4AAD4/AABQvgAAyD4AAD4/AABQvgAAyD4AAD4/AABQvgAAyD4AAD4/AABQvgAAyD4AAD4/AAAgPgAA4D4AACY/AAAgPgAA4D4AACY/AAAgvgAA4D4AACY/AAAgvgAA4D4AACY/AAC0PgAABD8AAB4/AAC0PgAABD8AAB4/AAC0vgAABD8AAB4/AAC0vgAABD8AAB4/AAC0PgAA6D4AADg/AAC0PgAA6D4AADg/AAC0PgAA6D4AADg/AAC0PgAA6D4AADg/AAC0vgAA6D4AADg/AAC0vgAA6D4AADg/AAC0vgAA6D4AADg/AAC0vgAA6D4AADg/AAC0PgAAuD4AAEg/AAC0PgAAuD4AAEg/AAC0PgAAuD4AAEg/AAC0PgAAuD4AAEg/AAC0vgAAuD4AAEg/AAC0vgAAuD4AAEg/AAC0vgAAuD4AAEg/AAC0vgAAuD4AAEg/AADgPgAAqD4AAEQ/AADgPgAAqD4AAEQ/AADgPgAAqD4AAEQ/AADgPgAAqD4AAEQ/AADgvgAAqD4AAEQ/AADgvgAAqD4AAEQ/AADgvgAAqD4AAEQ/AADgvgAAqD4AAEQ/AAAAPwAAyD4AADA/AAAAPwAAyD4AADA/AAAAPwAAyD4AADA/AAAAPwAAyD4AADA/AAAAvwAAyD4AADA/AAAAvwAAyD4AADA/AAAAvwAAyD4AADA/AAAAvwAAyD4AADA/AAAMPwAA4D4AABQ/AAAMPwAA4D4AABQ/AAAMvwAA4D4AABQ/AAAMvwAA4D4AABQ/AAAgPwAAeD4AABA/AAAgPwAAeD4AABA/AAAgvwAAeD4AABA/AAAgvwAAeD4AABA/AAAQPwAAeD4AACw/AAAQPwAAeD4AACw/AAAQPwAAeD4AACw/AAAQPwAAeD4AACw/AAAQvwAAeD4AACw/AAAQvwAAeD4AACw/AAAQvwAAeD4AACw/AAAQvwAAeD4AACw/AADwPgAAeD4AAEI/AADwPgAAeD4AAEI/AADwPgAAeD4AAEI/AADwPgAAeD4AAEI/AADwvgAAeD4AAEI/AADwvgAAeD4AAEI/AADwvgAAeD4AAEI/AADwvgAAeD4AAEI/AAD0PgAAeD4AAEY/AAD0PgAAeD4AAEY/AAD0PgAAeD4AAEY/AAD0PgAAeD4AAEY/AAD0vgAAeD4AAEY/AAD0vgAAeD4AAEY/AAD0vgAAeD4AAEY/AAD0vgAAeD4AAEY/AADkPgAArD4AAEg/AADkPgAArD4AAEg/AADkPgAArD4AAEg/AADkPgAArD4AAEg/AADkvgAArD4AAEg/AADkvgAArD4AAEg/AADkvgAArD4AAEg/AADkvgAArD4AAEg/AAC0PgAAwD4AAE4/AAC0PgAAwD4AAE4/AAC0PgAAwD4AAE4/AAC0PgAAwD4AAE4/AAC0vgAAwD4AAE4/AAC0vgAAwD4AAE4/AAC0vgAAwD4AAE4/AAC0vgAAwD4AAE4/AACIPgAArD4AAFI/AACIPgAArD4AAFI/AACIPgAArD4AAFI/AACIPgAArD4AAFI/AACIvgAArD4AAFI/AACIvgAArD4AAFI/AACIvgAArD4AAFI/AACIvgAArD4AAFI/AABoPgAAeD4AAFI/AABoPgAAeD4AAFI/AABoPgAAeD4AAFI/AABoPgAAeD4AAFI/AABovgAAeD4AAFI/AABovgAAeD4AAFI/AABovgAAeD4AAFI/AABovgAAeD4AAFI/AACIPgAAID4AAFI/AACIPgAAID4AAFI/AACIPgAAID4AAFI/AACIPgAAID4AAFI/AACIvgAAID4AAFI/AACIvgAAID4AAFI/AACIvgAAID4AAFI/AACIvgAAID4AAFI/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0PgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0vgAAeD4AAFQ/AAC0PgAA8D0AAE4/AAC0PgAA8D0AAE4/AAC0PgAA8D0AAE4/AAC0PgAA8D0AAE4/AAC0vgAA8D0AAE4/AAC0vgAA8D0AAE4/AAC0vgAA8D0AAE4/AAC0vgAA8D0AAE4/AADkPgAAID4AAEg/AADkPgAAID4AAEg/AADkPgAAID4AAEg/AADkPgAAID4AAEg/AADkvgAAID4AAEg/AADkvgAAID4AAEg/AADkvgAAID4AAEg/AADkvgAAID4AAEg/AAAAAAAA3D4AAD4/AAAAAAAA3D4AAD4/AAAAAAAA3D4AAD4/AAAAAAAA3D4AAD4/AAAAAAAAtD4AAFI/AAAAAAAAtD4AAFI/AAAAAAAAtD4AAFI/AAAAAAAAtD4AAFI/AAAAAAAAtD4AAFI/AAAAAAAAtD4AAFI/AAAAAAAALr8AADw/AAAAAAAALr8AADw/AAAAAAAALr8AADw/AAAAAAAApL4AAEg/AAAAAAAApL4AAEg/AAAAAAAApL4AAEg/AAAAAAAApL4AAEg/AAAAAAAAQL4AAEw/AAAAAAAAQL4AAEw/AAAAAAAAQL4AAEw/AAAAAAAAQL4AAEw/AAAAAAAARr8AADg/AAAAAAAARr8AADg/AAAAAAAARr8AADg/AAAAAAAARr8AADg/AAAAAAAA0D4AABo/AAAAAAAA0D4AABo/AAAAAAAA0D4AABo/AAAAAAAA0D4AABo/AAAAAAAAEj8AABI/AAAAAAAAEj8AABI/AAAAAAAAEj8AABI/AAAAAAAAEj8AABI/AAAAAAAAEj8AABI/AAAAAAAAEj8AABI/AAAAAAAAZj8AAAy/AAAAAAAAZj8AAAy/AAAAAAAAZj8AAAy/AAAAAAAAZj8AAAy/AAAAAAAAED8AAFq/AAAAAAAAED8AAFq/AAAAAAAAED8AAFq/AAAAAAAAED8AAFq/AAAAAAAAkD0AAFS/AAAAAAAAkD0AAFS/AAAAAAAAkD0AAFS/AAAAAAAAkD0AAFS/AAAAAAAAxL4AALS+AAAAAAAAxL4AALS+AAAAAAAAxL4AALS+AAAAAAAAxL4AALS+AABQPgAAQL4AABA/AABQPgAAQL4AABA/AABQPgAAQL4AABA/AABQPgAAQL4AABA/AABQvgAAQL4AABA/AABQvgAAQL4AABA/AABQvgAAQL4AABA/AABQvgAAQL4AABA/AACgPgAA4L4AABI/AACgPgAA4L4AABI/AACgPgAA4L4AABI/AACgPgAA4L4AABI/AACgvgAA4L4AABI/AACgvgAA4L4AABI/AACgvgAA4L4AABI/AACgvgAA4L4AABI/AAC0PgAAMr8AABI/AAC0PgAAMr8AABI/AAC0PgAAMr8AABI/AAC0PgAAMr8AABI/AAC0vgAAMr8AABI/AAC0vgAAMr8AABI/AAC0vgAAMr8AABI/AAC0vgAAMr8AABI/AAC8PgAAZL8AAAg/AAC8PgAAZL8AAAg/AAC8PgAAZL8AAAg/AAC8PgAAZL8AAAg/AAC8vgAAZL8AAAg/AAC8vgAAZL8AAAg/AAC8vgAAZL8AAAg/AAC8vgAAZL8AAAg/AACoPgAAcr8AAAY/AACoPgAAcr8AAAY/AACoPgAAcr8AAAY/AACoPgAAcr8AAAY/AACovgAAcr8AAAY/AACovgAAcr8AAAY/AACovgAAcr8AAAY/AACovgAAcr8AAAY/AAA4PgAAeL8AAA4/AAA4PgAAeL8AAA4/AAA4PgAAeL8AAA4/AAA4PgAAeL8AAA4/AAA4vgAAeL8AAA4/AAA4vgAAeL8AAA4/AAA4vgAAeL8AAA4/AAA4vgAAeL8AAA4/AAAAAAAAfL8AABQ/AAAAAAAAfL8AABQ/AAAAAAAAfL8AABQ/AAAAAAAAfL8AABQ/AADgPgAAEL4AAAg/AADgPgAAEL4AAAg/AADgPgAAEL4AAAg/AADgPgAAEL4AAAg/AADgvgAAEL4AAAg/AADgvgAAEL4AAAg/AADgvgAAEL4AAAg/AADgvgAAEL4AAAg/AAAiPwAAIL0AAAo/AAAiPwAAIL0AAAo/AAAiPwAAIL0AAAo/AAAiPwAAIL0AAAo/AAAivwAAIL0AAAo/AAAivwAAIL0AAAo/AAAivwAAIL0AAAo/AAAivwAAIL0AAAo/AABUPwAAGD4AAOQ+AABUPwAAGD4AAOQ+AABUPwAAGD4AAOQ+AABUPwAAGD4AAOQ+AABUvwAAGD4AAOQ+AABUvwAAGD4AAOQ+AABUvwAAGD4AAOQ+AABUvwAAGD4AAOQ+AABcPwAA3D4AABg/AABcPwAA3D4AABg/AABcPwAA3D4AABg/AABcPwAA3D4AABg/AABcvwAA3D4AABg/AABcvwAA3D4AABg/AABcvwAA3D4AABg/AABcvwAA3D4AABg/AAA2PwAA+D4AACA/AAA2PwAA+D4AACA/AAA2PwAA+D4AACA/AAA2PwAA+D4AACA/AAA2vwAA+D4AACA/AAA2vwAA+D4AACA/AAA2vwAA+D4AACA/AAA2vwAA+D4AACA/AAD8PgAAGj8AADA/AAD8PgAAGj8AADA/AAD8PgAAGj8AADA/AAD8PgAAGj8AADA/AAD8vgAAGj8AADA/AAD8vgAAGj8AADA/AAD8vgAAGj8AADA/AAD8vgAAGj8AADA/AACkPgAAQj8AADw/AACkPgAAQj8AADw/AACkPgAAQj8AADw/AACkPgAAQj8AADw/AACkvgAAQj8AADw/AACkvgAAQj8AADw/AACkvgAAQj8AADw/AACkvgAAQj8AADw/AAAgPgAAOD8AAEI/AAAgPgAAOD8AAEI/AAAgPgAAOD8AAEI/AAAgPgAAOD8AAEI/AAAgvgAAOD8AAEI/AAAgvgAAOD8AAEI/AAAgvgAAOD8AAEI/AAAgvgAAOD8AAEI/AACAPQAA/D4AAEA/AACAPQAA/D4AAEA/AACAPQAA/D4AAEA/AACAPQAA/D4AAEA/AACAvQAA/D4AAEA/AACAvQAA/D4AAEA/AACAvQAA/D4AAEA/AACAvQAA/D4AAEA/AAAoPgAA1D4AAEY/AAAoPgAA1D4AAEY/AAAoPgAA1D4AAEY/AAAoPgAA1D4AAEY/AAAovgAA1D4AAEY/AAAovgAA1D4AAEY/AAAovgAA1D4AAEY/AAAovgAA1D4AAEY/AAAAPgAAnD4AAEQ/AAAAPgAAnD4AAEQ/AAAAPgAAnD4AAEQ/AAAAPgAAnD4AAEQ/AAAAvgAAnD4AAEQ/AAAAvgAAnD4AAEQ/AAAAvgAAnD4AAEQ/AAAAvgAAnD4AAEQ/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQPgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AABQvgAAwD0AAD4/AADAPgAAgDwAADQ/AADAPgAAgDwAADQ/AADAPgAAgDwAADQ/AADAPgAAgDwAADQ/AADAvgAAgDwAADQ/AADAvgAAgDwAADQ/AADAvgAAgDwAADQ/AADAvgAAgDwAADQ/AAD8PgAAgD0AACw/AAD8PgAAgD0AACw/AAD8PgAAgD0AACw/AAD8PgAAgD0AACw/AAD8vgAAgD0AACw/AAD8vgAAgD0AACw/AAD8vgAAgD0AACw/AAD8vgAAgD0AACw/AAAgPwAAQD4AACY/AAAgPwAAQD4AACY/AAAgPwAAQD4AACY/AAAgPwAAQD4AACY/AAAgvwAAQD4AACY/AAAgvwAAQD4AACY/AAAgvwAAQD4AACY/AAAgvwAAQD4AACY/AAAkPwAAmD4AACY/AAAkPwAAmD4AACY/AAAkPwAAmD4AACY/AAAkPwAAmD4AACY/AAAkvwAAmD4AACY/AAAkvwAAmD4AACY/AAAkvwAAmD4AACY/AAAkvwAAmD4AACY/AAAaPwAAwD4AACo/AAAaPwAAwD4AACo/AAAaPwAAwD4AACo/AAAaPwAAwD4AACo/AAAavwAAwD4AACo/AAAavwAAwD4AACo/AAAavwAAwD4AACo/AAAavwAAwD4AACo/AADcPgAA4D4AADg/AADcPgAA4D4AADg/AADcPgAA4D4AADg/AADcPgAA4D4AADg/AADcvgAA4D4AADg/AADcvgAA4D4AADg/AADcvgAA4D4AADg/AADcvgAA4D4AADg/AACAPgAA8D4AAEI/AACAPgAA8D4AAEI/AACAPgAA8D4AAEI/AACAPgAA8D4AAEI/AACAvgAA8D4AAEI/AACAvgAA8D4AAEI/AACAvgAA8D4AAEI/AACAvgAA8D4AAEI/AAAAAAAARL8AADw/AAAAAAAARL8AADw/AAAAAAAARL8AADw/AADgPQAAOL8AADw/AADgPQAAOL8AADw/AADgPQAAOL8AADw/AADgPQAAOL8AADw/AADgPQAAOL8AADw/AADgvQAAOL8AADw/AADgvQAAOL8AADw/AADgvQAAOL8AADw/AADgvQAAOL8AADw/AADgvQAAOL8AADw/AADwPQAAVr8AADY/AADwPQAAVr8AADY/AADwPQAAVr8AADY/AADwPQAAVr8AADY/AADwvQAAVr8AADY/AADwvQAAVr8AADY/AADwvQAAVr8AADY/AADwvQAAVr8AADY/AACAPQAAYr8AADI/AACAPQAAYr8AADI/AACAPQAAYr8AADI/AACAPQAAYr8AADI/AACAvQAAYr8AADI/AACAvQAAYr8AADI/AACAvQAAYr8AADI/AACAvQAAYr8AADI/AAAAAAAAZL8AADA/AAAAAAAAZL8AADA/AAAAAAAAZL8AADA/AAAAAAAAZL8AADA/AAAAAAAASL4AAEA/AAAAAAAASL4AAEA/AAAAAAAAEL4AAD4/AAAAAAAAEL4AAD4/AAAAAAAAEL4AAD4/AAAAAAAAEL4AAD4/AAAAAAAAEL4AAD4/AAAAAAAAEL4AAD4/AADQPQAAGL4AAD4/AADQPQAAGL4AAD4/AADQPQAAGL4AAD4/AADQPQAAGL4AAD4/AADQvQAAGL4AAD4/AADQvQAAGL4AAD4/AADQvQAAGL4AAD4/AADQvQAAGL4AAD4/AAAAPgAAaL4AAEA/AAAAPgAAaL4AAEA/AAAAPgAAaL4AAEA/AAAAPgAAaL4AAEA/AAAAvgAAaL4AAEA/AAAAvgAAaL4AAEA/AAAAvgAAaL4AAEA/AAAAvgAAaL4AAEA/AACwPQAAlL4AAD4/AACwPQAAlL4AAD4/AACwPQAAlL4AAD4/AACwPQAAlL4AAD4/AACwPQAAlL4AAD4/AACwvQAAlL4AAD4/AACwvQAAlL4AAD4/AACwvQAAlL4AAD4/AACwvQAAlL4AAD4/AACwvQAAlL4AAD4/AADMPgAAQL0AACw/AADMPgAAQL0AACw/AADMPgAAQL0AACw/AADMPgAAQL0AACw/AADMvgAAQL0AACw/AADMvgAAQL0AACw/AADMvgAAQL0AACw/AADMvgAAQL0AACw/AAAePwAAYD0AACA/AAAePwAAYD0AACA/AAAePwAAYD0AACA/AAAePwAAYD0AACA/AAAevwAAYD0AACA/AAAevwAAYD0AACA/AAAevwAAYD0AACA/AAAevwAAYD0AACA/AAA6PwAAUD4AABo/AAA6PwAAUD4AABo/AAA6PwAAUD4AABo/AAA6PwAAUD4AABo/AAA6vwAAUD4AABo/AAA6vwAAUD4AABo/AAA6vwAAUD4AABo/AAA6vwAAUD4AABo/AAA+PwAAwD4AACg/AAA+PwAAwD4AACg/AAA+PwAAwD4AACg/AAA+PwAAwD4AACg/AAA+vwAAwD4AACg/AAA+vwAAwD4AACg/AAA+vwAAwD4AACg/AAA+vwAAwD4AACg/AAAwPwAA1D4AADo/AAAwPwAA1D4AADo/AAAwPwAA1D4AADo/AAAwPwAA1D4AADo/AAAwvwAA1D4AADo/AAAwvwAA1D4AADo/AAAwvwAA1D4AADo/AAAwvwAA1D4AADo/AADgPgAADD8AAEw/AADgPgAADD8AAEw/AADgPgAADD8AAEw/AADgPgAADD8AAEw/AADgvgAADD8AAEw/AADgvgAADD8AAEw/AADgvgAADD8AAEw/AADgvgAADD8AAEw/AACgPgAAJD8AAFY/AACgPgAAJD8AAFY/AACgPgAAJD8AAFY/AACgPgAAJD8AAFY/AACgvgAAJD8AAFY/AACgvgAAJD8AAFY/AACgvgAAJD8AAFY/AACgvgAAJD8AAFY/AABQPgAAHj8AAFo/AABQPgAAHj8AAFo/AABQPgAAHj8AAFo/AABQPgAAHj8AAFo/AABQvgAAHj8AAFo/AABQvgAAHj8AAFo/AABQvgAAHj8AAFo/AABQvgAAHj8AAFo/AADQPQAA3D4AAFg/AADQPQAA3D4AAFg/AADQPQAA3D4AAFg/AADQPQAA3D4AAFg/AADQvQAA3D4AAFg/AADQvQAA3D4AAFg/AADQvQAA3D4AAFg/AADQvQAA3D4AAFg/AAAAPgAA0L0AAFA/AAAAPgAA0L0AAFA/AAAAPgAA0L0AAFA/AAAAPgAA0L0AAFA/AAAAPgAA0L0AAFA/AAAAPgAA0L0AAFA/AAAAvgAA0L0AAFA/AAAAvgAA0L0AAFA/AAAAvgAA0L0AAFA/AAAAvgAA0L0AAFA/AAAAvgAA0L0AAFA/AAAAvgAA0L0AAFA/AABYPgAA5L4AADY/AABYPgAA5L4AADY/AABYPgAA5L4AADY/AABYPgAA5L4AADY/AABYvgAA5L4AADY/AABYvgAA5L4AADY/AABYvgAA5L4AADY/AABYvgAA5L4AADY/AACAPgAANL8AADA/AACAPgAANL8AADA/AACAPgAANL8AADA/AACAPgAANL8AADA/AACAvgAANL8AADA/AACAvgAANL8AADA/AACAvgAANL8AADA/AACAvgAANL8AADA/AACIPgAAUr8AACo/AACIPgAAUr8AACo/AACIPgAAUr8AACo/AACIPgAAUr8AACo/AACIvgAAUr8AACo/AACIvgAAUr8AACo/AACIvgAAUr8AACo/AACIvgAAUr8AACo/AABwPgAAar8AACI/AABwPgAAar8AACI/AABwPgAAar8AACI/AABwPgAAar8AACI/AABwvgAAar8AACI/AABwvgAAar8AACI/AABwvgAAar8AACI/AABwvgAAar8AACI/AAAoPgAAbr8AACI/AAAoPgAAbr8AACI/AAAoPgAAbr8AACI/AAAoPgAAbr8AACI/AAAovgAAbr8AACI/AAAovgAAbr8AACI/AAAovgAAbr8AACI/AAAovgAAbr8AACI/AAAAAAAAcr8AACQ/AAAAAAAAcr8AACQ/AAAAAAAAcr8AACQ/AAAAAAAAcr8AACQ/AAAAAAAAQD0AADo/AAAAAAAAQD0AADo/AAAAAAAAQD0AADo/AAAAAAAAQD0AADo/AAAAAAAAQD0AADo/AAAAAAAAQD0AADo/AAAAAAAAWD4AAEQ/AAAAAAAAWD4AAEQ/AAAAAAAAWD4AAEQ/AAAAAAAAWD4AAEQ/AACoPgAA9D4AAD4/AACoPgAA9D4AAD4/AACoPgAA9D4AAD4/AACoPgAA9D4AAD4/AACovgAA9D4AAD4/AACovgAA9D4AAD4/AACovgAA9D4AAD4/AACovgAA9D4AAD4/AAAoPgAAED4AAEA/AAAoPgAAED4AAEA/AAAoPgAAED4AAEA/AAAoPgAAED4AAEA/AAAovgAAED4AAEA/AAAovgAAED4AAEA/AAAovgAAED4AAEA/AAAovgAAED4AAEA/AAAIPgAAWD4AAEI/AAAIPgAAWD4AAEI/AAAIPgAAWD4AAEI/AAAIPgAAWD4AAEI/AAAIvgAAWD4AAEI/AAAIvgAAWD4AAEI/AAAIvgAAWD4AAEI/AAAIvgAAWD4AAEI/AADwPQAAML8AADw/AADwPQAAML8AADw/AADwPQAAML8AADw/AADwPQAAML8AADw/AADwvQAAML8AADw/AADwvQAAML8AADw/AADwvQAAML8AADw/AADwvQAAML8AADw/AACgPQAA5L4AAEA/AACgPQAA5L4AAEA/AACgPQAA5L4AAEA/AACgPQAA5L4AAEA/AACgvQAA5L4AAEA/AACgvQAA5L4AAEA/AACgvQAA5L4AAEA/AACgvQAA5L4AAEA/AAAAAAAA5L4AAEA/AAAAAAAA5L4AAEA/AAAAAAAA5L4AAEA/AAAAAAAA5L4AAEA/AAAAAAAAqL4AAD4/AAAAAAAAqL4AAD4/AAAAAAAAqL4AAD4/AAAAAAAAqL4AAD4/AADAPQAAjL4AAEg/AADAPQAAjL4AAEg/AADAPQAAjL4AAEg/AADAPQAAjL4AAEg/AADAvQAAjL4AAEg/AADAvQAAjL4AAEg/AADAvQAAjL4AAEg/AADAvQAAjL4AAEg/AAAIPgAAaL4AAEw/AAAIPgAAaL4AAEw/AAAIPgAAaL4AAEw/AAAIPgAAaL4AAEw/AAAIvgAAaL4AAEw/AAAIvgAAaL4AAEw/AAAIvgAAaL4AAEw/AAAIvgAAaL4AAEw/AADgPQAACL4AAEg/AADgPQAACL4AAEg/AADgPQAACL4AAEg/AADgPQAACL4AAEg/AADgvQAACL4AAEg/AADgvQAACL4AAEg/AADgvQAACL4AAEg/AADgvQAACL4AAEg/AAAgPQAAAL4AAEg/AAAgPQAAAL4AAEg/AAAgPQAAAL4AAEg/AAAgPQAAAL4AAEg/AAAgvQAAAL4AAEg/AAAgvQAAAL4AAEg/AAAgvQAAAL4AAEg/AAAgvQAAAL4AAEg/AAAAAAAAUL4AAFQ/AAAAAAAAUL4AAFQ/AAAAAAAAUL4AAFQ/AAAAAAAAUL4AAFQ/AAAAAAAAUL4AAFQ/AAAAAAAAUL4AAFQ/AABAPQAAGL4AAFA/AABAPQAAGL4AAFA/AABAPQAAGL4AAFA/AABAvQAAGL4AAFA/AABAvQAAGL4AAFA/AABAvQAAGL4AAFA/AADAPQAAIL4AAFA/AADAPQAAIL4AAFA/AADAPQAAIL4AAFA/AADAvQAAIL4AAFA/AADAvQAAIL4AAFA/AADAvQAAIL4AAFA/AADgPQAAaL4AAFQ/AADgPQAAaL4AAFQ/AADgPQAAaL4AAFQ/AADgPQAAaL4AAFQ/AADgvQAAaL4AAFQ/AADgvQAAaL4AAFQ/AADgvQAAaL4AAFQ/AADgvQAAaL4AAFQ/AACgPQAAgL4AAE4/AACgPQAAgL4AAE4/AACgPQAAgL4AAE4/AACgvQAAgL4AAE4/AACgvQAAgL4AAE4/AACgvQAAgL4AAE4/AAAAAAAAlL4AAE4/AAAAAAAAlL4AAE4/AAAAAAAAlL4AAE4/AAAAAAAAlL4AAE4/AACEPgAAoL4AAA4/AACEPgAAoL4AAA4/AACEPgAAoL4AAA4/AACEPgAAoL4AAA4/AACEvgAAoL4AAA4/AACEvgAAoL4AAA4/AACEvgAAoL4AAA4/AACEvgAAoL4AAA4/AAAoPgAAeL4AADY/AAAoPgAAeL4AADY/AAAoPgAAeL4AADY/AAAoPgAAeL4AADY/AAAovgAAeL4AADY/AAAovgAAeL4AADY/AAAovgAAeL4AADY/AAAovgAAeL4AADY/AAA4PgAAoL4AADY/AAA4PgAAoL4AADY/AAA4PgAAoL4AADY/AAA4PgAAoL4AADY/AAA4vgAAoL4AADY/AAA4vgAAoL4AADY/AAA4vgAAoL4AADY/AAA4vgAAoL4AADY/AABwPgAAgL4AAA4/AABwPgAAgL4AAA4/AABwPgAAgL4AAA4/AABwPgAAgL4AAA4/AABwvgAAgL4AAA4/AABwvgAAgL4AAA4/AABwvgAAgL4AAA4/AABwvgAAgL4AAA4/AAAAAAAAYL8AADA/AAAAAAAAYL8AADA/AAAAAAAAYL8AADA/AAAAAAAAYL8AADA/AABAPQAAXr8AADA/AABAPQAAXr8AADA/AABAPQAAXr8AADA/AABAPQAAXr8AADA/AABAvQAAXr8AADA/AABAvQAAXr8AADA/AABAvQAAXr8AADA/AABAvQAAXr8AADA/AADAPQAAUr8AADY/AADAPQAAUr8AADY/AADAPQAAUr8AADY/AADAPQAAUr8AADY/AADAvQAAUr8AADY/AADAvQAAUr8AADY/AADAvQAAUr8AADY/AADAvQAAUr8AADY/AADAPQAAPr8AADo/AADAPQAAPr8AADo/AADAPQAAPr8AADo/AADAPQAAPr8AADo/AADAvQAAPr8AADo/AADAvQAAPr8AADo/AADAvQAAPr8AADo/AADAvQAAPr8AADo/AAAAAAAASL8AACg/AAAAAAAASL8AACg/AAAAAAAASL8AACg/AAAAAAAASL8AACg/AADAPQAAQL8AACo/AADAPQAAQL8AACo/AADAPQAAQL8AACo/AADAPQAAQL8AACo/AADAvQAAQL8AACo/AADAvQAAQL8AACo/AADAvQAAQL8AACo/AADAvQAAQL8AACo/AADAPQAAUL8AACQ/AADAPQAAUL8AACQ/AADAPQAAUL8AACQ/AADAvQAAUL8AACQ/AADAvQAAUL8AACQ/AADAvQAAUL8AACQ/AABAPQAAWr8AACI/AABAPQAAWr8AACI/AABAPQAAWr8AACI/AABAPQAAWr8AACI/AABAvQAAWr8AACI/AABAvQAAWr8AACI/AABAvQAAWr8AACI/AABAvQAAWr8AACI/AAAAAAAAXL8AACI/AAAAAAAAXL8AACI/AAAAAAAAXL8AACI/AAAAAAAAXL8AACI/AAAwPgAAYD4AAEg/AAAwPgAAYD4AAEg/AAAwPgAAYD4AAEg/AAAwPgAAYD4AAEg/AAAwvgAAYD4AAEg/AAAwvgAAYD4AAEg/AAAwvgAAYD4AAEg/AAAwvgAAYD4AAEg/AABAPgAAID4AAEY/AABAPgAAID4AAEY/AABAPgAAID4AAEY/AABAPgAAID4AAEY/AABAvgAAID4AAEY/AABAvgAAID4AAEY/AABAvgAAID4AAEY/AABAvgAAID4AAEY/AACsPgAA3D4AAEI/AACsPgAA3D4AAEI/AACsPgAA3D4AAEI/AACsPgAA3D4AAEI/AACsvgAA3D4AAEI/AACsvgAA3D4AAEI/AACsvgAA3D4AAEI/AACsvgAA3D4AAEI/AACMPgAA2D4AAEY/AACMPgAA2D4AAEY/AACMPgAA2D4AAEY/AACMPgAA2D4AAEY/AACMvgAA2D4AAEY/AACMvgAA2D4AAEY/AACMvgAA2D4AAEY/AACMvgAA2D4AAEY/AADYPgAAzD4AAEY/AADYPgAAzD4AAEY/AADYPgAAzD4AAEY/AADYPgAAzD4AAEY/AADYvgAAzD4AAEY/AADYvgAAzD4AAEY/AADYvgAAzD4AAEY/AADYvgAAzD4AAEY/AAAQPwAAtD4AADI/AAAQPwAAtD4AADI/AAAQPwAAtD4AADI/AAAQPwAAtD4AADI/AAAQvwAAtD4AADI/AAAQvwAAtD4AADI/AAAQvwAAtD4AADI/AAAQvwAAtD4AADI/AAAWPwAAlD4AADA/AAAWPwAAlD4AADA/AAAWPwAAlD4AADA/AAAWPwAAlD4AADA/AAAWvwAAlD4AADA/AAAWvwAAlD4AADA/AAAWvwAAlD4AADA/AAAWvwAAlD4AADA/AAAUPwAASD4AAC4/AAAUPwAASD4AAC4/AAAUPwAASD4AAC4/AAAUPwAASD4AAC4/AAAUvwAASD4AAC4/AAAUvwAASD4AAC4/AAAUvwAASD4AAC4/AAAUvwAASD4AAC4/AAD0PgAA0D0AADg/AAD0PgAA0D0AADg/AAD0PgAA0D0AADg/AAD0PgAA0D0AADg/AAD0vgAA0D0AADg/AAD0vgAA0D0AADg/AAD0vgAA0D0AADg/AAD0vgAA0D0AADg/AADAPgAAgD0AAD4/AADAPgAAgD0AAD4/AADAPgAAgD0AAD4/AADAPgAAgD0AAD4/AADAvgAAgD0AAD4/AADAvgAAgD0AAD4/AADAvgAAgD0AAD4/AADAvgAAgD0AAD4/AABoPgAA4D0AAEg/AABoPgAA4D0AAEg/AABoPgAA4D0AAEg/AABoPgAA4D0AAEg/AABovgAA4D0AAEg/AABovgAA4D0AAEg/AABovgAA4D0AAEg/AABovgAA4D0AAEg/AAA4PgAAmD4AAEg/AAA4PgAAmD4AAEg/AAA4PgAAmD4AAEg/AAA4PgAAmD4AAEg/AAA4vgAAmD4AAEg/AAA4vgAAmD4AAEg/AAA4vgAAmD4AAEg/AAA4vgAAmD4AAEg/AABYPgAAwD4AAEg/AABYPgAAwD4AAEg/AABYPgAAwD4AAEg/AABYPgAAwD4AAEg/AABYvgAAwD4AAEg/AABYvgAAwD4AAEg/AABYvgAAwD4AAEg/AABYvgAAwD4AAEg/AABwPgAAuD4AAEI/AABwPgAAuD4AAEI/AABwvgAAuD4AAEI/AABwvgAAuD4AAEI/AABIPgAAmD4AAEI/AABIPgAAmD4AAEI/AABIvgAAmD4AAEI/AABIvgAAmD4AAEI/AAB4PgAAAD4AAEI/AAB4PgAAAD4AAEI/AAB4vgAAAD4AAEI/AAB4vgAAAD4AAEI/AADAPgAAsD0AADo/AADAPgAAsD0AADo/AADAvgAAsD0AADo/AADAvgAAsD0AADo/AADsPgAA8D0AADQ/AADsPgAA8D0AADQ/AADsvgAA8D0AADQ/AADsvgAA8D0AADQ/AAAMPwAAWD4AACw/AAAMPwAAWD4AACw/AAAMvwAAWD4AACw/AAAMvwAAWD4AACw/AAAOPwAAkD4AACw/AAAOPwAAkD4AACw/AAAOvwAAkD4AACw/AAAOvwAAkD4AACw/AAAIPwAArD4AAC4/AAAIPwAArD4AAC4/AAAIvwAArD4AAC4/AAAIvwAArD4AAC4/AADUPgAAyD4AAEA/AADUPgAAyD4AAEA/AADUvgAAyD4AAEA/AADUvgAAyD4AAEA/AACQPgAAzD4AAEQ/AACQPgAAzD4AAEQ/AACQvgAAzD4AAEQ/AACQvgAAzD4AAEQ/AACsPgAA0D4AAEA/AACsPgAA0D4AAEA/AACsvgAA0D4AAEA/AACsvgAA0D4AAEA/AABQPgAAMD4AAEA/AABQPgAAMD4AAEA/AABQvgAAMD4AAEA/AABQvgAAMD4AAEA/AABIPgAAaD4AAEA/AABIPgAAaD4AAEA/AABIvgAAaD4AAEA/AABIvgAAaD4AAEA/AADgPQAA7D4AABw/AADgPQAA7D4AABw/AADgPQAA7D4AABw/AADgPQAA7D4AABw/AADgPQAA7D4AABw/AADgvQAA7D4AABw/AADgvQAA7D4AABw/AADgvQAA7D4AABw/AADgvQAA7D4AABw/AADgvQAA7D4AABw/AABIPgAAKj8AAB4/AABIPgAAKj8AAB4/AABIPgAAKj8AAB4/AABIvgAAKj8AAB4/AABIvgAAKj8AAB4/AABIvgAAKj8AAB4/AACsPgAAMD8AABg/AACsPgAAMD8AABg/AACsPgAAMD8AABg/AACsvgAAMD8AABg/AACsvgAAMD8AABg/AACsvgAAMD8AABg/AAD4PgAADj8AAA4/AAD4PgAADj8AAA4/AAD4PgAADj8AAA4/AAD4PgAADj8AAA4/AAD4PgAADj8AAA4/AAD4vgAADj8AAA4/AAD4vgAADj8AAA4/AAD4vgAADj8AAA4/AAD4vgAADj8AAA4/AAD4vgAADj8AAA4/AAAuPwAA6D4AAPw+AAAuPwAA6D4AAPw+AAAuPwAA6D4AAPw+AAAuPwAA6D4AAPw+AAAuvwAA6D4AAPw+AAAuvwAA6D4AAPw+AAAuvwAA6D4AAPw+AAAuvwAA6D4AAPw+AABMPwAA0D4AAOw+AABMPwAA0D4AAOw+AABMPwAA0D4AAOw+AABMPwAA0D4AAOw+AABMvwAA0D4AAOw+AABMvwAA0D4AAOw+AABMvwAA0D4AAOw+AABMvwAA0D4AAOw+AABGPwAAKD4AAMA+AABGPwAAKD4AAMA+AABGPwAAKD4AAMA+AABGPwAAKD4AAMA+AABGvwAAKD4AAMA+AABGvwAAKD4AAMA+AABGvwAAKD4AAMA+AABGvwAAKD4AAMA+AAAaPwAAAAAAANQ+AAAaPwAAAAAAANQ+AAAaPwAAAAAAANQ+AAAaPwAAAAAAANQ+AAAavwAAAAAAANQ+AAAavwAAAAAAANQ+AAAavwAAAAAAANQ+AAAavwAAAAAAANQ+AADgPgAAwL0AAPA+AADgPgAAwL0AAPA+AADgPgAAwL0AAPA+AADgPgAAwL0AAPA+AADgPgAAwL0AAPA+AADgvgAAwL0AAPA+AADgvgAAwL0AAPA+AADgvgAAwL0AAPA+AADgvgAAwL0AAPA+AADgvgAAwL0AAPA+AAAAAAAAZj8AAJQ+AAAAAAAAZj8AAJQ+AAAAAAAAZj8AAJQ+AAAAAAAAZj8AAJQ+AAAAAAAAfD8AAKC9AAAAAAAAfD8AAKC9AAAAAAAAfD8AAKC9AAAAAAAAfD8AAKC9AAAAAAAASL4AACy/AAAAAAAASL4AACy/AAAAAAAASL4AACy/AAAAAAAASL4AACy/AAAAAAAA7L4AAEA+AAAAAAAA7L4AAEA+AAAAAAAA7L4AAEA+AAAAAAAA7L4AAEA+AAAAAAAAer8AAOw+AAAAAAAAer8AAOw+AAAAAAAAer8AAOw+AAAAAAAAer8AAOw+AAAAAAAATr8AALA+AAAAAAAATr8AALA+AAAAAAAATr8AALA+AAAAAAAATr8AALA+AAAAAAAAEr8AAKQ+AAAAAAAAEr8AAKQ+AAAAAAAAEr8AAKQ+AAAAAAAAEr8AAKQ+AAAAAAAA+L4AAJA+AAAAAAAA+L4AAJA+AAAAAAAA+L4AAJA+AAAAAAAA+L4AAJA+AABaPwAAcD4AAGA9AABaPwAAcD4AAGA9AABaPwAAcD4AAGA9AABaPwAAcD4AAGA9AABavwAAcD4AAGA9AABavwAAcD4AAGA9AABavwAAcD4AAGA9AABavwAAcD4AAGA9AABcPwAApD4AAEC9AABcPwAApD4AAEC9AABcPwAApD4AAEC9AABcPwAApD4AAEC9AABcPwAApD4AAEC9AABcvwAApD4AAEC9AABcvwAApD4AAEC9AABcvwAApD4AAEC9AABcvwAApD4AAEC9AABcvwAApD4AAEC9AABGPwAAiD4AAOC+AABGPwAAiD4AAOC+AABGPwAAiD4AAOC+AABGPwAAiD4AAOC+AABGPwAAiD4AAOC+AABGvwAAiD4AAOC+AABGvwAAiD4AAOC+AABGvwAAiD4AAOC+AABGvwAAiD4AAOC+AABGvwAAiD4AAOC+AADsPgAA4D4AADS/AADsPgAA4D4AADS/AADsPgAA4D4AADS/AADsPgAA4D4AADS/AADsvgAA4D4AADS/AADsvgAA4D4AADS/AADsvgAA4D4AADS/AADsvgAA4D4AADS/AAA8PwAAQL0AAJA9AAA8PwAAQL0AAJA9AAA8PwAAQL0AAJA9AAA8PwAAQL0AAJA9AAA8PwAAQL0AAJA9AAA8vwAAQL0AAJA9AAA8vwAAQL0AAJA9AAA8vwAAQL0AAJA9AAA8vwAAQL0AAJA9AAA8vwAAQL0AAJA9AAAYPwAAAL4AACi+AAAYPwAAAL4AACi+AAAYPwAAAL4AACi+AAAYPwAAAL4AACi+AAAYPwAAAL4AACi+AAAYvwAAAL4AACi+AAAYvwAAAL4AACi+AAAYvwAAAL4AACi+AAAYvwAAAL4AACi+AAAYvwAAAL4AACi+AAAkPwAAALwAANy+AAAkPwAAALwAANy+AAAkPwAAALwAANy+AAAkPwAAALwAANy+AAAkvwAAALwAANy+AAAkvwAAALwAANy+AAAkvwAAALwAANy+AAAkvwAAALwAANy+AACsPgAAYD0AACq/AACsPgAAYD0AACq/AACsPgAAYD0AACq/AACsPgAAYD0AACq/AACsvgAAYD0AACq/AACsvgAAYD0AACq/AACsvgAAYD0AACq/AACsvgAAYD0AACq/AABwPgAAtL4AANA+AABwPgAAtL4AANA+AABwPgAAtL4AANA+AABwPgAAtL4AANA+AABwvgAAtL4AANA+AABwvgAAtL4AANA+AABwvgAAtL4AANA+AABwvgAAtL4AANA+AAA4PgAA1L4AAIQ+AAA4PgAA1L4AAIQ+AAA4PgAA1L4AAIQ+AAA4PgAA1L4AAIQ+AAA4vgAA1L4AAIQ+AAA4vgAA1L4AAIQ+AAA4vgAA1L4AAIQ+AAA4vgAA1L4AAIQ+AACUPgAANr8AAMQ+AACUPgAANr8AAMQ+AACUPgAANr8AAMQ+AACUPgAANr8AAMQ+AACUvgAANr8AAMQ+AACUvgAANr8AAMQ+AACUvgAANr8AAMQ+AACUvgAANr8AAMQ+AACAPgAAAL8AAMg+AACAPgAAAL8AAMg+AACAPgAAAL8AAMg+AACAPgAAAL8AAMg+AACAvgAAAL8AAMg+AACAvgAAAL8AAMg+AACAvgAAAL8AAMg+AACAvgAAAL8AAMg+AACoPgAAar8AAMw+AACoPgAAar8AAMw+AACoPgAAar8AAMw+AACovgAAar8AAMw+AACovgAAar8AAMw+AACovgAAar8AAMw+AAAQPgAAQr8AALw+AAAQPgAAQr8AALw+AAAQPgAAQr8AALw+AAAQPgAAQr8AALw+AAAQvgAAQr8AALw+AAAQvgAAQr8AALw+AAAQvgAAQr8AALw+AAAQvgAAQr8AALw+AAAAPgAACr8AALg+AAAAPgAACr8AALg+AAAAPgAACr8AALg+AAAAPgAACr8AALg+AAAAvgAACr8AALg+AAAAvgAACr8AALg+AAAAvgAACr8AALg+AAAAvgAACr8AALg+AAAoPgAAcr8AAOA+AAAoPgAAcr8AAOA+AAAoPgAAcr8AAOA+AAAoPgAAcr8AAOA+AAAovgAAcr8AAOA+AAAovgAAcr8AAOA+AAAovgAAcr8AAOA+AAAovgAAcr8AAOA+AABgPgAAkL4AANw+AABgPgAAkL4AANw+AABgPgAAkL4AANw+AABgPgAAkL4AANw+AABgPgAAkL4AANw+AABgvgAAkL4AANw+AABgvgAAkL4AANw+AABgvgAAkL4AANw+AABgvgAAkL4AANw+AABgvgAAkL4AANw+AABYPgAAaL4AAPA+AABYPgAAaL4AAPA+AABYPgAAaL4AAPA+AABYPgAAaL4AAPA+AABYvgAAaL4AAPA+AABYvgAAaL4AAPA+AABYvgAAaL4AAPA+AABYvgAAaL4AAPA+AABQPgAAML4AAAA/AABQPgAAML4AAAA/AABQPgAAML4AAAA/AABQvgAAML4AAAA/AABQvgAAML4AAAA/AABQvgAAML4AAAA/AABYPgAAyL4AACg+AABYPgAAyL4AACg+AABYPgAAyL4AACg+AABYPgAAyL4AACg+AABYPgAAyL4AACg+AABYvgAAyL4AACg+AABYvgAAyL4AACg+AABYvgAAyL4AACg+AABYvgAAyL4AACg+AABYvgAAyL4AACg+AACYPgAAoL4AAIi+AACYPgAAoL4AAIi+AACYPgAAoL4AAIi+AACYPgAAoL4AAIi+AACYvgAAoL4AAIi+AACYvgAAoL4AAIi+AACYvgAAoL4AAIi+AACYvgAAoL4AAIi+AACwPgAAGL4AAAq/AACwPgAAGL4AAAq/AACwPgAAGL4AAAq/AACwPgAAGL4AAAq/AACwvgAAGL4AAAq/AACwvgAAGL4AAAq/AACwvgAAGL4AAAq/AACwvgAAGL4AAAq/AADoPgAAXj8AAMS+AADoPgAAXj8AAMS+AADoPgAAXj8AAMS+AADoPgAAXj8AAMS+AADovgAAXj8AAMS+AADovgAAXj8AAMS+AADovgAAXj8AAMS+AADovgAAXj8AAMS+AADoPgAAbj8AAJC9AADoPgAAbj8AAJC9AADoPgAAbj8AAJC9AADoPgAAbj8AAJC9AADovgAAbj8AAJC9AADovgAAbj8AAJC9AADovgAAbj8AAJC9AADovgAAbj8AAJC9AADoPgAAWj8AAHA+AADoPgAAWj8AAHA+AADoPgAAWj8AAHA+AADoPgAAWj8AAHA+AADovgAAWj8AAHA+AADovgAAWj8AAHA+AADovgAAWj8AAHA+AADovgAAWj8AAHA+AADsPgAABj8AANw+AADsPgAABj8AANw+AADsPgAABj8AANw+AADsPgAABj8AANw+AADsvgAABj8AANw+AADsvgAABj8AANw+AADsvgAABj8AANw+AADsvgAABj8AANw+AAA6PwAA0D4AAKw+AAA6PwAA0D4AAKw+AAA6PwAA0D4AAKw+AAA6PwAA0D4AAKw+AAA6vwAA0D4AAKw+AAA6vwAA0D4AAKw+AAA6vwAA0D4AAKw+AAA6vwAA0D4AAKw+AAAiPwAA6D4AAJA+AAAiPwAA6D4AAJA+AAAiPwAA6D4AAJA+AAAiPwAA6D4AAJA+AAAivwAA6D4AAJA+AAAivwAA6D4AAJA+AAAivwAA6D4AAJA+AAAivwAA6D4AAJA+AAAkPwAAND8AAGA9AAAkPwAAND8AAGA9AAAkPwAAND8AAGA9AAAkPwAAND8AAGA9AAAkvwAAND8AAGA9AAAkvwAAND8AAGA9AAAkvwAAND8AAGA9AAAkvwAAND8AAGA9AABMPwAAED8AAAA+AABMPwAAED8AAAA+AABMPwAAED8AAAA+AABMPwAAED8AAAA+AABMvwAAED8AAAA+AABMvwAAED8AAAA+AABMvwAAED8AAAA+AABMvwAAED8AAAA+AABMPwAAHj8AAPC9AABMPwAAHj8AAPC9AABMPwAAHj8AAPC9AABMPwAAHj8AAPC9AABMvwAAHj8AAPC9AABMvwAAHj8AAPC9AABMvwAAHj8AAPC9AABMvwAAHj8AAPC9AAAkPwAAQD8AAEi+AAAkPwAAQD8AAEi+AAAkPwAAQD8AAEi+AAAkPwAAQD8AAEi+AAAkvwAAQD8AAEi+AAAkvwAAQD8AAEi+AAAkvwAAQD8AAEi+AAAkvwAAQD8AAEi+AAAkPwAALj8AAOS+AAAkPwAALj8AAOS+AAAkPwAALj8AAOS+AAAkPwAALj8AAOS+AAAkvwAALj8AAOS+AAAkvwAALj8AAOS+AAAkvwAALj8AAOS+AAAkvwAALj8AAOS+AABMPwAACj8AALi+AABMPwAACj8AALi+AABMPwAACj8AALi+AABMvwAACj8AALi+AABMvwAACj8AALi+AABMvwAACj8AALi+AAAePwAAqD4AABa/AAAePwAAqD4AABa/AAAePwAAqD4AABa/AAAePwAAqD4AABa/AAAevwAAqD4AABa/AAAevwAAqD4AABa/AAAevwAAqD4AABa/AAAevwAAqD4AABa/AAD4PgAAwDwAAAy/AAD4PgAAwDwAAAy/AAD4PgAAwDwAAAy/AAD4PgAAwDwAAAy/AAD4PgAAwDwAAAy/AAD4vgAAwDwAAAy/AAD4vgAAwDwAAAy/AAD4vgAAwDwAAAy/AAD4vgAAwDwAAAy/AAD4vgAAwDwAAAy/AABSPwAAqD4AAFC+AABSPwAAqD4AAFC+AABSPwAAqD4AAFC+AABSPwAAqD4AAFC+AABSPwAAqD4AAFC+AABSvwAAqD4AAFC+AABSvwAAqD4AAFC+AABSvwAAqD4AAFC+AABSvwAAqD4AAFC+AABSvwAAqD4AAFC+AADQPgAAML4AABg+AADQPgAAML4AABg+AADQPgAAML4AABg+AADQPgAAML4AABg+AADQPgAAML4AABg+AADQvgAAML4AABg+AADQvgAAML4AABg+AADQvgAAML4AABg+AADQvgAAML4AABg+AADQvgAAML4AABg+AADcPgAASL4AAFi+AADcPgAASL4AAFi+AADcPgAASL4AAFi+AADcPgAASL4AAFi+AADcvgAASL4AAFi+AADcvgAASL4AAFi+AADcvgAASL4AAFi+AADcvgAASL4AAFi+AABkPwAA0D4AAHC+AABkPwAA0D4AAHC+AABkPwAA0D4AAHC+AABkPwAA0D4AAHC+AABkvwAA0D4AAHC+AABkvwAA0D4AAHC+AABkvwAA0D4AAHC+AABkvwAA0D4AAHC+AABGPwAAEL4AAAC+AABGPwAAEL4AAAC+AABGPwAAEL4AAAC+AABGPwAAEL4AAAC+AABGvwAAEL4AAAC+AABGvwAAEL4AAAC+AABGvwAAEL4AAAC+AABGvwAAEL4AAAC+AACFPwAA0L0AAKi+AACFPwAA0L0AAKi+AACFPwAA0L0AAKi+AACFPwAA0L0AAKi+AACFvwAA0L0AAKi+AACFvwAA0L0AAKi+AACFvwAA0L0AAKi+AACFvwAA0L0AAKi+AACkPwAAYD0AANy+AACkPwAAYD0AANy+AACkPwAAYD0AANy+AACkPwAAYD0AANy+AACkvwAAYD0AANy+AACkvwAAYD0AANy+AACkvwAAYD0AANy+AACkvwAAYD0AANy+AACtPwAApD4AANi+AACtPwAApD4AANi+AACtPwAApD4AANi+AACtPwAApD4AANi+AACtvwAApD4AANi+AACtvwAApD4AANi+AACtvwAApD4AANi+AACtvwAApD4AANi+AACePwAAAj8AANi+AACePwAAAj8AANi+AACePwAAAj8AANi+AACePwAAAj8AANi+AACevwAAAj8AANi+AACevwAAAj8AANi+AACevwAAAj8AANi+AACevwAAAj8AANi+AACDPwAA9D4AAKC+AACDPwAA9D4AAKC+AACDPwAA9D4AAKC+AACDPwAA9D4AAKC+AACDvwAA9D4AAKC+AACDvwAA9D4AAKC+AACDvwAA9D4AAKC+AACDvwAA9D4AAKC+AACCPwAA1D4AAJS+AACCPwAA1D4AAJS+AACCPwAA1D4AAJS+AACCPwAA1D4AAJS+AACCvwAA1D4AAJS+AACCvwAA1D4AAJS+AACCvwAA1D4AAJS+AACCvwAA1D4AAJS+AACYPwAA4D4AAMi+AACYPwAA4D4AAMi+AACYPwAA4D4AAMi+AACYPwAA4D4AAMi+AACYvwAA4D4AAMi+AACYvwAA4D4AAMi+AACYvwAA4D4AAMi+AACYvwAA4D4AAMi+AACiPwAAlD4AANC+AACiPwAAlD4AANC+AACiPwAAlD4AANC+AACiPwAAlD4AANC+AACivwAAlD4AANC+AACivwAAlD4AANC+AACivwAAlD4AANC+AACivwAAlD4AANC+AACbPwAAoD0AANC+AACbPwAAoD0AANC+AACbPwAAoD0AANC+AACbPwAAoD0AANC+AACbvwAAoD0AANC+AACbvwAAoD0AANC+AACbvwAAoD0AANC+AACbvwAAoD0AANC+AACEPwAAIL0AAJy+AACEPwAAIL0AAJy+AACEPwAAIL0AAJy+AACEPwAAIL0AAJy+AACEvwAAIL0AAJy+AACEvwAAIL0AAJy+AACEvwAAIL0AAJy+AACEvwAAIL0AAJy+AABUPwAAkL0AAAi+AABUPwAAkL0AAAi+AABUPwAAkL0AAAi+AABUPwAAkL0AAAi+AABUvwAAkL0AAAi+AABUvwAAkL0AAAi+AABUvwAAkL0AAAi+AABUvwAAkL0AAAi+AABsPwAAuD4AAGC+AABsPwAAuD4AAGC+AABsPwAAuD4AAGC+AABsPwAAuD4AAGC+AABsvwAAuD4AAGC+AABsvwAAuD4AAGC+AABsvwAAuD4AAGC+AABsvwAAuD4AAGC+AAByPwAAnD4AAJS+AAByPwAAnD4AAJS+AAByPwAAnD4AAJS+AAByPwAAnD4AAJS+AAByvwAAnD4AAJS+AAByvwAAnD4AAJS+AAByvwAAnD4AAJS+AAByvwAAnD4AAJS+AABiPwAAwLwAAFi+AABiPwAAwLwAAFi+AABiPwAAwLwAAFi+AABiPwAAwLwAAFi+AABivwAAwLwAAFi+AABivwAAwLwAAFi+AABivwAAwLwAAFi+AABivwAAwLwAAFi+AACFPwAAAAAAALy+AACFPwAAAAAAALy+AACFPwAAAAAAALy+AACFPwAAAAAAALy+AACFvwAAAAAAALy+AACFvwAAAAAAALy+AACFvwAAAAAAALy+AACFvwAAAAAAALy+AACYPwAAwD0AAOS+AACYPwAAwD0AAOS+AACYPwAAwD0AAOS+AACYPwAAwD0AAOS+AACYvwAAwD0AAOS+AACYvwAAwD0AAOS+AACYvwAAwD0AAOS+AACYvwAAwD0AAOS+AACePwAAgD4AAOS+AACePwAAgD4AAOS+AACePwAAgD4AAOS+AACePwAAgD4AAOS+AACevwAAgD4AAOS+AACevwAAgD4AAOS+AACevwAAgD4AAOS+AACevwAAgD4AAOS+AACWPwAAuD4AAOC+AACWPwAAuD4AAOC+AACWPwAAuD4AAOC+AACWPwAAuD4AAOC+AACWvwAAuD4AAOC+AACWvwAAuD4AAOC+AACWvwAAuD4AAOC+AACWvwAAuD4AAOC+AACDPwAAsD4AALi+AACDPwAAsD4AALi+AACDPwAAsD4AALi+AACDPwAAsD4AALi+AACDvwAAsD4AALi+AACDvwAAsD4AALi+AACDvwAAsD4AALi+AACDvwAAsD4AALi+AABYPwAAlD4AAFi+AABYPwAAlD4AAFi+AABYPwAAlD4AAFi+AABYPwAAlD4AAFi+AABYvwAAlD4AAFi+AABYvwAAlD4AAFi+AABYvwAAlD4AAFi+AABYvwAAlD4AAFi+AABWPwAAMD4AAIy+AABWPwAAMD4AAIy+AABWPwAAMD4AAIy+AABWPwAAMD4AAIy+AABWvwAAMD4AAIy+AABWvwAAMD4AAIy+AABWvwAAMD4AAIy+AABWvwAAMD4AAIy+AABCPwAAwD0AAIy+AABCPwAAwD0AAIy+AABCPwAAwD0AAIy+AABCPwAAwD0AAIy+AABCvwAAwD0AAIy+AABCvwAAwD0AAIy+AABCvwAAwD0AAIy+AABCvwAAwD0AAIy+AABSPwAAsD0AAIy+AABSPwAAsD0AAIy+AABSPwAAsD0AAIy+AABSvwAAsD0AAIy+AABSvwAAsD0AAIy+AABSvwAAsD0AAIy+AABYPwAAgDwAAIy+AABYPwAAgDwAAIy+AABYPwAAgDwAAIy+AABYPwAAgDwAAIy+AABYvwAAgDwAAIy+AABYvwAAgDwAAIy+AABYvwAAgDwAAIy+AABYvwAAgDwAAIy+AABQPwAAgLwAAIy+AABQPwAAgLwAAIy+AABQPwAAgLwAAIy+AABQPwAAgLwAAIy+AABQvwAAgLwAAIy+AABQvwAAgLwAAIy+AABQvwAAgLwAAIy+AABQvwAAgLwAAIy+AAA6PwAAAAAAAJC9AAA6PwAAAAAAAJC9AAA6PwAAAAAAAJC9AAA6PwAAAAAAAJC9AAA6vwAAAAAAAJC9AAA6vwAAAAAAAJC9AAA6vwAAAAAAAJC9AAA6vwAAAAAAAJC9AAA4PwAAwLwAADC+AAA4PwAAwLwAADC+AAA4PwAAwLwAADC+AAA4PwAAwLwAADC+AAA4PwAAwLwAADC+AAA4vwAAwLwAADC+AAA4vwAAwLwAADC+AAA4vwAAwLwAADC+AAA4vwAAwLwAADC+AAA4vwAAwLwAADC+AAA4PwAAID0AAEC+AAA4PwAAID0AAEC+AAA4PwAAID0AAEC+AAA4PwAAID0AAEC+AAA4PwAAID0AAEC+AAA4vwAAID0AAEC+AAA4vwAAID0AAEC+AAA4vwAAID0AAEC+AAA4vwAAID0AAEC+AAA4vwAAID0AAEC+AABMPwAAUD4AAFi+AABMPwAAUD4AAFi+AABMPwAAUD4AAFi+AABMPwAAUD4AAFi+AABMvwAAUD4AAFi+AABMvwAAUD4AAFi+AABMvwAAUD4AAFi+AABMvwAAUD4AAFi+AABkPwAAeD4AAIi+AABkPwAAeD4AAIi+AABkPwAAeD4AAIi+AABkPwAAeD4AAIi+AABkvwAAeD4AAIi+AABkvwAAeD4AAIi+AABkvwAAeD4AAIi+AABkvwAAeD4AAIi+AABkPwAAcD4AAKS+AABkPwAAcD4AAKS+AABkPwAAcD4AAKS+AABkPwAAcD4AAKS+AABkvwAAcD4AAKS+AABkvwAAcD4AAKS+AABkvwAAcD4AAKS+AABkvwAAcD4AAKS+AABQPwAAgLwAAKS+AABQPwAAgLwAAKS+AABQPwAAgLwAAKS+AABQvwAAgLwAAKS+AABQvwAAgLwAAKS+AABQvwAAgLwAAKS+AABaPwAAgDwAAKS+AABaPwAAgDwAAKS+AABaPwAAgDwAAKS+AABaPwAAgDwAAKS+AABavwAAgDwAAKS+AABavwAAgDwAAKS+AABavwAAgDwAAKS+AABavwAAgDwAAKS+AABUPwAAoD0AAKS+AABUPwAAoD0AAKS+AABUPwAAoD0AAKS+AABUPwAAoD0AAKS+AABUvwAAoD0AAKS+AABUvwAAoD0AAKS+AABUvwAAoD0AAKS+AABUvwAAoD0AAKS+AABEPwAAwD0AAKS+AABEPwAAwD0AAKS+AABEPwAAwD0AAKS+AABEvwAAwD0AAKS+AABEvwAAwD0AAKS+AABEvwAAwD0AAKS+AABYPwAAMD4AAKS+AABYPwAAMD4AAKS+AABYPwAAMD4AAKS+AABYPwAAMD4AAKS+AABYvwAAMD4AAKS+AABYvwAAMD4AAKS+AABYvwAAMD4AAKS+AABYvwAAMD4AAKS+AACFPwAAqD4AANS+AACFPwAAqD4AANS+AACFPwAAqD4AANS+AACFPwAAqD4AANS+AACFvwAAqD4AANS+AACFvwAAqD4AANS+AACFvwAAqD4AANS+AACFvwAAqD4AANS+AACYPwAAsD4AAPi+AACYPwAAsD4AAPi+AACYPwAAsD4AAPi+AACYPwAAsD4AAPi+AACYvwAAsD4AAPi+AACYvwAAsD4AAPi+AACYvwAAsD4AAPi+AACYvwAAsD4AAPi+AAChPwAAeD4AAPy+AAChPwAAeD4AAPy+AAChPwAAeD4AAPy+AAChPwAAeD4AAPy+AAChvwAAeD4AAPy+AAChvwAAeD4AAPy+AAChvwAAeD4AAPy+AAChvwAAeD4AAPy+AACbPwAAsD0AAPi+AACbPwAAsD0AAPi+AACbPwAAsD0AAPi+AACbPwAAsD0AAPi+AACbvwAAsD0AAPi+AACbvwAAsD0AAPi+AACbvwAAsD0AAPi+AACbvwAAsD0AAPi+AACGPwAAAAAAANi+AACGPwAAAAAAANi+AACGPwAAAAAAANi+AACGPwAAAAAAANi+AACGvwAAAAAAANi+AACGvwAAAAAAANi+AACGvwAAAAAAANi+AACGvwAAAAAAANi+AABiPwAAgLwAAIi+AABiPwAAgLwAAIi+AABiPwAAgLwAAIi+AABiPwAAgLwAAIi+AABivwAAgLwAAIi+AABivwAAgLwAAIi+AABivwAAgLwAAIi+AABivwAAgLwAAIi+AAB0PwAAlD4AALC+AAB0PwAAlD4AALC+AAB0PwAAlD4AALC+AAB0PwAAlD4AALC+AAB0vwAAlD4AALC+AAB0vwAAlD4AALC+AAB0vwAAlD4AALC+AAB0vwAAlD4AALC+AABkPwAA4D0AAKi+AABkPwAA4D0AAKi+AABkPwAA4D0AAKi+AABkPwAA4D0AAKi+AABkvwAA4D0AAKi+AABkvwAA4D0AAKi+AABkvwAA4D0AAKi+AABkvwAA4D0AAKi+AABwPwAAgD0AAKy+AABwPwAAgD0AAKy+AABwPwAAgD0AAKy+AABwPwAAgD0AAKy+AABwvwAAgD0AAKy+AABwvwAAgD0AAKy+AABwvwAAgD0AAKy+AABwvwAAgD0AAKy+AACAPwAAAD4AALy+AACAPwAAAD4AALy+AACAPwAAAD4AALy+AACAPwAAAD4AALy+AACAvwAAAD4AALy+AACAvwAAAD4AALy+AACAvwAAAD4AALy+AACAvwAAAD4AALy+AAB2PwAAMD4AALS+AAB2PwAAMD4AALS+AAB2PwAAMD4AALS+AAB2PwAAMD4AALS+AAB2vwAAMD4AALS+AAB2vwAAMD4AALS+AAB2vwAAMD4AALS+AAB2vwAAMD4AALS+AACCPwAAcD4AAMC+AACCPwAAcD4AAMC+AACCPwAAcD4AAMC+AACCPwAAcD4AAMC+AACCvwAAcD4AAMC+AACCvwAAcD4AAMC+AACCvwAAcD4AAMC+AACCvwAAcD4AAMC+AACHPwAAQD4AAMS+AACHPwAAQD4AAMS+AACHPwAAQD4AAMS+AACHPwAAQD4AAMS+AACHvwAAQD4AAMS+AACHvwAAQD4AAMS+AACHvwAAQD4AAMS+AACHvwAAQD4AAMS+AACOPwAAWD4AAMi+AACOPwAAWD4AAMi+AACOPwAAWD4AAMi+AACOvwAAWD4AAMi+AACOvwAAWD4AAMi+AACOvwAAWD4AAMi+AACLPwAAjD4AAMi+AACLPwAAjD4AAMi+AACLPwAAjD4AAMi+AACLPwAAjD4AAMi+AACLvwAAjD4AAMi+AACLvwAAjD4AAMi+AACLvwAAjD4AAMi+AACLvwAAjD4AAMi+AACDPwAA4D4AAPi+AACDPwAA4D4AAPi+AACDPwAA4D4AAPi+AACDPwAA4D4AAPi+AACDvwAA4D4AAPi+AACDvwAA4D4AAPi+AACDvwAA4D4AAPi+AACDvwAA4D4AAPi+AACgPwAA8D4AAAy/AACgPwAA8D4AAAy/AACgPwAA8D4AAAy/AACgPwAA8D4AAAy/AACgvwAA8D4AAAy/AACgvwAA8D4AAAy/AACgvwAA8D4AAAy/AACgvwAA8D4AAAy/AACvPwAAmD4AAAC/AACvPwAAmD4AAAC/AACvPwAAmD4AAAC/AACvvwAAmD4AAAC/AACvvwAAmD4AAAC/AACvvwAAmD4AAAC/AACoPwAAYD0AAAi/AACoPwAAYD0AAAi/AACoPwAAYD0AAAi/AACoPwAAYD0AAAi/AACovwAAYD0AAAi/AACovwAAYD0AAAi/AACovwAAYD0AAAi/AACovwAAYD0AAAi/AACFPwAAsL0AAPy+AACFPwAAsL0AAPy+AACFPwAAsL0AAPy+AACFPwAAsL0AAPy+AACFvwAAsL0AAPy+AACFvwAAsL0AAPy+AACFvwAAsL0AAPy+AACFvwAAsL0AAPy+AABKPwAAAL4AAKi+AABKPwAAAL4AAKi+AABKPwAAAL4AAKi+AABKPwAAAL4AAKi+AABKvwAAAL4AAKi+AABKvwAAAL4AAKi+AABKvwAAAL4AAKi+AABKvwAAAL4AAKi+AABcPwAAxD4AAMS+AABcPwAAxD4AAMS+AABcPwAAxD4AAMS+AABcPwAAxD4AAMS+AABcvwAAxD4AAMS+AABcvwAAxD4AAMS+AABcvwAAxD4AAMS+AABcvwAAxD4AAMS+fRNSPn0TUr+rjAi/Xku4Pu5GAr+OLkg/9DwqPw+STb4tKDg/hqpMP/K0s77Cl/m+hqpMv/K0s77Cl/m+9Dwqvw+STb4tKDg/Xku4vu5GAr+OLkg/fRNSvn0TUr+rjAi/Xku4Pu5GAr+OLkg/w8LUPgAXS7/yzeM+9DwqPw+STb4tKDg/T1VUP/hum77XFvA+T1VUv/hum77XFvA+9Dwqvw+STb4tKDg/w8LUvgAXS7/yzeM+Xku4vu5GAr+OLkg/w8LUPgAXS7/yzeM+T1VUP/hum77XFvA+T1VUv/hum77XFvA+w8LUvgAXS7/yzeM+kwyKvihfV7994+8+w8LUPgAXS7/yzeM+w8LUvgAXS7/yzeM+kwyKPihfV7994+8+kwyKvihfV7994+8+hxuhvZgXCr9FnlY/Xku4Pu5GAr+OLkg/w8LUPgAXS7/yzeM+w8LUvgAXS7/yzeM+Xku4vu5GAr+OLkg/hxuhPZgXCr9FnlY/kwyKPihfV7994+8+jDnYvhnYR7+w4eu+hxuhvZgXCr9FnlY/fRNSPn0TUr+rjAi/Xku4Pu5GAr+OLkg/Xku4vu5GAr+OLkg/fRNSvn0TUr+rjAi/hxuhPZgXCr9FnlY/jDnYPhnYR7+w4eu+1lBQv26Osr49E+6+CRnwvp2zRr4blVw/jDnYvhnYR7+w4eu+hxuhvZgXCr9FnlY/hxuhPZgXCr9FnlY/jDnYPhnYR7+w4eu+CRnwPp2zRr4blVw/1lBQP26Osr49E+6+vUlFv+Ofq75Dvgo/CRnwvp2zRr4blVw/kwyKvihfV7994+8+hxuhvZgXCr9FnlY/hxuhPZgXCr9FnlY/kwyKPihfV7994+8+CRnwPp2zRr4blVw/vUlFP+Ofq75Dvgo/vUlFv+Ofq75Dvgo/kwyKvihfV7994+8+kwyKPihfV7994+8+vUlFP+Ofq75Dvgo/vUlFv+Ofq75Dvgo/YmdEv3Uepz4qWQ0/YmdEP3Uepz4qWQ0/vUlFP+Ofq75Dvgo/vUlFv+Ofq75Dvgo/YmdEv3Uepz4qWQ0/IBb0vuZEQz6DrVs/CRnwvp2zRr4blVw/CRnwPp2zRr4blVw/IBb0PuZEQz6DrVs/YmdEP3Uepz4qWQ0/vUlFP+Ofq75Dvgo/ovVSv0cZpT7Yee6+1lBQv26Osr49E+6+IBb0vuZEQz6DrVs/CRnwvp2zRr4blVw/CRnwPp2zRr4blVw/IBb0PuZEQz6DrVs/1lBQP26Osr49E+6+ovVSP0cZpT7Yee6+ovVSv0cZpT7Yee6+IBb0vuZEQz6DrVs/jDnYvhnYRz+w4eu+L2zCvSPRET8ZAVE/L2zCPSPRET8ZAVE/jDnYPhnYRz+w4eu+IBb0PuZEQz6DrVs/ovVSP0cZpT7Yee6+YmdEv3Uepz4qWQ0/IBb0vuZEQz6DrVs/pfyAvr08UT+7pgQ/L2zCvSPRET8ZAVE/L2zCPSPRET8ZAVE/pfyAPr08UT+7pgQ/IBb0PuZEQz6DrVs/YmdEP3Uepz4qWQ0/YmdEv3Uepz4qWQ0/pfyAvr08UT+7pgQ/pfyAPr08UT+7pgQ/YmdEP3Uepz4qWQ0/pfyAvr08UT+7pgQ/Af/TPn1oRD/zyvo+Af/Tvn1oRD/zyvo+pfyAPr08UT+7pgQ/pfyAvr08UT+7pgQ/L2zCvSPRET8ZAVE/pcW7Ptl5CT9rekI/Af/TPn1oRD/zyvo+Af/Tvn1oRD/zyvo+pcW7vtl5CT9rekI/L2zCPSPRET8ZAVE/pfyAPr08UT+7pgQ/jDnYvhnYRz+w4eu+L2zCvSPRET8ZAVE/fRNSPn0TUj+rjAi/pcW7Ptl5CT9rekI/pcW7vtl5CT9rekI/fRNSvn0TUj+rjAi/L2zCPSPRET8ZAVE/jDnYPhnYRz+w4eu+fRNSPn0TUj+rjAi/pcW7Ptl5CT9rekI/P90rP37SST7C5jY/uKRPP2Adpj4PLPm+uKRPv2Adpj4PLPm+P90rv37SST7C5jY/pcW7vtl5CT9rekI/fRNSvn0TUj+rjAi/pcW7Ptl5CT9rekI/Af/TPn1oRD/zyvo+P90rP37SST7C5jY/PudTP6sqlz7QS/Q+PudTv6sqlz7QS/Q+P90rv37SST7C5jY/Af/Tvn1oRD/zyvo+pcW7vtl5CT9rekI/Af/TPn1oRD/zyvo+PudTP6sqlz7QS/Q+PudTv6sqlz7QS/Q+Af/Tvn1oRD/zyvo+PudTP6sqlz7QS/Q+T1VUP/hum77XFvA+T1VUv/hum77XFvA+PudTv6sqlz7QS/Q+9DwqPw+STb4tKDg/P90rP37SST7C5jY/PudTP6sqlz7QS/Q+T1VUP/hum77XFvA+T1VUv/hum77XFvA+PudTv6sqlz7QS/Q+P90rv37SST7C5jY/9Dwqvw+STb4tKDg/9DwqPw+STb4tKDg/P90rP37SST7C5jY/hqpMP/K0s77Cl/m+uKRPP2Adpj4PLPm+uKRPv2Adpj4PLPm+hqpMv/K0s77Cl/m+P90rv37SST7C5jY/9Dwqvw+STb4tKDg/7tHMPixcf71+FGo/NuLMPhonaj0aJ2o/hqpMP/K0s77Cl/m+uKRPP2Adpj4PLPm+uKRPv2Adpj4PLPm+hqpMv/K0s77Cl/m+NuLMvhonaj0aJ2o/7tHMvixcf71+FGo/fRNSPn0TUj+rjAi/qW2bPueOKT4dNXA/NuLMPhonaj0aJ2o/uKRPP2Adpj4PLPm+uKRPv2Adpj4PLPm+NuLMvhonaj0aJ2o/qW2bvueOKT4dNXA/fRNSvn0TUj+rjAi/jDnYvhnYRz+w4eu+rubLPW4SMT4c2no/fRNSPn0TUj+rjAi/qW2bPueOKT4dNXA/qW2bvueOKT4dNXA/fRNSvn0TUj+rjAi/rubLvW4SMT4c2no/jDnYPhnYRz+w4eu+ovVSv0cZpT7Yee6+jDnYvhnYRz+w4eu+Smp/vZPY1DxKan8/rubLPW4SMT4c2no/rubLvW4SMT4c2no/Smp/PZPY1DxKan8/jDnYPhnYRz+w4eu+ovVSP0cZpT7Yee6+ovVSv0cZpT7Yee6+1lBQv26Osr49E+6+Smp/vZPY1DxKan8/GGZ/vUQu6LwYZn8/GGZ/PUQu6LwYZn8/Smp/PZPY1DxKan8/1lBQP26Osr49E+6+ovVSP0cZpT7Yee6+1lBQv26Osr49E+6+jDnYvhnYR7+w4eu+GGZ/vUQu6LwYZn8/R4/BPePdO74vfXo/R4/BvePdO74vfXo/GGZ/PUQu6LwYZn8/jDnYPhnYR7+w4eu+1lBQP26Osr49E+6+Smp/vZPY1DxKan8/GGZ/vUQu6LwYZn8/R4/BPePdO74vfXo/rubLPW4SMT4c2no/qW2bPueOKT4dNXA/6iadPjCaM75AeG8/7tHMPixcf71+FGo/NuLMPhonaj0aJ2o/NuLMvhonaj0aJ2o/7tHMvixcf71+FGo/6iadvjCaM75AeG8/qW2bvueOKT4dNXA/rubLvW4SMT4c2no/R4/BvePdO74vfXo/GGZ/PUQu6LwYZn8/Smp/PZPY1DxKan8/jDnYvhnYR7+w4eu+R4/BPePdO74vfXo/fRNSPn0TUr+rjAi/6iadPjCaM75AeG8/6iadvjCaM75AeG8/fRNSvn0TUr+rjAi/R4/BvePdO74vfXo/jDnYPhnYR7+w4eu+fRNSPn0TUr+rjAi/6iadPjCaM75AeG8/7tHMPixcf71+FGo/hqpMP/K0s77Cl/m+hqpMv/K0s77Cl/m+7tHMvixcf71+FGo/6iadvjCaM75AeG8/fRNSvn0TUr+rjAi/bIkWv3QsDj9siRY/UdcHv6uiTz8QDny+UdcHP6uiTz8QDny+bIkWP3QsDj9siRY/bIkWv3QsDj9siRY/dMzKviI83b5gaE8/iAI+vrVYfb4+c3M/iAI+PrVYfb4+c3M/dMzKPiI83b5gaE8/bIkWP3QsDj9siRY/Lhcsuxxyhr1ocn8/AAAAAAAAAAAAAIA/LhcsOxxyhr1ocn8/0GbXvk0xYb+aJmM+RB+TvkQfE7+wKUQ/RB+TPkQfE7+wKUQ/0GbXPk0xYb+aJmM+NzViv58Btj5kAZw+N3snvzMVGj9Oeeo+N3snPzMVGj9Oeeo+NzViP58Btj5kAZw+dzucvnbocb926PE9NhNlvqdmJ7+rBTk/NhNlPqdmJ7+rBTk/dzucPnbocb926PE9UdcHv6uiTz8QDny+HHMlvtcVPT6rLHg/HHMlPtcVPT6rLHg/UdcHP6uiTz8QDny+NW5ovpnzEj8taEk/HHMlvtcVPT6rLHg/+OotvWM6aj+8ec0++OotPWM6aj+8ec0+HHMlPtcVPT6rLHg/NW5oPpnzEj8taEk/y82yvhA+GD8kYTm/rJICvplyeT+JlD2+rJICPplyeT+JlD2+y82yPhA+GD8kYTm/y82yvhA+GD8kYTm/o5Cwvkwo7b3hdW6/o5CwPkwo7b3hdW6/y82yPhA+GD8kYTm/dte9vntQ8r66kEy/o5Cwvkwo7b3hdW6/o5CwPkwo7b3hdW6/dte9PntQ8r66kEy/6A+fvjUVVL/cl+6+lQWPvmuXc7/txwO+lQWPPmuXc7/txwO+6A+fPjUVVL/cl+6+/VA0PjxlYb88ZeG+1PWlPpKaUb+in/I+hUBwP670Iz6cppw+GdFwP/nmqj7HlXi9GdFwv/nmqj7HlXi9hUBwv670Iz6cppw+1PWlvpKaUb+in/I+/VA0vjxlYb88ZeG+GJdHP7Q8uD0Mph4/7PFPP7shmj5tx/8+BXppP0DfrD65cW6+92prPy5ADT6TVby+92prvy5ADT6TVby+BXppv0DfrD65cW6+7PFPv7shmj5tx/8+GJdHv7Q8uD0Mph4/OdZEP1cyT73YKiM/GJdHP7Q8uD0Mph4/92prPy5ADT6TVby+6Y5uP1jCJj60/KW+6Y5uv1jCJj60/KW+92prvy5ADT6TVby+GJdHv7Q8uD0Mph4/OdZEv1cyT73YKiM/NhcXP8D66L6msio/OdZEP1cyT73YKiM/6Y5uP1jCJj60/KW+R7F1P2ZmC7yZwY++R7F1v2ZmC7yZwY++6Y5uv1jCJj60/KW+OdZEv1cyT73YKiM/NhcXv8D66L6msio/HmryPcmHd79LZWe+7z1gPvZdXb/ebec+NhcXP8D66L6msio/R7F1P2ZmC7yZwY++R7F1v2ZmC7yZwY++NhcXv8D66L6msio/7z1gvvZdXb/ebec+HmryvcmHd79LZWe+uuvrPdPMe79MKA6+HmryPcmHd79LZWe+ZBf8PXiUXL9kF/w+7z1gPvZdXb/ebec+7z1gvvZdXb/ebec+ZBf8vXiUXL9kF/w+HmryvcmHd79LZWe+uuvrvdPMe79MKA6+ZBf8vXiUXL9kF/w+uuvrvdPMe79MKA6+uuvrPdPMe79MKA6+ZBf8PXiUXL9kF/w+/VA0PjxlYb88ZeG+1PWlPpKaUb+in/I+/hHFPkMkUL89pN++bn7FPjuzKb/mRiQ/bn7FvjuzKb/mRiQ//hHFvkMkUL89pN++1PWlvpKaUb+in/I+/VA0vjxlYb88ZeG+/hHFPkMkUL89pN++bn7FPjuzKb/mRiQ/DMMIP6UoOb8VCuC+94AwPziv1r4JMhc/94Awvziv1r4JMhc/DMMIv6UoOb8VCuC+bn7FvjuzKb/mRiQ//hHFvkMkUL89pN++DMMIP6UoOb8VCuC+46MoP/EVur7joyg/94AwPziv1r4JMhc/bStbP7A8CT73hv++bStbv7A8CT73hv++94Awvziv1r4JMhc/46Mov/EVur7joyg/DMMIv6UoOb8VCuC+r3SQPttFaj8fc5O+lOoLP63MvT6cO0A/46MoP/EVur7joyg/bStbP7A8CT73hv++bStbv7A8CT73hv++46Mov/EVur7joyg/lOoLv63MvT6cO0A/r3SQvttFaj8fc5O+r3SQPttFaj8fc5O+U7K8PkIyYD8zoZ++hKYBP6d8JT/EFRI/lOoLP63MvT6cO0A/lOoLv63MvT6cO0A/hKYBv6d8JT/EFRI/U7K8vkIyYD8zoZ++r3SQvttFaj8fc5O+U7K8PkIyYD8zoZ++hKYBP6d8JT/EFRI/VqYXPwMbPz+YI5u+cfcbP4RGBD8I/hk/cfcbv4RGBD8I/hk/VqYXvwMbPz+YI5u+hKYBv6d8JT/EFRI/U7K8vkIyYD8zoZ++wHR6voYVXj8Kwt2+x300ves1KT+kxT8/VqYXPwMbPz+YI5u+cfcbP4RGBD8I/hk/cfcbv4RGBD8I/hk/VqYXvwMbPz+YI5u+x300Pes1KT+kxT8/wHR6PoYVXj8Kwt2+SOJZv4osvT5W9L6+ToA5vyUyoz5paxw/wHR6voYVXj8Kwt2+x300ves1KT+kxT8/x300Pes1KT+kxT8/wHR6PoYVXj8Kwt2+ToA5PyUyoz5paxw/SOJZP4osvT5W9L6+SOJZv4osvT5W9L6+ToA5vyUyoz5paxw/bIkWv3QsDj9siRY/UdcHv6uiTz8QDny+UdcHP6uiTz8QDny+bIkWP3QsDj9siRY/ToA5PyUyoz5paxw/SOJZP4osvT5W9L6+hklVvhghGT3KM3o/GvuRvG53fz4F3Xc/dMzKPiI83b5gaE8/zzoJP24gyL7BjD8/zzoJv24gyL7BjD8/dMzKviI83b5gaE8/GvuRPG53fz4F3Xc/hklVPhghGT3KM3o//b/EvoS1K72WGWw/hklVvhghGT3KM3o/iAI+PrVYfb4+c3M/dMzKPiI83b5gaE8/dMzKviI83b5gaE8/iAI+vrVYfb4+c3M/hklVPhghGT3KM3o//b/EPoS1K72WGWw/rHMSvyAW9L5J3Co/TTUMvkrJQL+hviQ/KXYKvuwziT4jMnQ/kaLAPjPkdj3tr2w/kaLAvjPkdj3tr2w/KXYKPuwziT4jMnQ/TTUMPkrJQL+hviQ/rHMSPyAW9L5J3Co/TTUMvkrJQL+hviQ/ouarPvlXk75KnGU/kaLAPjPkdj3tr2w/5FPRPvNoG7+TcC4/5FPRvvNoG7+TcC4/kaLAvjPkdj3tr2w/ouarvvlXk75KnGU/TTUMPkrJQL+hviQ/ouarPvlXk75KnGU/HjrDPii9Or5JAmg/5FPRPvNoG7+TcC4/qfMSP5x3075pADU/qfMSv5x3075pADU/5FPRvvNoG7+TcC4/HjrDvii9Or5JAmg/ouarvvlXk75KnGU/KY6OPiAnWr6LwG8/HjrDPii9Or5JAmg/ZwgRP+JVxr3qfVE/qfMSP5x3075pADU/qfMSv5x3075pADU/ZwgRv+JVxr3qfVE/HjrDvii9Or5JAmg/KY6OviAnWr6LwG8/qzI7PREUEb8AmVI/KY6OPiAnWr6LwG8/ZwgRP+JVxr3qfVE/ggESPziq8T2wGVA/ggESvziq8T2wGVA/ZwgRv+JVxr3qfVE/KY6OviAnWr6LwG8/qzI7vREUEb8AmVI/ZuOovVVPKL8GvD8/qzI7PREUEb8AmVI/pu72PuLmDz9GACw/ggESPziq8T2wGVA/ggESvziq8T2wGVA/pu72vuLmDz9GACw/qzI7vREUEb8AmVI/ZuOoPVVPKL8GvD8/ZuOovVVPKL8GvD8/8Jmivcs4CL/vylc/EVSFPhSEHD8ZTD8/pu72PuLmDz9GACw/pu72vuLmDz9GACw/EVSFvhSEHD8ZTD8/8JmiPcs4CL/vylc/ZuOoPVVPKL8GvD8/GvuRvG53fz4F3Xc/M+QnPjiuuD5IDGs/2P1hPrYd8L7p7Vo/zzoJP24gyL7BjD8/zzoJv24gyL7BjD8/2P1hvrYd8L7p7Vo/M+QnvjiuuD5IDGs/GvuRPG53fz4F3Xc/NhNlvqdmJ7+rBTk/AAAAAAAAAAAAAIA/NhNlPqdmJ7+rBTk/8ksdvlR8TL4Dvnc/AAAAAAAAAAAAAIA/NhNlPqdmJ7+rBTk/eKGhPv2rir6pzWg/mDGnPkfBBb70pG8/mDGnvkfBBb70pG8/eKGhvv2rir6pzWg/NhNlvqdmJ7+rBTk/AAAAAAAAAAAAAIA/8ksdPlR8TL4Dvnc/rOqLvgLg0b2t2nQ/8ksdvlR8TL4Dvnc/yM4+PlqDEr/Xb0w/eKGhPv2rir6pzWg/eKGhvv2rir6pzWg/yM4+vlqDEr/Xb0w/8ksdPlR8TL4Dvnc/rOqLPgLg0b2t2nQ/rOqLvgLg0b2t2nQ/Rd3HvUXdRz6W1Hk/RpeTPcpWMr9KuzY/yM4+PlqDEr/Xb0w/yM4+vlqDEr/Xb0w/RpeTvcpWMr9KuzY/Rd3HPUXdRz6W1Hk/rOqLPgLg0b2t2nQ/Rd3HvUXdRz6W1Hk/RpeTvcpWMr9KuzY/RpeTPcpWMr9KuzY/Rd3HPUXdRz6W1Hk/NzViv58Btj5kAZw+NzViP58Btj5kAZw+NzViv58Btj5kAZw+YOzjvnbhJL6mf2E/jOqovYFCaD8wJdO+jOqoPYFCaD8wJdO+YOzjPnbhJL6mf2E/NzViP58Btj5kAZw+YOzjvnbhJL6mf2E/gnRfvoJ0376CdF8/jOqoPYFCaD8wJdO+bwlzP2wyaz5lhFu+bwlzv2wyaz5lhFu+jOqovYFCaD8wJdO+gnRfPoJ0376CdF8/YOzjPnbhJL6mf2E/gnRfvoJ0376CdF8/qz3ePqskBL5WP2Q/pkBRP9UKE7+k+TS9bwlzP2wyaz5lhFu+bwlzv2wyaz5lhFu+pkBRv9UKE7+k+TS9qz3evqskBL5WP2Q/gnRfPoJ0376CdF8//wtgvMw/az2vjX8/RvyZPl1QTT1vz3M/0GbXPk0xYb+aJmM+qz3ePqskBL5WP2Q/pkBRP9UKE7+k+TS9pkBRv9UKE7+k+TS9qz3evqskBL5WP2Q/0GbXvk0xYb+aJmM+RvyZvl1QTT1vz3M//wtgPMw/az2vjX8/1PWlPpKaUb+in/I+ouarPvlXk75KnGU/kaLAPjPkdj3tr2w/bn7FPjuzKb/mRiQ/bn7FvjuzKb/mRiQ/kaLAvjPkdj3tr2w/ouarvvlXk75KnGU/1PWlvpKaUb+in/I+ouarPvlXk75KnGU/HjrDPii9Or5JAmg/bn7FPjuzKb/mRiQ/94AwPziv1r4JMhc/94Awvziv1r4JMhc/bn7FvjuzKb/mRiQ/HjrDvii9Or5JAmg/ouarvvlXk75KnGU/KY6OPiAnWr6LwG8/HjrDPii9Or5JAmg/46MoP/EVur7joyg/94AwPziv1r4JMhc/94Awvziv1r4JMhc/46Mov/EVur7joyg/HjrDvii9Or5JAmg/KY6OviAnWr6LwG8/qzI7PREUEb8AmVI/KY6OPiAnWr6LwG8/lOoLP63MvT6cO0A/46MoP/EVur7joyg/46Mov/EVur7joyg/lOoLv63MvT6cO0A/KY6OviAnWr6LwG8/qzI7vREUEb8AmVI/ZuOovVVPKL8GvD8/qzI7PREUEb8AmVI/hKYBP6d8JT/EFRI/lOoLP63MvT6cO0A/lOoLv63MvT6cO0A/hKYBv6d8JT/EFRI/qzI7vREUEb8AmVI/ZuOoPVVPKL8GvD8/ZuOovVVPKL8GvD8/8Jmivcs4CL/vylc/hKYBP6d8JT/EFRI/cfcbP4RGBD8I/hk/cfcbv4RGBD8I/hk/hKYBv6d8JT/EFRI/8JmiPcs4CL/vylc/ZuOoPVVPKL8GvD8/8Jmivcs4CL/vylc/x300ves1KT+kxT8/2P1hPrYd8L7p7Vo/cfcbP4RGBD8I/hk/cfcbv4RGBD8I/hk/2P1hvrYd8L7p7Vo/x300Pes1KT+kxT8/8JmiPcs4CL/vylc/ToA5vyUyoz5paxw/x300ves1KT+kxT8/2P1hPrYd8L7p7Vo/zzoJP24gyL7BjD8/zzoJv24gyL7BjD8/2P1hvrYd8L7p7Vo/x300Pes1KT+kxT8/ToA5PyUyoz5paxw/ToA5vyUyoz5paxw/bIkWv3QsDj9siRY/dMzKPiI83b5gaE8/zzoJP24gyL7BjD8/zzoJv24gyL7BjD8/dMzKviI83b5gaE8/bIkWP3QsDj9siRY/ToA5PyUyoz5paxw/YOzjvnbhJL6mf2E/gnRfvoJ0376CdF8/KXYKvuwziT4jMnQ/1PWlPpKaUb+in/I+kaLAPjPkdj3tr2w/hUBwP670Iz6cppw+hUBwv670Iz6cppw+kaLAvjPkdj3tr2w/1PWlvpKaUb+in/I+KXYKPuwziT4jMnQ/gnRfPoJ0376CdF8/YOzjPnbhJL6mf2E/RvyZPl1QTT1vz3M/mdOcPpXv2LzUmXM/GJdHP7Q8uD0Mph4/7PFPP7shmj5tx/8+7PFPv7shmj5tx/8+GJdHv7Q8uD0Mph4/mdOcvpXv2LzUmXM/RvyZvl1QTT1vz3M/mdOcPpXv2LzUmXM/mDGnPkfBBb70pG8/OdZEP1cyT73YKiM/GJdHP7Q8uD0Mph4/GJdHv7Q8uD0Mph4/OdZEv1cyT73YKiM/mDGnvkfBBb70pG8/mdOcvpXv2LzUmXM/eKGhPv2rir6pzWg/mDGnPkfBBb70pG8/NhcXP8D66L6msio/OdZEP1cyT73YKiM/OdZEv1cyT73YKiM/NhcXv8D66L6msio/mDGnvkfBBb70pG8/eKGhvv2rir6pzWg/yM4+PlqDEr/Xb0w/7z1gPvZdXb/ebec+eKGhPv2rir6pzWg/NhcXP8D66L6msio/NhcXv8D66L6msio/eKGhvv2rir6pzWg/7z1gvvZdXb/ebec+yM4+vlqDEr/Xb0w/RpeTPcpWMr9KuzY/ZBf8PXiUXL9kF/w+yM4+PlqDEr/Xb0w/7z1gPvZdXb/ebec+7z1gvvZdXb/ebec+yM4+vlqDEr/Xb0w/ZBf8vXiUXL9kF/w+RpeTvcpWMr9KuzY/ZBf8vXiUXL9kF/w+RpeTvcpWMr9KuzY/RpeTPcpWMr9KuzY/ZBf8PXiUXL9kF/w+YOzjvnbhJL6mf2E/KXYKvuwziT4jMnQ/qlAivCaDR77HFHs/qlAiPCaDR77HFHs/KXYKPuwziT4jMnQ/YOzjPnbhJL6mf2E/iAI+vrVYfb4+c3M/qlAivCaDR77HFHs/qlAiPCaDR77HFHs/iAI+PrVYfb4+c3M/8Jmivcs4CL/vylc/M+QnPjiuuD5IDGs/2P1hPrYd8L7p7Vo/EVSFPhSEHD8ZTD8/EVSFvhSEHD8ZTD8/2P1hvrYd8L7p7Vo/M+QnvjiuuD5IDGs/8JmiPcs4CL/vylc/rHMSvyAW9L5J3Co/zi8Cvx8Jjb5a11A/KXYKvuwziT4jMnQ/qlAiPCaDR77HFHs/qlAivCaDR77HFHs/KXYKPuwziT4jMnQ/zi8CPx8Jjb5a11A/rHMSPyAW9L5J3Co/zi8Cvx8Jjb5a11A//b/EvoS1K72WGWw/qlAiPCaDR77HFHs/iAI+PrVYfb4+c3M/iAI+vrVYfb4+c3M/qlAivCaDR77HFHs//b/EPoS1K72WGWw/zi8CPx8Jjb5a11A/Lhcsuxxyhr1ocn8/AAAAAAAAAAAAAIA/mdOcPpXv2LzUmXM/mDGnPkfBBb70pG8/mDGnvkfBBb70pG8/mdOcvpXv2LzUmXM/AAAAAAAAAAAAAIA/LhcsOxxyhr1ocn8//wtgvMw/az2vjX8/Lhcsuxxyhr1ocn8/RvyZPl1QTT1vz3M/mdOcPpXv2LzUmXM/mdOcvpXv2LzUmXM/RvyZvl1QTT1vz3M/LhcsOxxyhr1ocn8//wtgPMw/az2vjX8//wtgvMw/az2vjX8/Lhcsuxxyhr1ocn8/LhcsOxxyhr1ocn8//wtgPMw/az2vjX8/0GbXvk0xYb+aJmM+/wtgvMw/az2vjX8//wtgPMw/az2vjX8/0GbXPk0xYb+aJmM+RB+TPkQfE7+wKUQ/0CDHPr+INr+cWBU/0GbXPk0xYb+aJmM+pkBRP9UKE7+k+TS9pkBRv9UKE7+k+TS90GbXvk0xYb+aJmM+0CDHvr+INr+cWBU/RB+TvkQfE7+wKUQ/0CDHPr+INr+cWBU/yBdCP19NlT5fTRU/pkBRP9UKE7+k+TS9bwlzP2wyaz5lhFu+bwlzv2wyaz5lhFu+pkBRv9UKE7+k+TS9yBdCv19NlT5fTRU/0CDHvr+INr+cWBU/jOqoPYFCaD8wJdO+HIHXPQoJSj/M5Bo/yBdCP19NlT5fTRU/bwlzP2wyaz5lhFu+bwlzv2wyaz5lhFu+yBdCv19NlT5fTRU/HIHXvQoJSj/M5Bo/jOqovYFCaD8wJdO+NzViv58Btj5kAZw+N3snvzMVGj9Oeeo+jOqoPYFCaD8wJdO+HIHXPQoJSj/M5Bo/HIHXvQoJSj/M5Bo/jOqovYFCaD8wJdO+N3snPzMVGj9Oeeo+NzViP58Btj5kAZw+N3snvzMVGj9Oeeo+T4o9vePsbD6IxXg/vCIJvRm0zb4ARmo/vCIJPRm0zb4ARmo/T4o9PePsbD6IxXg/N3snPzMVGj9Oeeo+N3snvzMVGj9Oeeo+T4o9PePsbD6IxXg/HIHXPQoJSj/M5Bo/HIHXvQoJSj/M5Bo/T4o9vePsbD6IxXg/N3snPzMVGj9Oeeo+T4o9PePsbD6IxXg/HIHXPQoJSj/M5Bo/yBdCP19NlT5fTRU/yBdCv19NlT5fTRU/HIHXvQoJSj/M5Bo/T4o9vePsbD6IxXg/vCIJPRm0zb4ARmo/T4o9PePsbD6IxXg/0CDHPr+INr+cWBU/yBdCP19NlT5fTRU/yBdCv19NlT5fTRU/0CDHvr+INr+cWBU/T4o9vePsbD6IxXg/vCIJvRm0zb4ARmo/vCIJPRm0zb4ARmo/RB+TPkQfE7+wKUQ/0CDHPr+INr+cWBU/0CDHvr+INr+cWBU/RB+TvkQfE7+wKUQ/vCIJvRm0zb4ARmo/RB+TvkQfE7+wKUQ/vCIJvRm0zb4ARmo/vCIJPRm0zb4ARmo/RB+TPkQfE7+wKUQ/7PFPP7shmj5tx/8+SRRgP7PPgz57lNE+BXppP0DfrD65cW6+LwNuPxIeoD6hEEe+LwNuvxIeoD6hEEe+BXppv0DfrD65cW6+SRRgv7PPgz57lNE+7PFPv7shmj5tx/8+gnRfvoJ0376CdF8/qz3ePqskBL5WP2Q/SRRgP7PPgz57lNE+hUBwP670Iz6cppw+hUBwv670Iz6cppw+SRRgv7PPgz57lNE+qz3evqskBL5WP2Q/gnRfPoJ0376CdF8/RvyZPl1QTT1vz3M/qz3ePqskBL5WP2Q/7PFPP7shmj5tx/8+SRRgP7PPgz57lNE+SRRgv7PPgz57lNE+7PFPv7shmj5tx/8+qz3evqskBL5WP2Q/RvyZvl1QTT1vz3M/SRRgP7PPgz57lNE+LwNuPxIeoD6hEEe+hUBwP670Iz6cppw+GdFwP/nmqj7HlXi9GdFwv/nmqj7HlXi9hUBwv670Iz6cppw+LwNuvxIeoD6hEEe+SRRgv7PPgz57lNE+XQgivosMcz+Z4oo+Rd3HvUXdRz6W1Hk/Rd3HPUXdRz6W1Hk/XQgiPosMcz+Z4oo+mYQxv4JLNT+h+Ac+rOqLvgLg0b2t2nQ/XQgivosMcz+Z4oo+Rd3HvUXdRz6W1Hk/Rd3HPUXdRz6W1Hk/XQgiPosMcz+Z4oo+rOqLPgLg0b2t2nQ/mYQxP4JLNT+h+Ac+AACAvwAAAAAAAACAmYQxv4JLNT+h+Ac+rOqLvgLg0b2t2nQ/8ksdvlR8TL4Dvnc/8ksdPlR8TL4Dvnc/rOqLPgLg0b2t2nQ/mYQxP4JLNT+h+Ac+AACAPwAAAAAAAACAAACAvwAAAAAAAACA8ksdvlR8TL4Dvnc/NhNlPqdmJ7+rBTk/dzucPnbocb926PE9dzucvnbocb926PE9NhNlvqdmJ7+rBTk/8ksdPlR8TL4Dvnc/AACAPwAAAAAAAACAdzucvnbocb926PE9/jz0vB+mmL7+PHQ//jz0PB+mmL7+PHQ/dzucPnbocb926PE9AACAvwAAAAAAAACA/jz0PB+mmL7+PHQ/IIoKPk4fsr4Sf20/dzucPnbocb926PE9dzucvnbocb926PE9IIoKvk4fsr4Sf20//jz0vB+mmL7+PHQ/AACAPwAAAAAAAACAAACAvwAAAAAAAACAmYQxv4JLNT+h+Ac+IIoKPk4fsr4Sf20/IIoKvk4fsr4Sf20/mYQxP4JLNT+h+Ac+AACAPwAAAAAAAACAmYQxv4JLNT+h+Ac+XQgivosMcz+Z4oo+/jz0PB+mmL7+PHQ/IIoKPk4fsr4Sf20/IIoKvk4fsr4Sf20//jz0vB+mmL7+PHQ/XQgiPosMcz+Z4oo+mYQxP4JLNT+h+Ac+XQgivosMcz+Z4oo+/jz0vB+mmL7+PHQ//jz0PB+mmL7+PHQ/XQgiPosMcz+Z4oo+zi8Cvx8Jjb5a11A//b/EvoS1K72WGWw/3LRIP9Xf7T3kGhw/8ANRPwu+lb1rnxI/8ANRvwu+lb1rnxI/3LRIv9Xf7T3kGhw//b/EPoS1K72WGWw/zi8CPx8Jjb5a11A/rHMSvyAW9L5J3Co/zi8Cvx8Jjb5a11A/lmD/PlCrBz9nki8/3LRIP9Xf7T3kGhw/3LRIv9Xf7T3kGhw/lmD/vlCrBz9nki8/zi8CPx8Jjb5a11A/rHMSPyAW9L5J3Co/hSWCvhLAJr/DBDc/M+QnPjiuuD5IDGs/EVSFPhSEHD8ZTD8/a+iPPvaghb6Ma2w/a+iPvvaghb6Ma2w/EVSFvhSEHD8ZTD8/M+QnvjiuuD5IDGs/hSWCPhLAJr/DBDc/GvuRvG53fz4F3Xc/M+QnPjiuuD5IDGs/a+iPPvaghb6Ma2w/9pinPlFO1b5uHVk/9pinvlFO1b5uHVk/a+iPvvaghb6Ma2w/M+QnvjiuuD5IDGs/GvuRPG53fz4F3Xc/hSWCvhLAJr/DBDc/+B7VvHRzWL/Xhwg/EVSFPhSEHD8ZTD8/pu72PuLmDz9GACw/pu72vuLmDz9GACw/EVSFvhSEHD8ZTD8/+B7VPHRzWL/Xhwg/hSWCPhLAJr/DBDc/OCC0vjNthb4rKWY/+B7VvHRzWL/Xhwg/pu72PuLmDz9GACw/ggESPziq8T2wGVA/ggESvziq8T2wGVA/pu72vuLmDz9GACw/+B7VPHRzWL/Xhwg/OCC0PjNthb4rKWY/xGG0vsRhNLzYkW8/OCC0vjNthb4rKWY/ZwgRP+JVxr3qfVE/ggESPziq8T2wGVA/ggESvziq8T2wGVA/ZwgRv+JVxr3qfVE/OCC0PjNthb4rKWY/xGG0PsRhNLzYkW8/xGG0vsRhNLzYkW8/ONAGvmPs6z5esGA/ZwgRP+JVxr3qfVE/qfMSP5x3075pADU/qfMSv5x3075pADU/ZwgRv+JVxr3qfVE/ONAGPmPs6z5esGA/xGG0PsRhNLzYkW8/ONAGvmPs6z5esGA/iCkMvbmuHT+0e0k/5FPRPvNoG7+TcC4/qfMSP5x3075pADU/qfMSv5x3075pADU/5FPRvvNoG7+TcC4/iCkMPbmuHT+0e0k/ONAGPmPs6z5esGA/TTUMvkrJQL+hviQ/iCkMvbmuHT+0e0k/WnS4PnxoFT+OTDo/5FPRPvNoG7+TcC4/5FPRvvNoG7+TcC4/WnS4vnxoFT+OTDo/iCkMPbmuHT+0e0k/TTUMPkrJQL+hviQ/rHMSvyAW9L5J3Co/TTUMvkrJQL+hviQ/WnS4PnxoFT+OTDo/lmD/PlCrBz9nki8/lmD/vlCrBz9nki8/WnS4vnxoFT+OTDo/TTUMPkrJQL+hviQ/rHMSPyAW9L5J3Co//b/EvoS1K72WGWw/hklVvhghGT3KM3o/q6oqP6uqqr6rqio/8ANRPwu+lb1rnxI/8ANRvwu+lb1rnxI/q6oqv6uqqr6rqio/hklVPhghGT3KM3o//b/EPoS1K72WGWw/hklVvhghGT3KM3o/GvuRvG53fz4F3Xc/9pinPlFO1b5uHVk/q6oqP6uqqr6rqio/q6oqv6uqqr6rqio/9pinvlFO1b5uHVk/GvuRPG53fz4F3Xc/hklVPhghGT3KM3o/9pinPlFO1b5uHVk/q6oqP6uqqr6rqio/q6oqv6uqqr6rqio/9pinvlFO1b5uHVk/q6oqP6uqqr6rqio/8ANRPwu+lb1rnxI/8ANRvwu+lb1rnxI/q6oqv6uqqr6rqio/WnS4PnxoFT+OTDo/lmD/PlCrBz9nki8/lmD/vlCrBz9nki8/WnS4vnxoFT+OTDo/iCkMvbmuHT+0e0k/WnS4PnxoFT+OTDo/WnS4vnxoFT+OTDo/iCkMPbmuHT+0e0k/ONAGvmPs6z5esGA/iCkMvbmuHT+0e0k/iCkMPbmuHT+0e0k/ONAGPmPs6z5esGA/xGG0vsRhNLzYkW8/ONAGvmPs6z5esGA/ONAGPmPs6z5esGA/xGG0PsRhNLzYkW8/xGG0vsRhNLzYkW8/OCC0vjNthb4rKWY/OCC0PjNthb4rKWY/xGG0PsRhNLzYkW8/OCC0vjNthb4rKWY/+B7VvHRzWL/Xhwg/+B7VPHRzWL/Xhwg/OCC0PjNthb4rKWY/hSWCvhLAJr/DBDc/+B7VvHRzWL/Xhwg/+B7VPHRzWL/Xhwg/hSWCPhLAJr/DBDc/a+iPPvaghb6Ma2w/9pinPlFO1b5uHVk/9pinvlFO1b5uHVk/a+iPvvaghb6Ma2w/hSWCvhLAJr/DBDc/a+iPPvaghb6Ma2w/a+iPvvaghb6Ma2w/hSWCPhLAJr/DBDc/lmD/PlCrBz9nki8/3LRIP9Xf7T3kGhw/3LRIv9Xf7T3kGhw/lmD/vlCrBz9nki8/3LRIP9Xf7T3kGhw/8ANRPwu+lb1rnxI/8ANRvwu+lb1rnxI/3LRIv9Xf7T3kGhw/SOJZv4osvT5W9L6+UdcHv6uiTz8QDny+UlIwvmtM1j3mv3q/HHMlvtcVPT6rLHg/+OotPWM6aj+8ec0++OotvWM6aj+8ec0+HHMlPtcVPT6rLHg/UlIwPmtM1j3mv3q/UdcHP6uiTz8QDny+SOJZP4osvT5W9L6+SOJZv4osvT5W9L6+wHR6voYVXj8Kwt2+UlIwvmtM1j3mv3q/UlIwPmtM1j3mv3q/wHR6PoYVXj8Kwt2+SOJZP4osvT5W9L6+wHR6voYVXj8Kwt2+UlIwvmtM1j3mv3q/VqYXPwMbPz+YI5u+VqYXvwMbPz+YI5u+UlIwPmtM1j3mv3q/wHR6PoYVXj8Kwt2+UlIwvmtM1j3mv3q/+OotPWM6aj+8ec0+v3+vPv0RbT9JrSG+U7K8PkIyYD8zoZ++VqYXPwMbPz+YI5u+VqYXvwMbPz+YI5u+U7K8vkIyYD8zoZ++v3+vvv0RbT9JrSG++OotvWM6aj+8ec0+UlIwPmtM1j3mv3q/r3SQPttFaj8fc5O+v3+vPv0RbT9JrSG+U7K8PkIyYD8zoZ++u5vUPuXpZT/WVBS+u5vUvuXpZT/WVBS+U7K8vkIyYD8zoZ++v3+vvv0RbT9JrSG+r3SQvttFaj8fc5O+r3SQPttFaj8fc5O+u5vUPuXpZT/WVBS+bStbP7A8CT73hv++h6l6PywLSj7E90U9h6l6vywLSj7E90U9bStbv7A8CT73hv++u5vUvuXpZT/WVBS+r3SQvttFaj8fc5O+DMMIP6UoOb8VCuC+OqRTP/2vAb+zmXo+bStbP7A8CT73hv++h6l6PywLSj7E90U9h6l6vywLSj7E90U9bStbv7A8CT73hv++OqRTv/2vAb+zmXo+DMMIv6UoOb8VCuC+/hHFPkMkUL89pN++cJ/kPo9LXb/NjWw+DMMIP6UoOb8VCuC+OqRTP/2vAb+zmXo+OqRTv/2vAb+zmXo+DMMIv6UoOb8VCuC+cJ/kvo9LXb/NjWw+/hHFvkMkUL89pN++/VA0PjxlYb88ZeG+7QeHPtFY5r61blo//hHFPkMkUL89pN++cJ/kPo9LXb/NjWw+xkgbP7b9Qb+sQnY+xkgbv7b9Qb+sQnY+cJ/kvo9LXb/NjWw+/hHFvkMkUL89pN++7QeHvtFY5r61blo//VA0vjxlYb88ZeG+NW5ovpnzEj8taEk/SEv2vVbjdj9+JXE+SEv2PVbjdj9+JXE+NW5oPpnzEj8taEk/rJICvplyeT+JlD2+SEv2vVbjdj9+JXE+SEv2PVbjdj9+JXE+rJICPplyeT+JlD2+dte9vntQ8r66kEy/6A+fvjUVVL/cl+6+6A+fPjUVVL/cl+6+dte9PntQ8r66kEy//bOgvqaebr9RDTm+lQWPvmuXc7/txwO+lQWPPmuXc7/txwO+/bOgPqaebr9RDTm+mR/uvZsr6L6eN2K/uuvrvdPMe79MKA6+uuvrPdPMe79MKA6+mR/uPZsr6L6eN2K/Er56vmfNbr3nwXe/mR/uvZsr6L6eN2K/mR/uPZsr6L6eN2K/Er56PmfNbr3nwXe/Er56vmfNbr3nwXe/hB9vviWfFL81r0e/hB9vPiWfFL81r0e/Er56PmfNbr3nwXe//bOgvqaebr9RDTm+hB9vviWfFL81r0e/hB9vPiWfFL81r0e//bOgPqaebr9RDTm+OqRTP/2vAb+zmXo+eKFnP64pv76VqVG+gmxyPyAZvD3sp50+h6l6PywLSj7E90U9h6l6vywLSj7E90U9gmxyvyAZvD3sp50+eKFnv64pv76VqVG+OqRTv/2vAb+zmXo+eKFnP64pv76VqVG+mBVpP0oCy75rmvC9gmxyPyAZvD3sp50+Or16P+MbQz6Rcoe9M1h7Pxy5OL6CQnK9M1h7vxy5OL6CQnK9Or16v+MbQz6Rcoe9gmxyvyAZvD3sp50+mBVpv0oCy75rmvC9eKFnv64pv76VqVG+gyhIv6iFHz+HM6E8MvMKPzc0U77KbFC/j4sOP5PXor7hb0S/Zv4qP9iKTT4edTe/Amh+PxCM/zxXCtu9Amh+vxCM/zxXCtu9Zv4qv9iKTT4edTe/j4sOv5PXor7hb0S/MvMKvzc0U77KbFC/gyhIP6iFHz+HM6E8o5CwPkwo7b3hdW6/y82yPhA+GD8kYTm/C1P9Pn9T3j6ktEC/RxwAP9O7j77pqVG/RxwAv9O7j77pqVG/C1P9vn9T3j6ktEC/y82yvhA+GD8kYTm/o5Cwvkwo7b3hdW6/0Yu+PvCebL+jXa09cJ/kPo9LXb/NjWw+ntU4P0bCLr8Usua9OqRTP/2vAb+zmXo+eKFnP64pv76VqVG+eKFnv64pv76VqVG+OqRTv/2vAb+zmXo+ntU4v0bCLr8Usua9cJ/kvo9LXb/NjWw+0Yu+vvCebL+jXa09/VV9vg5ObL+Ry5a+e4JEvkNrkj7NVnA/9E2jPolxWb/ASde+0Yu+PvCebL+jXa09ntU4P0bCLr8Usua9ntU4v0bCLr8Usua90Yu+vvCebL+jXa099E2jvolxWb/ASde+e4JEPkNrkj7NVnA//VV9Pg5ObL+Ry5a+/VV9vg5ObL+Ry5a+9E2jPolxWb/ASde+MvMKPzc0U77KbFC/j4sOP5PXor7hb0S/j4sOv5PXor7hb0S/MvMKvzc0U77KbFC/9E2jvolxWb/ASde+/VV9Pg5ObL+Ry5a+o5CwPkwo7b3hdW6/dte9PntQ8r66kEy/pJH+Phat4b4vUT+/RxwAP9O7j77pqVG/RxwAv9O7j77pqVG/pJH+vhat4b4vUT+/dte9vntQ8r66kEy/o5Cwvkwo7b3hdW6/evdAP1bQlb7GoBa/BXppP0DfrD65cW6+92prPy5ADT6TVby+qOV5P2dXVb4+THm9qOV5v2dXVb4+THm992prvy5ADT6TVby+BXppv0DfrD65cW6+evdAv1bQlb7GoBa/hB9vPiWfFL81r0e//bOgPqaebr9RDTm+evdAP1bQlb7GoBa/qOV5P2dXVb4+THm9qOV5v2dXVb4+THm9evdAv1bQlb7GoBa//bOgvqaebr9RDTm+hB9vviWfFL81r0e/Z7uZvFbpXr6I0Hm/FoImPhuJqTyQiXy/6Y5uP1jCJj60/KW+R7F1P2ZmC7yZwY++R7F1v2ZmC7yZwY++6Y5uv1jCJj60/KW+FoImvhuJqTyQiXy/Z7uZPFbpXr6I0Hm/FoImPhuJqTyQiXy/evdAP1bQlb7GoBa/92prPy5ADT6TVby+6Y5uP1jCJj60/KW+6Y5uv1jCJj60/KW+92prvy5ADT6TVby+evdAv1bQlb7GoBa/FoImvhuJqTyQiXy/Z7uZvFbpXr6I0Hm/HmryPcmHd79LZWe+R7F1P2ZmC7yZwY++R7F1v2ZmC7yZwY++HmryvcmHd79LZWe+Z7uZPFbpXr6I0Hm/Z7uZvFbpXr6I0Hm/mR/uPZsr6L6eN2K/FoImPhuJqTyQiXy/Er56PmfNbr3nwXe/Er56vmfNbr3nwXe/FoImvhuJqTyQiXy/mR/uvZsr6L6eN2K/Z7uZPFbpXr6I0Hm/FoImPhuJqTyQiXy/hB9vPiWfFL81r0e/Er56PmfNbr3nwXe/evdAP1bQlb7GoBa/evdAv1bQlb7GoBa/Er56vmfNbr3nwXe/hB9vviWfFL81r0e/FoImvhuJqTyQiXy/Z7uZvFbpXr6I0Hm/uuvrPdPMe79MKA6+mR/uPZsr6L6eN2K/HmryPcmHd79LZWe+HmryvcmHd79LZWe+mR/uvZsr6L6eN2K/uuvrvdPMe79MKA6+Z7uZPFbpXr6I0Hm/xkgbP7b9Qb+sQnY+Y4Q7P20GI797c3Y+BXppP0DfrD65cW6+LwNuPxIeoD6hEEe+qOV5P2dXVb4+THm9qOV5v2dXVb4+THm9LwNuvxIeoD6hEEe+BXppv0DfrD65cW6+Y4Q7v20GI797c3Y+xkgbv7b9Qb+sQnY+7QeHPtFY5r61blo/xkgbP7b9Qb+sQnY+LwNuPxIeoD6hEEe+GdFwP/nmqj7HlXi9GdFwv/nmqj7HlXi9LwNuvxIeoD6hEEe+xkgbv7b9Qb+sQnY+7QeHvtFY5r61blo//VA0PjxlYb88ZeG+7QeHPtFY5r61blo/GdFwP/nmqj7HlXi9GdFwv/nmqj7HlXi97QeHvtFY5r61blo//VA0vjxlYb88ZeG+lQWPPmuXc7/txwO+/bOgPqaebr9RDTm+BCk2PwJqM79wC009Y4Q7P20GI797c3Y+qOV5P2dXVb4+THm9qOV5v2dXVb4+THm9Y4Q7v20GI797c3Y+BCk2vwJqM79wC009/bOgvqaebr9RDTm+lQWPvmuXc7/txwO+lQWPPmuXc7/txwO+6A+fPjUVVL/cl+6+BCk2PwJqM79wC009HUI4Pxq0Ir/BAI++HUI4vxq0Ir/BAI++BCk2vwJqM79wC0096A+fvjUVVL/cl+6+lQWPvmuXc7/txwO+6A+fPjUVVL/cl+6+dte9PntQ8r66kEy/pJH+Phat4b4vUT+/HUI4Pxq0Ir/BAI++HUI4vxq0Ir/BAI++pJH+vhat4b4vUT+/dte9vntQ8r66kEy/6A+fvjUVVL/cl+6+rJICPplyeT+JlD2+y82yPhA+GD8kYTm/C1P9Pn9T3j6ktEC/TG8kP9z0Pj8JWTS+TG8kv9z0Pj8JWTS+C1P9vn9T3j6ktEC/y82yvhA+GD8kYTm/rJICvplyeT+JlD2+SEv2PVbjdj9+JXE+rJICPplyeT+JlD2+TG8kP9z0Pj8JWTS+m903PxXFLT87oxw+m903vxXFLT87oxw+TG8kv9z0Pj8JWTS+rJICvplyeT+JlD2+SEv2vVbjdj9+JXE+SEv2PVbjdj9+JXE+NW5oPpnzEj8taEk/m903PxXFLT87oxw+0CM9PwVjyz6NWws/0CM9vwVjyz6NWws/m903vxXFLT87oxw+NW5ovpnzEj8taEk/SEv2vVbjdj9+JXE++OotPWM6aj+8ec0+NW5oPpnzEj8taEk/v3+vPv0RbT9JrSG+0CM9PwVjyz6NWws/0CM9vwVjyz6NWws/v3+vvv0RbT9JrSG+NW5ovpnzEj8taEk/+OotvWM6aj+8ec0+DPg8PmscND+bri8/u5vUPuXpZT/WVBS+gmxyPyAZvD3sp50+h6l6PywLSj7E90U9h6l6vywLSj7E90U9gmxyvyAZvD3sp50+u5vUvuXpZT/WVBS+DPg8vmscND+bri8/DPg8PmscND+bri8/v3+vPv0RbT9JrSG+u5vUPuXpZT/WVBS+0CM9PwVjyz6NWws/0CM9vwVjyz6NWws/u5vUvuXpZT/WVBS+v3+vvv0RbT9JrSG+DPg8vmscND+bri8/DPg8PmscND+bri8/NgYbP0CFRz8AryQ+m903PxXFLT87oxw+0CM9PwVjyz6NWws/0CM9vwVjyz6NWws/m903vxXFLT87oxw+NgYbv0CFRz8AryQ+DPg8vmscND+bri8/DPg8PmscND+bri8/NgYbP0CFRz8AryQ+gmxyPyAZvD3sp50+Or16P+MbQz6Rcoe9Or16v+MbQz6Rcoe9gmxyvyAZvD3sp50+NgYbv0CFRz8AryQ+DPg8vmscND+bri8/NgYbP0CFRz8AryQ+gws0P7A8Lj/VMFK+Or16P+MbQz6Rcoe9Amh+PxCM/zxXCtu9Amh+vxCM/zxXCtu9Or16v+MbQz6Rcoe9gws0v7A8Lj/VMFK+NgYbv0CFRz8AryQ+NgYbP0CFRz8AryQ+TG8kP9z0Pj8JWTS+gws0P7A8Lj/VMFK+m903PxXFLT87oxw+m903vxXFLT87oxw+gws0v7A8Lj/VMFK+TG8kv9z0Pj8JWTS+NgYbv0CFRz8AryQ+C1P9Pn9T3j6ktEC/TG8kP9z0Pj8JWTS+Zv4qP9iKTT4edTe/gws0P7A8Lj/VMFK+gws0v7A8Lj/VMFK+Zv4qv9iKTT4edTe/TG8kv9z0Pj8JWTS+C1P9vn9T3j6ktEC/Zv4qP9iKTT4edTe/gws0P7A8Lj/VMFK+Amh+PxCM/zxXCtu9Amh+vxCM/zxXCtu9gws0v7A8Lj/VMFK+Zv4qv9iKTT4edTe/C1P9Pn9T3j6ktEC/RxwAP9O7j77pqVG/j4sOP5PXor7hb0S/Zv4qP9iKTT4edTe/Zv4qv9iKTT4edTe/j4sOv5PXor7hb0S/RxwAv9O7j77pqVG/C1P9vn9T3j6ktEC/9E2jPolxWb/ASde+pJH+Phat4b4vUT+/RxwAP9O7j77pqVG/j4sOP5PXor7hb0S/HUI4Pxq0Ir/BAI++HUI4vxq0Ir/BAI++j4sOv5PXor7hb0S/RxwAv9O7j77pqVG/pJH+vhat4b4vUT+/9E2jvolxWb/ASde+gyhIv6iFHz+HM6E8k8zTPW7ZHj7vgns/Or16P+MbQz6Rcoe9M1h7Pxy5OL6CQnK9Amh+PxCM/zxXCtu9Amh+vxCM/zxXCtu9M1h7vxy5OL6CQnK9Or16v+MbQz6Rcoe9k8zTvW7ZHj7vgns/gyhIP6iFHz+HM6E80Yu+PvCebL+jXa09cJ/kPo9LXb/NjWw+xkgbP7b9Qb+sQnY+BCk2PwJqM79wC009Y4Q7P20GI797c3Y+Y4Q7v20GI797c3Y+BCk2vwJqM79wC009xkgbv7b9Qb+sQnY+cJ/kvo9LXb/NjWw+0Yu+vvCebL+jXa099E2jPolxWb/ASde+0Yu+PvCebL+jXa09BCk2PwJqM79wC009HUI4Pxq0Ir/BAI++HUI4vxq0Ir/BAI++BCk2vwJqM79wC0090Yu+vvCebL+jXa099E2jvolxWb/ASde+gyhIv6iFHz+HM6E8x1vmvrY+Yj8pogO+k8zTPW7ZHj7vgns/gHyzPg/twj7vDFs/gHyzvg/twj7vDFs/k8zTvW7ZHj7vgns/x1vmPrY+Yj8pogO+gyhIP6iFHz+HM6E8/VV9vg5ObL+Ry5a+e4JEvkNrkj7NVnA/l4q+PR8Ofr+X3aS9pFkfPzTpm74wkjg/pFkfvzTpm74wkjg/l4q+vR8Ofr+X3aS9e4JEPkNrkj7NVnA//VV9Pg5ObL+Ry5a+l4q+PR8Ofr+X3aS9vrftPtVidb0cN2I/CiYAP3abXb/omAI8pFkfPzTpm74wkjg/pFkfvzTpm74wkjg/CiYAv3abXb/omAI8vrftvtVidb0cN2I/l4q+vR8Ofr+X3aS9nGt7PrhTpL3rT3c/vrftPtVidb0cN2I/CiYAP3abXb/omAI8PLNtPzKwf75asYw+PLNtvzKwf75asYw+CiYAv3abXb/omAI8vrftvtVidb0cN2I/nGt7vrhTpL3rT3c/nGt7PrhTpL3rT3c/7jqEPr4J2D0f1nU/w9lWP8PbCj9rvxq9PLNtPzKwf75asYw+PLNtvzKwf75asYw+w9lWv8PbCj9rvxq97jqEvr4J2D0f1nU/nGt7vrhTpL3rT3c/+S9xvnrObz+ej4S+7jqEPr4J2D0f1nU/C8HpPsOZLz7gfV8/w9lWP8PbCj9rvxq9w9lWv8PbCj9rvxq9C8HpvsOZLz7gfV8/7jqEvr4J2D0f1nU/+S9xPnrObz+ej4S+x1vmvrY+Yj8pogO++S9xvnrObz+ej4S+gHyzPg/twj7vDFs/C8HpPsOZLz7gfV8/C8HpvsOZLz7gfV8/gHyzvg/twj7vDFs/+S9xPnrObz+ej4S+x1vmPrY+Yj8pogO+gHyzPg/twj7vDFs/O8boPoIHEb/W8S8/C8HpPsOZLz7gfV8/BxkzP8BE5r4eJA4/Bxkzv8BE5r4eJA4/C8HpvsOZLz7gfV8/O8bovoIHEb/W8S8/gHyzvg/twj7vDFs/bWoGvz2atr7C0UU/7jqEPr4J2D0f1nU/O8boPoIHEb/W8S8/C8HpPsOZLz7gfV8/C8HpvsOZLz7gfV8/O8bovoIHEb/W8S8/7jqEvr4J2D0f1nU/bWoGPz2atr7C0UU/rxFUvy6haj7k2QI/bWoGvz2atr7C0UU/nGt7PrhTpL3rT3c/7jqEPr4J2D0f1nU/7jqEvr4J2D0f1nU/nGt7vrhTpL3rT3c/bWoGPz2atr7C0UU/rxFUPy6haj7k2QI/rxFUvy6haj7k2QI/IYiIvr2zVD+VEfo+nGt7PrhTpL3rT3c/vrftPtVidb0cN2I/vrftvtVidb0cN2I/nGt7vrhTpL3rT3c/IYiIPr2zVD+VEfo+rxFUPy6haj7k2QI/IYiIvr2zVD+VEfo+GmnmPoaxKD/0Sho/vrftPtVidb0cN2I/pFkfPzTpm74wkjg/pFkfvzTpm74wkjg/vrftvtVidb0cN2I/GmnmvoaxKD/0Sho/IYiIPr2zVD+VEfo+e4JEvkNrkj7NVnA/yiWsPSOMbj9HwbQ+GmnmPoaxKD/0Sho/pFkfPzTpm74wkjg/pFkfvzTpm74wkjg/GmnmvoaxKD/0Sho/yiWsvSOMbj9HwbQ+e4JEPkNrkj7NVnA/k8zTPW7ZHj7vgns/gHyzPg/twj7vDFs/1UsXPyZo3L73pC4/BxkzP8BE5r4eJA4/Bxkzv8BE5r4eJA4/1UsXvyZo3L73pC4/gHyzvg/twj7vDFs/k8zTvW7ZHj7vgns/1UsXPyZo3L73pC4/PKofP7jANL8Vt6s+BxkzP8BE5r4eJA4/KDc7PzKCJ7+kEUU+KDc7vzKCJ7+kEUU+Bxkzv8BE5r4eJA4/PKofv7jANL8Vt6s+1UsXvyZo3L73pC4/PDtlvRkFfz/xiYk93J0LvJY8fz+YEZ09yiWsPSOMbj9HwbQ+GmnmPoaxKD/0Sho/GmnmvoaxKD/0Sho/yiWsvSOMbj9HwbQ+3J0LPJY8fz+YEZ09PDtlPRkFfz/xiYk9QcIQv8fjSD/M/IG+IYiIvr2zVD+VEfo+PDtlvRkFfz/xiYk9GmnmPoaxKD/0Sho/GmnmvoaxKD/0Sho/PDtlPRkFfz/xiYk9IYiIPr2zVD+VEfo+QcIQP8fjSD/M/IG+DXtVvwltcz6EBP++rxFUvy6haj7k2QI/QcIQv8fjSD/M/IG+IYiIvr2zVD+VEfo+IYiIPr2zVD+VEfo+QcIQP8fjSD/M/IG+rxFUPy6haj7k2QI/DXtVPwltcz6EBP++DXtVvwltcz6EBP++WTBVvwEPAr+TQWG+rxFUvy6haj7k2QI/bWoGvz2atr7C0UU/bWoGPz2atr7C0UU/rxFUPy6haj7k2QI/WTBVPwEPAr+TQWG+DXtVPwltcz6EBP++WTBVvwEPAr+TQWG+bWoGvz2atr7C0UU/k++LPi59ZL9xqrc+O8boPoIHEb/W8S8/O8bovoIHEb/W8S8/k++Lvi59ZL9xqrc+bWoGPz2atr7C0UU/WTBVPwEPAr+TQWG+k++LPi59ZL9xqrc+O8boPoIHEb/W8S8/PKofP7jANL8Vt6s+BxkzP8BE5r4eJA4/Bxkzv8BE5r4eJA4/PKofv7jANL8Vt6s+O8bovoIHEb/W8S8/k++Lvi59ZL9xqrc+k8zTPW7ZHj7vgns/YcQUPxVa077nizM/1UsXPyZo3L73pC4/M1h7Pxy5OL6CQnK9M1h7vxy5OL6CQnK91UsXvyZo3L73pC4/YcQUvxVa077nizM/k8zTvW7ZHj7vgns/YcQUPxVa077nizM/c8YzP3PGM79Es+89YGZJP5CgG7+Atds9y6BNP/4r+L7+Q7E+y6BNv/4r+L7+Q7E+YGZJv5CgG7+Atds9c8Yzv3PGM79Es+89YcQUvxVa077nizM/9XY8PkZJez+7Z1G9kKPcPuuz8j64kUQ/c8YzP3PGM79Es+89y6BNP/4r+L7+Q7E+y6BNv/4r+L7+Q7E+c8Yzv3PGM79Es+89kKPcvuuz8j64kUQ/9XY8vkZJez+7Z1G99XY8PkZJez+7Z1G9kKPcPuuz8j64kUQ/l2hvP4n+qD6jcAM+l2hvv4n+qD6jcAM+kKPcvuuz8j64kUQ/9XY8vkZJez+7Z1G9kKPcPuuz8j64kUQ/4gQlP8PXtL3yZ0I/LdEpP1MLP788bGI9l2hvP4n+qD6jcAM+l2hvv4n+qD6jcAM+LdEpv1MLP788bGI94gQlv8PXtL3yZ0I/kKPcvuuz8j64kUQ/3J0LvJY8fz+YEZ09yiWsPSOMbj9HwbQ+4gQlP8PXtL3yZ0I/LdEpP1MLP788bGI9LdEpv1MLP788bGI94gQlv8PXtL3yZ0I/yiWsvSOMbj9HwbQ+3J0LPJY8fz+YEZ09ntU4P0bCLr8Usua9eKFnP64pv76VqVG+mBVpP0oCy75rmvC9n0h/P1iHlLxYh5S9n0h/v1iHlLxYh5S9mBVpv0oCy75rmvC9eKFnv64pv76VqVG+ntU4v0bCLr8Usua9e4JEvkNrkj7NVnA/yiWsPSOMbj9HwbQ+4gQlP8PXtL3yZ0I/ntU4P0bCLr8Usua9n0h/P1iHlLxYh5S9n0h/v1iHlLxYh5S9ntU4v0bCLr8Usua94gQlv8PXtL3yZ0I/yiWsvSOMbj9HwbQ+e4JEPkNrkj7NVnA/kKPcPuuz8j64kUQ/4gQlP8PXtL3yZ0I/y6BNP/4r+L7+Q7E+mBVpP0oCy75rmvC9n0h/P1iHlLxYh5S9n0h/v1iHlLxYh5S9mBVpv0oCy75rmvC9y6BNv/4r+L7+Q7E+4gQlv8PXtL3yZ0I/kKPcvuuz8j64kUQ/YcQUPxVa077nizM/y6BNP/4r+L7+Q7E+mBVpP0oCy75rmvC9M1h7Pxy5OL6CQnK9M1h7vxy5OL6CQnK9mBVpv0oCy75rmvC9y6BNv/4r+L7+Q7E+YcQUvxVa077nizM/YcQUPxVa077nizM/1UsXPyZo3L73pC4/KDc7PzKCJ7+kEUU+YGZJP5CgG7+Atds9YGZJv5CgG7+Atds9KDc7vzKCJ7+kEUU+1UsXvyZo3L73pC4/YcQUvxVa077nizM/8q6DPgbodr0G6HY/JhnNPoijDL3jZWo/KDc7PzKCJ7+kEUU+YGZJP5CgG7+Atds9YGZJv5CgG7+Atds9KDc7vzKCJ7+kEUU+JhnNvoijDL3jZWo/8q6Dvgbodr0G6HY/8za6vi01ND8WLhw/3J0LvJY8fz+YEZ09LdEpP1MLP788bGI9LdEpv1MLP788bGI93J0LPJY8fz+YEZ098za6Pi01ND8WLhw/8za6vi01ND8WLhw/R/cTPqYctjzXP30/LdEpP1MLP788bGI9l2hvP4n+qD6jcAM+l2hvv4n+qD6jcAM+LdEpv1MLP788bGI9R/cTvqYctjzXP30/8za6Pi01ND8WLhw/WHOCPSDvLbw3d38/R/cTPqYctjzXP30/9XY8PkZJez+7Z1G9l2hvP4n+qD6jcAM+l2hvv4n+qD6jcAM+9XY8vkZJez+7Z1G9R/cTvqYctjzXP30/WHOCvSDvLbw3d38/WHOCPSDvLbw3d38/9XY8PkZJez+7Z1G9c8YzP3PGM79Es+89c8Yzv3PGM79Es+899XY8vkZJez+7Z1G9WHOCvSDvLbw3d38/WHOCPSDvLbw3d38/8q6DPgbodr0G6HY/c8YzP3PGM79Es+89YGZJP5CgG7+Atds9YGZJv5CgG7+Atds9c8Yzv3PGM79Es+898q6Dvgbodr0G6HY/WHOCvSDvLbw3d38/k++LPi59ZL9xqrc+wI6YPv+KFD/nCkI/XYOyPrrbkT57lWQ/PKofP7jANL8Vt6s+PKofv7jANL8Vt6s+XYOyvrrbkT57lWQ/wI6Yvv+KFD/nCkI/k++Lvi59ZL9xqrc+WTBVvwEPAr+TQWG+k++LPi59ZL9xqrc+wI6YPv+KFD/nCkI/WJwGPz0chj6fK08/WJwGvz0chj6fK08/wI6Yvv+KFD/nCkI/k++Lvi59ZL9xqrc+WTBVPwEPAr+TQWG+DXtVvwltcz6EBP++WTBVvwEPAr+TQWG+cdUBPygzW75HuFU/WJwGPz0chj6fK08/WJwGvz0chj6fK08/cdUBvygzW75HuFU/WTBVPwEPAr+TQWG+DXtVPwltcz6EBP++DXtVvwltcz6EBP++QcIQv8fjSD/M/IG+tfjkPpMMTb5rKV8/cdUBPygzW75HuFU/cdUBvygzW75HuFU/tfjkvpMMTb5rKV8/QcIQP8fjSD/M/IG+DXtVPwltcz6EBP++QcIQv8fjSD/M/IG+PDtlvRkFfz/xiYk9tfjkPpMMTb5rKV8/8z8hP0o7ET0moEY/8z8hv0o7ET0moEY/tfjkvpMMTb5rKV8/PDtlPRkFfz/xiYk9QcIQP8fjSD/M/IG+8za6vi01ND8WLhw/PDtlvRkFfz/xiYk93J0LvJY8fz+YEZ098z8hP0o7ET0moEY/8z8hv0o7ET0moEY/3J0LPJY8fz+YEZ09PDtlPRkFfz/xiYk98za6Pi01ND8WLhw/XYOyPrrbkT57lWQ/JhnNPoijDL3jZWo/PKofP7jANL8Vt6s+KDc7PzKCJ7+kEUU+KDc7vzKCJ7+kEUU+PKofv7jANL8Vt6s+JhnNvoijDL3jZWo/XYOyvrrbkT57lWQ/WHOCPSDvLbw3d38/R/cTPqYctjzXP30/8q6DPgbodr0G6HY/wKenPpAXhD1uUnE/wKenvpAXhD1uUnE/8q6Dvgbodr0G6HY/R/cTvqYctjzXP30/WHOCvSDvLbw3d38/8za6vi01ND8WLhw/R/cTPqYctjzXP30/wKenPpAXhD1uUnE/8z8hP0o7ET0moEY/8z8hv0o7ET0moEY/wKenvpAXhD1uUnE/R/cTvqYctjzXP30/8za6Pi01ND8WLhw/2xWgPhe7vTy1F3M/wKenPpAXhD1uUnE/tfjkPpMMTb5rKV8/8z8hP0o7ET0moEY/8z8hv0o7ET0moEY/tfjkvpMMTb5rKV8/wKenvpAXhD1uUnE/2xWgvhe7vTy1F3M/8q6DPgbodr0G6HY/2xWgPhe7vTy1F3M/wKenPpAXhD1uUnE/JhnNPoijDL3jZWo/JhnNvoijDL3jZWo/wKenvpAXhD1uUnE/2xWgvhe7vTy1F3M/8q6Dvgbodr0G6HY/lRcvPi8e4Dz1IXw/2xWgPhe7vTy1F3M/XYOyPrrbkT57lWQ/JhnNPoijDL3jZWo/JhnNvoijDL3jZWo/XYOyvrrbkT57lWQ/2xWgvhe7vTy1F3M/lRcvvi8e4Dz1IXw/lRcvPi8e4Dz1IXw/2xWgPhe7vTy1F3M/tfjkPpMMTb5rKV8/cdUBPygzW75HuFU/cdUBvygzW75HuFU/tfjkvpMMTb5rKV8/2xWgvhe7vTy1F3M/lRcvvi8e4Dz1IXw/lRcvPi8e4Dz1IXw/cdUBPygzW75HuFU/WJwGPz0chj6fK08/WJwGvz0chj6fK08/cdUBvygzW75HuFU/lRcvvi8e4Dz1IXw/lRcvPi8e4Dz1IXw/wI6YPv+KFD/nCkI/XYOyPrrbkT57lWQ/WJwGPz0chj6fK08/WJwGvz0chj6fK08/XYOyvrrbkT57lWQ/wI6Yvv+KFD/nCkI/lRcvvi8e4Dz1IXw/M9IJv+bKH7xQuFe/x1vmvrY+Yj8pogO++S9xvnrObz+ej4S+EqBDvu9nxbyVNXu/EqBDPu9nxbyVNXu/+S9xPnrObz+ej4S+x1vmPrY+Yj8pogO+M9IJP+bKH7xQuFe/+S9xvnrObz+ej4S+EqBDvu9nxbyVNXu/7CrPPrzA2Tw8Amq/w9lWP8PbCj9rvxq9w9lWv8PbCj9rvxq97CrPvrzA2Tw8Amq/EqBDPu9nxbyVNXu/+S9xPnrObz+ej4S+7CrPPrzA2Tw8Amq/w9lWP8PbCj9rvxq9PLNtPzKwf75asYw+PLNtvzKwf75asYw+w9lWv8PbCj9rvxq97CrPvrzA2Tw8Amq/EqBDvu9nxbyVNXu/7CrPPrzA2Tw8Amq/CiYAP3abXb/omAI8PLNtPzKwf75asYw+PLNtvzKwf75asYw+CiYAv3abXb/omAI87CrPvrzA2Tw8Amq/EqBDPu9nxbyVNXu/M9IJv+bKH7xQuFe/EqBDvu9nxbyVNXu/l4q+PR8Ofr+X3aS9CiYAP3abXb/omAI8CiYAv3abXb/omAI8l4q+vR8Ofr+X3aS9EqBDPu9nxbyVNXu/M9IJP+bKH7xQuFe/M9IJv+bKH7xQuFe//VV9vg5ObL+Ry5a+l4q+PR8Ofr+X3aS9MvMKPzc0U77KbFC/MvMKvzc0U77KbFC/l4q+vR8Ofr+X3aS9/VV9Pg5ObL+Ry5a+M9IJP+bKH7xQuFe/gyhIv6iFHz+HM6E8M9IJv+bKH7xQuFe/x1vmvrY+Yj8pogO+MvMKPzc0U77KbFC/MvMKvzc0U77KbFC/x1vmPrY+Yj8pogO+M9IJP+bKH7xQuFe/gyhIP6iFHz+HM6E8FeFeP4YZ0j4V4V4/hhnSPhXhXj+GGdI+FeFeP4YZ0j6kOV4/FMY2PqQ5Xj8UxjY+pDlePxTGNj6kOV4/FMY2PkUuXD+cOOE+RS5cP5w44T5FLlw/nDjhPkUuXD+cOOE+oTFbPzQKGT6hMVs/NAoZPqExWz80Chk+oTFbPzQKGT5jX1o/1PX0PmNfWj/U9fQ+AvNYPxjY4z0C81g/GNjjPUBpTD/oZdw+QGlMP+hl3D7wi0s/9HklPvCLSz/0eSU+yjJUP3aG0T7KMlQ/dobRPsoyVD92htE+yjJUP3aG0T5PkVM/cNE5Pk+RUz9w0Tk+T5FTP3DROT5PkVM/cNE5Phe6Wj+wXco+F7paP7Bdyj4Xulo/sF3KPhe6Wj+wXco+qz9aP5T2Rj6rP1o/lPZGPqs/Wj+U9kY+qz9aP5T2Rj7Cplo/1sO/PsKmWj/Ww78+wqZaP9bDvz7Cplo/1sO/Pn9oWj9wKFw+f2haP3AoXD5/aFo/cChcPn9oWj9wKFw+BANUPwa5uz4EA1Q/Brm7PgQDVD8Gubs+BANUPwa5uz523VM/sGllPnbdUz+waWU+dt1TP7BpZT523VM/sGllPiiASj9+iLU+KIBKP36ItT4ogEo/4HdzPiiASj/gd3M+xqRXPxpTmD7GpFc/GlOYPl5HWD9Iv5U+XkdYP0i/lT4k7Vo/1LapPiTtWj/Utqk+JO1aP9S2qT4k7Vo/1LapPh8sWz9MFYQ+HyxbP0wVhD4fLFs/TBWEPh8sWz9MFYQ+ARVeP6Iltz4BFV4/oiW3PgEVXj+iJbc+ARVeP6Iltz7qBl4/aMRsPuoGXj9oxGw+6gZeP2jEbD7qBl4/aMRsPhv2Yz+0V7c+G/ZjP7RXtz4b9mM/tFe3Phv2Yz+0V7c+ZOVjPyRVaz5k5WM/JFVrPmTlYz8kVWs+ZOVjPyRVaz76fmY/soOqPvp+Zj+yg6o++n5mP7KDqj76fmY/soOqPo22Zj/EQYI+jbZmP8RBgj6NtmY/xEGCPo22Zj/EQYI+5jxrP1DBmT7mPGs/UMGZPnTSaz82lJI+dNJrPzaUkj6K6Hc/6pa1Porodz/qlrU+z9x3P3RLaz7P3Hc/dEtrPkeQbj8o8bk+R5BuPyjxuT5HkG4/KPG5PkeQbj8o8bk+Im5uP7xBZD4ibm4/vEFkPiJubj+8QWQ+Im5uP7xBZD7i52c/ooO+PuLnZz+ig74+4udnP6KDvj7i52c/ooO+Pm2tZz+oTVw+ba1nP6hNXD5trWc/qE1cPm2tZz+oTVw+0v5nPzDcyT7S/mc/MNzJPtL+Zz8w3Mk+0v5nPzDcyT7xg2c/ZJ5FPvGDZz9knkU+8YNnP2SeRT7xg2c/ZJ5FPhQIbz90XdA+FAhvP3Rd0D4UCG8/dF3QPhQIbz90XdA+ZmZuPyxfNz5mZm4/LF83PmZmbj8sXzc+ZmZuPyxfNz6K6Hc/UDXaPorodz9QNdo+uwx3PwAhIj67DHc/ACEiPgCQaz+0bvM+AJBrP7Ru8z7yJ2o/GNjjPfInaj8Y2OM995FnP8yV4T73kWc/zJXhPveRZz/MleE+95FnP8yV4T5YkGY/WEoWPliQZj9YShY+WJBmP1hKFj5YkGY/WEoWPqAVZD9E49E+oBVkP0Tj0T6gFWQ/ROPRPqAVZD9E49E+DW5jP+RFNj4NbmM/5EU2Pg1uYz/kRTY+DW5jP+RFNj48vGM/Qj7QPjy8Yz9CPtA+PLxjP0I+0D48vGM/Qj7QPhkeYz8cnzk+GR5jPxyfOT4ZHmM/HJ85PhkeYz8cnzk+AAFnPybAyD4AAWc/JsDIPgABZz8mwMg+AAFnPybAyD6cjGY/wAJIPpyMZj/AAkg+nIxmP8ACSD6cjGY/wAJIPgxYZj8+W78+DFhmPz5bvz4MWGY/Plu/PgxYZj8+W78+MxlmP7zlWj4zGWY/vOVaPjMZZj+85Vo+MxlmP7zlWj6dSWM/Ihm6Pp1JYz8iGbo+nUljPyIZuj6dSWM/Ihm6Pm8pYz+I8mU+byljP4jyZT5vKWM/iPJlPm8pYz+I8mU+1PNePyrBuj7U814/KsG6PtTzXj8qwbo+1PNePyrBuj720F4/mGdlPvbQXj+YZ2U+9tBeP5hnZT720F4/mGdlPikhXD+sisA+KSFcP6yKwD4pIVw/rIrAPikhXD+sisA+L95bP+xXWj4v3ls/7FdaPi/eWz/sV1o+L95bP+xXWj5cIGE/iljEPlwgYT+KWMQ+XCBhP4pYxD5cIGE/iljEPlwgYT+KWMQ+XCBhP4pYxD5cIGE/iljEPlwgYT+KWMQ+gsZgPwDbUT6CxmA/ANtRPoLGYD8A21E+gsZgPwDbUT6CxmA/ANtRPoLGYD8A21E+gsZgPwDbUT6CxmA/ANtRPvESXD/Ym8g+8RJcP9ibyD7xElw/2JvIPvESXD/Ym8g+FqJbPyA8Sj4Wols/IDxKPhaiWz8gPEo+FqJbPyA8Sj5fJV8/WOTPPl8lXz9Y5M8+XyVfP1jkzz5fJV8/WOTPPmGKXj8UIzs+YYpePxQjOz5hil4/FCM7PmGKXj8UIzs+v5wFP4QuHT+/nAU/hC4dP7+cBT+ELh0/v5wFP4QuHT/kZQU/RPgnP+RlBT9E+Cc/5GUFP0T4Jz/kZQU/RPgnP+RlBT9E+Cc/5GUFP0T4Jz9F2AQ/w/JnP0XYBD/D8mc/RdgEP8PyZz8O3QQ/8UlXPw7dBD/xSVc/Dt0EP/FJVz8O3QQ/8UlXP9blBD/OilA/1uUEP86KUD/W5QQ/zopQP9blBD/OilA/RdgEP9OHaj9F2AQ/04dqP0XYBD/Th2o/RdgEP9OHaj9c5QU/wv0QP13hUT+ALAg/URNdPnwn/j5c5QU/wv0QP026PT4WEgQ/n3JYP/bODD9Nuj0+FhIEP59yWD/2zgw/Tbo9PhYSBD+fclg/9s4MP7X+FjnFqj0/tf4WOcWqPT+Q9n8/6s8+P5D2fz/qzz4/bM5BPN45WD9szkE83jlYPzGZfj9JEVU/MZl+P0kRVT9OtqE9uHRwP062oT24dHA/gSZyP16haz+BJnI/XqFrP0c7bj6sG38/RztuPqwbfz/BOk4/IT19P8E6Tj8hPX0/1gIbP8e5VT/WAhs/x7lVP9YCGz/HuVU/1gIbP8e5VT9AMt0+W5hVP0Ay3T5bmFU/QDLdPluYVT9AMt0+W5hVP1ZIFT+sOWQ/VkgVP6w5ZD9WSBU/rDlkP1ZIFT+sOWQ/w7foPpc6ZD/Dt+g+lzpkP8O36D6XOmQ/w7foPpc6ZD/8VRA/3GRsP/xVED/cZGw//FUQP9xkbD/8VRA/3GRsP/ex8j7GaWw/97HyPsZpbD/3sfI+xmlsP/ex8j7GaWw/RBkOP1IncD9EGQ4/UidwP0QZDj9SJ3A/RBkOP1IncD84Mvc++itwPzgy9z76K3A/ODL3PvorcD84Mvc++itwP0lLDT/DEHE/SUsNP8MQcT9JSw0/wxBxP0lLDT/DEHE/GM/4PgUVcT8Yz/g+BRVxPxjP+D4FFXE/GM/4PgUVcT97Tgo/1jlyP3tOCj/WOXI/e04KP9Y5cj97Tgo/1jlyP9bI/j4hPHI/1sj+PiE8cj/WyP4+ITxyP9bI/j4hPHI/rtcEP+8fcz+u1wQ/7x9zP67XBD/vH3M/rtcEP+8fcz+uuyU/56tMP667JT/nq0w/rrslP+erTD+uuyU/56tMP76Dxz7wUEw/voPHPvBQTD++g8c+8FBMP76Dxz7wUEw/LSctP1FKRD8tJy0/UUpEPy0nLT9RSkQ/LSctP1FKRD9Kerg+IJxDP0p6uD4gnEM/Snq4PiCcQz9Kerg+IJxDP6cgNz9FDzw/pyA3P0UPPD+nIDc/RQ88P6cgNz9FDzw/SRKkPmzNOj9JEqQ+bM06P0kSpD5szTo/SRKkPmzNOj+ZDjU/TaAwP5kONT9NoDA/mQ41P02gMD+ZDjU/TaAwP0NUqT654i4/Q1SpPrniLj9DVKk+ueIuP0NUqT654i4/0osyP/HVKj/SizI/8dUqP9KLMj/x1So/0osyP/HVKj/oFa8+lgspP+gVrz6WCyk/6BWvPpYLKT/oFa8+lgspP2CuKT92oiA/YK4pP3aiID9grik/dqIgP2CuKT92oiA/NzPCPm8OHz83M8I+bw4fPzczwj5vDh8/NzPCPm8OHz+4eCA/YK0aP7h4ID9grRo/uHggP2CtGj+4eCA/YK0aP+J11T5sdRk/4nXVPmx1GT/iddU+bHUZP+J11T5sdRk/4NUaP4QpGj/g1Ro/hCkaP+DVGj+EKRo/4NUaP4QpGj+j5eA+rDQZP6Pl4D6sNBk/o+XgPqw0GT+j5eA+rDQZP6KXDT9oBxw/opcNP2gHHD+ilw0/aAccP6KXDT9oBxw/tFv7Pu6uGz+0W/s+7q4bP7Rb+z7urhs/tFv7Pu6uGz+OyBM/iusoP47IEz+K6yg/jsgTP4rrKD+OyBM/iusoP0zd7T6eYyg/TN3tPp5jKD9M3e0+nmMoP0zd7T6eYyg/oPsOP7LzLj+g+w4/svMuP6D7Dj+y8y4/oPsOP7LzLj/WGfc+2KEuP9YZ9z7YoS4/1hn3PtihLj/WGfc+2KEuP0OsEj/Azj0/Q6wSP8DOPT9DrBI/wM49P0OsEj/Azj0/Kc3uPraDPT8pze4+toM9PynN7j62gz0/Kc3uPraDPT+ULh0/5+BBP5QuHT/n4EE/lC4dP+fgQT+ULh0/5+BBP1hT2T44akE/WFPZPjhqQT9YU9k+OGpBP1hT2T44akE/+KQjP1A4Pz/4pCM/UDg/P/ikIz9QOD8/+KQjP1A4Pz+aQcw+1o4+P5pBzD7Wjj4/mkHMPtaOPj+aQcw+1o4+P4YCKj9i3Tg/hgIqP2LdOD+GAio/Yt04P4YCKj9i3Tg/CYq/PmbdNz8Jir8+Zt03PwmKvz5m3Tc/CYq/PmbdNz/iHis/BrkzP+IeKz8GuTM/4h4rPwa5Mz/iHis/BrkzP3yYvT7shTI/fJi9PuyFMj98mL0+7IUyP3yYvT7shTI/cZMpPxTsLz9xkyk/FOwvP3GTKT8U7C8/cZMpPxTsLz8kDsE+MqwuPyQOwT4yrC4/JA7BPjKsLj8kDsE+MqwuP8JsIj+q7So/wmwiP6rtKj/CbCI/qu0qP8JsIj+q7So/rg7QPnLcKT+uDtA+ctwpP64O0D5y3Ck/rg7QPnLcKT9xjxk/NLonP3GPGT80uic/cY8ZPzS6Jz9xjxk/NLonP89K4j6Y9SY/z0riPpj1Jj/PSuI+mPUmP89K4j6Y9SY/ZtgEP6Uxaj9m2AQ/pTFqP2bYBD+lMWo/3PAHPx+eaT/c8Ac/H55pP9zwBz8fnmk/3PAHPx+eaT/c8Ac/H55pP2q/AT8bn2k/ar8BPxufaT9qvwE/G59pP2q/AT8bn2k/ar8BPxufaT/B/gc/ixltP8H+Bz+LGW0/wf4HP4sZbT/B/gc/ixltPz6yAT+5Gm0/PrIBP7kabT8+sgE/uRptPz6yAT+5Gm0/DoYGPy5Ybj8OhgY/LlhuPw6GBj8uWG4/DoYGPy5Ybj8CKwM/5lhuPwIrAz/mWG4/AisDP+ZYbj8CKwM/5lhuP3fYBD8snm4/d9gEPyyebj932AQ/LJ5uP3fYBD8snm4/7X8EP2E0Tz/tfwQ/YTRPP00UBT+OlUw/TRQFP46VTD9NFAU/jpVMP00UBT+OlUw/TRQFP46VTD9NFAU/jpVMPwBWCz+Rf04/AFYLP5F/Tj8AVgs/kX9OPwBWCz+Rf04/C+38PoF7Tj8L7fw+gXtOPwvt/D6Be04/C+38PoF7Tj90YQw/kpFTP3RhDD+SkVM/dGEMP5KRUz90YQw/kpFTP7u3+j7biFM/u7f6PtuIUz+7t/o+24hTP7u3+j7biFM/tcEJP0d0Vz+1wQk/R3RXP7XBCT9HdFc/tcEJP0d0Vz+1wQk/R3RXP3js/z7ecFc/eOz/Pt5wVz947P8+3nBXP3js/z7ecFc/eOz/Pt5wVz96Gx8/uK1FP3obHz+4rUU/ehsfP7itRT96Gx8/uK1FP1NB1T4lQEU/U0HVPiVART9TQdU+JUBFP1NB1T4lQEU/xy0qP6YsPz/HLSo/piw/P8ctKj+mLD8/xy0qP6YsPz+y2L4+Y18+P7LYvj5jXz4/sti+PmNfPj+y2L4+Y18+P5gULz9AUjg/mBQvP0BSOD+YFC8/QFI4P5gULz9AUjg/pBe1PhAkNz+kF7U+ECQ3P6QXtT4QJDc/pBe1PhAkNz/8ADA/+z4wP/wAMD/7PjA//AAwP/s+MD/8ADA/+z4wP8jOsz5AvC4/yM6zPkC8Lj/IzrM+QLwuP8jOsz5AvC4/VkQtP3cSLT9WRC0/dxItP1ZELT93Ei0/VkQtP3cSLT/Utrk+V5crP9S2uT5Xlys/1La5PleXKz/Utrk+V5crP8iYIz8GhiQ/yJgjPwaGJD/ImCM/BoYkP8iYIz8GhiQ/IjjOPmJLIz8iOM4+YksjPyI4zj5iSyM/IjjOPmJLIz/1SR4/GvYfP/VJHj8a9h8/9UkePxr2Hz/1SR4/GvYfP/Fi2T5c6B4/8WLZPlzoHj/xYtk+XOgeP/Fi2T5c6B4/js4ZP8REHz+Ozhk/xEQfP47OGT/ERB8/js4ZP8REHz+6geI+PGgeP7qB4j48aB4/uoHiPjxoHj+6geI+PGgeP8xGDz/umiQ/zEYPP+6aJD/MRg8/7pokP8xGDz/umiQ/pkP3Poo5JD+mQ/c+ijkkP6ZD9z6KOSQ/pkP3Poo5JD8kmQ0/uFdKPySZDT+4V0o/JJkNP7hXSj8kmQ0/uFdKPySZDT+4V0o/JJkNP7hXSj9afvg++DlKP1p++D74OUo/Wn74Pvg5Sj9afvg++DlKP1p++D74OUo/Wn74Pvg5Sj8uPQ4/D9VgPy49Dj8P1WA/Lj0OPw/VYD8uPQ4/D9VgP+ff9j720mA/59/2PvbSYD/n3/Y+9tJgP+ff9j720mA/jV8MP3REaj+NXww/dERqP41fDD90RGo/jV8MP3REaj+poPo+v0ZqP6mg+j6/Rmo/qaD6Pr9Gaj+poPo+v0ZqP6nZCz+QZW0/qdkLP5BlbT+p2Qs/kGVtP6nZCz+QZW0/aK77PnNobT9orvs+c2htP2iu+z5zaG0/aK77PnNobT8o9Ao/3ZdvPyj0Cj/dl28/KPQKP92Xbz8o9Ao/3ZdvP4V7/T6emm8/hXv9Pp6abz+Fe/0+nppvP4V7/T6emm8/wVIJPw0ccD/BUgk/DRxwP8FSCT8NHHA/wVIJPw0ccD8pXwA/8x1wPylfAD/zHXA/KV8AP/MdcD8pXwA/8x1wP0XYBD+/uHA/RdgEP7+4cD9F2AQ/v7hwP0XYBD+/uHA//g4FP3NKQD/+DgU/c0pAP/4OBT9zSkA//g4FP3NKQD/+DgU/c0pAP/4OBT9zSkA/4DAFP1iKND/gMAU/WIo0P+AwBT9YijQ/4DAFP1iKND9slB0/XHIoP2yUHT9ccig/bJQdP1xyKD9slB0/XHIoPwEZ2j7whyc/ARnaPvCHJz8BGdo+8IcnPwEZ2j7whyc/FFwQP8BdOj8UXBA/wF06PxRcED/AXTo/FFwQP8BdOj9Up/M+kBc6P1Sn8z6QFzo/VKfzPpAXOj9Up/M+kBc6P4GSDj8AczU/gZIOPwBzNT+Bkg4/AHM1P4GSDj8AczU/iIT3PiwvNT+IhPc+LC81P4iE9z4sLzU/iIT3PiwvNT//XAg/eLloP/9cCD94uWg//1wIP3i5aD//XAg/eLloP0hTAT9Bumg/SFMBP0G6aD9IUwE/QbpoP0hTAT9Bumg/6DMIPzROXz/oMwg/NE5fP+gzCD80Tl8/6DMIPzROXz/yfQE/OE1fP/J9AT84TV8/8n0BPzhNXz/yfQE/OE1fP1HZBD/uI18/UdkEP+4jXz9R2QQ/7iNfP1HZBD/uI18/8NsEP/omWT/w2wQ/+iZZP/DbBD/6Jlk/8NsEP/omWT/JAwk/EkxVP8kDCT8STFU/yQMJPxJMVT/JAwk/EkxVP2+3AD/cSFU/b7cAP9xIVT9vtwA/3EhVP2+3AD/cSFU/rrcJP+TzUj+utwk/5PNSP663CT/k81I/rrcJP+TzUj+OBgA/gO9SP44GAD+A71I/jgYAP4DvUj+OBgA/gO9SPxaJCT/0+k8/FokJP/T6Tz8WiQk/9PpPPxaJCT/0+k8/VDoAP1n7Tz9UOgA/WftPP1Q6AD9Z+08/VDoAP1n7Tz+eXAc/LudOP55cBz8u504/nlwHPy7nTj+eXAc/LudOPy1cAj+Z8U4/LVwCP5nxTj8tXAI/mfFOPy1cAj+Z8U4/rOMEPxsPUj+s4wQ/Gw9SP6zjBD8bD1I/rOMEPxsPUj+s4wQ/Gw9SP6zjBD8bD1I/jzkHP5hNUD+POQc/mE1QP485Bz+YTVA/Z4ECP0RRUD9ngQI/RFFQP2eBAj9EUVA/SpUIP0nXUD9KlQg/SddQP0qVCD9J11A//ikBP+DXUD/+KQE/4NdQP/4pAT/g11A/HZAIPzzBUj8dkAg/PMFSPx2QCD88wVI/HZAIPzzBUj+6LQE/071SP7otAT/TvVI/ui0BP9O9Uj+6LQE/071SPzT4Bz/+D1Q/NPgHP/4PVD80+Ac//g9UP9vEAT+iDVQ/28QBP6INVD/bxAE/og1UPzzeBD9Om1U/PN4EP06bVT883gQ/TptVPzzeBD9Om1U/gJwYP8vXXT+AnBg/y9ddP4CcGD/L110/gJwYP8vXXT+H/uE+6sxdP4f+4T7qzF0/h/7hPurMXT+H/uE+6sxdPy/DDz9wDFU/L8MPP3AMVT8vww8/cAxVPy/DDz9wDFU/2uXzPjf+VD/a5fM+N/5UP9rl8z43/lQ/2uXzPjf+VD/BOQ8/O8ZZP8E5Dz87xlk/wTkPPzvGWT/BOQ8/O8ZZPwvt9D7YvVk/C+30Pti9WT8L7fQ+2L1ZPwvt9D7YvVk/NuYZPzYkWj825hk/NiRaPzbmGT82JFo/NuYZPzYkWj+QZ98+9Q9aP5Bn3z71D1o/kGffPvUPWj+QZ98+9Q9aP4jYBD9YN24/iNgEP1g3bj+I2AQ/WDduP4jYBD9YN24/jBQGPzDzbT+MFAY/MPNtP4wUBj8w820/jBQGPzDzbT9znAM/pvNtP3OcAz+m820/c5wDP6bzbT9znAM/pvNtP+duBz+vsGw/524HP6+wbD/nbgc/r7BsP+duBz+vsGw/B0ICP5qxbD8HQgI/mrFsPwdCAj+asWw/B0ICP5qxbD8naAc/QkBqPydoBz9CQGo/J2gHP0JAaj8naAc/QkBqP0FIAj8LQWo/QUgCPwtBaj9BSAI/C0FqP0FIAj8LQWo/VtgEP/ewaz9W2AQ/97BrP1bYBD/3sGs/VtgEP/ewaz9ATAY/l4xrP0BMBj+XjGs/QEwGP5eMaz9ATAY/l4xrP3xkAz8NjWs/fGQDPw2Naz98ZAM/DY1rP3xkAz8NjWs/VTQGP/pdbD9VNAY/+l1sP1U0Bj/6XWw/iXwDP3BebD+JfAM/cF5sP4l8Az9wXmw/9YQFP8TObD/1hAU/xM5sP/WEBT/Ezmw/9YQFP8TObD8KLAQ/B89sPwosBD8Hz2w/CiwEPwfPbD8KLAQ/B89sP3fYBD9d/Ww/d9gEP139bD932AQ/Xf1sP3fYBD9d/Ww/c38RPz4ENT9zfxE/PgQ1P3N/ET8+BDU/c38RPz4ENT8ap/E+8Kk0Pxqn8T7wqTQ/GqfxPvCpND8ap/E+8Kk0P6JgEj8yAzk/omASPzIDOT+iYBI/MgM5P6JgEj8yAzk/36bvPo6sOD/fpu8+jqw4P9+m7z6OrDg/36bvPo6sOD/YSR0/4gMrP9hJHT/iAys/2EkdP+IDKz/YSR0/4gMrP/Z72j7IJSo/9nvaPsglKj/2e9o+yCUqP/Z72j7IJSo/TN0ZP56XKj9M3Rk/npcqP0zdGT+elyo/TN0ZP56XKj/FdOE+ttgpP8V04T622Ck/xXThPrbYKT/FdOE+ttgpP8QIIT9AFy0/xAghP0AXLT/ECCE/QBctP8QIIT9AFy0/eLfSPqAdLD94t9I+oB0sP3i30j6gHSw/eLfSPqAdLD/BGic/ppcwP8EaJz+mlzA/wRonP6aXMD/BGic/ppcwP0ASxj5kdS8/QBLGPmR1Lz9AEsY+ZHUvP0ASxj5kdS8/z/MnPyDOMz/P8yc/IM4zP8/zJz8gzjM/z/MnPyDOMz+LGsQ+CrkyP4saxD4KuTI/ixrEPgq5Mj+LGsQ+CrkyPyFWJz/SUzg/IVYnP9JTOD8hVic/0lM4PyFWJz/SUzg/IxLFPsNjNz8jEsU+w2M3PyMSxT7DYzc/IxLFPsNjNz8g6yE/qrU8PyDrIT+qtTw/IOshP6q1PD8g6yE/qrU8PyXozz6rBzw/JejPPqsHPD8l6M8+qwc8PyXozz6rBzw/r5kcP86IPj+vmRw/zog+P6+ZHD/OiD4/r5kcP86IPj/fp9o+igU+P9+n2j6KBT4/36faPooFPj/fp9o+igU+P/yqFD/Kvjs//KoUP8q+Oz/8qhQ/yr47P/yqFD/Kvjs/k9/qPiRhOz+T3+o+JGE7P5Pf6j4kYTs/k9/qPiRhOz+ztRI/AkkwP7O1Ej8CSTA/s7USPwJJMD+ztRI/AkkwPyyC7z7s2S8/LILvPuzZLz8sgu8+7NkvPyyC7z7s2S8/D7kVP1QbLD8PuRU/VBssPw+5FT9UGyw/D7kVP1QbLD9at+k+rYcrP1q36T6thys/WrfpPq2HKz9at+k+rYcrP3I0Fz8gsS0/cjQXPyCxLT/hm+Y+pRMtP+Gb5j6lEy0/Ql0UPxjPMD9CXRQ/GM8wP+4i7D4IUzA/7iLsPghTMD9wzRU/VqA6P3DNFT9WoDo/DqPoPgA4Oj8Oo+g+ADg6PwrWHD9oCj0/CtYcP2gKPT/3Pdo+nn48P/c92j6efjw/eTwhP6eUOz95PCE/p5Q7P2xa0T744zo/bFrRPvjjOj891SU/dm03Pz3VJT92bTc/ZTbIPoSCNj9lNsg+hII2P1JIJj+ZKjQ/UkgmP5kqND/Hgcc+NSczP8eBxz41JzM/gnAlP2SOMT+CcCU/ZI4xPzxpyT5qgjA/PGnJPmqCMD9PeSA/3PItP095ID/c8i0/rMnTPt4CLT+sydM+3gItP4APGj+B6is/gA8aP4HqKz9e9eA+5C0rP1714D7kLSs/hgMdP0pELD+GAx0/SkQsP2fx2j6obSs/Z/HaPqhtKz/v/xM/Z9U3P+//Ez9n1Tc/ynDsPmlwNz/KcOw+aXA3P53YEz8YyzQ/ndgTPxjLND8Y7uw+kl40Pxju7D6SXjQ/G58NP8giET8bnw0/yCIRPxLcUD+D+w0/EtxQP4P7DT8S3FA/g/sNP7KFYD4k1wU/soVgPiTXBT+yhWA+JNcFP3ZR/D4ewhA/dlH8Ph7CED8ZHRw/K4gRPxkdHD8riBE/NURFP+lEDj858Io+w9QGPwsp3z5YcxA/CynfPlhzED+77iU/tacUP451QT9v1hQ/u+4lP7WnFD9oBMs+8BcTP/31kj5SnQ4/aATLPvAXEz/YKkU/mdYeP9gqRT+Z1h4/2CpFP5nWHj/cLTE/E5ocP9wtMT8Tmhw/eVmzPryQGj95WbM+vJAaP0lHiT5f7Bk/SUeJPl/sGT9JR4k+X+wZP+XwOT/Qgig//OE/PzdSKj/l8Dk/0IIoP/zhPz83Uio/uYyTPgpMJz+OIaA+3j8mP7mMkz4KTCc/jiGgPt4/Jj+RYjw/bhkwP5FiPD9uGTA/kWI8P24ZMD+RYjw/bhkwP3Qlmj6e7S0/dCWaPp7tLT90JZo+nu0tP3Qlmj6e7S0/uto6PwhdPj+62jo/CF0+P7raOj8IXT4/uto6PwhdPj+1GJw+Zyk9P7UYnD5nKT0/tRicPmcpPT+1GJw+Zyk9P2a7Mj/ZeEg/ZrsyP9l4SD9muzI/2XhIP2a7Mj/ZeEg/h8GsPuLjRz+Hwaw+4uNHP4fBrD7i40c/h8GsPuLjRz8ewSk/MDBPPx7BKT8wME8/HsEpPzAwTz8ewSk/MDBPPx7BKT8wME8//De/PnrhTj/8N78+euFOP/w3vz564U4//De/PnrhTj/8N78+euFOPz7o2T24PRE/PujZPbg9ET9FY2k/avoYP0VjaT9q+hg/yhc0PcwJIj/KFzQ9zAkiP66Adj9Vvic/roB2P1W+Jz8QsRE+JIF6PxCxET4kgXo/sktkP6yMdj+yS2Q/rIx2P5lhuz5VoHo/mWG7PlWgej9cISw/CVF6P1whLD8JUXo/EtgEPxKheT8S2AQ/EqF5PxLYBD8SoXk/EtgEPxKheT809/A+kPZ/PzT38D6Q9n8/D0URP5D2fz8PRRE/kPZ/P0aY0j5gIHw/RpjSPmAgfD8LfSA/HQF8Pwt9ID8dAXw/VRTHPld5ej9VFMc+V3l6P/ZBJj9vRXo/9kEmP29Fej/r/kk/8kREP+v+ST/yREQ/6/5JP/JERD/r/kk/8kREP40Ldz56VUM/jQt3PnpVQz+NC3c+elVDP40Ldz56VUM/+kNPP/sfRD/6Q08/+x9EP/pDTz/7H0Q/+kNPP/sfRD/6Q08/+x9EP5RtYD6KOkM/lG1gPoo6Qz+UbWA+ijpDP5RtYD6KOkM/lG1gPoo6Qz+UpFc//glOP9jTHj/YX94+lKRXP/4JTj+UpFc//glOP5SkVz/+CU4/6gc1PjbHTT/qBzU+NsdNP+oHNT42x00/oYUUPozz3z6hhRQ+jPPfPpC7aD/OFVE/kLtoP84VUT+Qu2g/zhVRP5C7aD/OFVE/WwndPZ4nUj9bCd09nidSP1sJ3T2eJ1I/WwndPZ4nUj9znUI/kIdOP3OdQj+Qh04/c51CP5CHTj9znUI/kIdOP3OdQj+Qh04//wiLPnheTj//CIs+eF5OP/8Iiz54Xk4//wiLPnheTj//CIs+eF5OP0Q2yD46tsY+RDbIPjq2xj6cFUk/5wBZP5wVST/nAFk/nBVJP+cAWT9M33s+71dZP0zfez7vV1k/TN97Pu9XWT89Zb0+ZJTHPj1lvT5klMc+SwP/Pvg25T6rXlY/uvhXP0sD/z74NuU+q15WP7r4Vz9HV0k+IEJYP5VHhz4MVOY+R1dJPiBCWD+VR4c+DFTmPvTgYj8502A/9OBiPznTYD/04GI/OdNgP/TgYj8502A/nrQQPmE0Yz+etBA+YTRjP560ED5hNGM/nrQQPmE0Yz/9bCA/HH5jP/1sID8cfmM//WwgPxx+Yz/9bCA/HH5jP4Y80j6DhWM/hjzSPoOFYz+GPNI+g4VjP4Y80j6DhWM/URMpP8KFbD9REyk/woVsP1ETKT/ChWw/URMpP8KFbD9o68A+Z7lsP2jrwD5nuWw/aOvAPme5bD9o68A+Z7lsPxCzEz8LJ3E/ELMTPwsncT8QsxM/CydxPxCzEz8LJ3E/tf3rPhIxcT+1/es+EjFxP7X96z4SMXE/tf3rPhIxcT+Flxw/ofZrP4WXHD+h9ms/hZccP6H2az+Flxw/ofZrP8IT2j4tCWw/whPaPi0JbD/CE9o+LQlsP8IT2j4tCWw/9NwOP4M1cj/03A4/gzVyP/TcDj+DNXI/2q31PiU7cj/arfU+JTtyP9qt9T4lO3I/xsMTP1uadz/GwxM/W5p3P8bDEz9bmnc/xsMTP1uadz+e6+s+26N3P57r6z7bo3c/nuvrPtujdz+e6+s+26N3P7EWHz9wsHM/sRYfP3Cwcz+xFh8/cLBzP7EWHz9wsHM/3zTVPnTOcz/fNNU+dM5zP9801T50znM/3zTVPnTOcz9CIww/k1F1P0IjDD+TUXU/QiMMP5NRdT9CIww/k1F1P0Ik+z4uVXU/QiT7Pi5VdT9CJPs+LlV1P0Ik+z4uVXU/uyUhP3CaXj+7JSE/cJpeP7slIT9wml4/uyUhP3CaXj+7JSE/cJpePz230D5kkV4/PbfQPmSRXj89t9A+ZJFePz230D5kkV4/PbfQPmSRXj9enR8/lGtaP16dHz+Ua1o/Xp0fP5RrWj9enR8/lGtaP9zV0z7aU1o/3NXTPtpTWj/c1dM+2lNaP9zV0z7aU1o/pIoeP6kUVz+kih4/qRRXP6SKHj+pFFc/rwjWPpXyVj+vCNY+lfJWP68I1j6V8lY/aeAvP1w8bD9p4C8/XDxsP2ngLz9cPGw/aeAvP1w8bD9p4C8/XDxsP9Eisz42jmw/0SKzPjaObD/RIrM+No5sP9Eisz42jmw/0SKzPjaObD9i2Ek//U5rP2LYST/9Tms/YthJP/1Oaz9i2Ek//U5rP/ZDfD7XaWw/9kN8PtdpbD/2Q3w+12lsP/ZDfD7XaWw/iV9ZP/d3Zj+JX1k/93dmP4lfWT/3d2Y/iV9ZP/d3Zj+Agjs+XWpoP4CCOz5damg/gII7Pl1qaD+Agjs+XWpoPwhVaj98fT0/CFVqP3x9PT8IVWo/fH09PwhVaj98fT0/Ka7KPfynOz8prso9/Kc7Pymuyj38pzs/Ka7KPfynOz+T5WQ/u7cyP5PlZD+7tzI/k+VkP7u3Mj+T5WQ/u7cyP0Z+/T0mOi8/Rn79PSY6Lz9Gfv09JjovP0Z+/T0mOi8/6+RcP2VUKT/r5Fw/ZVQpP+vkXD9lVCk/6+RcP2VUKT8OaSQ+YackPw5pJD5hpyQ/DmkkPmGnJD8OaSQ+YackP1RWSz/VzCI/VFZLP9XMIj9UVks/1cwiP1RWSz/VzCI/14d1PnQOHj/Xh3U+dA4eP9eHdT50Dh4/14d1PnQOHj+pLkQ/Lv4yP6kuRD8u/jI/qS5EPy7+Mj+pLkQ/Lv4yP7TpiD6ImjA/tOmIPoiaMD+06Yg+iJowP7TpiD6ImjA/hQZKP5avLz+FBko/lq8vP4UGSj+Wry8/hQZKP5avLz/l0ng+oKgsP+XSeD6gqCw/5dJ4PqCoLD/l0ng+oKgsP9yeWD/v4zQ/3J5YP+/jND/cnlg/7+M0P9yeWD/v4zQ/Z9I2PqLsMT9n0jY+ouwxP2fSNj6i7DE/Z9I2PqLsMT9ruFA/oz45P2u4UD+jPjk/a7hQP6M+OT9ruFA/oz45P7YtWj5+/zY/ti1aPn7/Nj+2LVo+fv82P7YtWj5+/zY/YVJYP7dfPj9hUlg/t18+P2FSWD+3Xz4/YVJYP7dfPj9R+Tc+lpc8P1H5Nz6Wlzw/Ufk3PpaXPD9R+Tc+lpc8P8+eXz+J7Ds/z55fP4nsOz/Pnl8/iew7P8+eXz+J7Ds/gJ4WPobIOT+AnhY+hsg5P4CeFj6GyDk/gJ4WPobIOT9eEmM/tydEP14SYz+3J0Q/XhJjP7cnRD9eEmM/tydEP5urBj6ALUM/m6sGPoAtQz+bqwY+gC1DP5urBj6ALUM/V+xbP8iWRT9X7Fs/yJZFP1fsWz/IlkU/1LUmPgCuRD/UtSY+AK5EP9S1Jj4ArkQ/9wFgPyy3UD/3AWA/LLdQP/cBYD8st1A/9wFgPyy3UD+atRQ+XDdRP5q1FD5cN1E/mrUUPlw3UT+atRQ+XDdRPxixWz/Hulw/GLFbP8e6XD8YsVs/x7pcPxixWz/Hulw/GLFbP8e6XD/OxS8++yFeP87FLz77IV4/zsUvPvshXj/OxS8++yFeP87FLz77IV4/J0xUP8nKRz8Qk8g+cDYNPidMVD/Jykc/J0xUP8nKRz8nTFQ/ycpHPzjYSz6aDEc/ONhLPpoMRz842Es+mgxHP40Muj5IBQ4+3sdRPQpm9D7UKTc/2jpcP9QpNz/aOlw/1Ck3P9o6XD/UKTc/2jpcP9QpNz/aOlw/fJqjPrFPXD98mqM+sU9cP3yaoz6xT1w/fJqjPrFPXD98mqM+sU9cP8FWST+O5WE/wVZJP47lYT/BVkk/juVhP8FWST+O5WE/A5Z8PjGZYj8Dlnw+MZliPwOWfD4xmWI/A5Z8PjGZYj/nplU/+glLP+OnPT+46to+9mHdPiAo1z32Yd0+ICjXPZutpD7YrNo9m62kPtis2j1D4wk9kgbfPkPjCT2SBt8+gJ7ePgSnrj6Ant4+BKeuPoCe3j4Ep64+gJ7ePgSnrj4VkKY+aAOwPhWQpj5oA7A+FZCmPmgDsD4VkKY+aAOwPvwdAj/8x5o+/B0CP/zHmj78HQI//MeaPvwdAj/8x5o+TWqAPngOnT5NaoA+eA6dPk1qgD54Dp0+TWqAPngOnT5HVBA/IoaFPkdUED8ihoU+R1QQPyKGhT5HVBA/IoaFPnu+Rj6ilIg+e75GPqKUiD57vkY+opSIPnu+Rj6ilIg+1LUeP+BiVT7UtR4/4GJVPtS1Hj/gYlU+1LUeP+BiVT4ZVAs+uBZdPhlUCz64Fl0+GVQLPrgWXT4ZVAs+uBZdPjIeNT/44HU+0NUaP+De9T3Q1Ro/4N71PTIeNT/44HU+xttKPSSagD5qTBg+zLABPmpMGD7MsAE+xttKPSSagD7P2T4/8h+yPs/ZPj/yH7I+GJQBP3jdwj0YlAE/eN3CPdUjfT4obco91SN9Pihtyj2g/5480nK4PqD/njzScrg+9Gv7PvA/8j30a/s+8D/yPfRr+z7wP/I99Gv7PvA/8j0hrIY+2DL5PSGshj7YMvk9IayGPtgy+T0hrIY+2DL5PX+iEj9I3Q4+f6ISP0jdDj5/ohI/SN0OPn+iEj9I3Q4+d9c5PlzLFD531zk+XMsUPnfXOT5cyxQ+d9c5PlzLFD4MHhY/sPdSPgweFj+w91I+DB4WP7D3Uj4MHhY/sPdSPqLRLT5soFk+otEtPmygWT6i0S0+bKBZPqLRLT5soFk+CY0MP0rWgT4JjQw/StaBPgmNDD9K1oE+CY0MP0rWgT7rqVU+gquEPuupVT6Cq4Q+66lVPoKrhD7rqVU+gquEPpQUAD9CmJM+lBQAP0KYkz6UFAA/QpiTPpQUAD9CmJM+4EyEPvTClT7gTIQ+9MKVPuBMhD70wpU+4EyEPvTClT6OleA+hH2jPo6V4D6EfaM+jpXgPoR9oz6OleA+hH2jPiJVpD6O4qQ+IlWkPo7ipD4iVaQ+juKkPiJVpD6O4qQ+AKrgPrDiBD4AquA+sOIEPgCq4D6w4gQ+AKrgPrDiBD5SuaE+OPQGPlK5oT449AY+UrmhPjj0Bj5SuaE+OPQGPvVo6j6MzCM+9WjqPozMIz71aOo+jMwjPvVo6j6MzCM+DFqYPqCLJj4MWpg+oIsmPgxamD6giyY+DFqYPqCLJj646ec+lpaZPrjp5z6Wlpk+uOnnPpaWmT646ec+lpaZPty9nD72JZs+3L2cPvYlmz7cvZw+9iWbPty9nD72JZs+VHMBP7bBiT5UcwE/tsGJPlRzAT+2wYk+VHMBP7bBiT7TSoE+IvyLPtNKgT4i/Is+00qBPiL8iz7TSoE+IvyLPjj4Cj/kG3o+OPgKP+Qbej44+Ao/5Bt6Pjj4Cj/kG3o+jLlbPniTfz6MuVs+eJN/Poy5Wz54k38+jLlbPniTfz4mchE/eLxZPiZyET94vFk+JnIRP3i8WT4mchE/eLxZPpfJQD48318+l8lAPjzfXz6XyUA+PN9fPpfJQD48318+7DQOP8jQMT7sNA4/yNAxPuw0Dj/I0DE+7DQOP8jQMT56pUw+4Gg3PnqlTD7gaDc+eqVMPuBoNz56pUw+4Gg3Pq1QAD8kYR8+rVAAPyRhHz6tUAA/JGEfPq1QAD8kYR8+GviBPnBTIz4a+IE+cFMjPhr4gT5wUyM+GviBPnBTIz4sn80+UFgiPiyfzT5QWCI+LJ/NPlBYIj42OlM/Ck1KP7iPTD4ZAUk/5UK1PjCJIz7lQrU+MIkjPuVCtT4wiSM+Xg/WPhw3XD5eD9Y+HDdcPl4P1j4cN1w+Xg/WPhw3XD4ei60+HCJePh6LrT4cIl4+HoutPhwiXj4ei60+HCJePvBt0j5yMoE+8G3SPnIygT7wbdI+cjKBPvBt0j5yMoE+p62xPmgkgj6nrbE+aCSCPqetsT5oJII+p62xPmgkgj4tCts+DKyDPi0K2z4MrIM+LQrbPgysgz4mGak+eNiEPiYZqT542IQ+JhmpPnjYhD7dCd4+4GmKPt0J3j7gaYo+3QnePuBpij7dCd4+4GmKPnxCpj50r4s+fEKmPnSviz58QqY+dK+LPnxCpj50r4s+rrrePpo9kD6uut4+mj2QPq663j6aPZA+rrrePpo9kD6AtqU+tIuRPoC2pT60i5E+gLalPrSLkT6AtqU+tIuRPlZ/SD9YA1A/Vn9IP1gDUD9Wf0g/WANQP1Z/SD9YA1A/xuF8PtobUD/G4Xw+2htQP8bhfD7aG1A/xuF8PtobUD/FHso+OrSgPsUeyj46tKA+xR7KPjq0oD4IyEs/KbJSPwjISz8pslI/ZDtvPpEKUz9kO28+kQpTPwzMuj5skKE+DMy6PmyQoT4MzLo+bJChPuXxxD6wU5Q+5fHEPrBTlD7l8cQ+sFOUPnRcTT93vVA/dFxNP3e9UD+v62c+RyFRP6/rZz5HIVE/W7G/PgQClT5bsb8+BAKVPluxvz4EApU+w/HEPqR8UT7D8cQ+pHxRPs/2UD+OAkw/z/ZQP44CTD8n3VY+CDlLPyfdVj4IOUs/LJq+PvB1Uj4smr4+8HVSPq7X3D4c2Do+rtfcPhzYOj6u19w+HNg6Pq7X3D4c2Do+4EqmPgz4PD7gSqY+DPg8PuBKpj4M+Dw+4EqmPgz4PD5zouU+cBFIPnOi5T5wEUg+c6LlPnARSD5zouU+cBFIPjyjnT5kuEo+PKOdPmS4Sj48o50+ZLhKPjyjnT5kuEo+GcrhPqwdjT4ZyuE+rB2NPhnK4T6sHY0+rJCiPrx9jj6skKI+vH2OPqyQoj68fY4+bArkPrA3iT5sCuQ+sDeJPmwK5D6wN4k+bArkPrA3iT5ZNaA+aqOKPlk1oD5qo4o+WTWgPmqjij5ZNaA+aqOKPvs64D46HYA++zrgPjodgD77OuA+Oh2APvs64D46HYA+bMyjPnJogT5szKM+cmiBPmzMoz5yaIE+bMyjPnJogT6R8dg+XLV7PpHx2D5ctXs+kfHYPly1ez63Das+7Od9PrcNqz7s530+tw2rPuznfT4XKt8+rLhhPhcq3z6suGE+FyrfPqy4YT4XKt8+rLhhPi15pD6YI2Q+LXmkPpgjZD4teaQ+mCNkPi15pD6YI2Q+ODIDPyxMLz44MgM/LEwvPjgyAz8sTC8+ODIDPyxMLz5wzng+4KIzPnDOeD7gojM+cM54PuCiMz5wzng+4KIzPokKDT/Us0A+iQoNP9SzQD6JCg0/1LNAPokKDT/Us0A+UcFRPqA6Rj5RwVE+oDpGPlHBUT6gOkY+UcFRPqA6Rj77WA0/5GlZPvtYDT/kaVk++1gNP+RpWT77WA0/5GlZPiU8UT6AEl8+JTxRPoASXz4lPFE+gBJfPiU8UT6AEl8+lBYKP7AccT6UFgo/sBxxPpQWCj+wHHE+lBYKP7AccT4mAF8+FHV2PiYAXz4UdXY+JgBfPhR1dj4mAF8+FHV2Pg8pAj/Qg4M+DykCP9CDgz4PKQI/0IODPg8pAj/Qg4M+smd/PuzEhT6yZ38+7MSFPrJnfz7sxIU+smd/PuzEhT4RGuk+2pGSPhEa6T7akZI+ERrpPtqRkj4RGuk+2pGSPhxfmz7EJJQ+HF+bPsQklD4cX5s+xCSUPhxfmz7EJJQ+pl/yPtiBMz6mX/I+2IEzPqZf8j7YgTM+pl/yPtiBMz4ZkZA+KMI2PhmRkD4owjY+GZGQPijCNj4ZkZA+KMI2PmbY6D4YDnQ+ZtjoPhgOdD5m2Og+GA50PmbY6D4YDnQ+TP+aPlgMdz5M/5o+WAx3Pkz/mj5YDHc+TP+aPlgMdz4SEvE+qtCAPhIS8T6q0IA+EhLxPqrQgD4SEvE+qtCAPmzskj6+jII+bOySPr6Mgj5s7JI+voyCPmzskj6+jII+K036PnwLaz4rTfo+fAtrPitN+j58C2s+K036PnwLaz5wXYk+bPBuPnBdiT5s8G4+cF2JPmzwbj5wXYk+bPBuPgZo8z5ESF0+BmjzPkRIXT4GaPM+REhdPgZo8z5ESF0+xhiQPrjBYD7GGJA+uMFgPsYYkD64wWA+xhiQPrjBYD71K/0+TEVKPvUr/T5MRUo+9Sv9PkxFSj71K/0+TEVKPlcJhj78NE4+VwmGPvw0Tj5XCYY+/DROPlcJhj78NE4+t/AAP1iJWT638AA/WIlZPrfwAD9YiVk+t/AAP1iJWT6MhYE+xMldPoyFgT7EyV0+jIWBPsTJXT6MhYE+xMldPnvABD9IZlU+e8AEP0hmVT57wAQ/SGZVPk2hcz7gEFo+TaFzPuAQWj5NoXM+4BBaPiNNBD/sSEU+I00EP+xIRT4jTQQ/7EhFPiNNBD/sSEU+Hvx0PvDWST4e/HQ+8NZJPh78dD7w1kk+Hvx0PvDWST6mYC0/nLyoPqZgLT+cvKg+pmAtP5y8qD6mYC0/nLyoPpojqz1aCa0+miOrPVoJrT6aI6s9WgmtPpojqz1aCa0+KSApP8KFhD4pICk/woWEPikgKT/ChYQ+KSApP8KFhD7cu8Y9ejCJPty7xj16MIk+3LvGPXowiT7cu8Y9ejCJPh7gHT+8y3U+HuAdP7zLdT4e4B0/vMt1PoO/Dz7kkH0+g78PPuSQfT6Dvw8+5JB9PtO/FD9wz4s+078UP3DPiz7TvxQ/cM+LPtO/FD9wz4s+oG01PlIkjz6gbTU+UiSPPqBtNT5SJI8+oG01PlIkjz5IGws/TgeiPkgbCz9OB6I+SBsLP04Hoj5IGws/TgeiPllPXT50zaQ+WU9dPnTNpD5ZT10+dM2kPllPXT50zaQ+w9f3PhIRvj7D1/c+EhG+PsPX9z4SEb4+w9f3PhIRvj6Oyo0+OPe/Po7KjT44978+jsqNPjj3vz6Oyo0+OPe/PjqvVT+8BEs/EeErP2SP0D4R4Ss/ZI/QPhHhKz9kj9A+ahi+PZz90T5qGL49nP3RPmoYvj2c/dE+ahi+PZz90T6YAAIACgCYAAoAkAANAAUAnwANAJ8AlwCTAAsAEQCTABEAjQASAAwAlAASAJQAjgAJABsAFQAJABUAEAAWABwADgAWAA4AEwABACMAGgABABoACAAdACQABgAdAAYADwAhACsAMwAhADMAGQA0ACwAJgA0ACYAHgAYADIAOQAYADkAFAA6ADUAHwA6AB8AFwAwAEAAPAAwADwAOAA/AEcANwA/ADcAOwApAEsAQwApAEMAMQBEAEwALgBEAC4ANgBKAFEAWQBKAFkAQgBeAFYATQBeAE0ARQBBAFgAYABBAGAAPQBjAF8ARgBjAEYAPgBaAGgAZABaAGQAYQBnAG8AXQBnAF0AYgBTAHEAaQBTAGkAWwBuAHYAVABuAFQAXABzAHkAgABzAIAAagCHAH4AdACHAHQAbQBrAIEAiABrAIgAZQCLAIYAbACLAGwAZgCDAJIAjACDAIwAiQCPAJUAhACPAIQAigB6AJkAkQB6AJEAggCWAJ4AfQCWAH0AhQCbAHsAqwCbAKsAowCsAHwAnACsAJwApAB4AHIAsgB4ALIAqAC1AHUAfwC1AH8ArwBwAFIAuQBwALkAsAC+AFUAdwC+AHcAtwBQAEgAwABQAMAAuADHAE8AVwDHAFcAvwBJACgAyABJAMgAwQDPAC8ATgDPAE4AxgAqACAA4AAqAOAAyQDnACcALQDnAC0AzgAiAAAA6AAiAOgA4gDvAAcAJQDvACUA5QADAJoAogADAKIA6wClAJ0ABAClAAQA7ADWAOoAoACnAO0A2QDjAOkA1QDaAO4A5ADSAMsA4QDmAMwA3QDRAMMAygDNAMQA3gDQALoAwgDFAL0A3wDTALEAuwC8ALYA3ADUAKkAswC0AK4A2wDXAKEAqgCtAKYA2ABNAacCsQJNAbECVgGuAqwCUAGuAlABUwFEAZ8CqQJEAakCTgGqAqQCSQGqAkkBTwE7AZgCoQI7AaECRQGiApsCQgGiAkIBSAEzAZACmQIzAZkCPAGaApMCOgGaAjoBQQErAYgCkQIrAZECNAGSAosCMgGSAjIBOQEkAVgBMgIkATICfQI5Al0BKQE5AikBggJaAWABPAJaATwCNQI/AmUBWwE/AlsBNgJiAWkBRQJiAUUCPQJGAmwBYwFGAmMBPgJoAXEBTQJoAU0CRAJOAnQBbQFOAm0BRwJwAXoBVQJwAVUCTAJWAnsBdQFWAnUBTwJ5AYABXAJ5AVwCVAJfAoUBfAFfAnwBVwKCAYoBZQKCAWUCXQJmAosBgwFmAoMBXgKIAZIBawKIAWsCYwJwApMBjQFwAo0BaAKQAZgBcgKQAXICagJ5Ap0BlQF5ApUBcQKZAfAA9ACZAfQAcwL5APMAnAH5AJwBeAKiAeoBbQKiAW0CdQJuAusBowFuAqMBdgLpAb4CZALpAWQCbAJnAsEC7AFnAuwBbwLgAVsCYgLgAWICvAJpAmAC5QFpAuUBwwLXAVICWgLXAVoC3wFhAlkC3gFhAt4B5gHPAUoCUwLPAVMC2AFYAlEC1gFYAtYB3QHHAUICSwLHAUsC0AFQAkkCzgFQAs4B1QHAATsCQwLAAUMCyAFIAkACxQFIAsUBzQG4ATMCOgK4AToCvwFBAjgCvQFBAr0BxgGyAX4CNAKyATQCuQE3AoECswE3ArMBvAGxAcYCswKxAbMCfAK2AskCtAG2ArQBgwKhAXQC+AChAfgAqgH1AHcCpAH1AKQBqwGpAfcAuwKpAbsCzwK4AvYArAG4AqwB0AK1AscCzgK1As4CugLRAsgCtALRArQCuQIGAg4CsAIGArACpgKvAg0CCQKvAgkCrQL+AQcCqAL+AagCngKrAggCAQKrAgECpQL1Af8BoAL1AaAClgKjAgAC+AGjAvgBnQKHAt8C1gKHAtYCjgLZAuACjALZAowClQL2AZcCjwL2AY8C1wKUApwC9wGUAvcB2AIoAukC5AIoAuQC3ALnAuoCMQLnAjEC4wLUAt0C5QLUAuUC+gDmAuIC2wLmAtsC/ADwAfMB1QLwAdUC+wDaAvoB8AHaAvAB+wAiAvYC7wIiAu8CLALwAvkCJQLwAiUCLQIbAv8C9wIbAvcCIwL4AgADHAL4AhwCJAIVAgYD/AIVAvwCGgIDAwkDFAIDAxQCHQIQAgEBBAMQAgQDEgILAwQBEQILAxECFwLrAioC7gLrAu4CAAHxAi8C6ALxAugC/QD/AOwCJwP/ACcDLwMqA/MC/gAqA/4ALAMCAQwDEgMCARIDBQMXAxEDAwEXAwMBCgMHAxQDGQMHAxkD/QIcAxUDCAMcAwgDAgP+AhoDIQP+AiED9QIiAxsDAQMiAwED+gL0AiADKAP0AigD7QIpAyMD+wIpA/sC8gIQAx8DGAMQAxgDEwMdAyQDDQMdAw0DFgMPAy4DJgMPAyYDHgMrAy0DDgMrAw4DJQMTAhgCegITAnoCsgKFAh8CFgKFAhYCtwIZAiACewIgAjgDewI/AycChAInAh4ChAIhAisCQQMhAkEDOQNGAy4CJgJGAyYCPgMpAt4ChgIpAoYCQAONAuECMAKNAjACRwMsATADQgMsAUIDiQJFAzcDMQFFAzEBigIxA0gDOgMxAzoDQwM9A08DNgM9AzYDRAMlAX8COwMlATsDSgM8A4ACKAE8AygBTQP0AfEBBwH0AQcBZgMGAe8B+QEGAfkBaQP9AfIBZQP9AWUDXwNqA/sBAgJqAwICYAMEAvwBXgMEAl4DVQNhAwMCCwJhAwsCWgMMAgUCVwMMAlcDUQNYAwoCDwJYAw8CUgNQA1YDfwNQA38DhgOEA1kDUwOEA1MDiQNUA10DeQNUA3kDfgN8A2IDWwN8A1sDhQNcA2QDcANcA3ADeAN3A2sDYwN3A2MDfQNnAwgBbwNnA28DcwNsAwUBaANsA2gDdANuA4gDgANuA4ADcQODA4cDbQODA20DdgNyA4EDegN7A4IDdQPMAsUCkwPMApMDigOYA8oC0wKYA9MCkQOnAc0CiwOnAYsD4gOQA9ICrgGQA64B6QOfAagB4wOfAeMD6gPoA60BpgHoA6YB8QPEAq8B2gPEAtoDkgPhA7YBywLhA8sCmQOwAbcB0gOwAdID2wPZA74BtQHZA7UB4AO6AcEBzAO6AcwD1QPPA8QBuwHPA7sB1gPCAcoBxQPCAcUDzQPGA8sBwwHGA8MBzgPJAdEBvAPJAbwDxAO/A9QBzAG/A8wBxwPSAdoBtQPSAbUDvQO2A9sB0wG2A9MBvgPZAeIBrQPZAa0DtAOuA+MB3AGuA9wBtwPhAb8CnAPhAZwDrAOfA8AC5AGfA+QBrwO9AugBowO9AqMDmwOoA+0BwgKoA8ICoAPnAaAB6wPnAesDogPwA6UB7gHwA+4BqQOlA+wD8gOlA/IDFwT1A+8DpgP1A6YDGASdA6QDFgSdAxYEGwQZBKcDngMZBJ4DHASqA5oDGgSqAxoEEgQdBKEDsQMdBLEDFQSzA6sDEwSzAxMEDwQUBLADuAMUBLgDEAS7A7IDDgS7Aw4ECwQRBLkDwAMRBMADDATCA7oDCgTCAwoEBgQNBMEDyQMNBMkDCQTKA8MDBwTKAwcEAgQIBMgD0QMIBNEDBQTTA8sDAwTTAwME/gMEBNAD2AMEBNgDAQTcA9QD/wPcA/8D+gMABNcD3wMABN8D/QOUA90D+wOUA/sDHgT8A94DlwP8A5cDIQTtA+QD9gPtA/YD8wP5A+cD7gP5A+4D9APlA40DIwTlAyME9wMkBI4D5gMkBOYD+AOMA5UDHwSMAx8EIgQgBJYDjwMgBI8DJQTxAJoBJwTxACcECQEuBJsB8gAuBPIADAGXAY8BMASXATAEJgQ1BJYBngE1BJ4BLwSRAYcBNgSRATYEMQQ7BI4BlAE7BJQBNASJAYEBQASJAUAEOARBBIQBjAFBBIwBOQR/AXgBSAR/AUgEPwRLBH0BhgFLBIYBQgR3AW8BTgR3AU4ERgRVBHYBfgFVBH4BTQRyAWoBWARyAVgEUARbBGsBcwFbBHMBUwRnAWEBYARnAWAEVgRjBGQBbgFjBG4BXQRfAVkBaARfAWgEXgRtBFwBZgFtBGYBZQSKBI4E4ASKBOAEBwXnBI0EiQTnBIkEDAWHBIsECAWHBAgFAQULBYgEhAQLBYQEAgWDBIYE/wSDBP8EEAUEBYUEgAQEBYAEEwVLAVUBggRLAYIEDwWBBFQBUgGBBFIBFAVDAUwBEQVDAREF+QQSBVEBSgESBUoB/AQ+AUYB+gQ+AfoE6wT7BEcBPwH7BD8B7AQ2AT0B6gQ2AeoE8wTtBEABNwHtBDcB9ATpBAAFBgXpBAYF8AQNBQMF7gQNBe4E9wToBPgEDgXoBA4F/gQVBf0E7wQVBe8EBQXYBPEECQXYBAkF4gQKBfYE3wQKBd8E5QQuATUB8gQuAfIE2gT1BDgBLwH1BC8B3QQzAxkFIgUzAyIFSQMlBRwFNAMlBTQDTgMtAdkEGAUtARgFMgMdBd4EMAEdBTABNQMmAUsDIwUmASMFKgUkBUwDJwEkBScBKwUjASgFZgQjAWYEVwFvBC0FKgFvBCoBXgEeAdEEQQUeAUEFewRGBdYEGwFGBRsBeAR6BEAFOQV6BDkFIgE+BUcFeQQ+BXkEHwEhATgFLgUhAS4FfgQ3BT8FIAE3BSABfQR/BC8F4QR/BOEEjwTmBDYFfATmBHwEjATbBOMEMgXbBDIFGgUzBeQE3AQzBdwEGwVXBGEEtwRXBLcEkAS6BGIEXAS6BFwElwQZAawE0AQZAdAEHQHXBLMEGAHXBBgBHAFyBFgFUAVyBFAFdgRXBV8FcQRXBXEEdQR3BFEFSAV3BEgFFQFPBVYFdARPBXQEFAEWAUkFrQQWAa0EGgGyBE4FEwGyBBMBFwFJBE8EaQVJBGkFcgVuBVQESgRuBUoEdQVwBWgFgAVwBYAFeAWHBW8FdwWHBXcFfwV5BYEFiAV5BYgFkAWPBYYFfgWPBX4FlwWSBYkFoQWSBaEFmwWkBY4FlQWkBZUFnAWlBKkFmgWlBJoFoAWdBaoFqASdBagEpQWuBEoFmAWuBJgFpgWfBU0FsQSfBbEErQVLBVIFkQVLBZEFmQWWBVUFTAWWBUwFngVTBVoFegVTBXoFkwV9BV0FVAV9BVQFlAVbBWMFcwVbBXMFewV0BWQFXAV0BVwFfAU+BEcEcQU+BHEFYgV2BUwEQwR2BUMEZQUSAWEFWQUSAVkFcwReBWYFDQFeBQ0BcAQoBDIENwQoBDcEPAQ6BDMELQQ6BC0ERQQqBD0EYAUqBGAFEAFnBUQEKwRnBSsEDwEKASkEDgERASwECwFRBFkEkwRRBJMEawWUBFoEUgSUBFIEbAWSBJoEggWSBIIFagWFBZ8ElQSFBZUEbQWbBLoFigWbBIoFgwWNBb8FngSNBZ4EhAWmBKIFiwWmBIsFvAWMBaMFpwSMBacEvQUwBToFzgUwBc4FxQXRBT0FNQXRBTUFyAW0BMIFzQW0BM0FwQTSBcsFvQTSBb0ExARfBGkEwwVfBMMFtQTKBWwEZATKBWQEvARqBCEFFgVqBBYFxAUfBSYFawQfBWsEyQUXBTEFxgXHBTQFHgVnBCkFIAUnBSwFbgSkBMsEsQWkBLEFqAW0BcwEqQS0BakEqwWvBKcFsAWvBLAF0wS1BawFsAS1BbAE1ATABMwFrgXABK4FyQS3BdMFxQS3BcUEzgQ7BUMFsgU7BbIFzwWzBUQFPAWzBTwF0AXSBK8FQgVFBbYF1QQGBtcFPQYGBj0GDAZCBtgFCQZCBgkGEwYHBg4GFwYHBhcG/gUYBhEGCAYYBggGAQb9BRUGHwb9BR8G9QUgBhoGAgYgBgIG+gX0BR4GJgb0BSYG7AUpBiEG+wUpBvsF8wXtBScGLgbtBS4G5QUxBigG8gUxBvIF6gXnBS8GNwbnBTcG3wU4BjAG6AU4BugF4AUtBlcGTwYtBk8GNgZQBlgGMgZQBjIGOQYlBl8GVQYlBlUGLAZaBmAGKgZaBioGMwYcBmYGXQYcBl0GJAZiBmkGIwZiBiMGKwYUBm0GZwYUBmcGHQZoBnIGGwZoBhsGIgYNBnUGbwYNBm8GFgZwBnoGEgZwBhIGGQYPBj8GRgYPBkYGdwZJBkAGEAZJBhAGeAa2BMIEtQa2BLUGqga4BsMEuwS4BrsEsQa/BN0FNAa/BDQGsgY7BuIFxgQ7BsYEuwaRBLgEqwaRBKsGmASwBrkElgSwBpYEoQS5BXwGPAa5BTwG1gVDBoMGwAVDBsAF2QU1Bk4GowY1BqMGswaoBlEGOgaoBjoGugabBr0GtAabBrQGpAa5BsQGoAa5BqAGpwaNBrwGmgaNBpoGlQahBsUGkgahBpIGmAaHBscGvgaHBr4GjwbDBswGiAbDBogGkAZ9BsYGhAZ9BoQGzgaLBs0GggaLBoIG1QY+Bn4GzwY+Bs8GRAbUBoEGQQbUBkEGSwacBMkGfwacBH8GuwWABsoGnQSABp0EvgWZBKwGvwaZBL8GyAbCBq8GoATCBqAEywatBrYGwAbBBrcGrgZHBtAG2AZHBtgGNQfbBtMGSAbbBkgGNgfRBoYG/QbRBv0G2Qb+BokG0gb+BtIG2gaFBo4G9gaFBvYG/Ab3BpEGigb3BooG/waMBpQG7gaMBu4G9QbxBpkGkwbxBpMG+AaWBp0G5waWBucG7wboBp4GlwboBpcG8AacBqUG4AacBuAG5gbhBqYGnwbhBp8G6QaiBk0GLAeiBiwH3wYvB1IGqQYvB6kG4gZ2BkUGNAd2BjQHBQc3B0oGeQY3B3kGBgduBnQGAgduBgIHCwcJB3sGcQYJB3EGEAdlBmwGCgdlBgoHEwcRB3MGagYRB2oGGAdcBmQGEgdcBhIHGgcZB2sGYwYZB2MGIQdUBl4GGwdUBhsHIgcgB2EGWwYgB1sGKQdMBlYGIwdMBiMHKwcoB1kGUwYoB1MGMAftBuUGQwftBkMHOwdIB+oG8gZIB/IGQAc9B0QHSwc9B0sHVAdQB0cHPgdQBz4HVwdTB0oHYwdTB2MHWwdoB1EHWAdoB1gHYAdaB2IHagdaB2oHcAdvB2kHYQdvB2EHdwcEBzIHXAcEB1wHcgdfBzkHBwdfBwcHdQfXBlUHXQfXBl0HMwdeB1YH3AZeB9wGOAfWBvsGPAfWBjwHUgc/BwAH3QY/B90GWQfsBjoH+gbsBvoG9AYBB0EH8wYBB/MG+QbeBioH5AYqB0IH5AZJBzEH6wYxB+MG6wYlB00HRQclB0UHLQdGB04HJgdGByYHLgccB2QHTAccB0wHJAdPB2cHHwdPBx8HJwcUB2sHZQcUB2UHHQdmB24HFwdmBxcHHgcNB3MHbAcNB2wHFQdtB3QHDgdtBw4HFgcDB3EHDAcPB3YHCAfkBd4FoAfkBaAHmAejB+EF6wWjB+sFmwfuBeYFmQfuBZkHkAeaB+kF8QWaB/EFkwf3Be8FkQf3BZEHigeSB/AF+AWSB/gFiwf/BfYFiQf/BYkHgweMB/kFAAaMBwAGhAcFBvwFgAcFBoAHegeHBwMGCgaHBwoGfQfVBQQGeQfVBXkHqAd+BwsG2gV+B9oFqwd4B5YHngd4B54HpwelB50HfwelB38HrAd7B4EHjgd7B44HlweVB4YHfAeVB3wHnAeCB4gHjweUB40HhQeiBLgF1AWiBNQFpgfbBcEFqwTbBasErQejBKkHoQejBKEHygSiB6oHqgSiB6oEzQS+BMgEnwe+BJ8H3AWkB88ExwSkB8cE4wWJUE5HDQoaCgAAAA1JSERSAAAC8QAAAmMIBgAAAIWWTqkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjOM5pdQAACEVUlEQVR4Xu39vet937uvhW1SpJGAwZNmGxJzMCGQVqxsQ/6BFLGxtLGLpZ0IQpqQ6qSwDGmjoDYnBwKHkzSpLTwgYRcRxGOjhYo7v8yxvmOs773udc3HNZ/ndcHF2d/3Gg/3mHOOMV582JvzVyIiIiIiIiIiIiIiIiIiIiIiIiIiIvJE/hIUEREREZETE8N7VERERERETgYF96iIiIiIiJwECuykiIiIiIgcDAX1IUVERERE5CAooE9RREREREQOgML5VEVEREREZCcokC9RRERERER2gMI4+s//c/+zt/R7p4iIiIiIbAwF8S9jeDfEi4iIiIgcAwXwLym8N6l9p4iIiIiIbACF7w8ptGepX6eIiIiIiKwIhe4vKbCT1LdTRERERERWgMI2SmG9T+rfKSIiIiIiP0JB+0sK6WPSOJ0iIiIiIrIQCthfUjifKo3XKSIiIiIiC6Bw/SUF8znSmJ0iIiIiIjIDCtUfUhhfIo1dFRERERGRiVCg/pDC+FJp/KqIiIiIiEyAwvSHFMR/keboFBERERGREShIf0kh/Fdpnk4REREREemBAvSHFLzXlObsFBERERERgMLzhxS615bm7RQRERERkQQF5w8pcG8hzd0pIiIiIiIBCs0fUtjeQpq7KiIiIiIiFQrMH1LY3kqav1NERERERDooLL+lgL2HVEuniIiIiMijoZD8JQXsPaRaOkVEREREHgsF5C8pXO8h1VIVEREREXkkFI6/pHC9l1RPp4iIiIjII6Fw/CUF6z2lmjpFRERERB4FheIPKUwfIdXWKSIiIiLyKCgUv6UgfaRUY6eIiIiIyGOgQPwhBekjpRo7RUREREQeAYXhDylEHy3V2SkiIiIicnsoCH9IAfoMUq2dIiIiIiK3hkIwSiH6SKnGqoiIiIjIbaEA/PIv/9Hfxb9TmD5Kqq8qIiIiInI7KPi+LQG+mX+jMH2UubaqiIiIiMjtoOD7NgZ4CvFFCtRHSLV1ioiIiIjcCgq9b3OAb+Z2FKiPMNdVFRERERG5DRR431J4j+b2FKr3NNcTFBERERG5BRR231Joz+Y+FKz3NNdTFRERERG5BRR2X1JY75P6U7jeS6qnU0RERETk8lDQfUlBfUwahwL21lIdnSIiIiIil4ZC7lsK6FPNY1HI3tpcQ1VERERE5LJQwH1LwXyucTwK2Vsb5w+KyMVxI4uIyFPJwfZDCuRLzONS0N7KPHdVRC6OG1tERJ4K3YFvKYwvlcanwL2FNHeniFwY2tRRERGRO0N330sK4r+a56DAvYV53qqIXBja1EOKiIjcBbrnXlIAX8M8DwXutc1zVkXk4tDGnqKIiMiVobvtJYXvNc3zUfBe0zxfVUQuDm3suYqIiFwNus8wdK9tnpOC95rm+aoicnFoY/+iiIjI2aH7CwP3Vua5KXyvYZ4nKCI3gDb3GoqIiJwNuq8waG9pnp8C+BrmeaoichNog48dAHMVERE5A3RHYdDe2lxDDN9rmeeoishNoA0+5zCYo4iIyBHQnfSSAvYe5jro3v3VPEdVRG4EbXI8EJrUfoYiIiJ7QffQSwrXe5lrobv2V/McVRG5EbTJ8UAgqe8MRUREtoTunpcUrvc01kL36y/GsYMicjNoo+OhMCaNM0MREZE1obvmJYXqvc010b261Dx2VURuCG12PBimSuNNUEREZA3ojsEwfZS5NrpLl5rHrorIDaHNjgfDHGnMiYqIiPwC3S0Ypo801kb36FLjuEERuSm04fFwWCKNPVEREZE50F2CIfpoY310dy4xjpkUkZtCG/4lHRJLpfFnKCIiMgTdHRigz2Cuk+7NueYxqyJyc2jj4yGxhjTXBEVERAi6M15SgD6DuU66K+eYxwuKyM2hjY8HxZrSnBMVEREp0B3xksLzmcz10j051TxWVUQeAh0AeFhsIc09ooiIPBu6G15SaD6buWa6G6eax6qKyEOgAwAPi62lOkYUEZHnQfcBBuazGuum+3CKcYygiDwMOgjw0NhDqmWCIiJyf+j8x6B8ZmPtdA9OMY4RFJGHQQcBHhp7SfXMUERE7ged9y8pKJ/ZXD/dg2PmMaoi8kDoMMCDYy+pnpmKiMg9oDP+JYXks5vXQHfgmHmMqog8EDoM8ODYS6pnoSIicl3oXH9JAfkqxnXQHThm7B8UkQdCh8FLOjz2MNfRd/jNUERErged5x93whWNa6E7cMzYPygiD4UOBDw89jDWQAdgM7abqIiIXAM6w/EuuJpxPXQHDhn7JkXkodCB8JIOkS3N89MBSOZ+ExQRkXNCZzae/Vc0r4vuwj5z36qIPBw6GPAQ2dI8Px2AQ+b+I4qIyLmgs/olnflXNa6L7sI+Y7+giDwcOhjwENnSODcdfFOMY8xQRESOhc7ml3TWX9m4NroLydgnKSKChwMeJlsZ56WDb45xrBmKiMj+0Hn8ks73qxvXR3dhNrZPioi8oAMCD5QtzPPSwfeLefwRRURkH+gMfkln+R2Ma6T7MBvbJ0VE3tAhgYfK2uY56eD71TzHBEVEZFvo7MUz/C7GddJ9mI3tgyIiH9BBgYfK2sb56NBb2zjfBEVEZH3ovMUz+07m9dKd2MxtqyIiX9Bh8ZIOl7XMc9Ght4V53gmKiMg60Bn7ks7ruxnXS/diM7YLioggdGDg4bKWeS468LY21zCgiIj8Dp2veD7f0bhmuheLsU1SRAShAwMPmLWM89Bht6exlhFFRGQZdKbimXxX47rpXizGNkERkUHo4MBDZg3jHHTYHWGsaUQREZnH11lK5/CdjWsfuxeTIiKD0MGBB80axjnosDvSWNuAIiIyDTpD8fy9s3HtY/diUERkEnSA4GHzq3F8OuyONtY3oIiIDENnJ567dzeuf+hOTIqITIIOkK/D5lfz+HTYncVca48iIvINnZcv6by9u3H9Y/diVURkMnSIfB02v5rHp8PubOaaexQRkT+gM/IlnbFPMD6DoTsxKCIyCzpIPg6cX43j0kF3VmPdI4qIPB06G/FsfYrxOfTdiUERkUV8HSjxwPnVOC4ddGc21j5BEZEnQuchnqlPMj6LvjsxKCKyCDpQPg6dpeYx6aC7gnkdA4qIPAk6B/EcfZrxefTdiVURkZ/4OlhiGF9qHpMOuiuZ1zOiiMidoXPvJZ2fTzI/D7oPgyIiP/F1sORAvsQ8Jh12VzSva0QRkbtBZ91LOjOfZn4mdB8GRUR+gg6Wr1A+1zweHXZXNq9vQBGRO0HnHJ6TTzQ+k777sCoisgpfB0wM5EvM49Fhd3XzGkcUEbk6dLbh+fhU43OhuzAoIrIKdMB8BfM55rHosLuLf/P3Jgd6EZGrQmcanolPlp5RjyIiq/F1yFA4n2oeiw67u1hCfDOvu0cRkStB59hLOhOfLD0jUERkVeigwYA+xTwOHXZ3ckGQL4qIXAE6v/AsfLr0nJIiIptABw6G9DHzGHTY3c2FQb4oInJmvs4tOgPVEC8ix/J16FBIHzOPQYfdHY1B3jAvIjfg66yis0//kJ5XUkRkM74OHQrpY+Yx6LC7qznIzwzzIiJngc4oPPf0D+l5JUVENoMOHQzqQ+b+dNjd3R/CvIjI0dDZ9JLOO/1Del5BEZHN+Tp8KKgPSWPQgXd3KcgX6fkkRUSOhM4lPOf0T+mZVUVEdoEOIAzrQ+b+dOA9QQrxzfyMQBGRvaGzCM83/ZSeW6eIyG7QIfSSwnqfuS8deE+RAnwzP6ceRUT2gM4fPNd08nkuIrIrdBBhWO8z96UD8GnmA7+Zn1WPIiJbQ2cPnmdPduY5LiKyO3QYYWAncz86CJ8oHf7F/LwGFPkV+q7OoBwLvRM8x54qnd1Fem5VEZHDoEMJQ3s296ED8anSJdDMz61HkTHou7mash/0/PH8eqJ0VjfpuQVFRA6DDiUM7dnchw7Gp0sXQjE/uwFFCvRtPEX5HXquL+ncepJ0PmfpuVVFRA7n63Ci0J7NfeiAVL4UmvkZ9ijPhL4F/UOZBz1DPK+eJJ3JJD27ThGR0/B1SFFwj1IfOij1D+lyaNKzTMr9ofe+2H/wP/7nTifVubLyDT0nPKOeIp3BfdKzq4qInAY6pDC8R3N7OjD1T+mSaOZn2aPcB3q/s6SgfCVpTRv4ZOh54Nn0FOns7ZOeXVBE5DTQIfWSwnszt6VDUz+lyyKan2mPcl3ofY5KIfgJ0rP4wadBzwDPpbtLZ+2Y9OyCIiKngg4qDO/N3JYOT/2WLoxofq49yjWgdzdJCrW6WrC/O7RmPI/uLp2xY9KzC4qInA46rF5SgC/mdnSAKksXRzQ/2wHlfNB7GjUG1f/iX/5X0L/9R3//bftb7Pdk6ZnO8G58rZHOoTtL5+pU6fl1ioicGjq4Xhrit5EukGh+xj3KOaB302sJnjGg9xmDe5ba53D7ZOm5T/TK0Hrw/LmrdJbOkZ5fp4jI6aHDa1KIL9KBqsPSJZKlZ52UY6B30SuFbpICe5b6ZSnYPlF6FxO9Il/roHPnrtL5OUd6flURkUtAB9ikIE+Hqo5Ll0k2P2tQ9oOeP0rhesilgZ2kQKuLQv1VoNrxzLmbdGbOlZ5dUETkEtAB9tIQv510qZD5mSdlW+iZf0mBeqprhPcihVdl6R0OeGa+6qWz5m7SOTlXenZBEZFLQQfZS0P8dtLlks3PvEdZF3rGH8YA/WsAXyoFVJ0vvd8ezwTVh+fMnaQzcon07KoiIpeEDjRD/MbSBZPNz71HWQ49TzSG6Piv6HsGeQqi+pv0rkc8EqoHz5c7SWfjUun5dYqIXBo62AzxG0uXDJmff48yD3qGX7YAnYN7NobtNaXgqdtI73/EPaH5X9LZchfpPFwqPbuqiMjl+Trc+kJ8kQ5cnS9dNiS9A1CGoWeGthBNgT0bQ/daUsic67/6z/z1rlINV5S+hwluCc33ks6UO0hn4C/SswuKiFweOtz81/idpIuHzO+hR/mGntOXJcS1IE2BPRuD96/mMElSeL6qtL4zSt9Jj1tA87ykc+QO0rn3i/TsgiIit4EOOQzydPjqb9IFRMb3MKDwc/kwhrUYqCmwZ2P7pcb5sxR8nyY9lyOlbwhcExofz4+7SGfeUunZBUVEbgUddP5r/E7SJTRkfh/gU6Fn8WUMZy1UU1jPxhA+1zhnlAKs9kvPcG/pmwquAY2LZ8cdpDPuV+n5BUVEbgcddigdxPqbdBENSe8l+SRo/R/mIBYDNgX2aGw7xTxXlIKp/i49662l7yy5lK+x6My4g3S2/So9v6DIX/1L/6f/5i9TrV1ELkE+8FA6jHUd6VLqk94NeGdovV/m8JVD96+hPZrnKlLo1O2ld7G29L2Bc6D+eFZcXTrT1pCeX6fICwrqc6zDiJySfPD1SoeyriNdTH3SuwHvCK3zLQWuIgXvX6V5KFTqcdI7WlP6BnscgtrjGXF16SxbQ3p+VZEXFMyXWIcTOR358EPpYNb1pAuqT3o/4F2gtb2lgNWkAL5UGp/Co55Ten+/St9jjwS1e0nnw5WlM2wt6fl1irygMP4/+t/8X1BqS9ahRU5HPgg/pMNZ15UuqSHpPSWvDq3pJYWqKAXxJdLYFBL1OtI7XUP6TpMR+h3PhStL59Za0vOrirzIAZzCO5n7kXUKkdOQD8IP6YDWdaWLaor0vqpXhdbylgJUlML4HGlMCoN6D+l9L5W+12SB/o5nwpWls2pN6Rl2iryJoZvC+hTjGGSdSuQU5APxQzqodV3pshqT3lXySlD9Lyk0ZSmUTzWOQ2FPn2H8Dn6RvuE+6Sy4qnRGrS09w6rImxi2KaDPMY6VrdOJnIJ8KL6lA1vXly6tMel9gWeHasaARFIwHzP2p0CnzzZ+H0uk75mkc+CK0tm0tvT8qiIfxKBNwXyJccxsnVbkUPLB+CEd3Lq+dHmNSe8LPCNU50sKRiQF9CFbPwpuqmT83uZK33aUzoArSufS2tLzq4p8EAM2BfJfjGNH69Qih5IPx7d0cOv60uU1RXpn4Fmg2l5SEBqSgno0tqWApjrV+C3Nkb7zKJ0DV5LOo7Wl51YV+SKGawrivxrHj9bpRQ4lH5Jv6QDX9aVLbKr03pJHQzW9pAA0psFdjzB+Y3Ok775I58AVpDNobel5VUWQGKwphK9hnCNaSxA5lHxYvqWDXNeXLrOp0nsLHgXV8pYCz1IpdKluIX1/Y9L336Sz4KzS2bO29IyCIkgM1RTA1zTO1axliBxKPjDf0oGu60uX2lTpvQX3hmp4SSHnFyloqW4tfYtj0n5o0nlwJunMWVt6LkGRXmKgpuC9tnG+Zi1F5FDywfmWDnZdV7rY5kjvLbk1NOdLCjVLpVClurdLvu24J7J0JpxBOmu2kJ5JVWSQGKYpdK9tnC9ayxE5lHyAvqTDXbeRLrip0rtLbgXN9ZLCzBIpSKke5dJvPPYj6Uw4SjpjtpCeQ1VklBikKXQ3Y7sp7cfMY9VyRA4nH6Qv6ZDXbaSLbqr07oJrQuO/pQCzRApQqmfwl28+943SmbC3dLZsJT2DTpFJxCBNYbsZ25HUZ8w8Ri1J5FDyYfqWDnvdRrrspkrvLvkrNOZbCi1zpdCkekZ/+f5z3yadCXtJZ8oW0rqDIpPIQXpK2B6S+vdJ/WtZIoeSD9S3dOjr+tKlN1d6f8Gl0FhvKajMkUKS6hVcuhdyvyadC1tL58gW0nqDIpPJIXpq2B6SxuiT+tfSRA4lH6xv6fDX9aXLb4707sA5UP+3FFDGbH0pFKlezbgfmvTdk7kfnQlbSmfIVua1JkVmEQP0lKBdu73Iv0VpLJL61uFFDiUerB/SJaDrSxfgHOndgVOgfi8pkIxJ4xQpGKlezfxd0x7I5j5NOhfWls6OLaV1VkVmE8PzlJBdu73Jv2dpzCj1qUOLHE48YD+ky0DXlS7AJdL7C45BfV5SGJkijUVhSPWq5u+b9kE292nS2bCWdF5sKa2vU2QxOUCPheza7YvcLprHzFKfOqzI4cTD9kO6FHRd6SJcIr2/YB/U9iWFkD6pf5RCkOqVpe+8SPsjSn3oXFhLOiu2ktZWFVlMDs9jIbt26yW2jdK40dy+DidyCuKB+yFdDLqudCEukd5fMENtXlL46JP6Fyn4KEvP78zSGp4qPR/aJ1HqQ+fCr9IZsZW0pqDIT8TwPBawa5dRYp8ojd+M7eowIqchHrof0gWh60oX4xLp/QUb9NtLCh19Uv8mBZ4nS8/ojtLa7y49B9ovUepD58JS6WzYSlpLUORnYnguDoXrYu02Su7XzOM3c7s6jMhpiIfvl3RZ6DrS5bhUenfBAv0dwwZJfYsUcJ4oPRu99/dB66W9E6U+dDbMlc6ELaV1VEVWIYfnNcN17tvMc/w6j8hexEP4S7o0dB3pglwqvbshKWSQ1LdIwebO0jPQ6dIzvbq0TtpDUepDZ8NU6SzYUqq/egv+5t/+//xlirW5bEgO0GuH6zxGMc6x5lwiW9MOYpQuD11HuiiXSu+uTwoYJPWlQHNHae0reiWo/p+k531FaW20j6LUh86GKdI5sKVUe+dtoMA+1TqErEQOz1uE6zxGcYt5RPagHci90iWiv0kX5S/Se8tSsCAppOQQc2Xz2jbwCdC6Z0nv5krSmmg/Nak9nQ1j0v7fUqq7ehsonC+xDic/EsPzVuE6j1Pcai6RPWgHM0qXif4mXZi/SO+tSaEiS0HlLtIzWUn5hJ7RoPS+riCtpUh7q0nt6Wzok/b9llK91VsRg/i/8b/4N7+Mvy+1TiUTyOF5q3CdxyluMY/IXrQDGqVLRX+TLs6l0jsrUpggKahcWXoWC5Xl0PMclN7lmaU10P5qUns6G0ja91tJdQZvRQzbFOLJ2Gcva7m3J4fnGKzXDtd5rKG5aheRU9MOaZQuFl0uXZ5LpHdVpBCRpWByRWn9PyjbQM96UHrXZ5JqLtJeK/b1ofOhSXt+S6m+4O2IQZkC+5ix/17W0m9LDM/FoXBdrN1mk8cp9s1Tu4hcgnZgf0mXjC6XLtG50nuiAEHmUHIVac0zlOOh9zIofQdnkGqlvVYc6kPnQ5H2/FZSXcFbkgMyBfUl5nG3sC7hdsTwXIzBOofrYu22iDxW3zy1uchlaAc3SpeNLpMu06nSuylSgMjGIHIVaa0TlXNC72pQ+i6OluqkPVcc6rPm2TBXqid4W3IwpkB+pLm+bF3G7YgBuhjDdQ7YxdptLq/vO47TN8cfzUWuxesD7zNfOLpculTHpHdSpOCQzX1iIDmbudYZyvWg99grfS9HSfXR3hvrs/Q8+FWqpXp7YiimIB39J//hf/4ltVvbWCNZl3IbYoAuxnBNIbtYu/YRv+kP4xh943ftRC7J1wcfzWFUl0sXa5/0LooUGrK5TwwVZzPXOqLcC3rHKH07e0t10f4rjvWjPb+1VEfnI8iBmEJ0k0J8lPqsaa61WZdyK2KILsaAnUN2seuyyDhG3/hdO5HL8vXRRymQ6nzpYiXpHTQpMERz+xgmzmSus0d5FvQNfEjf0p5STbQPp/Sjvb+VNH/1EeRATOG5ScE9Sn3WNtfbrMu5DTFEF2PApqBd7LrNNvbvG7trJ3Jpvj78KIVSnS9dsFl6/kUKC01qn4PE0VKNPcqzoW/iLX1be0o15f04pR/t/S3M8wYfRQ7EFJ6jFOCL1HYrc811KbchhuhmDNk9YXu2sT+NWezaiVyer48/S8FUp0uXbJSeeTMHhSa1pRBxlFQfKJKh7+QtfWt7SfXkfTmlD50Ba0pzBh9FDsQUms9orrsu5zbkMB3D+0DgnmXsOzCmyC342gBZCqc6Xbpsi/SsmzkgRGO7HByONNY1osgQ9M28pW9vD6mWuC+n9KFzYC3zXMlHkgMxheazmWuuS7k6H99jDtQxwPcE7kHjfVv+O/alMbs2IrfjY1Nk4ybR+c65dGMwyMZ2FBqOMNY0osgc6Bt6Sd/hHlItbW9ObU9nwa/SPMHHkgMxhea9zLVkh9rW5VyJ/A1+GAN1MQZ4Ct3FPAbds8Xcj8br+ovckq+NkqVNo9OccunGwJ6N7SgwHGGsqUeRX6Bv6iV9j1tLdcQ9OrVPPAvWkOaoPpochosxLO8h1dBnX5+6nLOTv71eY6BuxgCfQ3eR7lQy96PxuhpEbs3XpovSxtFpjly4H4EgmttRWNjTXA8osgb0bX1I3+eWUg1tn1L7IvXJQXypNHZVOnIgjgF7S/O8U6W+dSlnIn9rs42huhgDPAVvuk+zsX2TxurmF7k9X5suS5tIh6Xn2IyhPZrbUUjY01xPUmQt6PtC6TvdUqqh7FVqW6T2RQrlc6VxOyWQQ3EO3Gua5yJrWW+oTbY2PZr4jf1sDNbFGOBz8C7SnRrN7fvG6uZejX/4D//hquOJrMnHhiNpI2m/9AybObw3YxsKCHsZ6wBF1ubrOxvbQ/TdbiHNXaS2TWpfpGA+RRorKIkciimALzGPO2QtBaH20drsCOJ3taoxWBdj6Kbwne/TbGxbpDGK3dwij+Fr42VpM+m39OyaY+G9SeFgD6mWoMgWfH1rU/YSfb9buGRu6kMBfUwaJyhADsUUyKeYxxmzTj8J6t+sTfYifk+rGu/EYg7YMcBTAM/9m7nd0BhdHSKP4msjkrSx9A/peTUpwBdzOwoFW5trSIpsxdf3Nmdf0be8hUvmpj4U1IekMYLSQw7GFNLJ3G+KdcrZ0FjN2mRL4ne0mrR3mzlgx/BNIZzGKMY2xb7+XT0ij+RrY5K0ubT/0qXwXsztKAxsba4h+RRo7Vf3CnzVTfuqSG2L9E1v4ZJ5cx8K6n3mvkkZIYZiCuzR2HbMOvwq0PjF+vMWxG/oJ2mPjhlDdjEG8BzC5/bPv3U1ijyar02bpU32ZOkZNacE+CIFgS2lGoJ3hNb5NM/EV320t5rUvknf95oumZP6UGDPUr+gTCAHYwrvzdw2W4fchJ3mi9/PT9K+nGoO2jGEUxgf6lvs61fsahWRjq9NHI2b7OnS8ylSgC/mdhQCtjLPDV4VWouOewRfddC+ylK/Jn3ra7pkztyeQns290nKRHI4pgBfzO2KdYhd2Gju+M0slvbgL+awHYN4DuNL+3V1i0jga2Nn42Z7ovRMmhcL8FeD1qDruDVfc9Le6pP6F+mbX9O58+X2RQruTWoflBnkcEwBvpnb1iF2YYO54zczS9praxsDd3EokFP7Yl/7YrcOEQG+Nnw0b9SnSM+iOSXAF+ny30KaO3gWqDY9zq34mov215A0RpG+/bWcOx+1Lxrg9yEHZArwxdyudt+NleaO38ssaX9tZQ7dMZD3BfPoWLtuPSLSw9fmz9KmvbP0DIoG+FlQTbtK7/aK0tpWdE2+xqf1jEnjNGkfrOHcuah90QC/DzEgU4AvxjbN2n0Xfpg3fiezpT21hzl4x2DeF86LY+26NYnICF8HQZY27R2ltRcpwBdzO7rwtzLPXT0SqmcX6V3eWXoGK7kUGgtrnyqNR/tgLefOldsXDfD7EANy8YwhfgH5O5ks7Z+9zeE7h3MK6FPa1DWKyAgfhwJJG/dO0pqLU8J7kS76raT5O/eGathEel/6LT27hc6B+mN9c6VxaT+s4ZK5cnsD/H7kgH7hEJ+/kcnSnjnSHMCHQvrQb82wVhGZSNw4KG3eO0hrpQBfpLZ0yW8hzd25BzTvqtJ70d+k5zzRqVBfrGWJNDbtizWcOxe1H1BWJgb0HOIpyNduZyF/H5OlfXIGcwjvC+r092LuH9YsIjOImwelDXxlaY1FCvDF3I4u+C3M8wa3hOabLT133U96JxMd46sPzf+LNAftjzWcM09uO6BsQA7pFwjx+buYJe2Ns5mDOIV1MvdLaxeRBeSN9CFt4KtK66PwXszt6HLfyjx3dU1o/MXSs9bjpXc1QeKrHc33qzRPkfbIr86ZI7ftUTYkhvQc4k8U5PM3MUvaE2c1h/EihfYo9UnPQEQWkjfTl7SRryStqTglwBfpct9CmrtzTWj8WdLz1fNL73LAyNfvNP4a0lxF2iu/OHcOah+UHYghfSzEF2u3rcnfwixpD1zFHMgpuEdze3geIvIjtLHe0ka+grSW5pQQT5f6FuZ5g79CY86SnqteU3q/Axa+/k7jriXNR/vlV+fOkdtXZSdiQM8hnoJ87bYV+TuYJX33VzOH8iKF92ZsV/rDcxGRFaDN9TZv5CtI6yheJMAXf4HGG5Seod5Leu9zpDHXlOYs0t5Z6tzxqX2n7EgM6QcF+fz+Z0nf+hWNgTxK4b2Y25Ux6Pl0isgK0OZ6mzf0maX6m2MBvkiX+drSvOAcqP8k6RnqvaXvYEwaZ21pXto/vzh3DmgvO5JD+o4hPr/3ydK3fXVzKC9SeG/mtmUMeladIrIStME+zBv7bFLNzRzgjwrxNGePY1CfUem56fOkb2NIGmMLaW7aR784Z/zctlN2Job0HOJzkK9dlpLf9Szpe76DOZAXKbhHY9s4Fjw3EVkZ2mhv44Y8m1Rv8SwBvkjzDtgHte2VnpVqk76ZKPXZSpq/SHtpqXPGp7adsiMxpBeHQnyxdptDfr+zpO/4LsYw3qTQTrb2cTx4fiKyAbTZPowb8wxSjUUK8MXcji7wtc1zFif8f+neoN8GpeekStL3E6U+azu0F2g//eKc8XPbTtmZGNJXDPH5vc6SvuG7GcN7kcL6kK1fGw+eIxLnnGLtJiKBvNm+jJv9aKm+4pQAX6TLe01pzhZaRkL8bOn5qE6RvqcmtV/LuBem7gfaZ1OdMx617ZQdyUH9xyCf3+Vk6du9qzkoU0gfM/YvY8IzfRPbLrUOJSKBvOk+zBv/CKmuIgX4Ym5HF/fa5jmXhJYx6dmo/uIe31feC0v3A+27Ief0z207ZWdiSM8hPgf52iWT3+Fk6bu9sxSQKaRH+9q1v5dx4dmuEt6zZVwR+ZO88b7Mh8CeUj3Fswb44lrBhZ6H6tpu+a39ugdI2ofZOf2obafsSAzpxRkhPr+3SdK3+hRzKM7BPDvUNv4Wn2/8e595rCz1aXZziEjiYxP2SYfCVtL8xSkBvkgX9trmOWNo+SW80PNQvZK/7oExaT9G57TPbTtlR2JILw6F+GLXZbb0jT7RGIYpPGfH2sffy3OO/52l/mPSOMVuLhFJfBx6fdLBsLY0b5ECfJHa0mW9pjRnDC5zwws9B9UrOvX7p71cpLZ90t4sTm1XzG07ZWdiSF87xNM3+kRzEKbQHM3tqQ+1yeY+S8xjdu9VRICvA5CkA2JNac4iXfjF3I4u6jXN8xVjeJ8SYJq0ftUrO/b90x4eksaITtmj1KaZ21ZlZ2JQ/yXI0zf5dHMILlJYblL74q9ts9SvOKVd965FBPg6FEk6KNaQ5mpOveDpol7TPN+SAE9rV726awf4KI0XHdqj+fcstJediSE9h/ipQZ6+SZ33v0YT25JT+lCbaG5PjvXp3reIjPB1SJJ0aCyVxi/SpV7M7eiCXtM8X3FuiKd1q17doW+f9u5Safxo316N+zib23bKzuSQPifE0/eof5jDbw7H2dx+yhhDv0VjuymO9S3fjYiM83FgkvngWCKN25x6mdMFvZY035wAT2tWvYNzAvx/8S//K73mtkPSXGPSvi5CW9mXr5CeQ3wO8qUPfYv6aQ6+MRhnc9u+cfr60t+bsT9ZPgL6+9AYpY+ITKNdboPGTT9XGq9IF3gxt6PLeS3zXMUc4IeCDK1X9S7SN1/Me5aCezS3H5PmHJL2dpHadsr2fDzzGNKLQyGevkP9NobeGIjJ2LbYN06R+pO5X7R8ABlqNzRe7SYiE/g4cIeMm3+KNEaTLu9ibkeX81rmuYpTQjytVfVO5m++mfcrhXYy95sizd8n7e8itJXtoOf9EdKLQyG+SN+jfhoDbwzD2diu+MtY0din2b3rQXL7ofFqFxGZyMehOyQdAn1S/yJd2EVqSxfzGtJcUwJ8kdaqehfpmy/m/RpD+t/+o7//8d/Z3HeqVAdJe7xIbTtlfeg5v8wh3RD/uzHwxjCcje2KY2M1aawmte/e8yRin6Fxa3MRWcDHAdwnHQZZ6kcXdTO3pUt5LfNcFOCLuR2tU/Uu5u+9mfdqDOglwDfj36O5/1T79ms27u0stJf1oOf7YQ7pxaEgT9+lfhoDbw7D0diuSGMVczsaq5jbFbt3PJnct2/s2lxEfuDjIO6TDoQitS3SRV2ktnQhryHNRQG+2H6nNarezbgnirRXiy2cxwC/VoinPVvMtUWpfRPay+/Qc+01hvTiUIgv0repfxjDbjEG4WxuS+M1YzsaqxjbFLt3O4vcv2/s2lxEfuTjIO6TDgRqV6RLu5jb0WW8lnmuIgX4to68NtU7mvdEkfZqC+Y5wP8a4mmvZqnGJrUvQlv5DXqmvZZvK4f0HOJzkM/fpv5pDLsxBJOxbZHGa8Z2NFYztuve7yxi32LfuMXaRUR+5ONAHrIdBvRbkS7uZm5Ll/Ea5nmKfQFe9UnmfUH7tFhCOQX4Yg7vTRonSnuVzDVGqX0R2sp86DkOGr+tGNCLhvjlxqAbQzAZ2xZpvGZsR2M1Y7s+u/ffS2w3NHZtLiIr8HE4L5Uu72ZsRxfxWsZ5moZ3fbq0L2iftlBOAb4Yg3uUxorSXiWpzuiMPjINenaj5u8rBvSiIX65MejmEJyNbYs0XjO2o7Gasd2Q3XeAxDZDY9fmIrIyH4f1HOnyLuZ2dBGvYZ6n2A4wA7w+2bwvaJ/GUH5EgG/mWqPUvghtZRx6boPSt1WMAb04FuKLNI4eH+LJ2LfZfQ9IbDM0Tm0uIhvxcXgPSRc3teuTLuUl5nHpIFN9onlv0J6lgD5FGqtJ+3TMXGuU2hepbacw9KwGpW8qm0O6IX6ZMejmEEzG9kUasxjb0DhTbWN03wUyNE/8rVi7iMhGfBzkZL60qc1S6bIeMveng0z1iea9kfdtkQL6mDROk/boVHO9TWrbhPbyCT2jQelb6jOH9Bzic5CnMfQ6Ib7YfSMfxN+KQ32LtZuI7MDH4V6MFzb9vqZ0aUdzezrEVJ9q3h9x7zYppA9JYzRpj84x1xul9kVoK39Az2ZQ+obGjAG9OBbiizTO040hN4dgMrYv0pjF2IbGmWocp/tWPoi/Fef2F5Ft+Tjoy2Wd/7a1dHkXczs6xFSfbNwfOXQXKagPSWMUaX8uMdabndj+6dAzGZS+mzFzMG8a4pcZQy6FYDL2KdK4xfY7jTHVOE/3zXwQfyvO7S8i2/Fx2E+RLniS+o45doHTAaaqf4b5vA8pqPeZ+zbzvvzFuJ/JCe2fDD2PQelb6TOHcZJCfDG2obGfbgy5FILJ2KdI4xZjGxpninGM7rt5E/9epL7F2KZ2FZEd+Djwh6TLfYk0drTv8qbDS1X/tO2VuN8orJOxTzaG6jWM+zo7oe0ToecwKH0fZAzfQ1Jwj8a2NM/TjSE3ht9/9x//7dv492LsU6Rxi7FNHmOKsX+x+37e5N+ofzG2qV1FZGM+Dv0+6VJfQ5prSDq8VPVP436Je41CezO2I3OoXsNYZ3ZC2ydB6x+Vvg0yBu8hKbRnY3ua6+nGkBvD71CIL8Z+xbGxizTOkLl/9w29yH+nvsXcrnYXkQ35OPTJdokvufjnSvNH6eBS1W/jvqG9Ntccqtcy1hmd2O4J0LoHpe+BjIGbpJA+Zh6D5n2yOei2ABxDPAX53I/GLuZ2xTwWSf26b+krwBepfzG3K/1FZDs+Dv5subgpuEfzRb+GVEuTDi1V/TbuG9pnc8yBek1jndEZbe8KrXVQ+g7IHLSzFM6nmsei+Z9sDrotAG8Z4smx8bvvaVaAL8Z2pb+IbMvHBRAtFzeF9my+7NeSairSoaWq38Z9Q3tsjhSo1zTW2qR2RWh7R2idvdL7J3PAzlIoX2Ick+p4ujHstgA8FuKLsV+Rxi7mduTY2N135b/Ci5yYj0sgWi5tCuxkvuzXNtZFh5Wq9hv3D+2vKVKQXttYZ5PaFaHtnaD1DUrvnYzBmqQwvtQ4LtXydGPYbSF4SYgv0vhFapudMn4zt83m9t23KSIb8XURNMul3QL63/6jv/8yhvZsvvC3sNVGB5Wq9pv39hIpSK9trLNJ7YrQ9i7Q2lB6133GQJ2lAL6GcQ6q6enmwFtCcA7xFORzvyKNH6U+zSnjN3PbaG7bfaMisiFfl0KxXNglmLfwvnaIpwuZzP1afXRAqeqweY/PkfbnVsY6i9SmmNt1Xh1aU6/0joeMgTpK4Xst4zxU09PNobcEYQrxxbHA3KR5su0ban2mjl3MbaO5bTeHiGzAexNny4VdQnkO8EMhPl/4JF3CUy39W310IKnquHGfF/MeHZL25VbmOqlNMbfrvDK0HpTe7ZAxSEcpdK9tnI9q02OCfPuWYp8pY+c20dy2G19ENuK9iaPtwi7BfGqAL8bLPkuX71xjjXQgqeq4cR8Vab+StCe3NNdZnNqu82rQGnql9zpmDNJNCtxbGOek2pRDfJFCfDEG52Lun6U54zfV2k0ZN7dp5nbduPIL//X/8f/5l2z9SeRjAzfbhR3D+S8Bni7dJeY66UBS1XHzXirS3s3SvtzaXCe1KeZ2nVeC6kfpfU4xhugmhe2tjPNSfcr/u+otHE8J8UUaY65jY+bfm7ldsftm5RcoxDdrE3kuH5dDsV3WFNLHjJd9ky7bpcY66QBU1WnGvdSk/ZulfbmlVCe1K0LbK0B1o/QepxoDdJOC9pbGualG/cMcgmNInhLim3mcudJ4+W/R3L/YfbfyCxTch6zd5Bl8XBDFdlFTQB8zXvRFumR/MddKh5+qTjfvqbyHs7QvtzLXlp3Y5+xQzSi9v6nG8NykkL21cX6qU/+QwjCF5jnSmGPSOH1S/+67lV+hoD7F2l3uy8cF0WyXNYX0Mbe+7HOtdPip6nTznirGfZylfbmFVFd2Yr8zQ/Wi9O7mGMNzkQL2P/kP/3OU2i411kB16p9SKKbwfLRUZ7H7buVXKJz/v/8H//sPqc0U6xRyXT4uiWK8rCmkDxn70uX6q7lWOvRUdZ55XxXjXs7S3txCqis7sd8ZoTpRemdzjcG5mIM1Bfdobv+LsQ6qVT+lcExB+giptmb37coa5OCdA3w2t19qnV7Oy8dFUcyXNQX1PmM/uljXMNdLB56qzjfvrWLc01Ham2tL9fydv/N3vv42se+ZoPp6pXe1xBicizFUU2jPxva/GuugWvVbCskUqveUamp2366sRQ7XFNzJ3G9Na2lyLB+XBV3WRQrs0dyeLtU1zPXSQaeqy8z7q5j39pb7O0q1lABPIb44of9ZoNp6pfe0xBiaizFQU2AnY59fjbVQvcpSWC5SwF7ToXliHcXuu5U1yeGZwvoS87hrWkuXbfm4LIp0YRcpuBdzu3yRrinVS4ecqi4377G8x7fe581cRwvwfUF+rH/nGaC6vqT38qsxNBdjoKbAno3t1zDWQvVqvzk0Nylgr+XQPPG3YvcNy5rkgEyBvPm3//iffEntxsxzrmVdkqzDx8VBl/Uc8yW6trleOtxU9TfzPisevddzgL9oiKeavqR3soYxNOdATaE9mtuvYayH6tVhc3CO5pD9q1PmiL9137GsBQVhCt1FCvBZ6jdHqucX6zJlPh8XRzFf1HPMF+ja5lrpUFPV3817rXj0fr94iKdaUHofaxlDcw7UFNybue0axlqKVK+OG4NznzlsD0n9+xzr233PsgY59FKwzlJ4z1K/Ncz1TrEuVabzcXEU8yU9x3x5bmGulw40Vf3dvNeKe+73PDcF+GJuNzRG9Qioji/pPaxtDM0UrJtbB/hirKVI9ep0c4DeQ0P8DuSwS6F5TArwTWq/hXkdY9blSz8fF0gxXtJzjBfnVlK9dJCp6u/SfivutefzvBTgi7ldkfoH94Zq+JLewRbG0EzBei9jHUWqVeebQ/QWdt/rX8X/Hgrypa38SA63FJCnSiE+Sn22Mq8rWpcuw7wvkGIM5XPMl+9W5nrpAFPVdcz7rbnXvs/zTg3wI+4Jzf8lPfstjcGZwvVexjqoTv3dGKaX2MaB7/ZFbk8hvlibyxIo4FIgXurRQb5Ia6zLl37ihnwZg/kc6QJeW6o3Hlaqur60747Y8ysF+OJe0Nwf0vPewxieKVzvYayhSHXqeYTv90UO64b4DcjhlkLw1c1rLNblSz9xQ34F86nS5buFud4iHTaqup607/bY93lOA/x6xvBMAXtr4/xNqlPPI3zDL3JYL1KQr81lCTncUgi+snl9zbp8YeJmfJnD+RTp8t1CqrdIh42qriftuz32fp5zhQBf3AOa90N6znsawzOF7C2NczepRj2X8B2/iWG96L/Gr0gOthSCr25eY7EuX/qJm/FlDuhj0sW7hVRrkQ4aVV1X2nt77P84XwzwfSH+//7/+H/h35NbQ3O+ped7hDFAU9Deyjhvk+rT8wnf8wcxrBviVySHWwrBVzavr1mXL/3EzfgV0KdIF+8W5lqbdNCo6rrS3ttj/8f5xkJ8CfAnCPE030t6rkeagzQF7i3M81Jtek7hu/4ghnVD/IrEYEsh+OrG9TXr0qWfuBFf5oA+JF24W0r1FumgUdV1pb1XpL26pnGuKQF+QojfCprrLT3To81hmgL32uY5qS49r/Btf5ADOwX52lSmksMtheArm9fXrMuXfuJGfElhvU+6cLeU6qVDRlXXl/Yf7dO1jfOdOMTTPG/peZ7FHKopeK9lnqtINel5he/7gxjWi/5r/I9QuKUgfGVpjXX5MkzciC8prJN02W4p1VqkQ0ZVt5H2IO3XNY1z9YX4GOAHQvxW0Fxv6TmeSQrWFMCXSuMXqRY9v/SNd34Qw7oh/kdyuB0Lv83Y7uxS/XX5MkzchB9ScG/SRbu1VCMdMKq6nbQPab+uaZzrxxBfXBua4yU9v7NKIZsC+RJp7CLVodcQvvcPYlhvIT4H+dpUhqBwOxZ+h4x9z2Susy5fxomb8EsK8EW6aLeUaivS4aKq20n7kPbsGtJcJwvxNP5LenZnl4J2kYL5mDROk+bWawnf/AcxrPeF+GJtLn3kcDsUfNcwjr+XVEddvgwTN2CvRwf4ItVVpMNFVbeT9iHt2V+leYonCfE07kt6ZleSQneTwnqW+kVpTr2e9O13vslh3RC/AAq3Q+G3dsN+S4xzbSXNW5ch47SN95IuxuYZQzwdLKq6rbQXi7Rv50rjZqeG+IEg/ys05kt6XleUwvca0lx6XWEPvMlhve9f42tzIXK4HQq/tcsguc8c49xrSnPVcmWctvFe9l2OzaMCfJHqoUNFVbeV9mKR9u2YNE6f8Xyic2pGiC8uhcZ6Sc/q6lIQnyONqfcR9sEHMawb4meSg+0ewZfGzcY6fpXGL9ZyZJi26d4OXZBNuoi3luoo0qGiqttL+3Hqvp1rPpeisd0OIZ7GeUnP6E5SQB+SxtD7CXvhgxjWDfEzoGA7FH5rt9XJ8/QZa5sqjVOsU8s4bdO9Hbogm/mi3kOqo0iHiqpuL+3Htczn0JC570Yhnvq/peej+gRhP3wQw7ohfgY52A4F4NplU+J8Q+Y6h6T+xTqljNM23Uu6IIu5XZGC9pZSDXSgqOo+0p78RTp7ppjH2SDEU9+X9FxUnyTsiw9iWH9UiKdwOsW+vkPh9zXhTuS5h4w1Z6l9sU4j0yjP6y1dkM3cloL2lub5i3SgqOo+0p7sk86UNY1zrRjiqc9beiaqTxP2xgcxrPeF+GJtfk0ojK7pWACuZRxGrqeZ645S+2IdUsZpG+4tXY7R3J7C9hbmeZt0oKjqPtKepHNjD3MdE4N8H9T2LT0L1acKe+SDGNRvFeIpgG7hWPit5RxOrquYa29S22IdSqbRNtyHdEE2c1sK3FuY523SgaKq+0h7ks6NPcx1LAzx1OZDeg6qTxb2yUdwj8YQn4N86XcJKHwOSSE2S/2aY21rWYeT6yrm2pvUtliHkmm0DfclXZLN2I4C9xbGOZt0mKjqftK+pDNjD3MdE0N8sUG/fUjPQPXpxj0SQzl56RBPoTNLgXVN83y1tFOQa6P6i7ldtA4l03hvvCxdks3YjgL3FsY5m3SYqOp+0r4s0rmxh7mOGSGe/v4hrV/16f7N3/u7H0F8zEuGeAqbWQqrW5jnrSWeglgX1d6M7aJ1GJnO+4Lqc+yipMC9tnG+KB0oqrqftC+LdG7sYa5jYogfldau+mRLeJ8a4HNwj8Z23V47FxQ0sxRStzLPXcs8DbE2qr8Z20XrMDKd9yXV59hFSaF7beN8UTpYVHVfaW/SubGXuZZfQjytV/WptuA+JbxTYCdjn27PnQcKmU0KpnuY66ilnoJcG9VfzO2adRiZzvuiKvZddGOXJIXutY3zNcshQoeMqu5n2Ye0P+ncWNu+uWIdxaUhntar+kSnhncK6WPG/t2+OwcUMpsUTPcy1lFLPQ2xtiLVX8ztmnUYmc77siq2i25KkI+/Uehe2zhf0xCverxHhfixueLvxbkhntaq+jRjeC/GwJ2lgD7FOEa3946HAmaRAume5npquach1kb1F2ObaB1C5vG+sIpLQ3yTwvda0nzlQKFDR1X3s+xD2p/5zPhVmiM6t/2QtE7VpxhDezSG7SyF86nGcbr9dxwULosURo8w11XLPgW5Nqq/mNsV6xAyn/elVYwhPgf5fEFOuSQpjC+Vxi+HCh1AqrqfZR/S/qQzY4k0Nrm0X5bWqPoEY2DPxqAdpVA+1zhetwePgcJlkYLoEea6atmnIdc3ZQ3NOoTM531xFdcO8VkK51Ol8crBQgeRqu5n2Ye0P+nMmCONOeSvY9DaVJ9gDOtkDNlNCuNLjeN2e/EYKFxSED1Cqq2WfRpyfVPXUaxDyHzeF1hxbohvxnZraIhXvY5lH9L+LNJ5QVLfPvvOqOLSsWldqnc3BvU+Y8BuUhBfah6724/7Q8GSQuhR5tpq2ach1zdlDc06hCzjfYkV4+WYL0i6HMnYZ2vLAUMHk6ruZ9mHtD+La54J+XzKZ1Qxn0fN3C5L61K9qzGkj5lDdgvf/+4//tsvYzifah6/24/7k4MlhdCjzLXVkk9FrnFsDc3aXZbxvsCaQxckXYxTjeOsaTxo6KBS1X0se5D26Brmcyma29L5k819irQm1bsZ78wp5oDdgjcF+GgM6WPmObr9uC85WOYAeqS5tmIt+zTk+qauo1iHkGW8L7DiGpfjr+Y5x4yHDR1Yqrq9bQ/SHp1rPoemmMegsyWa2xdpXap3Md6Vc8wBuwVvCu7RGNKHzON3e3FfKFhSCD1Cqq2WfSpyjVPW0axDyDLeF1jx14txa3M9xXjY0MGlqtvb9iDt0Wg+Y9Yyz0PnRzS3L9K6VK9svB+XGgN2DN8U3KOx7ZBx/GK3F/clh8ocQI8y11WsJZ+KXOOUdTTrELKc9wVW/PVi3NpcTzEfOHSQqeq2tv1HezSfK1uZ56UzpJnbFmldqlc13ou/GAN2DN8U3Jux3ZBx7Ga3F/clB8scQo8w11Ss5Z4KqnPKWpp1GFnO+wIrLr0Q9zLXVMwHDh1mqrqtbf/RHo3nypbmeekMaea2RVqX6tWM9+EaxoAdAziF92JsM2Qct9ntw/2JoTIH0L2NtURrqaeC6py6nmIdRn7jfYEVl16Ie5lrKuYDhw41Vd3Wtv9oj8ZzZWvz3HSOFHO7Iq1L9SrGe3BNc9CmQD7HPF6z24PHEINlDqF7GuuI1jJPA9XYnLqmYh1OfuN9gRX7LsIiXYR7S3XlA4cON1Xd1rb/aI/GkL21eW46R4q5XZHWpXp24/23hTlsUzCfYx6v2e3BY8jhMgfRrc3zR2uJm0Nzz/WM63oA7wusOPci3NtcVzMfOnTQqep2tr1H+zOG7K2l+aeeJbQu1TMb770tjWGbgvlU4zjRbv8dRw6YOYxuaZ67WUtbDZpjTeesrVjLkt95X2DFXy/BPqn/EmnsYj5w6LBT1e1se4/2Zw7aW0s1TDlHaF2qZzPedXuZQzcF9D5z32a3585DDpkUStc0zxetJf0Mjb2mtK4mtW/W8mQd3hdYkS7AePmNXYJLpPH7pP7FfODQwaeq29n2Hu3PHLL3kOoYO0doXapnMt5ze0ohvEihvUnto92eOw8UNimc/iLNEa2l/ASNO1Wqeak0frGWKevxvsD6jCF67BLcwinz5gOHDj9V3c6292h/UsjeWqqjOHSO0LpUz2C8346SgvhSu/12Pih0UkCdK42brSUshsYkqb61pXmLtVRZl/cFRsYAHc3t5lyiW5gPGzoEVXU7296j/Unnwx5SLX3SmlTPYLzbjpYC+VTrXjs3FD6LFFb7pP591mkXQ2NmqcYtpRqKtWRZl7ax0KUBfop5nF+kw4YOQ1Vd37jvaH/S/t9LqoekdakeZdxTZ5RCep9pr50bCp9rW6f6CRq3ScF6T6mmWrasT9xcbym8N3Nbujh/Nc8xJh0ydDCq6vrGfUf7k/b4nlJNWVqX6t7GvXQX0147PxRC17AO/xM0bpRC9Z5STcVavqxP3FwY2qO5fZEuza2k+Yt0cNABqarrG/cd7U/ay0dItTVpXap7GffQ3Ux77TpQGJ1qHWJVaJ4mBers3/7jf/KWfl9Dqq2WL9sQNxcG92huTxfllub5m3Rw0EGpqusb9x3tT9rLR0o10rpUtzTum7sb9posgcJxkYJ0M4Z2kvr8aq6vli/bETcXBvdmblukC3JLqYYiHRp0aKrq+sZ9R/uT9vKRUo20LtUtjPvlKab9JnPIwbhIAbpJgZ2kvr9IddYlyHZ8bC4K783cli7Hrc01NOnQoMNTVdc17zvan7SXj5RqpLWprm3eL08y7DeZA4VjCtFFCutR6rOGVGMtX7YlbiwM78Xcji7GPcx1NOnAoANUVdc17zvan7SXj5RqpLWprmXeJ08z7TeZSg7GFKCbFNqL1HZNc43FWr5sz8fmmhLgi3Qx7iHVUqRDgw5SVV3XvO9of9JePkqqr0hrU/3VvD+eJu21TplCDsYUoM9grrOWL/vwsbnOHOCLVE+RDg86UFV1PWnf0f6kvXyUVB+tTfVXaX88QdpjSZlCDscUoI8211hLl/342FxjIZ4uxT3N9TTpIKFDVVXXk/Yd7U/ay0dJ9dHaVJdK++LO0p4aUcbI4ZgC9NHmGou1fNmPvLl6A3yRLsU9pZqKdLDQ4aqq60n7jvYn7eWjpPpobapLpD1xN2kPzVTGyOGYQvSR5vqKtXTZl7y5eqULcW+priIdNHTAqup60r6j/Ul7+SipPlqb6hxpL9xN2jszlDnkgExB+ihzbcVatuxP3mgoXYZHSLUV6cChg1Z1b+l7XUOaa29p31GttJePkuqjtalOkfbAXaS9MkP5hRySKUwfZa6tlizHkDfel3QRHiXVV6QDiA5c1a2l73NPqaYtpD1XpJpoLx8h1UZrUx2Tvv27SPtkgrImOShTmN7bXFOxlivHkjfjS7oEj5bqLNJBRAfvEVK9a0hz6f7Su5nqv/4v/g+/pHZLpXrXkvZckeoo0n7eW6qL1qbaJ33zd5D2xgRlS2JYplC9p7GWaC1VjuVjY9LldxZzrU06lOgA3lKqa0+pJt1Gev5zpQDfpPa/SGv4VdpzRZq/SPt5b6kuWpsqSd/7laX9MEHZixyYKVzvYa6jWEuUc/CxSenyO4u51iYdUHQIry3V8osU6CLUp0+qV5dLz7g5991k27v+9/+3/+xbavertK6l0p5r0ty0n/eW6qK1qUbpG7+qtAdGlKOg8Ewhe0uphlqenIePTUuX31nMtTbpsKLDeC2phiWW4Bb/5+wQcZwxaQ06Lj3LJkHtso389xjgrxDkac81aV7az3uba6J1qUbp+76a+bufqBwNBegihe0tpLlraXIuPjYvXX5nMdfapIOLDuRfpbnnSmGd2mUJajcmrUv/lJ5ZMb4rIrePln4Etd1aWvMSac81ad4i7em9pHpoXapN+ravIH3rM5QzQUG6ScF7DWmuWo6ck49NTBfgWcy1Nukgo0P5F2neucZ/ZZ0T4LeS1vlU6fkU23tqRqh9NvcvUrstpfX+Ku25JtVQpD29l1QPrUuVvumzS9/3DOXsULCOUhifKo0XrSXIefnY0HQBnsVca5MONTqcf5HmnWMM8E1qN+SUEBjD4pT2TVrzU6TnQc+xSe3PKq13DWnPRakW2tN7SfXQuvTZ0rd8Rul7nqFcEQrYe1inl/PyscHpAjyLudYmHXJ0QK8l1bClYyEyk9tHc98srfeu0vqL9NyK1HaJVMuYNM4Uaaw1pD0XpVqKtK/3kGqhdenzpO/3jNI3PEO5CxS0t7BOJ+fnY7PTBXgWc61NOvDosF5TquMM/hrii7TeO0lrbtIzK1LbMWnutaT5SOq7hrTnolRLkfb1HlIttC59lvTtnk36dicoT4DC91LrkHI98ubHS/AMUq106BXpwF5DqmGONOYcaUySgmiR2vZJ899BWusv0hxb2eY7av4m7blorC9K+3prqQ5akz5H+mbPJH2zExSRB/J1GNBFeAapVjoAi3Rw/yrNPyaNs6VUw6/SPFeV1rdEGntrqY4haYy1pD2XpZqKtLe3lGqgNekzpG/1LNK3OqKIyOfBQBfhGcx1FukgbNIB/iTpeS2Rxr6itLY50phnkGptUvu1pD0XpXqKtLe3kuantej9pW+0+V/97/5XKLVdW/pGRxQR+eDjkKDL8GhzjU06FJt0kK8h1dGk9meQap0jjXk1aV1TpLGU91yWnift762k+Wkten/zt0mhPZv7rC19nz2KiPTycWDQZXi0ucYmHYxNOsjXkmppUvuzSPVOlca7mrQukvrqt7TvovRsi7THt5DmpnXovW3fIwX1IeO3vJb0TfYoIjKJj8ODLsOjzTU26ZBs0mGuf0rPc0ga46refX17SfsuSs+5SHt8bWneIq1D72n7Dimgk//BX/9Pvv4Wv+dfpe8RFBGZxcchQhfi0eYam3RQRulg10/puWap35W989r2lPZcNj7rJu3xtaV5m7QWvY85iA9ZgnuU2tB3PVX6/noUEVnE14FCl+KRUo1FOjSjdMArS8+X2t3BO69tL/O3Mlfa52tJ80VpPXpdKXgPmYN7Nrenu2VI+uYGFBH5ia+DhS7GI6Uai3SARunA12Hj86Xf9ZnG72INaZ+vJc2XpTXqNcwhe4oU1oeMfeluIek761FEZFU+Dhm6GI8019ekgzRLl4AO254v/abPM+65NaW9/qs0D0nr1PMaQ/UUKZjPMY9Hd0uRvq0RRURW5+OgocvxKHNtU22HLF0IOm57jvSbPsO4n/r87/7X//O//Pv/y3/6S2qbpf3+qzRPn7RmPZc5TPdJQfwX8/gxuBfpexpQRGRTPg4duhyPMtc2V4O86jxpH0VLcI9SiC9S3yjt91+leToL9Hdcvx5rDtB9Uvhe0zzfzPAuIrIbHwcQXY5HmOtaQ7o0VPUPac80c3iPUogv0jhN2vO/SHNUC/R3fAZ6jDk090mBewvzvPT9gCIih/BxGNElube5pj5zaBgLD0W6RFSfLO2TIoV2Mu7DJo0XpX2/RBq7GqHf8VnoPuag3CeF7K3NNdC3UxUROZyPg4kuyr3NNWUpNDRLqKA+UbpUVJ8o7Y9iDupj0l6kcZu07+dK4wYj9Ds+D93eHJJJCtd7mutJ346IyKl4H1B0We5trCdLYSGawwWN0aQLRvUp0p4o5j00RdqLRRq/SPt+rjRulaB2+Fx0fXMoJilMH2WurX4vIiKn5H2p0WW5t7GeKIWELAWMIo3XpEtH9e7SXqC9M1Xaj0Wah/b9HGnMah/UFp+LrmMOwiQF6LOYa+2+FxGRU/JxsdGluZe5ligFhCgFiyiN2aRLSPWO0vdfpD0zV9qXNBft/anSeMEhqD0+I11uDr8kheazmWvuvhURkdPyvtTo4tzLWEeWAkKUQgVJYxfpQlK9m/Tt0z5Zat6XNB/t/SnSWMExqA8+I11mDr5RCspnNtfffSsiIqflfanR5bmXsY5oDgYkBYo+aQ66lFTvJH33tD9+Me9LmpP2/pg0TnAq1BeflY6bg26WwvGVjGvpvhMRkVPzvtToEt3DWEM0BwOSAsWQNE+RLivVq0vfOu2LX837kualvT8kjRGcA/V/Sc9Mv43BdkgKxVczr6n7TkRETsv7QqOLdGvj/NkcDEgKFGPSXHRxqV7d/J3TfljDvC/zvEXa/yT1DS6FxsJnpn+aA22fFIaval5b952IiJyWj0uNLtUtzfNHczAgKVBMkeYr0kWmejXp26Z9sKZxX9L8tP+j1Cf5CzTeS3p+TzcHWZIC8F2M6+y+ERGR0/JxodHluqV5/mYMBENSmJhjnpcuNNWrmb/rIn3/axr3Jc1P+79IbcE1oHHx+T3VGF6zFHbvKK29+05ERE7Lx6VGF+1W5rmbMRAMSWFijjQ3XW6qV5G+afr21zbuS6phoWtC47+k5/hEKcBS0L2z9Ay6b0RE5LR8XGgUtrcyz92MgWBIChNzpfnpglO9gvlbpm9+C+O+zDX84NrQHC/pWT7NHF4p5N7d/AyK3fchInJaPi4zCttbmeduxkDQJwWJpVINdMmpntn8DdO3vpVxb+Y6FroFNM9Lep5PM4dXCrl3Nz+DYvd9iIicmo8LjQL3FuZ5mzEQ9ElB4hdzDXTJqZ7Z/A3Td76VcW/mOia4JzT/S3qmTzOGVwq5TzA+g2L3bYiInJqPy4wC99rmOaMxEPRJQeIXqQ665FTPav5+6Tvfyrg3cx3Vs0C1vaRn+jRjeKWA+wTjMyh234aIyOn5uNAoeK9pni8aA0GfFCR+lWqhi071jMbvlr7vLY17M9YRPBNU30t6rk8yB1gKuU8wPoPuuxAROT1fFxqF77Wk+ZoxEPRJQWINcy100amezfzd0re9pXFv5lqqZ4NqxGf7JGN4LVLAfYLxGXTfhYjIJfi40Ch8r2WeKxoDQZ8UJNYy1kIXnfYbn90caSydJj1P+q63NO5NqqfzbFCNL+kZP8kYYCngPsH4DLpvQkTkEnxdaBTA15DmasZAQFKIWNNcD110+ml+ZkukcXXc/Bzpm97SvD9zPdUzQnW+pOf8FGOALVLIvaJz1pXbdt+EiMgl+LrQKIT/Ks3TzKEgS0FibWM9dNHpn8Zn9XpegfzbkDS2jhufIX3LWxv3ZqwleVaoVnzOTzEHWAq5VzCvI0t9mtS++y5ERC7B16VGQfwXaY5mDAUkBYm1zTXRZad/+PGcKvFvY9KYOs38LOlb3tK8N3M9wTND9eLzfooxvFLIPbOx9iGpbzS3774JEZHL8HWpURhfKo3fzMEgS2FibXNNdNHpn+bnNVUaS6ebnyd9y1ua92auJ3hmqF583k8xB1gKuWcy1ztVGisa23bfhIjIpfi62CiQL5HGbuZgkKUwsYW5Lrrs9E/z8xqTxtB5xudJ3/CW0t6M9QTPDtX8kp75E4zhtUgB9yhzbWN27/EN/U5zNHPbOoyIyCX4uNCaFMrnSuNGKSA0KVBsYa6JLjtl87NrUltdbny29A1vKe3NWE/wClDd+MyfYA6vFHD3Ntc0Zvf+kNyO5mrmtnUIEZHL8HGpRSmcT5XGi1JAiFKo2MJYE112qkcav0/6freS9mQx1hO8ClQ7PvcnmAMshdy9zLX02b2vUXIfmi8a29YhREQuxcelFqWAPlUar0kBIUrBYgtjTXTRqR5p/D7p+91K2pPFWE/wKlDtL+nZ390YXosUcLc0z5/t3sti8lg0fzO2q91FRC7Hx6VGUlAfksaIUkhoUrDYwlwTXXb6HM/0HcTvskjf7xbSfmzmmqpXgurH5393/+bvHRPk85zZ7n38TB6T6mjmtnUIEZFL8XGp9UlhvU/qH6WQ0KRwsZWxJrrs9Bme7TuI9RTp211b2ovNXE/wSlD9L+kd3NUS4PcM8XkesnsHqxLHppqasV2xdhcRuSQfF9uYFN6b1D5KQaFJAWMrY0104em9je//TN9BrIe+2y2kvdiM9SSvBq0B38HdbOG9L8QXKegukcYmu2e/CXEOqi8a29buIiKX5eNy20oKCk0KGFuZ66LLT+9nfu9Rar+3sR76bteW9mEz1pK8KrQWfA93MQf4YllzDLBFCrlzzWOS3dybkuejOpuxXe0uInIL3hfc2lJYaFLI2NJYF12Ae3jk3E8zvu8stT/CWBN9s2tKezAaa0leFVoLvoc72BfgizHAFinkTjGPQ3bz7QbNT3UXY5vaXUTklrwP/1+lsNCkoLGlsS66BPfw6PmfYnzXUWp7pLE2+mbXlPZgNNaSvDJf66H3cHX7wns0htgiBd0+c1+ym+MQch1UfzG3q91FRG7Nx0UwVwoLTQoaWxrrootwD89QwxJj3WeuPdcZpfZHG+ujb3Ytaf9lYy3BO/C1LnoXV3UsvDdziKWgS+Z+2W7sQ8n10BqasV3tLiLyeD4uiyiFhSaFjS3NtdGFuIdnqWOKudY+qe+eUk1Nan8WY530za4h7b1srCN5B2hd+D6u5pTwHlwceMky3lnItdF6irld7S4i8mjiRfElhYYiBY6tjXXRpbiXsY6jayFzfXOlMbeS5m9S+zMZa6Xv9Vdp35GxjuQdoHXh+7iKU//1vfomh1gKus3ctlmHOhW5RlpPM7ar3UVEHk+8ND6k0NCk4LGlsS66HPc21nOGmnI9v0pzrCXN16T2ZzTWTN/rL9J+6zPWEbwTtD58J2d3aYAvxABbpJDbzG2LdZhTEuuk9TRju9pVROTxxIvjSwoORQofWxprogvyCGNNR9WVayCX9Gnmvr9I4zep/ZmNtdP3ulTaa33GGpJ342uN9E7O7MTwPkgMsUUKusXYpnY9NbHeIq2pGNvUriIijydeIl9SeChSANnSXBddlEeY68pSn1+kOfqk/k1qP0Uaa0gaI0v9zm6sn77XudIeGzPWkLwbtEZ8L2eV6k9OIgZZCrrF2KZ2OzWx3iKtqRjb1K4iItIRL5MPKTw0KYxsZa6LLsqjzLVlqc9cadwhaQyS+k6RxmpSe5L6XsW4Dvpe50h7a8w4P3hHaJ34bs4m1R2cRQyyxbGwW6xdT02u+S7rkofyf/3P/vov2fqTyFa0S+VLChFFCiRbGmuiy/JIY20k9RmSxpgqjTcmjbOVNP/VjOuhb3WqtK+mGOdP3p2P9dK7OZO53uRscpC9S9jNNdO6irFN7SpyHii8Z2tTkS1ol8uHFCKaFEy2MtZEF+YZjDWS1KdJ7edIY86Vxl1Lmu+qxnXRtzom7aU5xvmTd+drzfR+ziDVWv2JGGQp6BZjm9rt9MSaaU3F2KZYu4qcAwrtZG0usjbtkvmSgkSRAspWxnro0jyLsc6tpfnXkuabK417B+Ma6VsdkvbRHOPcyafwsW56P2cw11n9mRxkKewWY5va9dTEeotjayrWriLHQkG9+C/8H/4p/HuxdhVZm3bZfEhhoklBZQtjPXRpns1Y7xbSnFtKNYxJ49zBvE76XknaP3PNcwefwtfa6R2dQaq18ydykKWwW4xtatdTE+st0pqKsU3tKnIcFNCLJcA36fdiHUJkTdpF8yUFiiKFlS2MtdCFeVZj3WtIc+wt1RWlPncyr5e+1yjtmyXmeZNP4mPt9I7OYK6z+jMxyBbvEnZjzbSmYmxTu4nsD4XyZgzwY0G+WIcUWYN20XxJoaJJwWVtYy10YZ7dWP8SaUw9zvhu6Htt0n5ZYpwPfBpfz4De0RmkWquLiUG2OBZ2i7Xrqck1j62rdhPZHwrjFN6j1KdZhxVZg3bJfEnhokkBZk1jHXRZqu5p/B7zt0r741fjfMmn8vUs6D0dLdVZXUwMskUKu8XYpnY9NbHe4h3WJDeDAniRQjtJfZt1CpFfaZcMSgGjmcPMmsYa6LJU3dP4PbZvlPbEGsa5kk/n43nQezqDuc7gYmKYLd4l8Maax9ZUrN1EtoeCd5HC+pg0TrFOJfIr7ZL5kkJGNAbvNY010EWpuqfxe6R9sJZxHvDpfDwPek9nMddaXUwOs2OBt3Y7PbHm4l3WJTeAQjcF9KnSeHUqkV9plwxKYSNKIfxX4/x0Saruafwei7QP1jDPExR4LvSuziDVWl1MDLN3Cbux5uJd1iUXhsI2hfIl0tjFOrXIL7RL5ksKG1kK4r8Y56dLUnVP/+bvbf+v8XF8UP7g69nQ+zqDVGvnYmKYLQ6F3WLtdmpyzXlNeV21m8g2UMAuUiBfKo1fpxf5lXbRfEmhI0thfKlxbrogVfc0h/gi7YGl5rGT8snH86H3dRZzrZ2LiWG2eJfAG2su3mFNckEoXBcpiP8qzVPLkB7+f//xP/2XKdbmT6Y8A5TCB0mhfI55XrocVfeyBPhm/C7p219qHDcp33w9J3pvZ5Bq7VxMDLQ57F4p8MY6s0NrKtYhRNaDQnWRAvha0ny1HAEosE+1DvEUynpRCh99Ujifap6XLkfVPYwBPof4In37c81jJoX5elb0/s4g1LqYHGiHAm/tcgpiXWMOralYhxRZBwrTRQrea0pz1pIEoHC+xDrc3SnrRCmE9EkBfYpxProUVfdy6xCfx0vKMB/Pi97fGcx1di4mB9ozB95cyxTzepqxTR1eZB0oTFPo3kKau5YliRjE/7//5//+l/H3pdap7kJZD0phZEgK6kPGuehSVN3DHOCb8fuk732OcaykjPPxzOgdnsFcZ3UxMdAOhd1i7bIruYYhc/19xj51GpHfoABdpLC9pVRDLVECMWxTiCdjn72s5Z6FUg9KgWRICut9xnnoUlTdWgrvzfh9Ful7n2IeJyjToGeH7/Nooc7FxEB7psAb5+2T6p1iHKNOJ/IbFJ4pZO9hrqOWKIEYlCmwjxn772Ut/WhKHSgFkzEptEfzHHQhqm4pBfdo/kaL9K0PSWMEZTr0/PC9HinV2DmbGGaLY4G3WLtuRp6PpDrnGMeq04osJ4fmIoXrvcy11DIlkAMyBfUl5nG3sC7hKMr8KIWTqVKAL8bx6TJU3UoK7H3G77RI33ifuW9SpkPP7y294yOFGicTQ2x0LPAW6xCbkOeKUm1LzWPX6UXmkwNzkYL13uaaarlSycGYAvmR5vqydRlHUeZHKaTM1RCvR0tBfcj4nRbpu+4z9w3KNOjZfUjv+Gipzs5BcnjNUuAtxjZ1qNWJc0Spnl/Nc9QSROaRg3KRAvURUm21bKnEUExBOvqX//Tf+pLarW2skaxLOYIyN0pBZYl5XLoIVbeQgvqY+Xulbzqb+wSlH3peg9I7PoNQK5JDK0lhtxnb1SFXI46dpVrWMs5TSxGZDoVkCtNHmuurpUslB2IK0U0K8UVqu4W51mZdylGU+VEKLHOkMekSVF1bCuhTpG+2SN93kdoG5RN6RoPSuz2bVHfnmxhUSQq3ZO5Xh/+ZPG6TaljbOF8tR2QaORwXKUSfwVxnXYJ05EBM4blJAb5Ibbcy19usyzmKMj9KwWWqeSy6AFXXlIL5XPN32xz6tkHh5zJJerdnlervXC28R2P/MscaxDGbNPcWxjlrOSLj5FBcpPB8JnO9dSnSkQMxhefokSG+mWuuSzmSUsOXMbjMkcZqIYkuQtVfjCF8Den7nemToecxKr3Xq5jXEsNplsLsVOM43TyLieNEac4tjXPX0kSGyWG4SKF5a+fWQe3rkh5PDsQUms9orrsu50heFxBJQb1P6p9DEl2EqnPN39Wa0nc80SdCz2FQep9XNgZSkkLsXON43TNcTBwnSnNuaZy7libCUAimsLyXVE+R2jZz27o06ciBmELzGY0116Ucyety7ZMCe5b6UUBq0mWoOkX6nraQvukBnwKtfVR6j1c3BtE+KcAuMY7ZPc9FxDGaNNcexhpqeSLf5PDbjAH5P/lv/50P429rS7VEqU8zt61LfDwxDBcpMO9lroXsa1+XcySvy7ZPCu5Nal+kYBSli1F1TPqWtpa+7+BToLWj9AyL9D6vaAyhJAXXX4xjd893NrF/k+bZy1hHLVHkkxx6my0U5/DejMF5TakWkvo2Y7u6zMcTg3AzBuU9pBrGzP3qco7mdQGPORbei3SB90mXpGqUvpu9pO87eFdoraPS88vS+72KMXxmKayuZZyne86ziH2bNEf0v/y//Xv497WMtdQyRf4kht1mDMMU3pux3VpSPVPqzOa2r8XKYf8an+f9xbqUM1Bq+Um6uKdIl6Y+W/pO9pS+7+TdoDUOSs9tTHrXZzcGzyiF1LWN83XPfBaxb5HGj5YAH6U2v5jrqWWK/EEOujkIU3Bv5ra/mmtp1lJf0O80VjO3rcM8nhyKKXSvZZ6LrGW9oTbZ2vQMlFpmS5f1XOny1OdJ38be0jeevAO0rkHpWS2R3vtZzcGzSSF1C/O83XuYRO5HYzdzeG9S26XmemqZIn+QA24xBmAK7sXYZi2plmIt9YPchsZr5rbFOszjyaGYAvgS87hD1lIQah+tzc5AqWWWdEn/Il2k+gzpe9hb+saTV4bWM0l6Vr9I7/9s5uDZpJC6lXnu7l2MkvsUaewihfcmtV9qrqeWKk+Hgm0xhl8K78XYZi2plmItF6H2NHYxt6tDPJ4ciimQTzGPM2adfhLUv1mbnIVST690Ia8tXah6X+kbOEL63pNXhNYxKD2bLaRv4Szm0FmkcFpcO/BmYw3d+xkktm3SmMUc2qPUfqm5nlqqyPR/yT4qwNcyB6F+NH4zt63DPJ4cjCmkk7nfFOuUs6GxmrXJWSj19EoX8lbSBav3kd75EdJ3nrwSVP+o9Fy2lr6JM5iDJ4XT4pbhtxnr6N7TILFtkcYr5rqj1P4XYz21TJE/yIGWQu8e5jqKtcRJUH+apxnb1SGkI4ZiCuzR2HbMOvwq0PjF+vOZKDX1ShfyVtIlq9eW3vNR0vedvBJUP0rP4gjp+zjSGDqbFE73CMDFWEf33gaJbWmsJtVepLa/GOsp1jJF/iCG2SaF3i2lGoq1xFnkMWi+Ym5XrEM8mhyMKbw3c9tsHXIT9p7vB0pdvdKFvLV06eo1pPd5BunbDl4NWsNbWv9ZpG/mCHPwpHBKAbhIbX811tK9w0FiWxorunXtsZZiLVHkkxxmKfRuYZ63WctaRB6L5m3mtnWIx5PDMQX4Ym5XrEPswpFzz6TU1itdxntJF/CZvFKtWxmfwVml77p6Rb7WQWs+q/QN7WkOnhROc/htUts1jPV073OQ2JbG2tNYS7GWKPJJDrNFCr1rS/PWkn4ij0lzF3O7Yh3i0eRwTAG+mdvWIXbhyLkXUOoblC7kPaSL+EipxmZ5TtTnbtLaz2r+jge8Cl+107rPLH1Te5mDZw6mFN6bue0a5nq69zlIbEvj7WWso1jLE2Eo0FLwXUuar5byMzQ21VDM7eoQjycHZArwxdyudt+NI+deQKlxULqQ95Yu5q2lOqL0rGicK0vrPrv0XiZ4Bb7qpvWfWfrGtjYHzxxMKbg3c9u1zDV173KQ2JbG28NYQ7GWJjJMDrRFCr6/SvPUElaD5qBairFN7S4dMSBTgC/GNs3afReOmnchpcZR6UI+Srqo15bmbdLzadJYV5PWfBX73gn9fcAz81UvPYezm7+5Lc3hMwZTCu7N2G5tc03dexwktqXxtjbO36yliYwTA22RQu8v5vGLderVobmm1FS7P54YkItnDPEXojyXSdJFfCbp8p4jjUnSs4nS2FeR1nslp76L3G7As/JVKz2PK0jvZ21j8MzhlMJ7M7ddy1hPsXt/o8T2NOaWxrmbtSyRaeRAW6Tgu0Qau067CTQf1VXM7eoQjycHdEP8IsozmSVdwmeXLvUo9emTnkmW5jiztM6ruuQ9xD4TPBNf9dEzuYr0btYyhs8cUCm8F3O7NY31FLt3N0ruQ+NuYZ63WEsSmUcOtEUKvnOkMet0m0LzTqmvdpeOGNBziKcgX7vJH5Tn8WG+VKlNMbd7gvQc+qQQcSZpfXeT1j0kvccBz8RHbfQsria9n1+NAZSC6l4BPtbRLC9xCrkfjb+2ec5iLUdkGTnUFin8TpXGq1NtTp6X6ivmdrX748kh3RA/mfIsvsyXKbVp5rZ3ltZfbAEh/q31iQHiDMb13Fla+xLjOx3wDHzVRc/litJ7WWoMoRRW9zDWEO3e2WRiP5pjTeNc0VqKyHJyqKXgO8U8TrFOsQs0P9VZzO3qEI8nhvQc4g3yvZTn8CFdokVq26T2V5fWScaAkH+jcYuxz1bSvE+RnsdS8zsd8Ax81UXP54rSu1liDKEUWPcw1tDs3tUsYl+aYw3jHNFagsjv5EBbpOA7JI1Rh9+VXAPVWsztinWIxxND+liIL9ZuT6Ws/0O6PKPUp0ntzyrVv8QYDuh3mlu3M76PNaV32+PRfNVEz+nq0juaagyjFFy3Ns5f7N7RIvI4NNcv5vGbdXqR9aBQS+GXpL512N2hWqjmYm5Xh3g8MaDnEE9BvnZ7ImXtX9KFSVLfIrU9g1Trr+ZwQG2oFl3H/Jzz+9jCOOeIR/JVT352d5He0ZgxkFJ43dI4d7F7Nz+Rx6M555rHbNYpRbYhh9oihd8o9anDHUauh+ou5na1u3TEkG6Q76Ws+0O6JIekMZrUfm+prrWkcJDbUE26zPxs+6T3soU0N3gkX/XQc72D9H6GjMGUQuxWxnmb3Xv5CRqT5p4ijdWs04lsRw61TQrARWpbhzqcWBPV3oztalfpyCHdEP9FWfNbuhjnmMdbY8xfpZrWlMIBteuTatY/pWfWJ72LPaRawCP5qIWe892c8o5iOKUwu4VxzmJXx2rksZtT6hizTiGyDzHUNin8FnO7OsTh5Lqo9mZsV7tLJYb0HOJzkK9dnkJZ74d0GV5FWs9ScwBYIo07JK3pydIzytJzP1KqMXkUVAs+9ztJa47moEphd03zfF0Nq5LHX8s6vMj+xHBbHAvAxdr1cHJdVHszt61DSEcM6cWhEF+s3Z5AWevbFkToMjyreQ1LjCFsTWmuIWl9T5OeS5ae9ZmkmpNH8VULvYMrSmubYg6rFLzXMM/T7GpYHZpniXU4kWPJ4bY4FoCLtfthUE257mxuX4eSjhjSDfEvyjo/bCGELsmzSfXPMYauLaW5+6R1PkF6Fn3SMz6rVH/wKL5qoXdyBWktc6XwSiF8qTR+s5t/U2jObG0qcm5yuC2OBeBi7b47VEuul8x96nDSkYP6w4N8Wd+HOYDQpXm0VPdU8/rOYK6R1nxn8/qHpOd3BWktwaP4qoXez9mkumeK5GBLYXyuecxonVZEppLDbXFKCC7WIXaDaqBa+4z96pBSiSE9h/gc5GuXu1LW9yEFkCJdpntKtU6V1nMmqWZ6BneS1jwkPbcrSWtKHsVXLfS+jpRqnOFkKGhTMJ8qjVes04nIEmK4bY6F4GLtvgt57iLVOGTuX4eWjhjSi4b4P6TwEaULdmtzjXOkNZxRqr1Iz+Pq0jr7pGd1ZWmNyaP4qoXe3R5SLRON5P+eDIXuIoX0IWmMOoWI/EoOuMWzBOE8Z5FqGzOPUYeXjhjSi0Mhvli73Y2yrg8peGTp4l1TqmuOVPMVpLUU6RldTVpXn/Rs7iStOXgUX7XQe9xaqmOiq0Hhu0lhPUp9mnV4EVmLHHLPEITzfE2qbYpxjDqFVGJIN8QvC090Ef9irmmqVNsVpbXRc7qKtJ4+6XncVVp/8Cg+6qD3uYe5jgE3hYL4UuuQIrImMeBGh4JwsXbfhDxXMdczxzhOnUICMag/LMiX9XxIYWOqdBnPlWoak2q5unmN9KyuYF4HSet/ivQ8qkdBteC73Vqqo7orFMjnWIcRka2IIbd5ZBiO8xSpljnGseoUEoghPYf4mwf5spa3FDKWSBdyn7mGqdK8dzKvl57dWc2190nrfqL0bDqPhOrBd72lVEPnoVBI77N2EZE9iEG3ORSGi7XrquQ5cg1LzGPWqaSSQ/pDQnxZx4cUMJZKl3KT5p4izXNX89rpOZ7RXDdJ632y9IyqR/JVD73vrU01iIj0k8PuWBgu1q6rkcfPNSwxj1mnkkoO6TnE5yBfu12ddjG+pHCxVLqMi3nOKdL4TzA/B3qeZzLXm6U16h/S86oezVdN9O63NM0vItJPDrvFvQNxHDvP/Ytx3DqVBGJILxri50kXcDPPNVWa5ynS86Bnewap1iitTz+l59Z5Br7qom9gK2F+EZF+YtgtjgXiYu36M3lcmnupcdw6nQRiSC8Ohfhi7XZV2oX4loLFmHTpZmmuPsuY7f99uvnZFOn5Hi3V2aR1KUvPr/MsfNRF38FW5rk7RUSGiYG3OBaKi7XrT+Qxad6lxnHrdBLIId0QPyxduFGaI0vj6h/2PcP8nI+w1ZFri9KatF96htUz8FVX/ia2FOYXEeknBt7mUCgu1q6LyePl+X41jl2nlEAO6cWhIF+7XZV2Gb6kUDEkXbTRPH6WxtQ/nPIsc5u9pFqitB6dLj3T6hn4qou+kS2kuTtFRPqJobc4FoyLtesi8lg03y/GseuUkoghvTgU4ou12xVpF+FLChR90iXbzONGaSz9dOozpXZbSjVkaT06T3qu1bPwVRt9L1sIc4uIDBODb3HLcBzHoXl+NY5fp5REDuk5xOcgX7tdjXYJvqVAQdLlWqQxozSWfkvPtpifJ7VZ23/wr/31yzw3SWvRZdLz7TwDVBd+O1sIc4uIDBODb3EsHBdr11nkMWieX43j12klEQN60RD/6cTL9SX112Hp+Rbzs6U2a5rnI6l+/V161p1HQvW8pe9nC2nuThGRfmLwLY6F42LtOos8Bs3zq3H8Oq0kYkAvPiHEU5AYcsLFiv102Phcs/n5Upu1zHNlqXZdT3rm1b2hGr6kb2graf5OEZF+YvilcFyMbYq162RiXxp/DeMcdVpJxIBeHAvxxdr1SrTL7yUFiamuNc7TpcASjc+5SG1+Nc+Rpbp1fenZV/eA5v2Svp+9hHpERPqJ4ZfCcTG2Kdauk4l9afw1jHPUaQXIId0Q3+8aYzxdCirR+K6a1O4XaY4o1a3bOPA+toTm+7L930kU8ze0l1RXp4gIE8MvheNibFOsXScT+9L4vxrHL9ZpBcghPYf4HORrt6vQLr23FCR0HymkROl9UbtfpDmaVLNu58g72QKa58sY3qPxO9pTqrFTROSTHH4pIDdz2zrEJGI/GvtX4/h1SukhBvTiWIgv1q5XoF14LylI6D5SOMnm91Wkdkul8ZtUs27ryHtZExr/Swru2fg97SnUKyLySQy/RQrIzdy2DjGJ2I/G/tU4fp1SEjmYNw3xurYUSsj8vqjNEvO4UapX93Hk/awBjfv23/yf/vdeUlgfMn5be0n1d4qI/EEMvk0KyNHYtg4zidiPxv3VOH6dUjpyGCcpxBdjmzrc2WkX3VsKErqtFEhIel/Ubq40bpPq1X2c+I5+gcZ72wL8khBfjPXvJa2jU0Rk3r/CN3OfOtQosQ+N+6tx/DrlY4nhe0gK7tHYtg59dtol95KChG4rBZE+8/sqUrup0nhNqlX3deL7mguN8WEM70sDfDSvY2tpTZ0i8mRi6C1SMO4z9qvDjRL70Ji/GMcu1ikfSQzeQ1Joz8b2dfiz0y64lxQkdFsphJD5XRWp3RRprCjVqfs6473Ngfq/zeG9ScF8rrSeLYX1iciTycGXwnGfuW8dcpDYnsZcahy3WKd7HDFwkxTSx8xj1KnOTLvgXlKY0G2k4NFnfk9NajsmjdOkOnV/6b0V6Z11ToX6vqTgPkUK62PSurYQ1ikiTyUH3yIF5D5z3zrsILkPjbvEPG6d7jHkoJ2lcD7VPFad8sy0C+4lBQpdXwodfeZ3VKR2Y9I4UapTj5HeX5HeW+cY1OcthfOpUkifIq1tbWmtnSLyRHLwpXA8Zuxfhx0kti/SmHPNY9apHkEO2FkK5UuMY9apz0y73F5SoNB1pcDRZ34/RWrXJ/XPUo16nPQem/T+Ovugti8pkM+VwvlcaY1rSGuuisgTicGXwvEU4xh12FFiHxpzrnG8Yp3m9sRgTVIYX2oct05/VtrF9pZCha4nBY4+6f1Quz6pf5Zq1GOld9mkd9gZod8/pEA+xxjC6fdibDNFWutcaa2giDyNHHwpHE8xj1OHHyS2pzHnGMcq1iluTQzUWQrgaxjnqGWclXaxvaVQoetIwaNPejfUrk/qH6X69HjpXUbpXXYW6O9fUuBeWwrpU6T1jklrHFFEnkYOvxSQpxrHqcMPEtsXacwp5nGKdYpbEwN1lML3WsZ5ahlnpV1sbylY6O9SABmS3g2165P6F6k2PYf0HrP0TqdIYXttKZgvkdZdpHXNVESeSAy+FJDnGMeqww8S2xdpzCnmcerwtyUG6SiF7rWN89Vyzkq73N5SuNBlUhCZIr2XIrXtM/el+vQ80jsk83sdk8L22lIQ/9Vf1hwUkaeTwy8F5DnGseoUo8Q+RRp3yNy/DntrYpBuUuDewjhnLeestMvuLQUMnW8MIXOl90Lt+qT+VKMeL72/IendZilobyGF71+ktSxQRORPYvilgDzXOF6dYpTYp0ljk9S3DntbYohuUtjeyjhvLemstIvvLQUNnSeFr6nSO6F2fVL/ItWpx0rvb0x6t00K2ltJIXyOVP8PiogwMfxSSJ5rHK9OMUrsE6Xxo9SnDnlbYoBuUtDe0jh3LeustEvwLYUNnS4FrynSuyhS2z6pf5Nq1eOk9zdFercUss8o1b5AEZHpxABMQfk/+W//nbf0ezaOV6eYROy31DrUbYnhuUkhu/mX//Tfeku/LzXOX0s7K+1ifEuBQ8elwDVVeg9Nak9SX6pTj5Xe3RzpPVNgPlqq80dFROYTQ3AO5DHAbx3iC7HvXOsQtyaG5yIF7Bjco9R2qbGGWtpZaRfkWwoe2i8FrTnSO2hS+z6pP9Wrx0nvbY70josUoo+QalugiMh6xCAcw3gO8HuE+ELsP9Xa9dbE4FykcE3hvUntlxrrqOWdlXZxvqXwod9SyJorPf8o9Rky96e6dX/pXS0xv98mBeo9pZomKiKyLTEMxzB+VIgXJgbnYg7WFNyjuf0vxjpqeWclXqgvKYTon1K4Wio9/ya1H5PGoTXo9tL7+VV6vxSqt5bqmKiIyL7E0N2COAX4Ygzrfcbx6hTyIzE0F3OoptCezX1+MdZSSzwr8YJ9SYFEOVT9Ij37JrUfk8Zp0np0O+n9/Cq91yKF7C2kuScoInIsMXS3IE4BvhjDep9xvDqF/EgMzcUcqim0Z3OfX4y11BLPSrxwX1IoUQ5WS6Xn3qT2Y9I4WVqTriu9m7Wkd1qkwL2WNN9ERUTOQQzdLYhTgC/GsN5nHK9OIT8SQzOFagrtUerzi7GeWuJZiRfvWwooT5UC1S/S825S+zFpnCytS9eR3sna0jstUvD+RZpjhiIi5yOG7hbEKcAXY1gn41jFOoX8SAzNFKopuDep/S/GWoq1xLMSL+G3FFaeJoWpNaTnXaS2Uxwaq/zPtDb9zfj8tza/2ygF8aXS+COKiJyfGLpjIJ8b4ItxrGKdQn4khmYK1nuE92aspVhLPCvxUn5LweUJUohaU3rWRWo71bHxaJ26zPhc95Leb5ZC+Vxp3B5FRK5DDN0UzKcaxynW4WUFYmimYL2XsY5iLe/MxMv5LQWYu0sBak3pOTep/RyHxqO16jzj89zT/F6DhY+/UTCfYx4vKCJyXWLwpnA+1ThOsQ4vKxCDM4XrvYx11NLOTrys31KQuasUntaWnnGT2s91ypi0du2XnuGe5neaLHz9ncL5HGnMThGR6xKDN4XzqcZxinV4WYEYnilc72GsoVhLOzvxsn7ZQgQFm7sYw9LW0jNuUvslzhmbnof+KT2zI6R3Wm18/UbBfI40ZqeIyHWJwZvC+RTjGMU6tKxEDM8UsLc2zt+spZ2deFm/bUGCQs6VjSFpD+nZNqn9UpeMT8/nidKzOVp6n8HI1+8UzudIY3aKiFyTHMAppA+Z+xfr0LISMTxTyN7SOHezlnUV4mX9MgYKCj5XNK5pD+m5Nqn9r64xDz23u0rrP4P0HoPEVzsK53OEMUVErkkO4BTUh8z967CyIjFAU9Deyjhvs5Z0JeJl/ZLCBQWhM0tr2Et6pk1qv5ZrzkfP9OrSOs8kvb/gEB9tKZjPMY9XFRG5HjmEU1DvM/etQ8rK5CBNgXsL87y1nKsRL+qXFDCaFI7OItW7t/Q8m9R+TWnOIrWdKj3nq0jrObP07oJDfLWncD5HGrNTROR65DBOgT2b+xTrcLIyOUxT4F7bPGct5YrES/olBQySgtMRUm1HSM8ySn3WluYtUttfpPdwpFTjlaR3FpzCVz8K53OEMUVErgcFcgruTWpfrMPJBuRQTcF7LfNcxVrGFYmX9EsKGWNSsFpbmvcs0nOMUp+tpPmL1FaPl95VcCrUF8P5VGm8ThGR60GhfI51GNkICtYUwJdK4xfr9FcmXtAvKWhov/QMm9R+a89Sh45L7yo4FxoDA/pUYTwRketBwXyKtbvsAIVsCuRLpLGLdeorEy/olxQ2lKXn16T2e3iWOnTY/J6SS6GxMKBPEcYSEbkmFNKHrN1kRyhoFymYj0njNOt0dyBe0G8pdOin9Nya1H4vqZ4itdVjpPcTXIOvcSmkj0njdIqIiGwDhe4mhfUs9YvWae5EvqQxeOho+HpJ/faUaopSH91PeifJtfgam4L6mDCOiIjIdlD4XsM6/N3Il/RLCiBPlp5RlvodIdWWpX66rfQewDWgcTGkj0njdIqIiGwLBfE51mGeQL6kX1IQeaL0bLLU72ipzij10fWlZz/iL9B4LymkT5HG6hQREdkeCuhD1m5PIl/QLymQPE16Llnqdyap5iK11XWl5z7BpdBYLymcT5XG6xQREZGTQBc1BpO7S8+hT+p/Rq9c+1WlZx4daDcXGuMlhfKp0nhBEREROQl0Ub+MweTu0vpJ6ntmr17/lczPmpzQfirU9yUF8ynSWKCIiIicCLqsPwLHXaV1k9T3Ct5lHWc3P+cs9SlC2zGoz1sK51OksZIiIiJyUujifknh4+rSOvuk/lfxTms5i/mZjkljNKl9Zx/U9iUF8ynSWOBRnKEGERGRUxMvS5QCyBWltQ1JY1xJWtOQNMbTpec0VRovS/06M9QGg/lUabzkEVAdUREREanQRYlSALmStCaS+l5VWt9UabwnSM9irjRun9S/2qDfMJhPkcZKbknfHHH+IUVERKRCF2WvFEKuIK2FpL5Xlta4VBr/ytIa15DmKg61ib+NScF8qjRecEtoviWKiIhI5eOSnBoocgg5o1R3n9T/LtJ6f5HmOLO0hrWleaPUZ6kUzsekcYJbQvP9ooiIiHR8XZJzQkcMKWeQahyTxnmy9IzGpHH2luraUqphijTWHCmgj0njBLeA5pnsX/6jv/sWfhcREZGOjwvyl8CR++4p1TMmjaN/Ss9sqjTeWtJ8e0o1zbWNk8eeIoX0Pql/cCtorknG8G6IFxER6efrgsxhY0nQoDG2kOaeKo2n49KzvLP0DLaS5h+SQnuU+gS3guYalcJ7E9qLiIg8mq/LkYJFlPpMkcbqk/qvKc2p86Vne3ap9rimMxhrm+rM8F7cAprnbU8Yf5lDe5Tad4qIiDyaj4uRAgWZ+11FWouuJz3zI6Tariqtb8gzBvihQB5/6zP3qYqIiDyWr4uRQsSQNMbZpLp1H+l9rCnNeSdHQuwSt4LmehnDOK0l/57N7ZMiIiKP4+tCpBAxRxrzKKk+1StIQbZJ3/pEt4Tmm1w/tWtS+6SIiMjj+LgMKUwsNY+9p1SP6lWkIEvStz/iVtBck2umdlHqkxQREXkUX5chBYq1pPmmSuOp3k0KsFOlfTPgWtDYWF9zTttm7gOKiIg8hq+LkEKFqu4jhdcl0t4ecCk01kuqqTm3fZH6gCIiIo+BLkIMF6q6nRRcf5X29oBzoTFeUi3RtfqAIiIit4cuwC8pbKjqulJoXUva1wNOhfq+pBqia/aBv4uIiNwOuvBGpcChquuZA+tW0v4ecAhqj3Nm1+4HfxcREbkFdMnNkkKHqq5jDqtbS3t8QOKrHc3T55L+Q33gNxERkUtDl9ss4yVK4UNVfzPusb2lPd9j5Ot3GrvPpf37+uS/V0VERC4LXWyjxktzSAojqjpd2ldHSOdAjwX6O47b59K+fX3i36siIiKXhC61ScaLcYoUTFR1mrSnjpLOg6nSeH0u7TvUL//WKSIicinoMhs1XoZLpYCiqiztoTNI58OYNE6fW/XNv3WKiMhNuduhT+sZNF6Aa0qBRVX/lPbNmaTzok/qP+Qv/Yf6xd+qIiJyQ+jAzxbyf5+VWOeo+fLbQgouqsr75YzS2ZGlfkP+0rfY1z/+PSgiIjeDDvu5ngmq78t44e0phRjVJ0r74+zSWRKlPkOO9aPn1hyaN/5WFRGRG0IH/i8eCdXzZb7w9pYuZNUnSfviKu51ptBzy1K/ItQoIiI35OOwH7gE5ro3VMOH8ZI7WrqQVZ8i7YkruMe5Qs9ryNyfauwUEZEb8nHY5wth4FKY4l7Q3G9pTUdLl7Hq3aW9cBXpbClS26XSMxszjwE1iojIDaED/+tS6LkYBn9LbgnN9zLWf0bpQla9q7QHruRW5ws9q7nG8XKdnSIicjPosH8ZL4ToWLv8e3AraK6XubYzSpex6h2l7/9Krn3G0DP6xTYu1dkpIiI3gg76t/GyiU5tS+2qa0LjYz1nlC5i1TtK3//VXPOsoWf0q21sqFNERG4GHfYfxksnOrUttQv+Co2JdZxVuohV7yrtgau41llDz2Ut2xxQq4iI3Aw67D+Ml0/017bBpdBYOP9ZpUtY9c7SPriCa5w19DzWtsxDtXaKiMjN+Djo6QKIl1A2t13SvjoXGgPnPKt0Aas+QdoPZ/fX84aewxaWuaBWERG5IR+Hfc8F8HEZZee0Leb2walQX5zrzNIFrPokaV+c0V/OG1r3llKtnSIickM+Dvt28fT9ncxtx9oXqU9wCGqPc5xZunxVnybtjTO69LyhNW9trrVTRERuyseB3y6f/Pf4Gzm1XTT2AYmvdjTu2aWLV/XJ0j45i0vOHVrjHlKtnSIiclM+Dvx4EQ39lp3ajox9k5Gv32msK0iXr+rTpb1ytHPPHVrXnkK9IiJyYz4O/Xgh5d/y79kpbfqMcyQL9Hcc5+zSxauqf0h75ijpzClS2yKtZ0+p1k4REbkxH4d+vpjGfo9Obddn7D8m9T+7dPGq6qe0d45wzrlD69hbqFdERB7A++DPl1P8jX7PTm03ZJyvT+p3duniVVWW9tBeTj1zqO4jpHo7RUTkAXwc/vGSyr/l38mp7YaM82Wp/dmli1dVh6W9tIdTzhyq9yhzvVUREXkAH4d/vqzGfs/OaTtkHCdKbc8sXbqqOl3aV1s55cyhGo+S6u0UEZGH8HEB5AurOPZ7dm77IeNYa425l3Tpqup8aX+t7ZSzhmo7Uqq5U0REHsLHBZAvreKUNtm57ceM46015pbShauqy6V9tpb5fKEzhmo6WqhbREQexsdFkC+v4tjv5Nz2Y8Ya1hx3C+nCVdXfpL22hmNnC9VyBnPdnSIi8jA+LoJ8gRWHfqfLpZnb/mKsoa+Wo6VnoKrrSfvuF8fOFarhDFLdnSIi8jA+LoJ4gUXj73SpzDGPPcVYY5TaHiGtU1XXl/bfUofOE5r7DOaaqyIi8kA+LoN4iUVjG7pY1pDmjcYastR+T2k9qrqNtAfnOnSO0JxnEeoWEZGH8nEhxEsuG9vR5bKmNH8z1hGltntI9avqttJenOrQ+UFznUmoXUREHsrHhRAvumy8QPLFsqVUS6w5Sm23lOpV1X2kPTnm0LlBc5xJqr1TREQeytelEC+8KF0qe5rrodqLud1WUo2quq+0N/scOi9o7LMJ9YuIyMP5uBjipXe2Cy7XlWuP5rZrSrWp6jHSHiX7zgga82zm2qsiIvJwPi6GeOmd8ZLLteX6m7ndWlJNqnqstFejfWcEjXVGoX4REZGvy+HrAqRL5WhzjVPW8atUh6qeQ9qzxb6zgcY4o1R/p4iIyIuPCyJfgnSxnMVYZ14HreUXaX5VPY95zw6dCdT/bFL9nSIiIm8+Lol4CV7lsmu15rXQepZIc6rq+Wx7ls6C4pX2M9QvIiLywddl0S7CK114fRd3XMsSaS5VPadt3/adBdTnjFL9nSIiIl98XBbtIrzSpVfsu7yLcU1zpHlU9bz27X9qe1ZhDSIiIsjXpXHVEFtqHlrPHGl8VT2vtPeLV9rPVH+niIhILx+XxpWDbKk7ryeuaYo0rqqeW9r31O6sUv2dIiIig3xcHHcIs3lNcV1D0liqem5pv1O7M0tr6BQRERnk6/K4Q6DtW9eQNI6qnlfa59TuzNIaOkVERCbxdYnQZXMlSyindeXg3qQxVPXc5v1Nbc5uXkNVRERkMh+XCF02VzOvqWmAV72+cU/T71cwriEpIiIyma+LhC6dq0nrMsCrXt+2n+m3KxjPpKSIiMhsPi4TuniuaF5X0QCvel3jXqbfz26sPykiIrKIr0uFLqArmtdliFe9rm0f029nN55DoIiIyGI+LhW6hK5oXted1qb6JK++f+MZBIqIiCzm62Khi+iK3nltqk/xyns3nj2giIjIz3xcLnQZXdW8trutT/XuXnnP5rMnKCIisgpflwxdSFf1zmtTvbtX3bP53AmKiIisytdlQxfTFb3z2lT1fNKZUxUREVmdrwuHLqerevf1qeo5pLMmKCIisglflw5dUlf1zmtT1ePNZ0xSRERkM74uHrqoruzd16eqx5nPl6CIiMim0OWDl9WVvfPaVPU449kSFBER2QW6hPDCurJ3Xpuq7m88U5IiIiK7QRcRXlxX9a7rUtX9jecJKCIisht0EeHldWXvvDZV3cd4jiRFRER2hy6kl3SJXdm7rktVtzeejaCIiMgh0KX0ki6zK3vHNanqtuZzMSkiInIodDnhhXZl77gmVd3OfCaCIiIih0MXFF5sV/Vu61HV7cxnYVJEROQ00EWFl5uq6t2l8zAoIiJyGuiiekkXnKrqXaVzMCgiInI66MJ6SRedqurdpPMvKCIiclro4sLLTlX1TtLZFxQRETk9dIHhpaeqegfpzAuKiIhcArrEXtLlp6p6ZemsC4qIiFwKusxe0iWoqnpF6YxLioiIXA660PAiVFW9onTGBUVERC4JXWov6TJUVb2SdLYFRURELg1dbi/pUlRVPbt0niVFRERuAV1yL+mCVFU9q3SOBUVERG4FXXZv6aJUVT2bdH4lRUREbgddeG/pwlRVPYt0biVFRERuC118L+nSVFUtHn1G5PMKFBERuT10Ab6ky1NVn+3R50M8o3oUERF5BHQJvqVLVFWf61FnQzyXBhQREXkUdBm+pQtVVZ/lP/jX/vrlEedCPI8GFBEReSR0Kb6li1VVn2EL8EeE+HgODSgiIvJo6HJ8Sxesqt7fI0J8PHsGFBERkQ66JD+ky1ZV72kM73uG+HjmjCgiIiIVuii/pItXVe/lUIjf6hyI448oIiIiCbowv6QL+Ehj0KDfVXW6cT9FtzoD4rgjioiIyAB0eX5IF/FRUtigdqo6LO2l6BbnQB5zQBEREZkAXaJf0qW8p6UGChtFaq+qLO2h7Jr7P481ooiIiMyALtMv6YLey1YDBY4i9VHVT2nvkHHfN2m8MWmcAUVERGQBdKmidFlvaZybAkeT+qrq9PAejfuuSOP2mfuOKCIiIj9CF+yXdGlvZZ6bwkaUxlB9qrRHppr3XpHmaFL7CYqIiMiK0GX7JV3kaxvno6DRJ42l+hRpTywx7r8NFBERkZWhC7dXChFrGeehkDEmjal6V2kP/GLcfysqIiIiG0KXb68UKH41jk8BY440vm5rfH9bSfM+Tfre15Ke+Y+KiIjITtBF3CuFjCXmcSlgLJHm0nnmd3MGqc47S9/2VtLzXqCIiIgcBF3MKIWOOebxKFisIc39JPNzvqO07qtK3/Ae0nOdoYiIiJwAuqR7pSAyJI1BoWJLqa4rS89UrxHu6fvcQ3pePygiIiIngi7rzaSgsYcUrM4oPTOdJz3XvaVvcC/pmfygiIiIXAC6xDeRwsfeUvjaQ3oeur30LtaUvrE9pLWuoIiIiFwQutQ3k4LJEVIwWyqt86SeEapzc+k99knfz5ZSvSsoIiIiN4Yu/12kMLOXFNyyVPMJvRO0Pp2viIiIPAwKBGSEftf1fBr0DHRcERERkZ+ggKGs9EPPS1kRERGR1aHQ8TRlOfQ89Q9FREREdoGCyF2VfaBnf2dFREREDoUCyhWVc0Hv6MyKiIiI3AIKOkcrIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIlfnr/7q/w/b6JiGJmCOFwAAAABJRU5ErkJgggAAAIC/AAAAAAAAgD8AAIA/AAAAAAAAgD8AAIC/AAAAAAAAgL8AAIA/AAAAAAAAgL8AAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAAIAAAAAAAACAPwAAgD8AAIA/AAAAAAAAAAAAAIA/AAAAAAAAAQADAAAAAwACAA==" + } + ] +} diff --git a/src/examples/assets/modules/monkey_g.obj b/src/examples/assets/modules/monkey_g.obj new file mode 100644 index 0000000..c795333 --- /dev/null +++ b/src/examples/assets/modules/monkey_g.obj @@ -0,0 +1,2068 @@ +# Blender v2.93.5 OBJ File: '' +# www.blender.org +mtllib untitled.mtl +o Suzanne +v 0.509678 0.238574 0.510363 +v -0.365322 0.238574 0.510363 +v 0.572178 0.168261 0.432238 +v -0.427822 0.168261 0.432238 +v 0.619053 0.129199 0.322863 +v -0.474697 0.129199 0.322863 +v 0.423740 0.051074 0.361925 +v -0.279385 0.051074 0.361925 +v 0.423740 0.105761 0.463488 +v -0.279385 0.105761 0.463488 +v 0.423740 0.207324 0.525988 +v -0.279385 0.207324 0.525988 +v 0.345615 0.238574 0.541613 +v -0.201260 0.238574 0.541613 +v 0.275303 0.168261 0.486925 +v -0.130947 0.168261 0.486925 +v 0.228428 0.129199 0.393175 +v -0.084072 0.129199 0.393175 +v 0.150303 0.316699 0.400988 +v -0.005947 0.316699 0.400988 +v 0.212803 0.316699 0.486925 +v -0.068447 0.316699 0.486925 +v 0.314365 0.316699 0.541613 +v -0.170010 0.316699 0.541613 +v 0.345615 0.402636 0.541613 +v -0.201260 0.402636 0.541613 +v 0.275303 0.465136 0.486925 +v -0.130947 0.465136 0.486925 +v 0.228428 0.512011 0.393175 +v -0.084072 0.512011 0.393175 +v 0.423740 0.590136 0.361925 +v -0.279385 0.590136 0.361925 +v 0.423740 0.527636 0.463488 +v -0.279385 0.527636 0.463488 +v 0.423740 0.433886 0.525988 +v -0.279385 0.433886 0.525988 +v 0.509678 0.402636 0.510363 +v -0.365322 0.402636 0.510363 +v 0.572178 0.465136 0.432238 +v -0.427822 0.465136 0.432238 +v 0.619053 0.512011 0.322863 +v -0.474697 0.512011 0.322863 +v 0.697178 0.316699 0.307238 +v -0.552822 0.316699 0.307238 +v 0.634678 0.316699 0.416613 +v -0.490322 0.316699 0.416613 +v 0.540928 0.316699 0.502550 +v -0.396572 0.316699 0.502550 +v 0.548740 0.316699 0.518175 +v -0.404385 0.316699 0.518175 +v 0.517490 0.410449 0.525988 +v -0.373135 0.410449 0.525988 +v 0.423740 0.449511 0.549425 +v -0.279385 0.449511 0.549425 +v 0.337803 0.410449 0.565050 +v -0.193447 0.410449 0.565050 +v 0.298740 0.316699 0.565050 +v -0.154385 0.316699 0.565050 +v 0.337803 0.230761 0.565050 +v -0.193447 0.230761 0.565050 +v 0.423740 0.316699 0.572863 +v -0.279385 0.316699 0.572863 +v 0.423740 0.191699 0.549425 +v -0.279385 0.191699 0.549425 +v 0.517490 0.230761 0.525988 +v -0.373135 0.230761 0.525988 +v 0.072178 0.504199 0.486925 +v 0.072178 0.426074 0.565050 +v 0.072178 -0.605176 0.479113 +v 0.072178 -0.245801 0.525988 +v 0.072178 -0.112989 0.541613 +v 0.072178 -0.698926 0.463488 +v 0.072178 0.480761 0.346300 +v 0.072178 0.644824 0.315050 +v 0.072178 0.972949 -0.802137 +v 0.072178 0.637011 -1.106825 +v 0.072178 0.144824 -1.083387 +v 0.072178 -0.308301 -0.606825 +v 0.275303 -0.112989 0.307238 +v -0.130947 -0.112989 0.307238 +v 0.384678 -0.362989 0.315050 +v -0.240322 -0.362989 0.315050 +v 0.423740 -0.620801 0.315050 +v -0.279385 -0.620801 0.315050 +v 0.439365 -0.816114 0.275988 +v -0.295010 -0.816114 0.275988 +v 0.400303 -0.870801 0.268175 +v -0.255947 -0.870801 0.268175 +v 0.251865 -0.894239 0.299425 +v -0.107510 -0.894239 0.299425 +v 0.072178 -0.909864 0.322863 +v 0.509678 -0.066114 0.275988 +v -0.365322 -0.066114 0.275988 +v 0.704990 0.035449 0.283800 +v -0.560635 0.035449 0.283800 +v 0.900303 0.222949 0.190050 +v -0.755947 0.222949 0.190050 +v 0.931553 0.504199 0.338488 +v -0.787197 0.504199 0.338488 +v 0.783115 0.558886 0.369738 +v -0.638760 0.558886 0.369738 +v 0.564365 0.676074 0.432238 +v -0.420010 0.676074 0.432238 +v 0.392490 0.832324 0.479113 +v -0.248135 0.832324 0.479113 +v 0.228428 0.793261 0.502550 +v -0.084072 0.793261 0.502550 +v 0.134678 0.566699 0.494738 +v 0.009678 0.566699 0.494738 +v 0.236240 0.488574 0.518175 +v -0.091885 0.488574 0.518175 +v 0.197178 0.379199 0.510363 +v -0.052822 0.379199 0.510363 +v 0.275303 0.168261 0.486925 +v -0.130947 0.168261 0.486925 +v 0.447178 0.090136 0.447863 +v -0.302822 0.090136 0.447863 +v 0.564365 0.137011 0.416613 +v -0.420010 0.137011 0.416613 +v 0.697178 0.262011 0.393175 +v -0.552822 0.262011 0.393175 +v 0.712803 0.371386 0.393175 +v -0.568447 0.371386 0.393175 +v 0.673740 0.449511 0.408800 +v -0.529385 0.449511 0.408800 +v 0.501865 0.512011 0.463488 +v -0.357510 0.512011 0.463488 +v 0.322178 0.543261 0.502550 +v -0.177822 0.543261 0.502550 +v 0.072178 -0.691114 0.479113 +v 0.181553 -0.644239 0.479113 +v -0.037197 -0.644239 0.479113 +v 0.189365 -0.761426 0.455675 +v -0.045010 -0.761426 0.455675 +v 0.134678 -0.808301 0.440050 +v 0.009678 -0.808301 0.440050 +v 0.072178 -0.816114 0.432238 +v 0.072178 -0.120801 0.494738 +v 0.072178 -0.066114 0.486925 +v 0.173740 -0.073926 0.486925 +v -0.029385 -0.073926 0.486925 +v 0.197178 -0.152051 0.494738 +v -0.052822 -0.152051 0.494738 +v 0.158115 -0.214551 0.486925 +v -0.013760 -0.214551 0.486925 +v 0.470615 0.027636 0.416613 +v -0.326260 0.027636 0.416613 +v 0.689365 0.129199 0.369738 +v -0.545010 0.129199 0.369738 +v 0.798740 0.277636 0.346300 +v -0.654385 0.277636 0.346300 +v 0.814365 0.449511 0.400988 +v -0.670010 0.449511 0.400988 +v 0.759678 0.488574 0.471300 +v -0.615322 0.488574 0.471300 +v 0.509678 0.621386 0.541613 +v -0.365322 0.621386 0.541613 +v 0.384678 0.715136 0.580675 +v -0.240322 0.715136 0.580675 +v 0.275303 0.691699 0.596300 +v -0.130947 0.691699 0.596300 +v 0.173740 0.504199 0.588488 +v -0.029385 0.504199 0.588488 +v 0.197178 -0.027051 0.557238 +v -0.052822 -0.027051 0.557238 +v 0.283115 -0.370801 0.455675 +v -0.138760 -0.370801 0.455675 +v 0.322178 -0.628614 0.432238 +v -0.177822 -0.628614 0.432238 +v 0.337803 -0.745801 0.408800 +v -0.193447 -0.745801 0.408800 +v 0.306553 -0.839551 0.377550 +v -0.162197 -0.839551 0.377550 +v 0.236240 -0.855176 0.377550 +v -0.091885 -0.855176 0.377550 +v 0.072178 -0.870801 0.385363 +v 0.072178 0.121386 0.471300 +v 0.072178 0.285449 0.510363 +v 0.400303 0.551074 0.486925 +v -0.255947 0.551074 0.486925 +v 0.236240 0.215136 0.494738 +v -0.091885 0.215136 0.494738 +v 0.204990 0.285449 0.502550 +v -0.060635 0.285449 0.502550 +v 0.189365 -0.612989 0.479113 +v -0.045010 -0.612989 0.479113 +v 0.150303 -0.370801 0.494738 +v -0.005947 -0.370801 0.494738 +v 0.072178 -0.370801 0.494738 +v 0.072178 -0.253614 0.486925 +v 0.165928 -0.198926 0.525988 +v -0.021572 -0.198926 0.525988 +v 0.204990 -0.152051 0.541613 +v -0.060635 -0.152051 0.541613 +v 0.181553 -0.058301 0.525988 +v -0.037197 -0.058301 0.525988 +v 0.111240 -0.050489 0.525988 +v 0.033115 -0.050489 0.525988 +v 0.072178 -0.128614 0.572863 +v 0.119053 -0.073926 0.557238 +v 0.025303 -0.073926 0.557238 +v 0.165928 -0.081739 0.557238 +v -0.021572 -0.081739 0.557238 +v 0.181553 -0.152051 0.572863 +v -0.037197 -0.152051 0.572863 +v 0.150303 -0.175489 0.549425 +v -0.005947 -0.175489 0.549425 +v 0.072178 -0.214551 0.549425 +v 0.329990 -0.237989 0.299425 +v -0.185635 -0.237989 0.299425 +v 0.236240 -0.167676 0.455675 +v -0.091885 -0.167676 0.455675 +v 0.251865 -0.237989 0.455675 +v -0.107510 -0.237989 0.455675 +v 0.306553 -0.175489 0.299425 +v -0.162197 -0.175489 0.299425 +v 0.072178 -0.800489 0.432238 +v 0.119053 -0.792676 0.432238 +v 0.025303 -0.792676 0.432238 +v 0.165928 -0.745801 0.455675 +v -0.021572 -0.745801 0.455675 +v 0.165928 -0.667676 0.471300 +v -0.021572 -0.667676 0.471300 +v 0.072178 -0.706739 0.400988 +v 0.165928 -0.675489 0.408800 +v -0.021572 -0.675489 0.408800 +v 0.165928 -0.737989 0.385363 +v -0.021572 -0.737989 0.385363 +v 0.119053 -0.777051 0.377550 +v 0.025303 -0.777051 0.377550 +v 0.072178 -0.784864 0.377550 +v 0.244053 0.293261 0.525988 +v -0.099697 0.293261 0.525988 +v 0.259678 0.230761 0.518175 +v -0.115322 0.230761 0.518175 +v 0.408115 0.504199 0.502550 +v -0.263760 0.504199 0.502550 +v 0.345615 0.496386 0.518175 +v -0.201260 0.496386 0.518175 +v 0.494053 0.472949 0.518175 +v -0.349697 0.472949 0.518175 +v 0.634678 0.426074 0.440050 +v -0.490322 0.426074 0.440050 +v 0.658115 0.363574 0.432238 +v -0.513760 0.363574 0.432238 +v 0.650303 0.269824 0.424425 +v -0.505947 0.269824 0.424425 +v 0.548740 0.176074 0.463488 +v -0.404385 0.176074 0.463488 +v 0.447178 0.137011 0.486925 +v -0.302822 0.137011 0.486925 +v 0.298740 0.183886 0.525988 +v -0.154385 0.183886 0.525988 +v 0.251865 0.371386 0.525988 +v -0.107510 0.371386 0.525988 +v 0.283115 0.449511 0.525988 +v -0.138760 0.449511 0.525988 +v 0.306553 0.433886 0.502550 +v -0.162197 0.433886 0.502550 +v 0.267490 0.371386 0.502550 +v -0.123135 0.371386 0.502550 +v 0.314365 0.199511 0.502550 +v -0.170010 0.199511 0.502550 +v 0.447178 0.160449 0.471300 +v -0.302822 0.160449 0.471300 +v 0.533115 0.191699 0.447863 +v -0.388760 0.191699 0.447863 +v 0.619053 0.285449 0.416613 +v -0.474697 0.285449 0.416613 +v 0.626865 0.355761 0.416613 +v -0.482510 0.355761 0.416613 +v 0.603428 0.410449 0.424425 +v -0.459072 0.410449 0.424425 +v 0.486240 0.465136 0.494738 +v -0.341885 0.465136 0.494738 +v 0.353428 0.472949 0.510363 +v -0.209072 0.472949 0.510363 +v 0.408115 0.480761 0.494738 +v -0.263760 0.480761 0.494738 +v 0.275303 0.246386 0.494738 +v -0.130947 0.246386 0.494738 +v 0.267490 0.301074 0.494738 +v -0.123135 0.301074 0.494738 +v 0.181553 0.535449 0.354113 +v -0.037197 0.535449 0.354113 +v 0.267490 0.738574 0.361925 +v -0.123135 0.738574 0.361925 +v 0.408115 0.762011 0.338488 +v -0.263760 0.762011 0.338488 +v 0.556553 0.629199 0.299425 +v -0.412197 0.629199 0.299425 +v 0.751865 0.527636 0.236925 +v -0.607510 0.527636 0.236925 +v 0.869053 0.480761 0.205675 +v -0.724697 0.480761 0.205675 +v 0.845615 0.238574 0.119738 +v -0.701260 0.238574 0.119738 +v 0.673740 0.074511 0.158800 +v -0.529385 0.074511 0.158800 +v 0.509678 -0.019239 0.213488 +v -0.365322 -0.019239 0.213488 +v 0.072178 0.972949 0.033800 +v 0.072178 1.058886 -0.333387 +v 0.072178 -0.120801 -0.927137 +v 0.072178 -0.386426 -0.067762 +v 0.072178 -0.902051 0.205675 +v 0.072178 -0.730176 0.088488 +v 0.072178 -0.495801 0.065050 +v 0.072178 -0.409864 0.025988 +v 0.923740 0.308886 -0.200575 +v -0.779385 0.308886 -0.200575 +v 0.931553 0.394824 -0.302137 +v -0.787197 0.394824 -0.302137 +v 0.845615 0.340136 -0.692762 +v -0.701260 0.340136 -0.692762 +v 0.533115 0.512011 -0.958387 +v -0.388760 0.512011 -0.958387 +v 0.806553 0.027636 -0.184950 +v -0.662197 0.027636 -0.184950 +v 0.665928 -0.050489 -0.419325 +v -0.521572 -0.050489 -0.419325 +v 0.712803 0.066699 -0.684950 +v -0.568447 0.066699 -0.684950 +v 0.408115 0.129199 -0.919325 +v -0.263760 0.129199 -0.919325 +v 0.306553 -0.277051 0.150988 +v -0.162197 -0.277051 0.150988 +v 0.251865 -0.339551 0.002550 +v -0.107510 -0.339551 0.002550 +v 0.361240 -0.636426 0.127550 +v -0.216885 -0.636426 0.127550 +v 0.322178 -0.425489 0.135363 +v -0.177822 -0.425489 0.135363 +v 0.400303 -0.839551 0.143175 +v -0.255947 -0.839551 0.143175 +v 0.212803 -0.683301 0.111925 +v -0.068447 -0.683301 0.111925 +v 0.197178 -0.464551 0.104113 +v -0.052822 -0.464551 0.104113 +v 0.236240 -0.870801 0.182238 +v -0.091885 -0.870801 0.182238 +v 0.290928 -0.206739 0.174425 +v -0.146572 -0.206739 0.174425 +v 0.283115 -0.152051 0.213488 +v -0.138760 -0.152051 0.213488 +v 0.275303 -0.097364 0.244738 +v -0.130947 -0.097364 0.244738 +v 0.283115 -0.316114 -0.091200 +v -0.138760 -0.316114 -0.091200 +v 0.369053 -0.237989 -0.520887 +v -0.224697 -0.237989 -0.520887 +v 0.415928 -0.073926 -0.794325 +v -0.271572 -0.073926 -0.794325 +v 0.525303 0.941699 -0.638075 +v -0.380947 0.941699 -0.638075 +v 0.525303 1.004199 -0.325575 +v -0.380947 1.004199 -0.325575 +v 0.525303 0.926074 -0.020887 +v -0.380947 0.926074 -0.020887 +v 0.533115 0.597949 0.174425 +v -0.388760 0.597949 0.174425 +v 0.798740 0.480761 0.080675 +v -0.654385 0.480761 0.080675 +v 0.704990 0.527636 0.025988 +v -0.560635 0.527636 0.025988 +v 0.712803 0.777636 -0.200575 +v -0.568447 0.777636 -0.200575 +v 0.869053 0.637011 -0.130262 +v -0.724697 0.637011 -0.130262 +v 0.869053 0.691699 -0.372450 +v -0.724697 0.691699 -0.372450 +v 0.712803 0.824511 -0.450575 +v -0.568447 0.824511 -0.450575 +v 0.712803 0.754199 -0.700575 +v -0.568447 0.754199 -0.700575 +v 0.869053 0.613574 -0.614637 +v -0.724697 0.613574 -0.614637 +v 0.689365 0.402636 -0.841200 +v -0.545010 0.402636 -0.841200 +v 0.556553 0.097949 -0.802137 +v -0.412197 0.097949 -0.802137 +v 0.892490 0.402636 -0.458387 +v -0.748135 0.402636 -0.458387 +v 0.478428 -0.097364 -0.106825 +v -0.334072 -0.097364 -0.106825 +v 0.501865 -0.120801 -0.466200 +v -0.357510 -0.120801 -0.466200 +v 0.962803 0.480761 -0.489637 +v -0.818447 0.480761 -0.489637 +v 0.845615 -0.066114 -0.380262 +v -0.701260 -0.066114 -0.380262 +v 1.111240 -0.027051 -0.583387 +v -0.966885 -0.027051 -0.583387 +v 1.353428 0.129199 -0.684950 +v -1.209072 0.129199 -0.684950 +v 1.423740 0.394824 -0.677137 +v -1.279385 0.394824 -0.677137 +v 1.306553 0.582324 -0.677137 +v -1.162197 0.582324 -0.677137 +v 1.095615 0.551074 -0.567762 +v -0.951260 0.551074 -0.567762 +v 1.087803 0.488574 -0.544325 +v -0.943447 0.488574 -0.544325 +v 1.259678 0.512011 -0.645887 +v -1.115322 0.512011 -0.645887 +v 1.337803 0.363574 -0.661512 +v -1.193447 0.363574 -0.661512 +v 1.283115 0.152636 -0.661512 +v -1.138760 0.152636 -0.661512 +v 1.103428 0.035449 -0.559950 +v -0.959072 0.035449 -0.559950 +v 0.900303 0.004199 -0.388075 +v -0.755947 0.004199 -0.388075 +v 0.994053 0.433886 -0.474012 +v -0.849697 0.433886 -0.474012 +v 1.017490 0.379199 -0.544325 +v -0.873135 0.379199 -0.544325 +v 0.954990 0.051074 -0.466200 +v -0.810635 0.051074 -0.466200 +v 1.111240 0.074511 -0.622450 +v -0.966885 0.074511 -0.622450 +v 1.259678 0.168261 -0.700575 +v -1.115322 0.168261 -0.700575 +v 1.306553 0.324511 -0.700575 +v -1.162197 0.324511 -0.700575 +v 1.244053 0.433886 -0.692762 +v -1.099697 0.433886 -0.692762 +v 1.095615 0.418261 -0.614637 +v -0.951260 0.418261 -0.614637 +v 0.915928 0.363574 -0.466200 +v -0.771572 0.363574 -0.466200 +v 0.908115 0.246386 -0.528700 +v -0.763760 0.246386 -0.528700 +v 0.829990 0.168261 -0.528700 +v -0.685635 0.168261 -0.528700 +v 0.892490 0.160449 -0.528700 +v -0.748135 0.160449 -0.528700 +v 0.915928 0.090136 -0.528700 +v -0.771572 0.090136 -0.528700 +v 0.884678 0.058886 -0.528700 +v -0.740322 0.058886 -0.528700 +v 0.798740 0.074511 -0.325575 +v -0.654385 0.074511 -0.325575 +v 0.790928 0.051074 -0.427137 +v -0.646572 0.051074 -0.427137 +v 0.790928 0.113574 -0.442762 +v -0.646572 0.113574 -0.442762 +v 0.869053 0.277636 -0.466200 +v -0.724697 0.277636 -0.466200 +v 0.962803 0.316699 -0.520887 +v -0.818447 0.316699 -0.520887 +v 0.962803 0.308886 -0.575575 +v -0.818447 0.308886 -0.575575 +v 0.884678 0.058886 -0.575575 +v -0.740322 0.058886 -0.575575 +v 0.923740 0.090136 -0.575575 +v -0.779385 0.090136 -0.575575 +v 0.900303 0.152636 -0.575575 +v -0.755947 0.152636 -0.575575 +v 0.837803 0.168261 -0.575575 +v -0.693447 0.168261 -0.575575 +v 0.915928 0.246386 -0.575575 +v -0.771572 0.246386 -0.575575 +v 1.111240 0.402636 -0.669325 +v -0.966885 0.402636 -0.669325 +v 1.259678 0.418261 -0.739637 +v -1.115322 0.418261 -0.739637 +v 1.329990 0.316699 -0.747450 +v -1.185635 0.316699 -0.747450 +v 1.283115 0.160449 -0.739637 +v -1.138760 0.160449 -0.739637 +v 1.119053 0.074511 -0.677137 +v -0.974697 0.074511 -0.677137 +v 0.954990 0.058886 -0.520887 +v -0.810635 0.058886 -0.520887 +v 1.025303 0.363574 -0.599012 +v -0.880947 0.363574 -0.599012 +v 0.962803 0.183886 -0.583387 +v -0.818447 0.183886 -0.583387 +v 1.009678 0.137011 -0.591200 +v -0.865322 0.137011 -0.591200 +v 1.072178 0.199511 -0.622450 +v -0.927822 0.199511 -0.622450 +v 1.033115 0.246386 -0.606825 +v -0.888760 0.246386 -0.606825 +v 1.087803 0.308886 -0.630262 +v -0.943447 0.308886 -0.630262 +v 1.126865 0.262011 -0.638075 +v -0.982510 0.262011 -0.638075 +v 1.181553 0.285449 -0.645887 +v -1.037197 0.285449 -0.645887 +v 1.158115 0.347949 -0.645887 +v -1.013760 0.347949 -0.645887 +v 1.095615 0.512011 -0.739637 +v -0.951260 0.512011 -0.739637 +v 1.322178 0.543261 -0.802137 +v -1.177822 0.543261 -0.802137 +v 1.439365 0.371386 -0.755262 +v -1.295010 0.371386 -0.755262 +v 1.384678 0.129199 -0.786512 +v -1.240322 0.129199 -0.786512 +v 1.111240 -0.011426 -0.747450 +v -0.966885 -0.011426 -0.747450 +v 0.861240 -0.050489 -0.583387 +v -0.716885 -0.050489 -0.583387 +v 0.931553 0.457324 -0.638075 +v -0.787197 0.457324 -0.638075 +vt 0.890955 0.590063 +vt 0.870622 0.589649 +vt 0.860081 0.560115 +vt 0.904571 0.559404 +vt 0.856226 0.850547 +vt 0.868067 0.821510 +vt 0.888398 0.821999 +vt 0.900640 0.853232 +vt 0.853018 0.521562 +vt 0.920166 0.524546 +vt 0.847458 0.888748 +vt 0.914672 0.888748 +vt 0.828900 0.590771 +vt 0.798481 0.569535 +vt 0.795104 0.838402 +vt 0.826436 0.818537 +vt 0.854402 0.604754 +vt 0.852534 0.805700 +vt 0.854107 0.625459 +vt 0.828171 0.633354 +vt 0.827598 0.775964 +vt 0.853157 0.785002 +vt 0.791018 0.645443 +vt 0.791018 0.762238 +vt 0.855181 0.668527 +vt 0.842358 0.702491 +vt 0.844839 0.707525 +vt 0.856142 0.742025 +vt 0.867508 0.642291 +vt 0.867293 0.768782 +vt 0.890474 0.641909 +vt 0.900375 0.666964 +vt 0.901223 0.745592 +vt 0.890219 0.770183 +vt 0.918898 0.699697 +vt 0.921180 0.713713 +vt 0.931889 0.636832 +vt 0.968392 0.645333 +vt 0.968213 0.770220 +vt 0.931368 0.777093 +vt 0.905882 0.627902 +vt 0.904990 0.784860 +vt 0.906232 0.605742 +vt 0.933717 0.593037 +vt 0.931250 0.820926 +vt 0.904357 0.807013 +vt 0.968392 0.573812 +vt 0.965038 0.841671 +vt 0.902359 0.607909 +vt 0.889591 0.593275 +vt 0.900583 0.804677 +vt 0.887178 0.818729 +vt 0.899781 0.626257 +vt 0.898822 0.786233 +vt 0.887842 0.636527 +vt 0.887351 0.775442 +vt 0.870908 0.635245 +vt 0.870376 0.775972 +vt 0.859881 0.623942 +vt 0.858859 0.786774 +vt 0.859664 0.608186 +vt 0.857942 0.802505 +vt 0.871664 0.593961 +vt 0.869299 0.817249 +vt 0.879400 0.616512 +vt 0.878029 0.795063 +vt 0.540260 0.053805 +vt 0.536419 0.062072 +vt 0.518925 0.059681 +vt 0.518916 0.050294 +vt 0.501452 0.062043 +vt 0.497626 0.053770 +vt 0.551930 0.058338 +vt 0.542788 0.064089 +vt 0.495083 0.064047 +vt 0.485955 0.058273 +vt 0.555073 0.061900 +vt 0.546290 0.072669 +vt 0.491565 0.072625 +vt 0.482805 0.061829 +vt 0.563812 0.076586 +vt 0.548333 0.084893 +vt 0.489507 0.084858 +vt 0.474014 0.076511 +vt 0.583135 0.108495 +vt 0.555621 0.121749 +vt 0.482177 0.121781 +vt 0.454527 0.108481 +vt 0.605512 0.165134 +vt 0.647395 0.200502 +vt 0.621513 0.227818 +vt 0.553118 0.209599 +vt 0.416514 0.229490 +vt 0.389677 0.201890 +vt 0.432024 0.165644 +vt 0.485339 0.210053 +vt 0.676379 0.233241 +vt 0.664761 0.253225 +vt 0.372747 0.256357 +vt 0.360308 0.235899 +vt 0.715342 0.265392 +vt 0.683908 0.279995 +vt 0.353696 0.284606 +vt 0.320452 0.270303 +vt 0.707254 0.310054 +vt 0.687515 0.311539 +vt 0.351187 0.317440 +vt 0.330721 0.316853 +vt 0.697446 0.332673 +vt 0.676824 0.323937 +vt 0.362723 0.329722 +vt 0.341964 0.339667 +vt 0.662817 0.372521 +vt 0.639050 0.357330 +vt 0.402772 0.362131 +vt 0.379297 0.378686 +vt 0.626842 0.395792 +vt 0.618316 0.375151 +vt 0.424583 0.379267 +vt 0.416915 0.400552 +vt 0.604826 0.397804 +vt 0.600808 0.377857 +vt 0.442396 0.381222 +vt 0.439252 0.401540 +vt 0.553095 0.390512 +vt 0.559674 0.357011 +vt 0.482938 0.358497 +vt 0.490934 0.391862 +vt 0.521923 0.386009 +vt 0.521086 0.343868 +vt 0.577279 0.340156 +vt 0.599845 0.344815 +vt 0.441977 0.347815 +vt 0.464579 0.342230 +vt 0.615546 0.342005 +vt 0.425972 0.345582 +vt 0.634472 0.332311 +vt 0.406362 0.336480 +vt 0.662406 0.312804 +vt 0.377061 0.317685 +vt 0.668440 0.297958 +vt 0.370304 0.302644 +vt 0.664101 0.277872 +vt 0.374100 0.281778 +vt 0.639236 0.253047 +vt 0.398938 0.255633 +vt 0.613992 0.242662 +vt 0.424464 0.244473 +vt 0.572941 0.258564 +vt 0.466409 0.259709 +vt 0.563905 0.272007 +vt 0.519760 0.248864 +vt 0.475886 0.273078 +vt 0.558527 0.316594 +vt 0.482619 0.317843 +vt 0.520277 0.294764 +vt 0.556923 0.291214 +vt 0.483433 0.292249 +vt 0.525483 0.068967 +vt 0.518928 0.067899 +vt 0.512375 0.068956 +vt 0.531231 0.073829 +vt 0.506626 0.073811 +vt 0.531019 0.087431 +vt 0.506827 0.087416 +vt 0.532042 0.127713 +vt 0.532669 0.090920 +vt 0.505177 0.090908 +vt 0.505828 0.127728 +vt 0.538112 0.158382 +vt 0.518981 0.151749 +vt 0.518941 0.128358 +vt 0.499851 0.158434 +vt 0.518925 0.093952 +vt 0.518927 0.085180 +vt 0.548362 0.173560 +vt 0.537959 0.175966 +vt 0.535214 0.166808 +vt 0.502799 0.166857 +vt 0.500100 0.176033 +vt 0.489683 0.173693 +vt 0.544281 0.193366 +vt 0.537248 0.187577 +vt 0.500890 0.187571 +vt 0.493996 0.193428 +vt 0.519841 0.200843 +vt 0.528757 0.191785 +vt 0.509219 0.191626 +vt 0.517577 0.190607 +vt 0.519132 0.185382 +vt 0.518998 0.159028 +vt 0.531131 0.171631 +vt 0.519016 0.165599 +vt 0.506910 0.171667 +vt 0.519099 0.179457 +vt 0.528222 0.186316 +vt 0.509787 0.186260 +vt 0.533528 0.184215 +vt 0.504547 0.184206 +vt 0.533449 0.176739 +vt 0.504604 0.176791 +vt 0.561572 0.167779 +vt 0.476363 0.167996 +vt 0.559475 0.149319 +vt 0.478371 0.149447 +vt 0.596138 0.133426 +vt 0.441395 0.133592 +vt 0.601169 0.147885 +vt 0.436337 0.148194 +vt 0.518925 0.083865 +vt 0.528933 0.084957 +vt 0.508915 0.084945 +vt 0.529036 0.075429 +vt 0.508820 0.075415 +vt 0.523751 0.070508 +vt 0.514106 0.070501 +vt 0.518929 0.069468 +vt 0.521560 0.074970 +vt 0.518928 0.074259 +vt 0.516297 0.074966 +vt 0.524236 0.076691 +vt 0.513619 0.076684 +vt 0.524601 0.079886 +vt 0.513252 0.079879 +vt 0.518926 0.079331 +vt 0.571787 0.277295 +vt 0.568351 0.292904 +vt 0.468070 0.278617 +vt 0.471978 0.294282 +vt 0.573085 0.311386 +vt 0.467790 0.313081 +vt 0.584855 0.327708 +vt 0.456477 0.329961 +vt 0.580734 0.266620 +vt 0.458737 0.268049 +vt 0.611720 0.255725 +vt 0.427062 0.257728 +vt 0.632494 0.262853 +vt 0.406068 0.265508 +vt 0.653658 0.279971 +vt 0.384904 0.283634 +vt 0.656064 0.297636 +vt 0.383015 0.301864 +vt 0.652752 0.310186 +vt 0.386858 0.314615 +vt 0.629040 0.323864 +vt 0.411556 0.327673 +vt 0.614408 0.331972 +vt 0.426727 0.335361 +vt 0.601033 0.333624 +vt 0.440344 0.336537 +vt 0.590644 0.321516 +vt 0.601799 0.328453 +vt 0.450408 0.323919 +vt 0.439372 0.331331 +vt 0.613335 0.327083 +vt 0.427623 0.330358 +vt 0.626851 0.320513 +vt 0.413648 0.324175 +vt 0.646248 0.306421 +vt 0.393381 0.310510 +vt 0.649541 0.296225 +vt 0.389662 0.300183 +vt 0.647785 0.283486 +vt 0.391040 0.287071 +vt 0.629829 0.267263 +vt 0.408893 0.269959 +vt 0.612641 0.261560 +vt 0.426254 0.263693 +vt 0.585166 0.270991 +vt 0.454369 0.272583 +vt 0.578124 0.281900 +vt 0.461798 0.283441 +vt 0.579548 0.309340 +vt 0.461204 0.311233 +vt 0.577524 0.293776 +vt 0.462754 0.295432 +vt 0.553209 0.433063 +vt 0.523031 0.433628 +vt 0.492809 0.434538 +vt 0.609819 0.431516 +vt 0.435860 0.435740 +vt 0.648174 0.419316 +vt 0.396518 0.425416 +vt 0.692106 0.388274 +vt 0.350292 0.396229 +vt 0.726332 0.341754 +vt 0.312756 0.350588 +vt 0.735879 0.312112 +vt 0.301067 0.320593 +vt 0.729900 0.256393 +vt 0.304876 0.261087 +vt 0.698172 0.216906 +vt 0.337414 0.219179 +vt 0.663103 0.190671 +vt 0.373474 0.191872 +vt 0.626908 0.015608 +vt 0.649444 0.022378 +vt 0.660451 0.076084 +vt 0.621440 0.048089 +vt 0.376796 0.075296 +vt 0.388827 0.021586 +vt 0.411318 0.015131 +vt 0.416419 0.047631 +vt 0.567460 0.000144 +vt 0.577206 0.032801 +vt 0.470636 0.000144 +vt 0.460782 0.032656 +vt 0.518922 0.024886 +vt 0.547413 0.041724 +vt 0.490511 0.041669 +vt 0.558059 0.053871 +vt 0.479842 0.053785 +vt 0.576951 0.057998 +vt 0.460920 0.057845 +vt 0.611687 0.078268 +vt 0.425932 0.077985 +vt 0.626663 0.111357 +vt 0.410618 0.111244 +vt 0.629482 0.130456 +vt 0.623495 0.146796 +vt 0.413741 0.147158 +vt 0.407648 0.130594 +vt 0.619303 0.159841 +vt 0.418035 0.160361 +vt 0.945900 0.079569 +vt 0.886245 0.121777 +vt 0.849114 0.099732 +vt 0.891780 0.036916 +vt 0.183115 0.092127 +vt 0.141314 0.112482 +vt 0.078961 0.060719 +vt 0.142277 0.021467 +vt 0.788458 0.080826 +vt 0.805584 0.010786 +vt 0.246353 0.076510 +vt 0.232648 0.003484 +vt 0.687018 0.077204 +vt 0.672384 0.022201 +vt 0.349875 0.075955 +vt 0.365979 0.020991 +vt 0.760215 0.193244 +vt 0.789046 0.233323 +vt 0.271553 0.193871 +vt 0.241255 0.236977 +vt 0.994525 0.167705 +vt 0.909112 0.183261 +vt 0.107928 0.179083 +vt 0.011829 0.155367 +vt 0.911671 0.402429 +vt 0.862868 0.338556 +vt 0.894128 0.301884 +vt 0.962901 0.344752 +vt 0.123776 0.315519 +vt 0.160557 0.356821 +vt 0.106400 0.432652 +vt 0.043968 0.367038 +vt 0.915360 0.259804 +vt 0.999856 0.254640 +vt 0.098965 0.266968 +vt 0.000144 0.259113 +vt 0.749542 0.334683 +vt 0.766337 0.300809 +vt 0.789162 0.313727 +vt 0.267408 0.310142 +vt 0.288183 0.346496 +vt 0.242992 0.325552 +vt 0.815314 0.276388 +vt 0.846174 0.293397 +vt 0.213065 0.285164 +vt 0.178537 0.304983 +vt 0.845007 0.256352 +vt 0.873517 0.265922 +vt 0.179662 0.263312 +vt 0.147089 0.274284 +vt 0.859075 0.228168 +vt 0.886999 0.233769 +vt 0.162803 0.231720 +vt 0.131514 0.237587 +vt 0.842355 0.195160 +vt 0.875030 0.184705 +vt 0.145224 0.182749 +vt 0.176788 0.196179 +vt 0.794286 0.364062 +vt 0.239776 0.382592 +vt 0.770185 0.379538 +vt 0.268122 0.398737 +vt 0.845499 0.449967 +vt 0.185281 0.484099 +vt 0.815858 0.445381 +vt 0.770572 0.444261 +vt 0.755700 0.418603 +vt 0.287033 0.442912 +vt 0.271364 0.473316 +vt 0.219260 0.477186 +vt 0.819845 0.468071 +vt 0.215894 0.503605 +vt 0.809631 0.233887 +vt 0.219168 0.237388 +vt 0.829287 0.219562 +vt 0.199067 0.222464 +vt 0.786480 0.117591 +vt 0.715482 0.139727 +vt 0.246666 0.114850 +vt 0.319538 0.139409 +vt 0.785486 0.152330 +vt 0.245969 0.151002 +vt 0.837382 0.156361 +vt 0.858171 0.137775 +vt 0.171653 0.132294 +vt 0.196622 0.155241 +vt 0.506166 0.904851 +vt 0.432388 0.894943 +vt 0.438797 0.870229 +vt 0.491058 0.881714 +vt 0.315867 0.868209 +vt 0.321637 0.893225 +vt 0.247207 0.901159 +vt 0.263032 0.878321 +vt 0.572792 0.860484 +vt 0.604825 0.879946 +vt 0.181486 0.854693 +vt 0.148729 0.873349 +vt 0.586396 0.793977 +vt 0.619962 0.791615 +vt 0.169745 0.787474 +vt 0.136063 0.784093 +vt 0.549027 0.746412 +vt 0.563786 0.739211 +vt 0.208656 0.740879 +vt 0.194086 0.733241 +vt 0.500314 0.711729 +vt 0.508270 0.697693 +vt 0.258399 0.707497 +vt 0.250811 0.693249 +vt 0.438641 0.680683 +vt 0.434803 0.658882 +vt 0.320962 0.677959 +vt 0.325318 0.656224 +vt 0.505666 0.730944 +vt 0.452955 0.700023 +vt 0.306136 0.696976 +vt 0.252524 0.726592 +vt 0.542850 0.755753 +vt 0.214575 0.750414 +vt 0.568148 0.787367 +vt 0.188269 0.781375 +vt 0.555495 0.826352 +vt 0.199850 0.820889 +vt 0.501231 0.844356 +vt 0.253846 0.840502 +vt 0.457832 0.840040 +vt 0.297562 0.837358 +vt 0.796021 0.176969 +vt 0.783193 0.187449 +vt 0.233625 0.175620 +vt 0.246955 0.187075 +vt 0.391039 0.611891 +vt 0.394766 0.686125 +vt 0.369913 0.610196 +vt 0.364838 0.684445 +vt 0.391747 0.862097 +vt 0.401605 0.841460 +vt 0.354026 0.840297 +vt 0.363377 0.861308 +vt 0.435018 0.718280 +vt 0.323658 0.715731 +vt 0.433669 0.729661 +vt 0.384658 0.710299 +vt 0.374400 0.708969 +vt 0.324726 0.727177 +vt 0.410995 0.747662 +vt 0.427812 0.742828 +vt 0.347028 0.745816 +vt 0.330270 0.740536 +vt 0.418086 0.784946 +vt 0.384657 0.795423 +vt 0.372270 0.794472 +vt 0.338952 0.783073 +vt 0.431333 0.817535 +vt 0.324790 0.815460 +vt 0.816266 0.203086 +vt 0.825107 0.209762 +vt 0.199767 0.214827 +vt 0.209828 0.206161 +vt 0.802192 0.184609 +vt 0.226485 0.183086 +vt 0.448505 0.804621 +vt 0.473386 0.824700 +vt 0.307886 0.802031 +vt 0.282357 0.821525 +vt 0.435868 0.779569 +vt 0.321237 0.777208 +vt 0.423718 0.754191 +vt 0.334089 0.752045 +vt 0.437950 0.749777 +vt 0.319919 0.747250 +vt 0.445392 0.731997 +vt 0.312907 0.729222 +vt 0.440995 0.724383 +vt 0.317510 0.721697 +vt 0.455277 0.713731 +vt 0.303460 0.710657 +vt 0.512485 0.828811 +vt 0.242975 0.824574 +vt 0.550942 0.811814 +vt 0.204839 0.806417 +vt 0.552139 0.787682 +vt 0.204331 0.782156 +vt 0.539407 0.764539 +vt 0.217774 0.759319 +vt 0.508439 0.743135 +vt 0.249419 0.738732 +vt 0.470841 0.748408 +vt 0.454776 0.761665 +vt 0.286960 0.745020 +vt 0.302729 0.758742 +vt 0.488870 0.770464 +vt 0.475403 0.783904 +vt 0.268291 0.766661 +vt 0.281439 0.780511 +vt 0.503673 0.787562 +vt 0.494476 0.802470 +vt 0.252972 0.783410 +vt 0.261790 0.798626 +vt 0.518562 0.791602 +vt 0.516802 0.807339 +vt 0.237920 0.787045 +vt 0.239243 0.802891 +vt 0.484068 0.628776 +vt 0.543385 0.683538 +vt 0.276936 0.625067 +vt 0.216123 0.678120 +vt 0.581052 0.726933 +vt 0.177176 0.720426 +vt 0.616701 0.759965 +vt 0.140379 0.752377 +vt 0.707492 0.759884 +vt 0.660647 0.741167 +vt 0.049526 0.748824 +vt 0.097038 0.732052 +vt 0.745511 0.652100 +vt 0.677256 0.670436 +vt 0.019409 0.639749 +vt 0.083564 0.662038 +vt 0.740843 0.572428 +vt 0.671403 0.592656 +vt 0.033664 0.564403 +vt 0.092820 0.589862 +vt 0.834578 0.206879 +vt 0.834705 0.206959 +vt 0.051216 0.522659 +vt 0.145041 0.562595 +vt 0.620420 0.565675 +vt 0.498072 0.552315 +vt 0.264218 0.550140 +vn 0.6650 -0.2008 0.7194 +vn -0.6650 -0.2008 0.7194 +vn 0.8294 -0.3036 0.4689 +vn -0.8294 -0.3036 0.4689 +vn 0.4155 -0.7933 0.4449 +vn -0.4155 -0.7933 0.4449 +vn 0.3599 -0.5089 0.7820 +vn -0.3600 -0.5089 0.7820 +vn -0.0787 -0.5394 0.8384 +vn 0.0787 -0.5394 0.8384 +vn -0.2696 -0.8413 0.4685 +vn 0.2696 -0.8413 0.4685 +vn -0.7707 -0.3352 0.5420 +vn 0.7707 -0.3352 0.5420 +vn -0.4689 -0.1940 0.8617 +vn 0.4689 -0.1940 0.8617 +vn -0.4767 0.1907 0.8581 +vn 0.4767 0.1907 0.8581 +vn -0.7672 0.3264 0.5521 +vn 0.7672 0.3264 0.5521 +vn -0.2519 0.8173 0.5182 +vn 0.2519 0.8173 0.5182 +vn -0.0949 0.5696 0.8164 +vn 0.0949 0.5696 0.8164 +vn 0.3667 0.5370 0.7597 +vn -0.3667 0.5370 0.7597 +vn 0.4141 0.7672 0.4898 +vn -0.4141 0.7672 0.4898 +vn 0.8277 0.2952 0.4771 +vn -0.8277 0.2952 0.4771 +vn 0.6713 0.1971 0.7145 +vn -0.6713 0.1971 0.7145 +vn 0.8111 0.3244 -0.4867 +vn -0.8111 0.3244 -0.4867 +vn 0.2052 0.8206 -0.5334 +vn -0.2052 0.8206 -0.5334 +vn -0.4223 0.7806 -0.4607 +vn 0.4223 0.7806 -0.4607 +vn -0.8241 0.3225 -0.4658 +vn 0.8241 0.3225 -0.4658 +vn -0.8137 -0.3487 -0.4650 +vn 0.8137 -0.3487 -0.4650 +vn -0.4223 -0.7806 -0.4607 +vn 0.4223 -0.7806 -0.4607 +vn 0.2052 -0.8206 -0.5334 +vn -0.2052 -0.8206 -0.5334 +vn 0.7995 -0.3510 -0.4875 +vn -0.7995 -0.3510 -0.4875 +vn 0.4000 -0.0623 0.9144 +vn -0.4000 -0.0623 0.9144 +vn 0.3069 -0.1754 0.9354 +vn -0.3069 -0.1754 0.9354 +vn 0.0945 -0.1835 0.9785 +vn -0.0945 -0.1835 0.9785 +vn -0.0624 -0.0283 0.9977 +vn 0.0624 -0.0283 0.9977 +vn -0.0624 0.0260 0.9977 +vn 0.0624 0.0260 0.9977 +vn 0.0996 0.1729 0.9799 +vn -0.0996 0.1729 0.9799 +vn 0.3036 0.1656 0.9383 +vn -0.3036 0.1656 0.9383 +vn 0.4002 0.0572 0.9147 +vn -0.4002 0.0572 0.9147 +vn 0.1231 -0.8616 0.4924 +vn -0.1231 -0.8616 0.4924 +vn 0.2190 -0.8647 0.4520 +vn -0.2190 -0.8647 0.4520 +vn 0.5902 -0.4550 0.6668 +vn -0.5902 -0.4550 0.6668 +vn 0.7689 -0.0506 0.6374 +vn -0.7689 -0.0506 0.6374 +vn 0.7796 0.0900 0.6197 +vn -0.7796 0.0900 0.6197 +vn 0.3241 -0.8188 0.4739 +vn -0.3241 -0.8188 0.4739 +vn 0.3857 -0.6629 0.6417 +vn -0.3857 -0.6629 0.6417 +vn 0.6895 -0.4193 0.5906 +vn -0.6895 -0.4193 0.5906 +vn 0.6588 -0.3634 0.6588 +vn -0.6588 -0.3634 0.6588 +vn 0.5465 0.3707 0.7509 +vn -0.5465 0.3707 0.7509 +vn 0.5064 0.6464 0.5706 +vn -0.5064 0.6464 0.5706 +vn 0.6092 0.5167 0.6015 +vn -0.6092 0.5167 0.6015 +vn -0.0441 0.6610 0.7491 +vn 0.0441 0.6610 0.7491 +vn -0.7246 0.3187 0.6110 +vn 0.7246 0.3187 0.6110 +vn -0.5880 0.5554 0.5880 +vn 0.5880 0.5554 0.5880 +vn 0.5361 -0.3909 0.7482 +vn -0.5361 -0.3909 0.7482 +vn 0.2207 -0.4690 0.8552 +vn -0.2207 -0.4690 0.8552 +vn -0.0794 -0.5321 0.8429 +vn 0.0794 -0.5321 0.8429 +vn -0.0825 -0.6575 0.7490 +vn 0.0825 -0.6575 0.7490 +vn 0.0457 -0.5667 0.8226 +vn -0.0457 -0.5667 0.8226 +vn 0.2784 -0.2130 0.9365 +vn -0.2784 -0.2130 0.9365 +vn 0.3813 -0.1824 0.9063 +vn -0.3813 -0.1824 0.9063 +vn 0.3357 -0.2878 0.8969 +vn -0.3357 -0.2878 0.8969 +vn 0.3762 0.0603 0.9246 +vn -0.3762 0.0603 0.9246 +vn -0.1352 0.2680 0.9539 +vn 0.1352 0.2680 0.9539 +vn 0.3961 -0.4321 0.8102 +vn -0.3961 -0.4321 0.8102 +vn 0.1856 -0.2474 0.9510 +vn -0.1856 -0.2474 0.9510 +vn 0.0099 -0.1948 0.9808 +vn -0.0099 -0.1948 0.9808 +vn 0.0721 -0.6966 0.7138 +vn -0.0721 -0.6966 0.7138 +vn 0.1863 -0.5723 0.7986 +vn -0.1863 -0.5723 0.7986 +vn 0.3157 -0.2708 0.9094 +vn -0.3157 -0.2708 0.9094 +vn 0.3063 -0.0265 0.9516 +vn -0.3063 -0.0265 0.9516 +vn 0.3266 -0.1306 0.9361 +vn -0.3266 -0.1306 0.9361 +vn -0.0137 0.0574 0.9983 +vn 0.0137 0.0574 0.9983 +vn -0.0026 -0.0656 0.9978 +vn 0.0026 -0.0656 0.9978 +vn -0.0000 0.0000 1.0000 +vn 0.8174 -0.5744 -0.0442 +vn -0.8174 -0.5744 -0.0442 +vn 0.9494 0.2297 -0.2144 +vn -0.9494 0.2297 -0.2144 +vn 0.0825 0.9073 -0.4124 +vn -0.0825 0.9073 -0.4124 +vn -0.8836 0.3555 0.3047 +vn 0.8836 0.3555 0.3047 +vn 0.4207 -0.8797 0.2218 +vn -0.4207 -0.8797 0.2218 +vn 0.2873 -0.5747 0.7663 +vn -0.2873 -0.5747 0.7663 +vn -0.6542 0.6019 0.4580 +vn 0.6542 0.6019 0.4580 +vn 0.1052 0.7892 0.6051 +vn -0.1052 0.7892 0.6051 +vn 0.7582 0.2916 0.5832 +vn -0.7582 0.2916 0.5832 +vn 0.3889 -0.7130 0.5834 +vn -0.3889 -0.7130 0.5834 +vn 0.0463 0.2314 0.9718 +vn -0.0463 0.2314 0.9718 +vn 0.0335 -0.4018 0.9151 +vn -0.0335 -0.4018 0.9151 +vn -0.4452 -0.1610 0.8809 +vn 0.4452 -0.1610 0.8809 +vn -0.2182 -0.4364 0.8729 +vn 0.2182 -0.4364 0.8729 +vn 0.4341 -0.1290 0.8916 +vn -0.4341 -0.1290 0.8916 +vn 0.3008 0.0501 0.9524 +vn -0.3008 0.0501 0.9524 +vn 0.8123 0.3010 0.4996 +vn -0.8123 0.3010 0.4996 +vn 0.8753 0.2574 0.4093 +vn -0.8753 0.2574 0.4093 +vn 0.9385 0.1601 0.3060 +vn -0.9385 0.1601 0.3060 +vn 0.2237 -0.6539 0.7227 +vn -0.2237 -0.6539 0.7227 +vn -0.1536 -0.1997 0.9677 +vn 0.1536 -0.1997 0.9677 +vn -0.2733 -0.1025 0.9565 +vn 0.2733 -0.1025 0.9565 +vn -0.0976 0.1952 0.9759 +vn 0.0976 0.1952 0.9759 +vn -0.1582 0.9494 0.2713 +vn 0.1582 0.9494 0.2713 +vn -0.6934 0.7082 0.1328 +vn 0.6934 0.7082 0.1328 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.3051 -0.9450 0.1181 +vn -0.3051 -0.9450 0.1181 +vn 0.0298 -0.2981 0.9541 +vn -0.0298 -0.2981 0.9541 +vn 0.1353 -0.3479 0.9277 +vn -0.1353 -0.3479 0.9277 +vn -0.5085 -0.2755 0.8158 +vn 0.5085 -0.2755 0.8158 +vn -0.3843 -0.0419 0.9223 +vn 0.3843 -0.0419 0.9223 +vn -0.2083 0.0374 0.9774 +vn 0.2083 0.0374 0.9774 +vn -0.5721 -0.4767 0.6674 +vn 0.5721 -0.4767 0.6674 +vn -0.1369 -0.7531 0.6435 +vn 0.1369 -0.7531 0.6435 +vn 0.4088 -0.6071 0.6814 +vn -0.4088 -0.6071 0.6814 +vn 0.5740 -0.4130 0.7070 +vn -0.5740 -0.4130 0.7070 +vn 0.5665 -0.0968 0.8183 +vn -0.5665 -0.0968 0.8183 +vn 0.5703 0.1180 0.8129 +vn -0.5703 0.1180 0.8129 +vn 0.4823 0.5621 0.6719 +vn -0.4823 0.5621 0.6719 +vn 0.2604 0.6114 0.7473 +vn -0.2604 0.6114 0.7473 +vn 0.1640 0.3607 0.9182 +vn -0.1640 0.3607 0.9182 +vn -0.0178 0.2495 0.9682 +vn 0.0178 0.2495 0.9682 +vn 0.3273 -0.4166 0.8481 +vn -0.3273 -0.4166 0.8481 +vn 0.2811 -0.2610 0.9235 +vn -0.2811 -0.2610 0.9235 +vn -0.2542 -0.6514 0.7149 +vn 0.2542 -0.6514 0.7149 +vn -0.0260 -0.8455 0.5333 +vn 0.0260 -0.8455 0.5333 +vn -0.3518 -0.2606 0.8991 +vn 0.3518 -0.2606 0.8991 +vn -0.3523 -0.0110 0.9358 +vn 0.3523 -0.0110 0.9358 +vn -0.1317 0.4608 0.8777 +vn 0.1317 0.4608 0.8777 +vn -0.0342 0.6159 0.7870 +vn 0.0342 0.6159 0.7870 +vn 0.3603 0.5836 0.7277 +vn -0.3603 0.5836 0.7277 +vn 0.4988 0.5300 0.6858 +vn -0.4988 0.5300 0.6858 +vn 0.6667 -0.3333 0.6667 +vn -0.6667 -0.3333 0.6667 +vn 0.8165 -0.0731 0.5727 +vn -0.8165 -0.0731 0.5727 +vn 0.7840 0.1161 0.6098 +vn -0.7840 0.1161 0.6098 +vn -0.5306 0.8111 -0.2461 +vn 0.5306 0.8111 -0.2461 +vn -0.8511 0.3695 -0.3730 +vn 0.8511 0.3695 -0.3730 +vn -0.2446 0.8675 -0.4331 +vn 0.2446 0.8675 -0.4331 +vn 0.5924 0.7465 -0.3030 +vn -0.5924 0.7465 -0.3030 +vn 0.3685 0.8758 -0.3118 +vn -0.3685 0.8758 -0.3118 +vn 0.2821 0.9151 -0.2880 +vn -0.2821 0.9151 -0.2880 +vn 0.8561 0.1340 -0.4991 +vn -0.8561 0.1340 -0.4991 +vn 0.5342 -0.7233 -0.4376 +vn -0.5342 -0.7233 -0.4376 +vn 0.3849 -0.8131 -0.4368 +vn -0.3849 -0.8131 -0.4368 +vn 0.2335 -0.5806 -0.7800 +vn -0.2335 -0.5806 -0.7800 +vn 0.2449 -0.0583 -0.9678 +vn -0.2449 -0.0583 -0.9678 +vn 0.1163 -0.4535 -0.8837 +vn -0.1163 -0.4535 -0.8837 +vn 0.1152 -0.9836 -0.1388 +vn -0.1152 -0.9836 -0.1388 +vn 0.1184 -0.9669 -0.2260 +vn -0.1184 -0.9669 -0.2260 +vn 0.9597 -0.0085 -0.2808 +vn -0.9597 -0.0085 -0.2808 +vn 0.9319 0.1629 -0.3242 +vn -0.9319 0.1629 -0.3242 +vn 0.1626 0.0207 -0.9865 +vn -0.1626 0.0207 -0.9865 +vn -0.0188 -0.2177 -0.9758 +vn 0.0188 -0.2177 -0.9758 +vn 0.7538 -0.2926 -0.5884 +vn -0.7538 -0.2926 -0.5884 +vn 0.9196 0.1379 -0.3678 +vn -0.9196 0.1379 -0.3678 +vn 0.9297 0.3127 -0.1944 +vn -0.9297 0.3127 -0.1944 +vn 0.9120 0.3376 -0.2329 +vn -0.9120 0.3376 -0.2329 +vn 0.9407 0.3338 -0.0607 +vn -0.9407 0.3338 -0.0607 +vn 0.1761 -0.8805 -0.4402 +vn -0.1761 -0.8805 -0.4402 +vn 0.3708 -0.4733 -0.7991 +vn -0.3708 -0.4733 -0.7991 +vn 0.3107 -0.8284 -0.4660 +vn -0.3107 -0.8284 -0.4660 +vn 0.2793 -0.9515 -0.1287 +vn -0.2793 -0.9515 -0.1287 +vn 0.3139 -0.9321 -0.1807 +vn -0.3139 -0.9321 -0.1807 +vn 0.9762 -0.2083 -0.0609 +vn -0.9762 -0.2083 -0.0609 +vn 0.8267 -0.5066 0.2447 +vn -0.8267 -0.5066 0.2447 +vn 0.3449 -0.1158 -0.9315 +vn -0.3449 -0.1158 -0.9315 +vn 0.1203 0.9644 0.2355 +vn -0.1203 0.9644 0.2355 +vn 0.1275 0.9744 -0.1851 +vn -0.1275 0.9744 -0.1851 +vn 0.3492 0.5947 -0.7241 +vn -0.3492 0.5947 -0.7241 +vn 0.4153 0.8981 -0.1449 +vn -0.4153 0.8981 -0.1449 +vn 0.1845 0.7036 0.6863 +vn -0.1845 0.7036 0.6863 +vn 0.6056 0.7794 0.1608 +vn -0.6056 0.7794 0.1608 +vn 0.7033 0.6806 -0.2053 +vn -0.7033 0.6806 -0.2053 +vn 0.6679 0.2007 -0.7166 +vn -0.6679 0.2007 -0.7166 +vn 0.4948 0.4342 -0.7528 +vn -0.4948 0.4342 -0.7528 +vn 0.6423 0.7459 -0.1761 +vn -0.6423 0.7459 -0.1761 +vn 0.7182 0.6788 0.1530 +vn -0.7182 0.6788 0.1530 +vn 0.7388 0.3972 0.5444 +vn -0.7388 0.3972 0.5444 +vn 0.3428 0.9261 -0.1579 +vn -0.3428 0.9261 -0.1579 +vn 0.2270 0.5740 0.7867 +vn -0.2270 0.5740 0.7867 +vn -0.1722 0.1046 -0.9795 +vn 0.1722 0.1046 -0.9795 +vn 0.0425 0.9150 0.4013 +vn -0.0425 0.9150 0.4013 +vn -0.1616 0.1847 0.9694 +vn 0.1616 0.1847 0.9694 +vn 0.9791 0.1973 0.0483 +vn -0.9791 0.1973 0.0483 +vn 0.9470 0.0918 0.3079 +vn -0.9470 0.0918 0.3079 +vn 0.9794 0.1905 -0.0661 +vn -0.9794 0.1905 -0.0661 +vn 0.9938 0.0312 -0.1070 +vn -0.9938 0.0312 -0.1070 +vn 0.7116 -0.7008 0.0501 +vn -0.7116 -0.7008 0.0501 +vn 0.3722 -0.9243 0.0847 +vn -0.3722 -0.9243 0.0847 +vn 0.4465 -0.8644 0.2310 +vn -0.4465 -0.8644 0.2310 +vn 0.6066 -0.7578 0.2405 +vn -0.6066 -0.7578 0.2405 +vn 0.7325 -0.6368 0.2407 +vn -0.7325 -0.6368 0.2407 +vn 0.2637 -0.4499 0.8533 +vn -0.2637 -0.4499 0.8533 +vn 0.5568 -0.3181 -0.7673 +vn -0.5568 -0.3181 -0.7673 +vn 0.5004 -0.2807 -0.8190 +vn -0.5004 -0.2807 -0.8190 +vn 0.3190 -0.8494 -0.4205 +vn -0.3190 -0.8494 -0.4205 +vn 0.7198 -0.6356 -0.2793 +vn -0.7198 -0.6356 -0.2793 +vn 0.4972 -0.4408 -0.7473 +vn -0.4972 -0.4408 -0.7473 +vn 0.3506 0.3807 0.8557 +vn -0.3506 0.3807 0.8557 +vn 0.4566 0.1715 0.8730 +vn -0.4566 0.1715 0.8730 +vn 0.2583 0.1055 0.9603 +vn -0.2583 0.1055 0.9603 +vn 0.2455 -0.0802 0.9661 +vn -0.2455 -0.0802 0.9661 +vn 0.4643 -0.0599 0.8837 +vn -0.4643 -0.0599 0.8837 +vn 0.6225 -0.3045 0.7210 +vn -0.6225 -0.3045 0.7210 +vn 0.4500 0.6590 0.6027 +vn -0.4500 0.6590 0.6027 +vn -0.2667 0.8309 0.4884 +vn 0.2667 0.8309 0.4884 +vn -0.8284 0.2291 0.5111 +vn 0.8284 0.2291 0.5111 +vn -0.5251 -0.3566 0.7727 +vn 0.5251 -0.3566 0.7727 +vn 0.4546 -0.5665 0.6873 +vn -0.4546 -0.5665 0.6873 +vn 0.6996 -0.4497 0.5552 +vn -0.6996 -0.4497 0.5552 +vn 0.7220 -0.6827 -0.1126 +vn -0.7220 -0.6827 -0.1126 +vn -0.1919 0.2860 0.9388 +vn 0.1919 0.2860 0.9388 +vn 0.9048 -0.3734 -0.2047 +vn -0.9048 -0.3734 -0.2047 +vn 0.1034 0.1551 0.9825 +vn -0.1034 0.1551 0.9825 +vn 0.0841 0.9318 0.3530 +vn -0.0841 0.9318 0.3530 +vn 0.6446 -0.0883 0.7594 +vn -0.6446 -0.0883 0.7594 +vn 0.4309 0.4740 0.7678 +vn -0.4309 0.4740 0.7678 +vn 0.8032 -0.4847 0.3462 +vn -0.8032 -0.4847 0.3462 +vn 0.5811 -0.4128 0.7014 +vn -0.5811 -0.4128 0.7014 +vn 0.5910 -0.4305 0.6822 +vn -0.5910 -0.4305 0.6822 +vn 0.9818 -0.1804 -0.0591 +vn -0.9818 -0.1804 -0.0591 +vn 0.9105 -0.3965 -0.1175 +vn -0.9105 -0.3965 -0.1175 +vn 0.9972 -0.0181 -0.0725 +vn -0.9972 -0.0181 -0.0725 +vn 0.7313 -0.6543 0.1925 +vn -0.7313 -0.6543 0.1925 +vn 0.7867 -0.6079 0.1073 +vn -0.7867 -0.6079 0.1073 +vn 0.7022 -0.7022 0.1170 +vn -0.7022 -0.7022 0.1170 +vn 0.1840 0.9816 -0.0511 +vn -0.1840 0.9816 -0.0511 +vn 0.9352 0.3301 0.1284 +vn -0.9352 0.3301 0.1284 +vn 0.6633 -0.7463 0.0553 +vn -0.6633 -0.7463 0.0553 +vn -0.0085 0.9970 0.0767 +vn 0.0085 0.9970 0.0767 +vn 0.6237 -0.7061 0.3354 +vn -0.6237 -0.7061 0.3354 +vn 0.2733 -0.8925 0.3587 +vn -0.2733 -0.8925 0.3587 +vn -0.8328 -0.5080 -0.2200 +vn 0.8328 -0.5080 -0.2200 +vn -0.8339 0.2377 -0.4981 +vn 0.8339 0.2377 -0.4981 +vn -0.5655 0.7847 -0.2539 +vn 0.5655 0.7847 -0.2539 +vn -0.0560 0.9962 0.0672 +vn 0.0560 0.9962 0.0672 +vn 0.1445 0.0222 0.9893 +vn -0.1445 0.0222 0.9893 +vn 0.3275 0.0645 0.9427 +vn -0.3275 0.0645 0.9427 +vn 0.3127 0.0232 0.9496 +vn -0.3127 0.0232 0.9496 +vn 0.1710 0.0274 0.9849 +vn -0.1710 0.0274 0.9849 +vn 0.3487 0.2849 0.8929 +vn -0.3487 0.2849 0.8929 +vn 0.4006 -0.0343 0.9156 +vn -0.4006 -0.0343 0.9156 +vn 0.2572 -0.0603 0.9645 +vn -0.2572 -0.0603 0.9645 +vn 0.0637 -0.0106 0.9979 +vn -0.0637 -0.0106 0.9979 +vn -0.3637 0.7039 0.6101 +vn 0.3637 0.7039 0.6101 +vn 0.6299 0.0355 0.7759 +vn -0.6299 0.0355 0.7759 +vn 0.4472 -0.2002 0.8717 +vn -0.4472 -0.2002 0.8717 +vn 0.5072 -0.2141 0.8348 +vn -0.5072 -0.2141 0.8348 +vn 0.5258 0.2619 0.8093 +vn -0.5258 0.2619 0.8093 +vn 0.2980 0.5802 0.7580 +vn -0.2980 0.5802 0.7580 +vn 0.0930 -0.9924 -0.0805 +vn -0.0930 -0.9924 -0.0805 +vn 0.5006 -0.8657 0.0080 +vn -0.5006 -0.8657 0.0080 +vn 0.9285 -0.2497 0.2748 +vn -0.9285 -0.2497 0.2748 +vn 0.8393 0.5424 -0.0378 +vn -0.8393 0.5424 -0.0378 +vn -0.2355 0.9367 -0.2589 +vn 0.2355 0.9367 -0.2589 +vn -0.4499 0.8838 -0.1285 +vn 0.4499 0.8838 -0.1285 +vn -0.5384 -0.0098 -0.8427 +vn 0.5384 -0.0098 -0.8427 +vn -0.1910 -0.0241 -0.9813 +vn 0.1910 -0.0241 -0.9813 +vn 0.4046 0.0266 -0.9141 +vn -0.4046 0.0266 -0.9141 +vn -0.7819 0.6231 0.0197 +vn 0.7819 0.6231 0.0197 +vn 0.5428 -0.2063 -0.8142 +vn -0.5428 -0.2063 -0.8142 +vn -0.2474 -0.9231 -0.2945 +vn 0.2474 -0.9231 -0.2945 +usemtl Material.001 +s off +f 47/1/1 1/2/1 3/3/1 45/4/1 +f 4/5/2 2/6/2 48/7/2 46/8/2 +f 45/4/3 3/3/3 5/9/3 43/10/3 +f 6/11/4 4/5/4 46/8/4 44/12/4 +f 3/3/5 9/13/5 7/14/5 5/9/5 +f 8/15/6 10/16/6 4/5/6 6/11/6 +f 1/2/7 11/17/7 9/13/7 3/3/7 +f 10/16/8 12/18/8 2/6/8 4/5/8 +f 11/17/9 13/19/9 15/20/9 9/13/9 +f 16/21/10 14/22/10 12/18/10 10/16/10 +f 9/13/11 15/20/11 17/23/11 7/14/11 +f 18/24/12 16/21/12 10/16/12 8/15/12 +f 15/20/13 21/25/13 19/26/13 17/23/13 +f 20/27/14 22/28/14 16/21/14 18/24/14 +f 13/19/15 23/29/15 21/25/15 15/20/15 +f 22/28/16 24/30/16 14/22/16 16/21/16 +f 23/29/17 25/31/17 27/32/17 21/25/17 +f 28/33/18 26/34/18 24/30/18 22/28/18 +f 21/25/19 27/32/19 29/35/19 19/26/19 +f 30/36/20 28/33/20 22/28/20 20/27/20 +f 27/32/21 33/37/21 31/38/21 29/35/21 +f 32/39/22 34/40/22 28/33/22 30/36/22 +f 25/31/23 35/41/23 33/37/23 27/32/23 +f 34/40/24 36/42/24 26/34/24 28/33/24 +f 35/41/25 37/43/25 39/44/25 33/37/25 +f 40/45/26 38/46/26 36/42/26 34/40/26 +f 33/37/27 39/44/27 41/47/27 31/38/27 +f 42/48/28 40/45/28 34/40/28 32/39/28 +f 39/44/29 45/4/29 43/10/29 41/47/29 +f 44/12/30 46/8/30 40/45/30 42/48/30 +f 37/43/31 47/1/31 45/4/31 39/44/31 +f 46/8/32 48/7/32 38/46/32 40/45/32 +f 47/1/33 37/43/33 51/49/33 49/50/33 +f 52/51/34 38/46/34 48/7/34 50/52/34 +f 37/43/35 35/41/35 53/53/35 51/49/35 +f 54/54/36 36/42/36 38/46/36 52/51/36 +f 35/41/37 25/31/37 55/55/37 53/53/37 +f 56/56/38 26/34/38 36/42/38 54/54/38 +f 25/31/39 23/29/39 57/57/39 55/55/39 +f 58/58/40 24/30/40 26/34/40 56/56/40 +f 23/29/41 13/19/41 59/59/41 57/57/41 +f 60/60/42 14/22/42 24/30/42 58/58/42 +f 13/19/43 11/17/43 63/61/43 59/59/43 +f 64/62/44 12/18/44 14/22/44 60/60/44 +f 11/17/45 1/2/45 65/63/45 63/61/45 +f 66/64/46 2/6/46 12/18/46 64/62/46 +f 1/2/47 47/1/47 49/50/47 65/63/47 +f 50/52/48 48/7/48 2/6/48 66/64/48 +f 61/65/49 65/63/49 49/50/49 +f 50/52/50 66/64/50 62/66/50 +f 63/61/51 65/63/51 61/65/51 +f 62/66/52 66/64/52 64/62/52 +f 61/65/53 59/59/53 63/61/53 +f 64/62/54 60/60/54 62/66/54 +f 61/65/55 57/57/55 59/59/55 +f 60/60/56 58/58/56 62/66/56 +f 61/65/57 55/55/57 57/57/57 +f 58/58/58 56/56/58 62/66/58 +f 61/65/59 53/53/59 55/55/59 +f 56/56/60 54/54/60 62/66/60 +f 61/65/61 51/49/61 53/53/61 +f 54/54/62 52/51/62 62/66/62 +f 61/65/63 49/50/63 51/49/63 +f 52/51/64 50/52/64 62/66/64 +f 89/67/65 174/68/65 176/69/65 91/70/65 +f 176/69/66 175/71/66 90/72/66 91/70/66 +f 87/73/67 172/74/67 174/68/67 89/67/67 +f 175/71/68 173/75/68 88/76/68 90/72/68 +f 85/77/69 170/78/69 172/74/69 87/73/69 +f 173/75/70 171/79/70 86/80/70 88/76/70 +f 83/81/71 168/82/71 170/78/71 85/77/71 +f 171/79/72 169/83/72 84/84/72 86/80/72 +f 81/85/73 166/86/73 168/82/73 83/81/73 +f 169/83/74 167/87/74 82/88/74 84/84/74 +f 79/89/75 92/90/75 146/91/75 164/92/75 +f 147/93/76 93/94/76 80/95/76 165/96/76 +f 92/90/77 94/97/77 148/98/77 146/91/77 +f 149/99/78 95/100/78 93/94/78 147/93/78 +f 94/97/79 96/101/79 150/102/79 148/98/79 +f 151/103/80 97/104/80 95/100/80 149/99/80 +f 96/101/81 98/105/81 152/106/81 150/102/81 +f 153/107/82 99/108/82 97/104/82 151/103/82 +f 98/105/83 100/109/83 154/110/83 152/106/83 +f 155/111/84 101/112/84 99/108/84 153/107/84 +f 100/109/85 102/113/85 156/114/85 154/110/85 +f 157/115/86 103/116/86 101/112/86 155/111/86 +f 102/113/87 104/117/87 158/118/87 156/114/87 +f 159/119/88 105/120/88 103/116/88 157/115/88 +f 104/117/89 106/121/89 160/122/89 158/118/89 +f 161/123/90 107/124/90 105/120/90 159/119/90 +f 106/121/91 108/125/91 162/126/91 160/122/91 +f 163/127/92 109/128/92 107/124/92 161/123/92 +f 108/125/93 67/129/93 68/130/93 162/126/93 +f 68/130/94 67/129/94 109/128/94 163/127/94 +f 110/131/95 128/132/95 160/122/95 162/126/95 +f 161/123/96 129/133/96 111/134/96 163/127/96 +f 128/132/97 179/135/97 158/118/97 160/122/97 +f 159/119/98 180/136/98 129/133/98 161/123/98 +f 126/137/99 156/114/99 158/118/99 179/135/99 +f 159/119/100 157/115/100 127/138/100 180/136/100 +f 124/139/101 154/110/101 156/114/101 126/137/101 +f 157/115/102 155/111/102 125/140/102 127/138/102 +f 122/141/103 152/106/103 154/110/103 124/139/103 +f 155/111/104 153/107/104 123/142/104 125/140/104 +f 120/143/105 150/102/105 152/106/105 122/141/105 +f 153/107/106 151/103/106 121/144/106 123/142/106 +f 118/145/107 148/98/107 150/102/107 120/143/107 +f 151/103/108 149/99/108 119/146/108 121/144/108 +f 116/147/109 146/91/109 148/98/109 118/145/109 +f 149/99/110 147/93/110 117/148/110 119/146/110 +f 114/149/111 164/92/111 146/91/111 116/147/111 +f 147/93/112 165/96/112 115/150/112 117/148/112 +f 114/149/113 181/151/113 177/152/113 164/92/113 +f 177/152/114 182/153/114 115/150/114 165/96/114 +f 110/131/115 162/126/115 68/130/115 112/154/115 +f 68/130/116 163/127/116 111/134/116 113/155/116 +f 112/154/117 68/130/117 178/156/117 183/157/117 +f 178/156/118 68/130/118 113/155/118 184/158/118 +f 177/152/119 181/151/119 183/157/119 178/156/119 +f 184/158/120 182/153/120 177/152/120 178/156/120 +f 135/159/121 137/160/121 176/69/121 174/68/121 +f 176/69/122 137/160/122 136/161/122 175/71/122 +f 133/162/123 135/159/123 174/68/123 172/74/123 +f 175/71/124 136/161/124 134/163/124 173/75/124 +f 131/164/125 133/162/125 172/74/125 170/78/125 +f 173/75/126 134/163/126 132/165/126 171/79/126 +f 166/86/127 187/166/127 185/167/127 168/82/127 +f 186/168/128 188/169/128 167/87/128 169/83/128 +f 131/164/129 170/78/129 168/82/129 185/167/129 +f 169/83/130 171/79/130 132/165/130 186/168/130 +f 144/170/131 190/171/131 189/172/131 187/166/131 +f 189/172/132 190/171/132 145/173/132 188/169/132 +f 185/167/133 187/166/133 189/172/133 69/174/133 +f 189/172/134 188/169/134 186/168/134 69/174/134 +f 130/175/135 131/164/135 185/167/135 69/174/135 +f 186/168/135 132/165/135 130/175/135 69/174/135 +f 142/176/136 193/177/136 191/178/136 144/170/136 +f 192/179/137 194/180/137 143/181/137 145/173/137 +f 140/182/138 195/183/138 193/177/138 142/176/138 +f 194/180/139 196/184/139 141/185/139 143/181/139 +f 139/186/140 197/187/140 195/183/140 140/182/140 +f 196/184/141 198/188/141 139/186/141 141/185/141 +f 138/189/142 71/190/142 197/187/142 139/186/142 +f 198/188/143 71/190/143 138/189/143 139/186/143 +f 190/171/144 144/170/144 191/178/144 70/191/144 +f 192/179/145 145/173/145 190/171/145 70/191/145 +f 70/191/146 191/178/146 206/192/146 208/193/146 +f 207/194/147 192/179/147 70/191/147 208/193/147 +f 71/190/148 199/195/148 200/196/148 197/187/148 +f 201/197/149 199/195/149 71/190/149 198/188/149 +f 197/187/150 200/196/150 202/198/150 195/183/150 +f 203/199/151 201/197/151 198/188/151 196/184/151 +f 195/183/152 202/198/152 204/200/152 193/177/152 +f 205/201/153 203/199/153 196/184/153 194/180/153 +f 193/177/154 204/200/154 206/192/154 191/178/154 +f 207/194/155 205/201/155 194/180/155 192/179/155 +f 199/195/156 204/200/156 202/198/156 200/196/156 +f 203/199/157 205/201/157 199/195/157 201/197/157 +f 199/195/158 208/193/158 206/192/158 204/200/158 +f 207/194/159 208/193/159 199/195/159 205/201/159 +f 139/186/160 140/182/160 164/92/160 177/152/160 +f 165/96/161 141/185/161 139/186/161 177/152/161 +f 140/182/162 142/176/162 211/202/162 164/92/162 +f 212/203/163 143/181/163 141/185/163 165/96/163 +f 142/176/164 144/170/164 213/204/164 211/202/164 +f 214/205/165 145/173/165 143/181/165 212/203/165 +f 144/170/166 187/166/166 166/86/166 213/204/166 +f 167/87/167 188/169/167 145/173/167 214/205/167 +f 81/85/168 209/206/168 213/204/168 166/86/168 +f 214/205/169 210/207/169 82/88/169 167/87/169 +f 209/206/170 215/208/170 211/202/170 213/204/170 +f 212/203/171 216/209/171 210/207/171 214/205/171 +f 79/89/172 164/92/172 211/202/172 215/208/172 +f 212/203/173 165/96/173 80/95/173 216/209/173 +f 131/164/174 130/175/174 72/210/174 222/211/174 +f 72/210/175 130/175/175 132/165/175 223/212/175 +f 133/162/176 131/164/176 222/211/176 220/213/176 +f 223/212/177 132/165/177 134/163/177 221/214/177 +f 135/159/178 133/162/178 220/213/178 218/215/178 +f 221/214/179 134/163/179 136/161/179 219/216/179 +f 137/160/180 135/159/180 218/215/180 217/217/180 +f 219/216/181 136/161/181 137/160/181 217/217/181 +f 217/217/182 218/215/182 229/218/182 231/219/182 +f 230/220/183 219/216/183 217/217/183 231/219/183 +f 218/215/184 220/213/184 227/221/184 229/218/184 +f 228/222/185 221/214/185 219/216/185 230/220/185 +f 220/213/186 222/211/186 225/223/186 227/221/186 +f 226/224/187 223/212/187 221/214/187 228/222/187 +f 222/211/188 72/210/188 224/225/188 225/223/188 +f 224/225/189 72/210/189 223/212/189 226/224/189 +f 224/225/190 231/219/190 229/218/190 225/223/190 +f 230/220/191 231/219/191 224/225/191 226/224/191 +f 225/223/192 229/218/192 227/221/192 +f 228/222/193 230/220/193 226/224/193 +f 183/157/194 181/151/194 234/226/194 232/227/194 +f 235/228/195 182/153/195 184/158/195 233/229/195 +f 112/154/196 183/157/196 232/227/196 254/230/196 +f 233/229/197 184/158/197 113/155/197 255/231/197 +f 110/131/198 112/154/198 254/230/198 256/232/198 +f 255/231/199 113/155/199 111/134/199 257/233/199 +f 181/151/200 114/149/200 252/234/200 234/226/200 +f 253/235/201 115/150/201 182/153/201 235/228/201 +f 114/149/202 116/147/202 250/236/202 252/234/202 +f 251/237/203 117/148/203 115/150/203 253/235/203 +f 116/147/204 118/145/204 248/238/204 250/236/204 +f 249/239/205 119/146/205 117/148/205 251/237/205 +f 118/145/206 120/143/206 246/240/206 248/238/206 +f 247/241/207 121/144/207 119/146/207 249/239/207 +f 120/143/208 122/141/208 244/242/208 246/240/208 +f 245/243/209 123/142/209 121/144/209 247/241/209 +f 122/141/210 124/139/210 242/244/210 244/242/210 +f 243/245/211 125/140/211 123/142/211 245/243/211 +f 124/139/212 126/137/212 240/246/212 242/244/212 +f 241/247/213 127/138/213 125/140/213 243/245/213 +f 126/137/214 179/135/214 236/248/214 240/246/214 +f 237/249/215 180/136/215 127/138/215 241/247/215 +f 179/135/216 128/132/216 238/250/216 236/248/216 +f 239/251/217 129/133/217 180/136/217 237/249/217 +f 128/132/218 110/131/218 256/232/218 238/250/218 +f 257/233/219 111/134/219 129/133/219 239/251/219 +f 238/250/220 256/232/220 258/252/220 276/253/220 +f 259/254/221 257/233/221 239/251/221 277/255/221 +f 236/248/222 238/250/222 276/253/222 278/256/222 +f 277/255/223 239/251/223 237/249/223 279/257/223 +f 240/246/224 236/248/224 278/256/224 274/258/224 +f 279/257/225 237/249/225 241/247/225 275/259/225 +f 242/244/226 240/246/226 274/258/226 272/260/226 +f 275/259/227 241/247/227 243/245/227 273/261/227 +f 244/242/228 242/244/228 272/260/228 270/262/228 +f 273/261/229 243/245/229 245/243/229 271/263/229 +f 246/240/230 244/242/230 270/262/230 268/264/230 +f 271/263/231 245/243/231 247/241/231 269/265/231 +f 248/238/232 246/240/232 268/264/232 266/266/232 +f 269/265/233 247/241/233 249/239/233 267/267/233 +f 250/236/234 248/238/234 266/266/234 264/268/234 +f 267/267/235 249/239/235 251/237/235 265/269/235 +f 252/234/236 250/236/236 264/268/236 262/270/236 +f 265/269/237 251/237/237 253/235/237 263/271/237 +f 234/226/238 252/234/238 262/270/238 280/272/238 +f 263/271/239 253/235/239 235/228/239 281/273/239 +f 256/232/240 254/230/240 260/274/240 258/252/240 +f 261/275/241 255/231/241 257/233/241 259/254/241 +f 254/230/242 232/227/242 282/276/242 260/274/242 +f 283/277/243 233/229/243 255/231/243 261/275/243 +f 232/227/244 234/226/244 280/272/244 282/276/244 +f 281/273/245 235/228/245 233/229/245 283/277/245 +f 67/129/246 108/125/246 284/278/246 73/279/246 +f 285/280/247 109/128/247 67/129/247 73/279/247 +f 108/125/248 106/121/248 286/281/248 284/278/248 +f 287/282/249 107/124/249 109/128/249 285/280/249 +f 106/121/250 104/117/250 288/283/250 286/281/250 +f 289/284/251 105/120/251 107/124/251 287/282/251 +f 104/117/252 102/113/252 290/285/252 288/283/252 +f 291/286/253 103/116/253 105/120/253 289/284/253 +f 102/113/254 100/109/254 292/287/254 290/285/254 +f 293/288/255 101/112/255 103/116/255 291/286/255 +f 100/109/256 98/105/256 294/289/256 292/287/256 +f 295/290/257 99/108/257 101/112/257 293/288/257 +f 98/105/258 96/101/258 296/291/258 294/289/258 +f 297/292/259 97/104/259 99/108/259 295/290/259 +f 96/101/260 94/97/260 298/293/260 296/291/260 +f 299/294/261 95/100/261 97/104/261 297/292/261 +f 94/97/262 92/90/262 300/295/262 298/293/262 +f 301/296/263 93/94/263 95/100/263 299/294/263 +f 308/297/264 309/298/264 328/299/264 338/300/264 +f 329/301/265 309/302/265 308/303/265 339/304/265 +f 307/305/266 308/297/266 338/300/266 336/306/266 +f 339/304/267 308/303/267 307/307/267 337/308/267 +f 306/309/268 307/305/268 336/306/268 340/310/268 +f 337/308/269 307/307/269 306/309/269 341/311/269 +f 89/67/270 91/70/270 306/309/270 340/310/270 +f 306/309/271 91/70/271 90/72/271 341/311/271 +f 87/73/272 89/67/272 340/310/272 334/312/272 +f 341/311/273 90/72/273 88/76/273 335/313/273 +f 85/77/274 87/73/274 334/312/274 330/314/274 +f 335/313/275 88/76/275 86/80/275 331/315/275 +f 83/81/276 85/77/276 330/314/276 332/316/276 +f 331/315/277 86/80/277 84/84/277 333/317/277 +f 330/314/278 336/306/278 338/300/278 332/316/278 +f 339/304/279 337/308/279 331/315/279 333/317/279 +f 330/314/280 334/312/280 340/310/280 336/306/280 +f 341/311/281 335/313/281 331/315/281 337/308/281 +f 326/318/282 332/316/282 338/300/282 328/299/282 +f 339/304/283 333/317/283 327/319/283 329/301/283 +f 81/85/284 83/81/284 332/316/284 326/318/284 +f 333/317/285 84/84/285 82/88/285 327/319/285 +f 209/206/286 342/320/286 344/321/286 215/208/286 +f 345/322/287 343/323/287 210/207/287 216/209/287 +f 81/85/288 326/318/288 342/320/288 209/206/288 +f 343/323/289 327/319/289 82/88/289 210/207/289 +f 79/89/290 215/208/290 344/321/290 346/324/290 +f 345/322/291 216/209/291 80/95/291 347/325/291 +f 79/89/292 346/324/292 300/295/292 92/90/292 +f 301/296/293 347/325/293 80/95/293 93/94/293 +f 77/326/294 324/327/294 352/328/294 304/329/294 +f 353/330/295 325/331/295 77/332/295 304/333/295 +f 304/329/296 352/328/296 350/334/296 78/335/296 +f 351/336/297 353/330/297 304/333/297 78/337/297 +f 78/335/298 350/334/298 348/338/298 305/339/298 +f 349/340/299 351/336/299 78/337/299 305/341/299 +f 305/339/300 348/338/300 328/299/300 309/298/300 +f 329/301/301 349/340/301 305/341/301 309/302/301 +f 326/318/302 328/299/302 348/338/302 342/320/302 +f 349/340/303 329/301/303 327/319/303 343/323/303 +f 296/291/304 298/293/304 318/342/304 310/343/304 +f 319/344/305 299/294/305 297/292/305 311/345/305 +f 76/346/306 316/347/306 324/327/306 77/326/306 +f 325/331/307 317/348/307 76/349/307 77/332/307 +f 302/350/308 358/351/308 356/352/308 303/353/308 +f 357/354/309 359/355/309 302/356/309 303/357/309 +f 303/353/310 356/352/310 354/358/310 75/359/310 +f 355/360/311 357/354/311 303/357/311 75/361/311 +f 75/359/312 354/358/312 316/347/312 76/346/312 +f 317/348/313 355/360/313 75/361/313 76/349/313 +f 292/362/314 294/289/314 362/363/314 364/364/314 +f 363/365/315 295/290/315 293/366/315 365/367/315 +f 364/364/316 362/363/316 368/368/316 366/369/316 +f 369/370/317 363/365/317 365/367/317 367/371/317 +f 366/369/318 368/368/318 370/372/318 372/373/318 +f 371/374/319 369/370/319 367/371/319 373/375/319 +f 372/373/320 370/372/320 376/376/320 374/377/320 +f 377/378/321 371/374/321 373/375/321 375/379/321 +f 314/380/322 378/381/322 374/377/322 376/376/322 +f 375/379/323 379/382/323 315/383/323 377/378/323 +f 316/347/324 354/358/324 374/377/324 378/381/324 +f 375/379/325 355/360/325 317/348/325 379/382/325 +f 354/358/326 356/352/326 372/373/326 374/377/326 +f 373/375/327 357/354/327 355/360/327 375/379/327 +f 356/352/328 358/351/328 366/369/328 372/373/328 +f 367/371/329 359/355/329 357/354/329 373/375/329 +f 358/351/330 360/384/330 364/364/330 366/369/330 +f 365/367/331 361/385/331 359/355/331 367/371/331 +f 290/386/332 292/362/332 364/364/332 360/384/332 +f 365/367/333 293/366/333 291/387/333 361/385/333 +f 74/388/334 360/384/334 358/351/334 302/350/334 +f 359/355/335 361/385/335 74/389/335 302/356/335 +f 284/390/336 286/391/336 288/392/336 290/386/336 +f 289/393/337 287/394/337 285/395/337 291/387/337 +f 284/390/338 290/386/338 360/384/338 74/388/338 +f 361/385/339 291/387/339 285/395/339 74/389/339 +f 73/396/340 284/390/340 74/388/340 +f 74/389/341 285/395/341 73/397/341 +f 294/289/342 296/291/342 310/343/342 362/363/342 +f 311/345/343 297/292/343 295/290/343 363/365/343 +f 310/343/344 312/398/344 368/368/344 362/363/344 +f 369/370/345 313/399/345 311/345/345 363/365/345 +f 312/398/346 382/400/346 370/372/346 368/368/346 +f 371/374/347 383/401/347 313/399/347 369/370/347 +f 314/380/348 376/376/348 370/372/348 382/400/348 +f 371/374/349 377/378/349 315/383/349 383/401/349 +f 348/338/350 350/334/350 386/402/350 384/403/350 +f 387/404/351 351/336/351 349/340/351 385/405/351 +f 318/342/352 384/403/352 386/402/352 320/406/352 +f 387/404/353 385/405/353 319/344/353 321/407/353 +f 298/293/354 300/295/354 384/403/354 318/342/354 +f 385/405/355 301/296/355 299/294/355 319/344/355 +f 300/295/356 344/321/356 342/320/356 384/403/356 +f 343/323/357 345/322/357 301/296/357 385/405/357 +f 342/320/358 348/338/358 384/403/358 +f 385/405/359 349/340/359 343/323/359 +f 300/295/360 346/324/360 344/321/360 +f 345/322/361 347/325/361 301/296/361 +f 314/380/362 322/408/362 380/409/362 378/381/362 +f 381/410/363 323/411/363 315/383/363 379/382/363 +f 316/347/364 378/381/364 380/409/364 324/327/364 +f 381/410/365 379/382/365 317/348/365 325/331/365 +f 320/406/366 386/402/366 380/409/366 322/408/366 +f 381/410/367 387/404/367 321/407/367 323/411/367 +f 350/334/368 352/328/368 380/409/368 386/402/368 +f 381/410/369 353/330/369 351/336/369 387/404/369 +f 324/327/370 380/409/370 352/328/370 +f 353/330/371 381/410/371 325/331/371 +f 400/412/372 388/413/372 414/414/372 402/415/372 +f 415/416/373 389/417/373 401/418/373 403/419/373 +f 400/412/374 402/415/374 404/420/374 398/421/374 +f 405/422/375 403/419/375 401/418/375 399/423/375 +f 398/421/376 404/420/376 406/424/376 396/425/376 +f 407/426/377 405/422/377 399/423/377 397/427/377 +f 396/425/378 406/424/378 408/428/378 394/429/378 +f 409/430/379 407/426/379 397/427/379 395/431/379 +f 394/429/380 408/428/380 410/432/380 392/433/380 +f 411/434/381 409/430/381 395/431/381 393/435/381 +f 392/433/382 410/432/382 412/436/382 390/437/382 +f 413/438/383 411/434/383 393/435/383 391/439/383 +f 410/432/384 420/440/384 418/441/384 412/436/384 +f 419/442/385 421/443/385 411/434/385 413/438/385 +f 408/428/386 422/444/386 420/440/386 410/432/386 +f 421/443/387 423/445/387 409/430/387 411/434/387 +f 406/424/388 424/446/388 422/444/388 408/428/388 +f 423/445/389 425/447/389 407/426/389 409/430/389 +f 404/420/390 426/448/390 424/446/390 406/424/390 +f 425/447/391 427/449/391 405/422/391 407/426/391 +f 402/415/392 428/450/392 426/448/392 404/420/392 +f 427/449/393 429/451/393 403/419/393 405/422/393 +f 402/415/394 414/414/394 416/452/394 428/450/394 +f 417/453/395 415/416/395 403/419/395 429/451/395 +f 318/342/396 320/406/396 444/454/396 442/455/396 +f 445/456/397 321/407/397 319/344/397 443/457/397 +f 320/458/398 390/437/398 412/436/398 444/459/398 +f 413/438/399 391/439/399 321/460/399 445/461/399 +f 310/343/400 318/342/400 442/455/400 312/398/400 +f 443/457/401 319/344/401 311/345/401 313/399/401 +f 382/462/402 430/463/402 414/414/402 388/413/402 +f 415/416/403 431/464/403 383/465/403 389/417/403 +f 412/436/404 418/441/404 440/466/404 444/459/404 +f 441/467/405 419/442/405 413/438/405 445/461/405 +f 438/468/406 446/469/406 444/459/406 440/466/406 +f 445/461/407 447/470/407 439/471/407 441/467/407 +f 434/472/408 446/469/408 438/468/408 436/473/408 +f 439/471/409 447/470/409 435/474/409 437/475/409 +f 432/476/410 448/477/410 446/469/410 434/472/410 +f 447/470/411 449/478/411 433/479/411 435/474/411 +f 430/463/412 448/477/412 432/476/412 450/480/412 +f 433/479/413 449/478/413 431/464/413 451/481/413 +f 414/414/414 430/463/414 450/480/414 416/452/414 +f 451/481/415 431/464/415 415/416/415 417/453/415 +f 312/398/416 448/482/416 430/483/416 382/400/416 +f 431/484/417 449/485/417 313/399/417 383/401/417 +f 312/398/418 442/455/418 446/486/418 448/482/418 +f 447/487/419 443/457/419 313/399/419 449/485/419 +f 442/455/420 444/454/420 446/486/420 +f 447/487/421 445/456/421 443/457/421 +f 416/452/422 450/480/422 452/488/422 476/489/422 +f 453/490/423 451/481/423 417/453/423 477/491/423 +f 450/480/424 432/476/424 462/492/424 452/488/424 +f 463/493/425 433/479/425 451/481/425 453/490/425 +f 432/476/426 434/472/426 460/494/426 462/492/426 +f 461/495/427 435/474/427 433/479/427 463/493/427 +f 434/472/428 436/473/428 458/496/428 460/494/428 +f 459/497/429 437/475/429 435/474/429 461/495/429 +f 436/473/430 438/468/430 456/498/430 458/496/430 +f 457/499/431 439/471/431 437/475/431 459/497/431 +f 438/468/432 440/466/432 454/500/432 456/498/432 +f 455/501/433 441/467/433 439/471/433 457/499/433 +f 440/466/434 418/441/434 474/502/434 454/500/434 +f 475/503/435 419/442/435 441/467/435 455/501/435 +f 428/450/436 416/452/436 476/489/436 464/504/436 +f 477/491/437 417/453/437 429/451/437 465/505/437 +f 426/448/438 428/450/438 464/504/438 466/506/438 +f 465/505/439 429/451/439 427/449/439 467/507/439 +f 424/446/440 426/448/440 466/506/440 468/508/440 +f 467/507/441 427/449/441 425/447/441 469/509/441 +f 422/444/442 424/446/442 468/508/442 470/510/442 +f 469/509/443 425/447/443 423/445/443 471/511/443 +f 420/440/444 422/444/444 470/510/444 472/512/444 +f 471/511/445 423/445/445 421/443/445 473/513/445 +f 418/441/446 420/440/446 472/512/446 474/502/446 +f 473/513/447 421/443/447 419/442/447 475/503/447 +f 458/496/448 456/498/448 480/514/448 478/515/448 +f 481/516/449 457/499/449 459/497/449 479/517/449 +f 478/515/450 480/514/450 482/518/450 484/519/450 +f 483/520/451 481/516/451 479/517/451 485/521/451 +f 484/519/452 482/518/452 488/522/452 486/523/452 +f 489/524/453 483/520/453 485/521/453 487/525/453 +f 486/523/454 488/522/454 490/526/454 492/527/454 +f 491/528/455 489/524/455 487/525/455 493/529/455 +f 464/504/456 476/489/456 486/523/456 492/527/456 +f 487/525/457 477/491/457 465/505/457 493/529/457 +f 452/488/458 484/519/458 486/523/458 476/489/458 +f 487/525/459 485/521/459 453/490/459 477/491/459 +f 452/488/460 462/492/460 478/515/460 484/519/460 +f 479/517/461 463/493/461 453/490/461 485/521/461 +f 458/496/462 478/515/462 462/492/462 460/494/462 +f 463/493/463 479/517/463 459/497/463 461/495/463 +f 454/500/464 474/502/464 480/514/464 456/498/464 +f 481/516/465 475/503/465 455/501/465 457/499/465 +f 472/512/466 482/518/466 480/514/466 474/502/466 +f 481/516/467 483/520/467 473/513/467 475/503/467 +f 470/510/468 488/522/468 482/518/468 472/512/468 +f 483/520/469 489/524/469 471/511/469 473/513/469 +f 468/508/470 490/526/470 488/522/470 470/510/470 +f 489/524/471 491/528/471 469/509/471 471/511/471 +f 466/506/472 492/527/472 490/526/472 468/508/472 +f 491/528/473 493/529/473 467/507/473 469/509/473 +f 464/504/474 492/527/474 466/506/474 +f 467/507/475 493/529/475 465/505/475 +f 392/433/476 390/437/476 504/530/476 502/531/476 +f 505/532/477 391/439/477 393/435/477 503/533/477 +f 394/429/478 392/433/478 502/531/478 500/534/478 +f 503/533/479 393/435/479 395/431/479 501/535/479 +f 396/425/480 394/429/480 500/534/480 498/536/480 +f 501/535/481 395/431/481 397/427/481 499/537/481 +f 398/538/482 396/425/482 498/536/482 496/539/482 +f 499/537/483 397/427/483 399/540/483 497/541/483 +f 400/542/484 398/538/484 496/539/484 494/543/484 +f 497/541/485 399/540/485 401/544/485 495/545/485 +f 388/546/486 400/542/486 494/543/486 506/547/486 +f 495/545/487 401/544/487 389/548/487 507/549/487 +f 494/543/488 502/531/488 504/530/488 506/547/488 +f 505/532/489 503/533/489 495/545/489 507/549/489 +f 494/543/490 496/539/490 500/534/490 502/531/490 +f 501/535/491 497/541/491 495/545/491 503/533/491 +f 496/539/492 498/536/492 500/534/492 +f 501/535/493 499/537/493 497/541/493 +f 314/380/494 382/400/494 388/550/494 506/551/494 +f 389/548/495 383/552/495 315/553/495 507/549/495 +f 314/554/496 506/547/496 504/530/496 322/555/496 +f 505/532/497 507/549/497 315/553/497 323/556/497 +f 320/458/498 322/555/498 504/530/498 390/437/498 +f 505/532/499 323/556/499 321/460/499 391/439/499 diff --git a/src/examples/assets/modules/monkey_m.mtl b/src/examples/assets/modules/monkey_m.mtl new file mode 100644 index 0000000..1666a28 --- /dev/null +++ b/src/examples/assets/modules/monkey_m.mtl @@ -0,0 +1,13 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.001 +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 + diff --git a/src/examples/example01_loadObj/index.html b/src/examples/example01_loadObj/index.html new file mode 100644 index 0000000..629f7f6 --- /dev/null +++ b/src/examples/example01_loadObj/index.html @@ -0,0 +1,20 @@ + + + + + + + ABI Three.js examples + + + +
    + + + + diff --git a/src/examples/example01_loadObj/index.js b/src/examples/example01_loadObj/index.js new file mode 100644 index 0000000..8897cd8 --- /dev/null +++ b/src/examples/example01_loadObj/index.js @@ -0,0 +1,44 @@ +import * as ABIThree from "../../ABIThreeLibrary/main"; +import "../assets/css/style.css"; +import monkey_g from "../assets/modules/monkey_g.obj"; + +let container = document.getElementById("container_root"); +let progressBar = document.getElementById("progressBar"); +let allScenes = new ABIThree.Scenes(container); + +const scene1 = allScenes.getScene(); + +// load obj module +ABIThree.loadObjFile(monkey_g, scene1.scene, scene1.camera, null, progressBar); + +const gui = scene1.gui; +const controler_flag = { + cameraOpen: false, +}; + +gui.add(controler_flag, "cameraOpen").onChange((v) => { + if (v) { + let camerafolder = gui.addFolder("camera"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value") + .name("x"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "y"), "value") + .name("y"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "z"), "value") + .name("z"); + } else { + for (let item of gui.foldersRecursive()) { + if (item._title === "camera") { + item.destroy(); + } + } + } +}); + +gui + .addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value") + .name("background_color"); + +allScenes.animate(); diff --git a/src/examples/example02_loadMtl/index.html b/src/examples/example02_loadMtl/index.html new file mode 100644 index 0000000..424ebf8 --- /dev/null +++ b/src/examples/example02_loadMtl/index.html @@ -0,0 +1,19 @@ + + + + + + + ABI Three.js examples + + + +
    + + + diff --git a/src/examples/example02_loadMtl/index.js b/src/examples/example02_loadMtl/index.js new file mode 100644 index 0000000..a0b188e --- /dev/null +++ b/src/examples/example02_loadMtl/index.js @@ -0,0 +1,50 @@ +import * as ABIThree from "../../ABIThreeLibrary/main"; +import "../assets/css/style.css"; +import monkey_g from "../assets/modules/monkey_g.obj"; +import monkey_m from "../assets/modules/monkey_m.mtl"; + +let container = document.getElementById("container_root"); +let progressBar = document.getElementById("progressBar"); +let allScenes = new ABIThree.Scenes(container); + +const scene1 = allScenes.getScene(); + +ABIThree.loadMTLFile( + monkey_m, + monkey_g, + scene1.scene, + scene1.camera, + progressBar +); + +const gui = scene1.gui; +const controler_flag = { + cameraOpen: false, +}; + +gui.add(controler_flag, "cameraOpen").onChange((v) => { + if (v) { + let camerafolder = gui.addFolder("camera"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value") + .name("x"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "y"), "value") + .name("y"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "z"), "value") + .name("z"); + } else { + for (let item of gui.foldersRecursive()) { + if (item._title === "camera") { + item.destroy(); + } + } + } +}); + +gui + .addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value") + .name("background_color"); + +allScenes.animate(); diff --git a/src/examples/example03_loadGltf/index.html b/src/examples/example03_loadGltf/index.html new file mode 100644 index 0000000..9e24cf8 --- /dev/null +++ b/src/examples/example03_loadGltf/index.html @@ -0,0 +1,18 @@ + + + + + + + ABI Three.js examples + + + +
    + + diff --git a/src/examples/example03_loadGltf/index.js b/src/examples/example03_loadGltf/index.js new file mode 100644 index 0000000..c700b6f --- /dev/null +++ b/src/examples/example03_loadGltf/index.js @@ -0,0 +1,45 @@ +import * as ABIThree from "../../ABIThreeLibrary/main"; +import "../assets/css/style.css"; +import monkey from "../assets/modules/monkey.glb"; +// import { Something } from "./assets/modules/model.js"; +// import "./assets/modules/testglb.js"; + +let container = document.getElementById("container_root"); +let progressBar = document.getElementById("progressBar"); +let allScenes = new ABIThree.Scenes(container, 1); + +const scene1 = allScenes.getScene(); + +ABIThree.loadGLTFFile(monkey, scene1.scene, scene1.camera, progressBar); + +const gui = scene1.gui; +const controler_flag = { + cameraOpen: false, +}; + +gui.add(controler_flag, "cameraOpen").onChange((v) => { + if (v) { + let camerafolder = gui.addFolder("camera"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value") + .name("x"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "y"), "value") + .name("y"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "z"), "value") + .name("z"); + } else { + for (let item of gui.foldersRecursive()) { + if (item._title === "camera") { + item.destroy(); + } + } + } +}); + +gui + .addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value") + .name("background_color"); + +allScenes.animate(); diff --git a/src/examples/example04_loadDicom/dicom.json b/src/examples/example04_loadDicom/dicom.json new file mode 100644 index 0000000..85114d2 --- /dev/null +++ b/src/examples/example04_loadDicom/dicom.json @@ -0,0 +1,22 @@ +[ + "brain_001.dcm", + "brain_002.dcm", + "brain_003.dcm", + "brain_004.dcm", + "brain_005.dcm", + "brain_006.dcm", + "brain_007.dcm", + "brain_008.dcm", + "brain_009.dcm", + "brain_010.dcm", + "brain_011.dcm", + "brain_012.dcm", + "brain_013.dcm", + "brain_014.dcm", + "brain_015.dcm", + "brain_016.dcm", + "brain_017.dcm", + "brain_018.dcm", + "brain_019.dcm", + "brain_020.dcm" +] \ No newline at end of file diff --git a/src/examples/example04_loadDicom/index.html b/src/examples/example04_loadDicom/index.html new file mode 100644 index 0000000..9e24cf8 --- /dev/null +++ b/src/examples/example04_loadDicom/index.html @@ -0,0 +1,18 @@ + + + + + + + ABI Three.js examples + + + +
    + + diff --git a/src/examples/example04_loadDicom/index.js b/src/examples/example04_loadDicom/index.js new file mode 100644 index 0000000..63b3e2a --- /dev/null +++ b/src/examples/example04_loadDicom/index.js @@ -0,0 +1,59 @@ +import * as ABIThree from "../../ABIThreeLibrary/main"; +import "../assets/css/style.css"; +import data from "./dicom.json"; +// import { readFileList } from "../ABIThreeLibrary/utils/readFiles"; + +let container = document.getElementById("container_root"); +let allScenes = new ABIThree.Scenes(container, 1); + +const scene1 = allScenes.getScene(); + +// console.log(z); +let dicom_file_paths = []; +for (let item of data) { + dicom_file_paths.push(require("../assets/images/dicom1/" + item)); +} + +let imageLoader = new ABIThree.ImageLoader( + "Image", + dicom_file_paths, + scene1.scene, + scene1.camera, + scene1.elem, + scene1.gui, + this +); + +imageLoader.viewImage(); + +const gui = scene1.gui; +const controler_flag = { + cameraOpen: false, +}; + +gui.add(controler_flag, "cameraOpen").onChange((v) => { + if (v) { + let camerafolder = gui.addFolder("camera"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "x"), "value") + .name("x"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "y"), "value") + .name("y"); + camerafolder + .add(new ABIThree.CameraHelper(scene1.camera.position, "z"), "value") + .name("z"); + } else { + for (let item of gui.foldersRecursive()) { + if (item._title === "camera") { + item.destroy(); + } + } + } +}); + +gui + .addColor(new ABIThree.ColorGUIHelper(scene1.scene, "background"), "value") + .name("background_color"); + +allScenes.animate(); diff --git a/src/examples/example04_loadDicom/readFile.js b/src/examples/example04_loadDicom/readFile.js new file mode 100644 index 0000000..f57b814 --- /dev/null +++ b/src/examples/example04_loadDicom/readFile.js @@ -0,0 +1,40 @@ +var fs = require("fs"); +var path = require("path"); +var exec = require("child_process").exec; + +function readFileFullPath(dir, filesList = []) { + const files = fs.readdirSync(dir); + // console.log(files); + files.forEach((item, index) => { + var fullPath = path.join(dir, item); + const stat = fs.statSync(fullPath); + if (stat.isDirectory()) { + readFileList(path.join(dir, item), filesList); //递归读取文件 + } else { + filesList.push(fullPath); + } + }); + return filesList; +} + +function readFileName(dir, filesList = []) { + filesList = fs.readdirSync(dir); + // filesList = files; + // console.log(filesList); + return filesList; +} + +function writeJson() { + const filesList = readFileName("../assets/images/dicom1"); + // const filesList = readFileName("../assets/images/dicom4/series-00002"); + console.log(filesList); + const data = JSON.stringify(filesList, null, 4); + try { + fs.writeFileSync("dicom.json", data); + console.log("JSON data is saved."); + } catch (error) { + console.error(err); + } +} + +writeJson(); diff --git a/src/examples/example05_multiple_scenes/dicom.json b/src/examples/example05_multiple_scenes/dicom.json new file mode 100644 index 0000000..f4063b7 --- /dev/null +++ b/src/examples/example05_multiple_scenes/dicom.json @@ -0,0 +1,22 @@ +[ + "brain_001.dcm", + "brain_002.dcm", + "brain_003.dcm", + "brain_004.dcm", + "brain_005.dcm", + "brain_006.dcm", + "brain_007.dcm", + "brain_008.dcm", + "brain_009.dcm", + "brain_010.dcm", + "brain_011.dcm", + "brain_012.dcm", + "brain_013.dcm", + "brain_014.dcm", + "brain_015.dcm", + "brain_016.dcm", + "brain_017.dcm", + "brain_018.dcm", + "brain_019.dcm", + "brain_020.dcm" +] diff --git a/src/examples/example05_multiple_scenes/index.html b/src/examples/example05_multiple_scenes/index.html new file mode 100644 index 0000000..27f5999 --- /dev/null +++ b/src/examples/example05_multiple_scenes/index.html @@ -0,0 +1,12 @@ + + + + + + + example_05_multiple_scenes + + +
    + + diff --git a/src/examples/example05_multiple_scenes/index.js b/src/examples/example05_multiple_scenes/index.js new file mode 100644 index 0000000..2a6faba --- /dev/null +++ b/src/examples/example05_multiple_scenes/index.js @@ -0,0 +1,75 @@ +import * as ABIThree from "../../ABIThreeLibrary/main"; +import data from "./dicom.json"; +import monkey from "../assets/modules/monkey.glb"; +import "./mystyle.css"; + +const container = document.querySelector("#container_root"); +const allScenes = new ABIThree.Scenes(container, 3); +let dicom_file_paths = []; +for (let item of data) { + dicom_file_paths.push(require("../assets/images/dicom1/" + item)); +} + +const scene1 = allScenes.getScene(0); +const scene2 = allScenes.getScene(1); +const scene3 = allScenes.getScene(2); + +const gui = scene3.gui; +scene3.camera.position.set(0, 0, 500); +scene3.camera.far = 1000; + +let imageLoader = new ABIThree.ImageLoader( + "Image", + dicom_file_paths, + scene3.scene, + scene3.camera, + scene3.elem, + gui, + this +); +imageLoader.viewImage(); + +gui.add({ cameraOpen: false }, "cameraOpen").onChange((v) => { + if (v) { + let camerafolder = gui.addFolder("camera"); + camerafolder + .add(new ABIThree.CameraHelper(scene3.camera.position, "x"), "value") + .name("x"); + camerafolder + .add(new ABIThree.CameraHelper(scene3.camera.position, "y"), "value") + .name("y"); + camerafolder + .add(new ABIThree.CameraHelper(scene3.camera.position, "z"), "value") + .name("z"); + } else { + for (let item of gui.foldersRecursive()) { + if (item._title === "camera") { + item.destroy(); + } + } + } +}); + +if (scene3) { + ABIThree.createTestMesh(scene1); +} +ABIThree.loadGLTFFile(monkey, scene2.scene, scene2.camera); +console.log(scene2.scene); + +const gui2 = scene2.gui; +const gui3 = scene1.gui; + +const zz = gui3.addFolder("zz"); +zz.add({ Slider: 0 }, "Slider", 0, 1).disable().enable(); + +const color = gui2.addFolder("color"); +const colorString = (str) => color.addColor({ x: str }, "x").name(`"${str}"`); + +colorString("#aa00Ff"); +colorString("aa00Ff"); +colorString("0xaa00Ff"); +colorString("#a0f"); +colorString("a0f"); +colorString("rgb(170, 0, 255)"); + +allScenes.animate(); diff --git a/src/examples/example05_multiple_scenes/mystyle.css b/src/examples/example05_multiple_scenes/mystyle.css new file mode 100644 index 0000000..b6a71da --- /dev/null +++ b/src/examples/example05_multiple_scenes/mystyle.css @@ -0,0 +1,9 @@ +html, +body { + margin: 0; +} + +#container_root { + width: 100vw; + height: 100vh; +} diff --git a/src/examples/example06_testgui/index.html b/src/examples/example06_testgui/index.html new file mode 100644 index 0000000..fc714c6 --- /dev/null +++ b/src/examples/example06_testgui/index.html @@ -0,0 +1,16 @@ + + + + + + + example_06_testgui + + +
    +
    +
    +
    +
    + + diff --git a/src/examples/example06_testgui/index.js b/src/examples/example06_testgui/index.js new file mode 100644 index 0000000..c8d5631 --- /dev/null +++ b/src/examples/example06_testgui/index.js @@ -0,0 +1,43 @@ +import "./mystyle.css"; +import { GUI } from "lil-gui"; + +const container = document.getElementById("container_root"); +const a = document.getElementById("a"); +const b = document.getElementById("b"); +const c = document.getElementById("c"); +const d = document.createElement("div"); +const e = document.createElement("div"); +container.appendChild(d); +container.appendChild(e); + +for (let i = 0; i < 3; i++) { + const elem = document.createElement("div"); + container.appendChild(elem); + const gui_elem = new GUI({ container: elem }); + const zg = gui_elem.addFolder("zz"); + zg.add({ Slider: 0 }, "Slider", 0, 1).disable().enable(); +} + +const gui1 = new GUI({ container: a }); +const gui2 = new GUI({ container: b }); +const gui3 = new GUI({ container: c }); +const gui4 = new GUI({ container: d }); +const gui5 = new GUI({ container: e }); + +const zz = gui1.addFolder("zz"); +zz.add({ Slider: 0 }, "Slider", 0, 1).disable().enable(); +const color = gui2.addFolder("color"); +const colorString = (str) => color.addColor({ x: str }, "x").name(`"${str}"`); + +colorString("#aa00Ff"); +colorString("aa00Ff"); +colorString("0xaa00Ff"); +colorString("#a0f"); +colorString("a0f"); +colorString("rgb(170, 0, 255)"); + +const z4 = gui4.addFolder("zz"); +z4.add({ Slider: 0 }, "Slider", 0, 1).disable().enable(); + +const z5 = gui5.addFolder("zz"); +z5.add({ haha: 0 }, "haha", 0, 1).disable().enable(); diff --git a/src/examples/example06_testgui/mystyle.css b/src/examples/example06_testgui/mystyle.css new file mode 100644 index 0000000..4beff67 --- /dev/null +++ b/src/examples/example06_testgui/mystyle.css @@ -0,0 +1,16 @@ +html, +body { + margin: 0; +} + +#container_root { + width: 100vw; + height: 100vh; + display: flex; +} +#container_root > div { + width: 300px; + height: 300px; + background-color: black; + margin: 10px; +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..6e762ff --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,138 @@ +const path = require("path"); +const glob = require("glob"); +// add webpack plugin, in order to help run serve +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const { CleanWebpackPlugin } = require("clean-webpack-plugin"); + +const setMpa = () => { + const entry = {}; //entry obj + const htmlWebpackPlugins = []; //html-webpack-plugins store in here + //get each single index file + const entryFiles = glob.sync( + path.join(__dirname, "./src/examples/*/index.js") + ); + + Object.keys(entryFiles).map((index) => { + const entryFil = entryFiles[index]; + // get the folder name + const match = entryFil.match(/src\/examples\/(.*)\/index\.js/); + const pathname = match && match[1]; + //config the entry files + entry[pathname] = entryFil; + //config html-webpack-plugin + htmlWebpackPlugins.push( + new HtmlWebpackPlugin({ + template: path.join(__dirname, `src/examples/${pathname}/index.html`), + filename: `${pathname}.html`, + chunks: [pathname], + hash: true, + inject: true, + minify: { + html5: true, + collapseWhitespace: true, + preserveLineBreaks: false, + minifyJS: true, + minifyCSS: true, + removeComments: false, + }, + }) + ); + }); + + return { + entry, + htmlWebpackPlugins, + }; +}; + +const { entry, htmlWebpackPlugins } = setMpa(); +// console.log(entry); +module.exports = { + mode: "development", + // mode: "production", + // for build + entry: entry, + output: { + path: path.join(__dirname, "dist"), + filename: "[name].ABI.js", + }, + plugins: [new CleanWebpackPlugin()].concat(htmlWebpackPlugins), + optimization: { + // 为了方便阅读理解打包后的代码,关闭代码压缩和模块合并 + // minimize: false, + // concatenateModules: false, + minimize: true, + concatenateModules: true, + }, + performance: { + hints: false, + maxEntrypointSize: 512000, + maxAssetSize: 512000, + }, + + // for dev + // entry: { + // example04: path.join(__dirname, "./src/example04/index.js"), + // }, + // output: { + // path: path.join(__dirname, "./dist"), + // filename: "[name].ABI.js", + // }, + // plugins: [ + // new HtmlWebpackPlugin({ + // chunks: ["example04"], + // template: "./src/example04/index.html", + // // when the single file here must be index.html, if the file name is not index.html, the root will be public folder + // filename: "index.html", + // hash: true, + // minify: { + // removeComments: true, + // collapseWhitespace: true, + // }, + // }), + // ], + + module: { + rules: [ + { + test: /\.css$/i, + use: ["style-loader", "css-loader", "postcss-loader"], + }, + { test: /\.less$/i, use: ["style-loader", "css-loader", "less-loader"] }, + { + test: /\.scss$/i, + use: ["style-loader", "css-loader", "sass-loader"], + }, + { + test: /\.js$/i, + use: "babel-loader", + exclude: /node_modules/, + }, + { + test: /\.(png|svg|jpe?g|bin|gif|glb|gltf|obj|mtl)$/, + loader: "file-loader", + options: { + esModule: false, + }, + }, + { + test: /\.(dcm)(\?.*)?$/, + use: [ + { + loader: "url-loader", + options: { + limit: 1024 * 4, + esModule: false, + fallback: { + loader: require.resolve("file-loader"), + options: { + outputPath: "images", + }, + }, + }, + }, + ], + }, + ], + }, +}; diff --git a/webpack.config.production.js b/webpack.config.production.js new file mode 100644 index 0000000..7eb8ee3 --- /dev/null +++ b/webpack.config.production.js @@ -0,0 +1,66 @@ +const path = require("path"); + +module.exports = { + // mode: "development", + mode: "production", + optimization: { + minimize: true, + concatenateModules: true, + }, + performance: { + hints: false, + maxEntrypointSize: 512000, + maxAssetSize: 512000, + }, + + entry: "./src/ABIThreeLibrary/main.js", + output: { + path: path.join(__dirname, "build"), + filename: "ABIThree.js", + library: "ABITHREE", + libraryTarget: "umd", + }, + module: { + rules: [ + { + test: /\.css$/i, + use: ["style-loader", "css-loader", "postcss-loader"], + }, + { test: /\.less$/i, use: ["style-loader", "css-loader", "less-loader"] }, + { + test: /\.scss$/i, + use: ["style-loader", "css-loader", "sass-loader"], + }, + { + test: /\.js$/i, + use: "babel-loader", + exclude: /node_modules/, + }, + { + test: /\.(png|svg|jpe?g|bin|gif|glb|gltf|obj|mtl)$/, + loader: "file-loader", + options: { + esModule: false, + }, + }, + { + test: /\.(dcm)(\?.*)?$/, + use: [ + { + loader: "url-loader", + options: { + limit: 1024 * 4, + esModule: false, + fallback: { + loader: require.resolve("file-loader"), + options: { + outputPath: "images", + }, + }, + }, + }, + ], + }, + ], + }, +};

    >>0){$e=37;break e}if((Me=0|I(P,C))>>>0>107374182){$e=39;break e}for(Ee=40*Me|0,(Te=0==(0|De))?C=1:(D=0|Ar(0|(D=0|gr(0|D,((0|D)<0)<<31>>31|0,1,0)),0|S,1),R=0|Ar(0|(R=0|gr(0|R,((0|R)<0)<<31>>31|0,1,0)),0|S,1),e=e+-1|0,n=n+-1|0,C=3),l[(Se=Be+24|0)>>2]=C,se=(se=0|l[Oe>>2])>>>0>>0?se:n,le=(le=0|l[Fe>>2])>>>0>>0?le:e,ce=0!=(0|Me),he=0==(0|Me),ue=1<>2]),((0|C)<0)<<31>>31|0)),0|S,0|k),P=0|xr(0|(P=0|gr(0|Pe,0|Le,0|(P=0|l[qe>>2]),((0|P)<0)<<31>>31|0)),0|S,0|k),F=0|xr(0|(F=0|gr(0|Pe,0|Le,0|(F=0|l[Je>>2]),((0|F)<0)<<31>>31|0)),0|S,0|k),U=0,G=N=0|l[Xe>>2],N=((0|N)<0)<<31>>31,j=Ie,H=Ce,z=k):(U=oe+1|0,C=0|l[Qe>>2],C=0|xr(0|(C=0|gr(0|(H=0|_r(0|xe,0|Ae,0|(H=0|Sr(1&U|0,0,0|k)),0|S)),0|(j=S),0|C,((0|C)<0)<<31>>31|0)),0|S,0|ke),P=0|l[qe>>2],P=0|xr(0|(P=0|gr(0|(F=0|_r(0|xe,0|Ae,0|(N=0|Sr(U>>>1|0,0,0|k)),0|(G=S))),0|S,0|P,((0|P)<0)<<31>>31|0)),0|S,0|ke),F=0|xr(0|(F=0|gr(0|H,0|j,0|(F=0|l[Je>>2]),((0|F)<0)<<31>>31|0)),0|S,0|ke),G=0|_r(0|(j=0|l[Xe>>2]),((0|j)<0)<<31>>31|0,0|N,0|G),N=S,j=be,H=we,z=ke),l[ae+16>>2]=U,l[ae>>2]=C,l[(re=ae+4|0)>>2]=P,l[(ie=ae+8|0)>>2]=F,F=0|gr(0|G,0|N,-1,-1),F=0|xr(0|(F=0|gr(0|F,0|S,0|j,0|H)),0|S,0|z),l[(ne=ae+12|0)>>2]=F,F=0|Wr[15&Ze](U),nt=.00048828125*+(0|l[O+4>>2])+1,nt=+cr(1,(0|l[Ge>>2])+F-(0|l[O>>2])|0)*nt*i,m[ae+32>>2]=nt,l[ae+28>>2]=(0|l[O>>2])-1+(0|l[We>>2]),ce&0==(0|(P=0|l[(F=ae+20|0)>>2]))){if(C=0|Ne(Ee),l[F>>2]=C,!C){$e=48;break e}Tr(0|C,0,0|Ee),C=ae+24|0,$e=54}else if((0|l[(C=ae+24|0)>>2])>>>0>>0){if(!(P=0|Ue(P,Ee))){$e=53;break e}l[F>>2]=P,Tr(P+($e=0|l[C>>2])|0,0,Ee-$e|0),$e=54}if(54==(0|$e)&&($e=0,l[C>>2]=Ee),!he)for(te=0,Z=0|l[F>>2];;){X=(Q=(((te>>>0)%((Y=0|l[Re>>2])>>>0)|0)<>>0)/(Y>>>0)|0)<(0|(q=0|l[ae>>2]))?Q:q,l[Z>>2]=q,Q=(0|Y)>(0|(Q=0|l[re>>2]))?Y:Q,l[(Y=Z+4|0)>>2]=Q,F=(0|X)<(0|(F=0|l[ie>>2]))?X:F,l[(X=Z+8|0)>>2]=F,P=(0|J)<(0|(P=0|l[ne>>2]))?J:P,l[(J=Z+12|0)>>2]=P,q=q>>se<>le<>31|0)),0|S,0|se),P=0|xr(0|(P=0|gr(0|ge,0|_e,0|P,((0|P)<0)<<31>>31|0)),0|S,0|le),F=(F<>se,l[(K=Z+16|0)>>2]=F,P=(P<>le,l[(j=Z+20|0)>>2]=P,$=0|I(F,P),N=0|I($,o),G=0|l[(ee=Z+24|0)>>2];do{if(0==(0|G)&0!=(0|$)){if(C=0|Ne(N),l[ee>>2]=C,!C){t=0,$e=100;break e}Tr(0|C,0,0|N),C=Z+28|0,$e=64}else{if(N>>>0<=(0|l[(C=Z+28|0)>>2])>>>0)break;if(!(P=0|Ue(G,N))){$e=63;break e}l[ee>>2]=P,Tr(P+($e=0|l[C>>2])|0,0,N-$e|0),$e=64}}while(0);if(64==(0|$e)&&($e=0,l[C>>2]=N,F=0|l[K>>2],P=0|l[j>>2]),C=(C=0|l[(G=Z+32|0)>>2])?0|hn(C,F,P,a):0|ln(F,P,a),l[G>>2]=C,C||me(a,2,19944,x),P=0|l[(G=Z+36|0)>>2],F=0|l[K>>2],C=0|l[j>>2],C=P?0|hn(P,F,C,a):0|ln(F,C,a),l[G>>2]=C,C||me(a,2,19966,A),0|$){W=0;do{U=(H=(((W>>>0)%((z=0|l[K>>2])>>>0)|0)<>>0)/(z>>>0)|0)<>2],0|l[(C=j+(56*W|0)|0)>>2]){F=0|l[(P=j+(56*W|0)+32|0)>>2],N=44+(G=C=j+(56*W|0)+8|0)|0;do{l[G>>2]=0,G=G+4|0}while((0|G)<(0|N));l[P>>2]=F}else{if(N=0|Ne(8192),l[C>>2]=N,!N){t=0,$e=100;break e}if(l[j+(56*W|0)+32>>2]=8192,N=0|je(10,32),l[j+(56*W|0)+4>>2]=N,!N){t=0,$e=100;break e}l[j+(56*W|0)+52>>2]=10,C=j+(56*W|0)+8|0}N=0|l[Z>>2],l[C>>2]=(0|H)>(0|N)?H:N,H=0|l[Y>>2],l[j+(56*W|0)+12>>2]=(0|z)>(0|H)?z:H,z=0|l[X>>2],l[j+(56*W|0)+16>>2]=(0|U)<(0|z)?U:z,U=0|l[J>>2],l[j+(56*W|0)+20>>2]=(0|V)<(0|U)?V:U}else{if(P=0|l[ee>>2],0==(0|l[(C=P+(52*W|0)+4|0)>>2])&&(j=0|je(100,24),l[C>>2]=j,0==(0|j))){t=0,$e=100;break e}if(0==(0|l[(C=P+(52*W|0)+8|0)>>2])&&(j=0|je(100,24),l[C>>2]=j,0==(0|j))){t=0,$e=100;break e}if(F=(0|H)>(0|(F=0|l[Z>>2]))?H:F,l[P+(52*W|0)+12>>2]=F,z=(0|z)>(0|(G=0|l[Y>>2]))?z:G,l[P+(52*W|0)+16>>2]=z,G=(0|U)<(0|(G=0|l[X>>2]))?U:G,l[P+(52*W|0)+20>>2]=G,V=(0|V)<(0|(U=0|l[J>>2]))?V:U,l[P+(52*W|0)+24>>2]=V,(F=0|I(V-z|0,G-F<<2))>>>0<=(0|l[(G=P+(52*W|0)+36|0)>>2])>>>0)break;if(0|(C=0|l[(P=P+(52*W|0)|0)>>2])&&Ve(C+-1|0),C=0|Ne(1|F),l[P>>2]=C,!C){$e=87;break e}l[G>>2]=F,r[C>>0]=0,l[P>>2]=1+(0|l[P>>2])}}while(0);W=W+1|0}while(W>>>0<$>>>0)}if((te=te+1|0)>>>0>=Me>>>0)break;Z=Z+40|0}if(O=O+8|0,(oe=oe+1|0)>>>0>=(0|l[Se>>2])>>>0)break;ae=ae+36|0}if((De=De+1|0)>>>0>=(0|l[Ye>>2])>>>0)break;Be=Be+136|0}if((t=t+1|0)>>>0>=(0|l[u>>2])>>>0){t=1,$e=100;break}L=L+1080|0,Qe=Qe+52|0,B=B+52|0,C=0|l[f>>2],k=0|l[d>>2],P=0|l[et>>2],e=0|l[Ke>>2]}switch(0|$e){case 12:return me(a,1,19770,M),w=T,0;case 14:return me(a,1,19770,E),w=T,0;case 22:l[R>>2]=0,l[P>>2]=0,l[k>>2]=0;break;case 31:return me(a,1,19803,p),Ve(0|l[e>>2]),l[e>>2]=0,l[C>>2]=0,w=T,0;case 37:return me(a,1,19770,g),w=T,0;case 39:return me(a,1,19770,_),w=T,0;case 48:return me(a,1,19843,y),w=T,0;case 53:return me(a,1,19843,v),Ve(0|l[F>>2]),l[F>>2]=0,l[C>>2]=0,w=T,0;case 63:return Ve(0|l[ee>>2]),l[ee>>2]=0,l[C>>2]=0,me(a,1,19886,b),w=T,0;case 87:return l[G>>2]=0,w=T,0;case 100:return w=T,0|t}return me(a,1,19770,tt),w=T,0}function nn(e,t,n,i,o,a){t|=0,n|=0,i|=0,o|=0,a|=0;var s,c,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0;if(c=w,w=w+16|0,s=c,!(0|l[8+(e|=0)>>2])){if(l[e+36>>2]=t,h=0|l[76+(0|l[(x=e+28|0)>>2])>>2],l[(S=e+32|0)>>2]=h+(5640*t|0),b=e+20|0,!(A=0==(0|a))){if(u=0|l[20+(0|l[l[b>>2]>>2])>>2],m=0|l[h+(5640*t|0)+5584>>2],0|l[(g=u+16|0)>>2]){f=0|l[u+24>>2],p=0|l[(h=a+88|0)>>2],u=0,d=0;do{v=f+(136*d|0)+16|0,l[p+(592*t|0)+20+(d<<2)>>2]=l[v>>2],y=f+(136*d|0)+20|0,l[p+(592*t|0)+152+(d<<2)>>2]=l[y>>2],u=(0|I(0|l[y>>2],0|l[v>>2]))+u|0,l[p+(592*t|0)+284+(d<<2)>>2]=l[m+812+(d<<2)>>2],l[p+(592*t|0)+416+(d<<2)>>2]=l[m+944+(d<<2)>>2],d=d+1|0}while(d>>>0<(0|l[g>>2])>>>0)}else u=0,h=a+88|0;if(v=0|je(0|I(0|I(0|l[a+52>>2],u),0|l[a+56>>2]),32),l[(0|l[h>>2])+(592*t|0)+548>>2]=v,!v)return w=c,0}if(h=0|l[l[b>>2]>>2],0|l[(v=h+16|0)>>2])for(p=0|l[S>>2],t=0,_=u=0|l[h+20>>2],y=0|l[p+5584>>2];;){if(m=0|l[_+32>>2],h=0!=(0|(g=0|I((0|l[_+12>>2])-(0|l[_+4>>2])|0,(0|l[_+8>>2])-(0|l[_>>2])|0))),1==(0|l[y+20>>2])){if(h)for(f=y+1076|0,d=0,h=m;l[h>>2]=(0|l[h>>2])-(0|l[f>>2]),(0|(d=d+1|0))!=(0|g);)h=h+4|0}else if(h)for(f=y+1076|0,h=m,d=0;l[h>>2]=(0|l[h>>2])-(0|l[f>>2])<<11,(0|(d=d+1|0))!=(0|g);)h=h+4|0;if((t=t+1|0)>>>0>=(h=0|l[v>>2])>>>0)break;_=_+52|0,y=y+1080|0}else u=0|l[h+20>>2],p=0|l[S>>2],h=0;m=0|I((0|l[u+12>>2])-(0|l[u+4>>2])|0,(0|l[u+8>>2])-(0|l[u>>2])|0);e:do{switch(0|l[p+16>>2]){case 0:break;case 2:if(0|l[p+5608>>2]){if(!(f=0|Ne(h<<2)))return w=c,0;if(h=0|l[v>>2])for(d=0;l[f+(d<<2)>>2]=l[u+32>>2],(0|(d=d+1|0))!=(0|h);)u=u+52|0;else h=0;if(v=0==(0|Bt(0|l[5608+(0|l[S>>2])>>2],m,f,h,0|l[32+(0|l[24+(0|l[e+24>>2])>>2])>>2])),Ve(f),v)return w=c,0}break;default:if(d=0|l[u+32>>2],f=0|l[u+84>>2],h=0|l[u+136>>2],0|l[20+(0|l[p+5584>>2])>>2]){Ct(d,f,h,m);break e}Lt(d,f,h,m);break e}}while(0);f=16+(h=0|l[l[b>>2]>>2])|0;e:do{if(0|l[f>>2]){d=0|l[5584+(0|l[S>>2])>>2],h=0|l[h+20>>2],u=0;t:for(;;){switch(0|l[d+20>>2]){case 1:if(!(0|Tn(h))){h=0,u=53;break t}break;case 0:if(!(0|Ln(h))){h=0,u=53;break t}}if((u=u+1|0)>>>0>=(0|l[f>>2])>>>0)break e;d=d+1080|0,h=h+52|0}if(53==(0|u))return w=c,0|h}}while(0);if(d=0|l[S>>2],!(f=0|jn(1)))return w=c,0;do{if(1==(0|l[d+16>>2])){if(0|l[20+(0|l[d+5584>>2])>>2]){h=3,u=8;break}h=3,u=32;break}h=0|l[16+(0|l[e+24>>2])>>2],u=0|l[d+5600>>2]}while(0);if(b=0==(0|Wn(f,0|l[l[b>>2]>>2],d,u,h)),Hn(f),b)return w=c,0;if(h=0|l[x>>2],l[s>>2]=0,A||(l[a+12>>2]=0),5&r[h+93>>0]){if(!(0|qt(e,n,s,o,a)))return w=c,0}else if(0|l[8+(0|l[S>>2])>>2]){h=0;do{Xt(e,h,1),h=h+1|0}while(h>>>0<(0|l[8+(0|l[S>>2])>>2])>>>0)}}return 0|a&&(l[a+12>>2]=1),(h=0|Jn(0|l[e+24>>2],0|l[e+28>>2]))?(a=0!=(0|Zn(h,0|l[e+36>>2],0|l[l[e+20>>2]>>2],0|l[8+(0|l[e+32>>2])>>2],n,i,o,a,0|l[e+4>>2],0|l[e>>2],0|l[e+16>>2],1)),qn(h),w=c,0|(a&=1)):(w=c,0|(a=0))}function rn(e,t,n,i,r,o){t|=0,n|=0,i|=0,r|=0,o|=0;var a,s,c=0,h=0,u=0,d=0,f=0,p=0,g=0,_=0,y=0,v=0,b=0;if(s=w,w=w+16|0,d=s+8|0,u=s,c=s+12|0,l[(h=36+(e|=0)|0)>>2]=i,_=0|l[e+28>>2],l[(a=e+32|0)>>2]=(0|l[_+76>>2])+(5640*i|0),l[c>>2]=0,!(i=0|Jn(0|l[(y=e+24|0)>>2],_)))return w=s,0;if(f=e+20|0,_=0==(0|function(e,t,n,i,r,o,a,s){t|=0,n|=0,i|=0,r|=0,o|=0,a|=0,s|=0;var c,h,u,d,f,p,m,g,_,y,v,b,x,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0;if(x=w,w=w+112|0,K=x+64|0,b=x+32|0,v=x,_=x+96|0,y=x+92|0,A=0|l[(e|=0)>>2],X=0|l[(d=e+4|0)>>2],f=(a=0|l[X+76>>2])+(5640*t|0)|0,g=1+(0|l[(p=a+(5640*t|0)+420|0)>>2])|0,!(X=0|Ft(A,X,t)))return w=x,0;m=A+16|0,u=a+(5640*t|0)+12|0,h=n+20|0,c=A+24|0,Z=X,e=o,a=i,W=0;e:for(;;){if(-1==(0|l[Z+80>>2])){$=4;break}if(!(Y=0|Ne(l[m>>2]<<2))){$=6;break}if(Tr(0|Y,1,l[m>>2]<<2|0),0|Zt(Z))for(H=Z+24|0,z=Z+28|0,U=Z+36|0,V=Z+32|0,j=a;;){if((0|l[u>>2])>>>0>(0|l[U>>2])>>>0)if(a=0|l[h>>2],t=0|l[H>>2],(0|l[z>>2])>>>0<(0|l[a+(52*t|0)+20>>2])>>>0){if(l[Y+(t<<2)>>2]=0,N=0|l[d>>2],l[y>>2]=0,!(0|Xn(N,a,f,Z,_,j,y,e,s))){$=45;break e}if(a=0|l[y>>2],0|l[_>>2]){G=e-a|0,N=j+a|0,l[y>>2]=0,t=0|l[(0|l[h>>2])+(52*(0|l[H>>2])|0)+24>>2],n=0|l[z>>2],o=0|l[(O=t+(136*n|0)+24|0)>>2];t:do{if(o){F=j+e|0,A=0,D=t+(136*n|0)+28|0,t=N,n=o;n:for(;;){if(o=0|l[D+20>>2],S=0|l[V>>2],(0|l[D+8>>2])!=(0|l[D>>2])&&(0|l[D+12>>2])!=(0|l[D+4>>2])&&0!=(0|(Q=0|I(0|l[o+(40*S|0)+20>>2],0|l[o+(40*S|0)+16>>2])))){for(n=0,B=0|l[o+(40*S|0)+24>>2];;){if(0|l[(L=B+40|0)>>2]){o=0|l[(R=B+44|0)>>2],S=0|l[B+4>>2];do{if(o){if((0|l[S+((M=o+-1|0)<<5)+8>>2])!=(0|l[S+(M<<5)+20>>2])){S=S+(M<<5)|0;break}l[R>>2]=o+1,S=S+(o<<5)|0}else l[R>>2]=1,l[B+36>>2]=0}while(0);if(C=B+36|0,P=B+32|0,k=t,((o=0|l[(T=S+28|0)>>2])+k|0)>>>0>>0|(t+o|0)>>>0>F>>>0){t=o;break n}for(M=o,E=0|l[C>>2],k=T;;){if((T=M+E|0)>>>0>>0){$=29;break e}if(o=0|l[B>>2],T>>>0>(0|l[P>>2])>>>0){if(!(o=0|Ue(o,T))){$=33;break e}E=0|l[C>>2],M=0|l[k>>2],l[P>>2]=M+E,l[B>>2]=o}if(Er(o+E|0,0|t,0|M),(M=0|l[(o=S+8|0)>>2])?E=0|l[C>>2]:(l[S>>2]=B,E=0|l[C>>2],l[S+4>>2]=E),t=t+(ee=0|l[k>>2])|0,T=(k=0|l[S+24>>2])+M|0,l[o>>2]=T,k=(0|l[L>>2])-k|0,l[L>>2]=k,l[S+12>>2]=T,E=ee+E|0,l[C>>2]=E,l[(T=S+16|0)>>2]=(0|l[T>>2])+ee,!k)break;if(l[R>>2]=1+(0|l[R>>2]),ee=t,((o=0|l[(k=S+60|0)>>2])+ee|0)>>>0>>0|(t+o|0)>>>0>F>>>0){t=o;break n}S=S+32|0,M=o}l[B+48>>2]=l[R>>2]}if(!((n=n+1|0)>>>0>>0))break;B=B+56|0}n=0|l[O>>2]}if(!((A=A+1|0)>>>0>>0)){$=43;break t}D=D+36|0}F=0|l[V>>2],N=0|l[z>>2],ee=0|l[H>>2],l[v>>2]=t,l[v+4>>2]=G,l[v+8>>2]=n,l[v+12>>2]=F,l[v+16>>2]=A,l[v+20>>2]=N,l[v+24>>2]=ee,me(s,2,21892,v),t=0}else t=N,$=43}while(0);43==(0|$)&&($=0,t=t-N|0,l[y>>2]=t),a=t+a|0}ee=0|l[H>>2],G=0|l[z>>2],t=(0|l[c>>2])+(52*ee|0)+36|0,N=0|l[t>>2],l[t>>2]=G>>>0>N>>>0?G:N,t=a,a=ee}else $=47;else a=0|l[h>>2],$=47;if(47==(0|$)){if($=0,ee=0|l[d>>2],l[y>>2]=0,!(0|Xn(ee,a,f,Z,_,j,y,e,s)))break e;if(t=0|l[y>>2],0|l[_>>2]){if(D=e-t|0,F=0|l[H>>2],a=0|l[(0|l[h>>2])+(52*F|0)+24>>2],O=0|l[z>>2],l[y>>2]=0,R=0|l[a+(136*O|0)+24>>2]){for(B=0|l[V>>2],A=0,L=a+(136*O|0)+28|0,a=0;;){if(n=0|l[L+20>>2],(0|l[L+8>>2])!=(0|l[L>>2])&&(0|l[L+12>>2])!=(0|l[L+4>>2])&&0!=(0|(J=0|I(0|l[n+(40*B|0)+20>>2],0|l[n+(40*B|0)+16>>2]))))for(P=0|l[n+(40*B|0)+24>>2],n=0,T=a;;){if(E=0|l[(k=P+40|0)>>2]){S=0|l[(C=P+44|0)>>2],a=0|l[P+4>>2];do{if(S){if(M=S+1|0,(0|l[a+((o=S+-1|0)<<5)+8>>2])!=(0|l[a+(o<<5)+20>>2])){o=a+(o<<5)|0,M=S;break}l[C>>2]=M,o=a+(S<<5)|0}else l[C>>2]=1,l[P+36>>2]=0,o=a,M=1}while(0);if((S=(a=0|l[o+28>>2])+T|0)>>>0>>0|S>>>0>D>>>0){$=67;break e}for(T=o;ee=0|l[T+24>>2],l[(N=T+8|0)>>2]=(0|l[N>>2])+ee,E=E-ee|0;){if(M=M+1|0,l[C>>2]=M,(o=(a=0|l[T+60>>2])+S|0)>>>0>>0|o>>>0>D>>>0){$=68;break e}T=T+32|0,S=o}l[k>>2]=0,a=S}else a=T;if(!((n=n+1|0)>>>0>>0))break;P=P+56|0,T=a}if(!((A=A+1|0)>>>0>>0))break;L=L+36|0}l[y>>2]=a}else a=0;t=a+t|0,a=F}else a=0|l[H>>2]}if(0|l[Y+(a<<2)>>2]&&(q=(0|l[c>>2])+(52*a|0)+36|0,0==(0|l[q>>2]))&&(l[q>>2]=(0|l[(0|l[h>>2])+(52*a|0)+20>>2])-1),a=j+t|0,e=e-t|0,!(0|Zt(Z)))break;j=a}if(Ve(Y),(W=W+1|0)>>>0>(0|l[p>>2])>>>0){$=79;break}Z=Z+232|0}if(4==(0|$))return jt(X,g),w=x,0;if(6==(0|$))return jt(X,g),w=x,0;if(29==(0|$))Q=0|l[V>>2],K=0|l[z>>2],ee=0|l[H>>2],l[b>>2]=M,l[b+4>>2]=E,l[b+8>>2]=~M,l[b+12>>2]=n,l[b+16>>2]=Q,l[b+20>>2]=A,l[b+24>>2]=K,l[b+28>>2]=ee,me(s,1,21977,b),$=45;else if(33==(0|$))Ve(0|l[B>>2]),l[B>>2]=0,l[P>>2]=0,$=45;else if(67==(0|$))l[y>>2]=T,$=69;else if(68==(0|$))l[y>>2]=S,l[k>>2]=E,$=69;else if(79==(0|$))return jt(X,g),l[r>>2]=a-i,w=x,1;return 45==(0|$)?(jt(X,g),Ve(Y),w=x,0|(ee=0)):(69==(0|$)&&(l[K>>2]=a,l[K+4>>2]=D,l[K+8>>2]=n,l[K+12>>2]=B,l[K+16>>2]=A,l[K+20>>2]=O,l[K+24>>2]=F,me(s,1,22076,K)),jt(X,g),Ve(Y),w=x,0|(ee=0))}(i,0|l[h>>2],0|l[l[f>>2]>>2],t,c,n,r,o)),qn(i),_)return w=s,0;if(i=0|l[l[f>>2]>>2],n=0|l[5584+(0|l[a>>2])>>2],e=0|l[i+20>>2],!(c=0|jn(0)))return w=s,0;r=i+16|0;e:do{if(0|l[r>>2]){for(t=0,i=n;0|zn(c,e,i);){if((t=t+1|0)>>>0>=(0|l[r>>2])>>>0)break e;e=e+52|0,i=i+1080|0}return Hn(c),w=s,0}}while(0);Hn(c),c=16+(i=0|l[l[f>>2]>>2])|0;do{if(0|l[c>>2]){for(r=0|l[5584+(0|l[a>>2])>>2],i=0|l[i+20>>2],e=0,t=0|l[24+(0|l[y>>2])>>2];;){if(n=1+(0|l[t+36>>2])|0,1==(0|l[r+20>>2])){if(!(0|In(i,n))){i=0,e=47;break}}else if(!(0|Dn(i,n))){i=0,e=47;break}if((e=e+1|0)>>>0>=(0|l[c>>2])>>>0){e=14;break}r=r+1080|0,i=i+52|0,t=t+52|0}if(14==(0|e)){i=0|l[l[f>>2]>>2];break}if(47==(0|e))return w=s,0|i}}while(0);n=0|l[a>>2],e=0|l[i+20>>2],t=0|l[n+16>>2];do{if(0|t){if(h=0|I((0|l[e+12>>2])-(0|l[e+4>>2])|0,(0|l[e+8>>2])-(0|l[e>>2])|0),(i=0|l[(c=i+16|0)>>2])>>>0<=2){l[d>>2]=i,me(o,1,20049,d);break}if((0|I((0|l[e+64>>2])-(0|l[e+56>>2])|0,(0|l[e+60>>2])-(0|l[e+52>>2])|0))>=(0|h)&&(0|I((0|l[e+116>>2])-(0|l[e+108>>2])|0,(0|l[e+112>>2])-(0|l[e+104>>2])|0))>=(0|h)){if(2!=(0|t)){if(i=0|l[e+32>>2],1==(0|l[20+(0|l[n+5584>>2])>>2])){Pt(i,0|l[e+84>>2],0|l[e+136>>2],h);break}Rt(i,0|l[e+84>>2],0|l[e+136>>2],h);break}if(!(0|l[(r=n+5604|0)>>2]))break;if(!(n=0|Ne(i<<2)))return w=s,0;if(i=0|l[c>>2])for(t=0;l[n+(t<<2)>>2]=l[e+32>>2],(0|(t=t+1|0))!=(0|i);)e=e+52|0;else i=0;if(_=0==(0|Dt(0|l[r>>2],h,n,i,0|l[32+(0|l[24+(0|l[y>>2])>>2])>>2])),Ve(n),!_)break;return w=s,0}return me(o,1,19988,u),w=s,0}}while(0);if(i=0|l[l[f>>2]>>2],!(0|l[(_=i+16|0)>>2]))return w=s,1;for(g=0,p=0|l[i+20>>2],f=0|l[5584+(0|l[a>>2])>>2],h=0|l[24+(0|l[y>>2])>>2];;){if(d=0|l[p+24>>2],u=0|l[h+36>>2],o=(0|l[d+(136*u|0)+8>>2])-(0|l[d+(136*u|0)>>2])|0,u=(0|l[d+(136*u|0)+12>>2])-(0|l[d+(136*u|0)+4>>2])|0,d=(0|l[p+8>>2])-(0|l[p>>2])|0,i=0|l[h+24>>2],0|l[h+32>>2]?(i=c=1<>2],i=0!=(0|u),1==(0|l[f+20>>2])){if(i&&(b=f+1076|0,0|o))for(i=0;;){for(t=0,n=e;y=(0|l[b>>2])+(0|l[n>>2])|0,l[n>>2]=(0|y)<(0|c)?c:(0|y)>(0|r)?r:y,(0|(t=t+1|0))!=(0|o);)n=n+4|0;if((0|(i=i+1|0))==(0|u))break;e=e+(d<<2)|0}}else if(i&&(v=f+1076|0,0|o))for(n=0;;){for(i=0,t=e;y=0|hr(+m[t>>2]),y=(0|l[v>>2])+y|0,l[t>>2]=(0|y)<(0|c)?c:(0|y)>(0|r)?r:y,(0|(i=i+1|0))!=(0|o);)t=t+4|0;if((0|(n=n+1|0))==(0|u))break;e=e+(d<<2)|0}if((g=g+1|0)>>>0>=(0|l[_>>2])>>>0){i=1;break}p=p+52|0,f=f+1080|0,h=h+52|0}return w=s,0|i}function on(e,t,n){t|=0,n|=0;var i=0,o=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0;if(i=0|l[(_=24+(e|=0)|0)>>2],u=0==(0|(c=0|l[i+16>>2])))return 1;for(d=0|l[i+24>>2],i=h=0|l[20+(0|l[l[e+20>>2]>>2])>>2],e=d,o=0,s=0;m=((m=0|l[e+24>>2])>>>3)+(0!=(7&m|0)&1)|0,g=(0|l[i+24>>2])+(136*(0|l[i+20>>2])|0)-136|0,o=(0|I(0|I(3==(0|m)?4:m,(0|l[g+8>>2])-(0|l[g>>2])|0),(0|l[g+12>>2])-(0|l[g+4>>2])|0))+o|0,(0|(s=s+1|0))!=(0|c);)i=i+52|0,e=e+52|0;if((i=o>>>0>n>>>0)|u)return 0|1&(1^i);for(g=0;;){u=0|l[d+24>>2],p=0|l[h+24>>2],c=0|l[d+36>>2],f=(o=0|l[p+(136*c|0)+8>>2])-(s=0|l[p+(136*c|0)>>2])|0,p=(n=0|l[p+(136*c|0)+12>>2])-(c=0|l[p+(136*c|0)+4>>2])|0,m=(0|l[h+8>>2])-(0|l[h>>2])|0,u=(u>>>3)+(0!=(7&u|0)&1)|0;e:do{switch(1073741823&(3==(0|u)?4:u)|0){case 1:if(e=0|l[h+32>>2],i=0==(0|p)|0==(0|f),0|l[d+32>>2]){if(i)break e;for(u=o+(0|I(n+-1-c|0,f))-s|0,i=e,e=t,o=0;;){for(s=0,n=i,c=e;r[c>>0]=l[n>>2],(0|(s=s+1|0))!=(0|f);)n=n+4|0,c=c+1|0;if((0|(o=o+1|0))==(0|p))break;i=i+(m<<2)|0,e=e+f|0}t=t+u|0;break e}if(i)break e;for(u=o+(0|I(n+-1-c|0,f))-s|0,c=0,o=t;;){for(i=0,s=e,n=o;r[n>>0]=l[s>>2],(0|(i=i+1|0))!=(0|f);)s=s+4|0,n=n+1|0;if((0|(c=c+1|0))==(0|p))break;e=e+(m<<2)|0,o=o+f|0}t=t+u|0;break e;case 2:if(i=0|l[h+32>>2],e=0==(0|p)|0==(0|f),0|l[d+32>>2]){if(e)break e;for(c=t+((0|I(n+-1-c|0,(u=o<<1)-(s<<=1)|0))+u-s)|0,s=0;;){for(e=t,o=i,n=0;a[e>>1]=l[o>>2],(0|(n=n+1|0))!=(0|f);)e=e+2|0,o=o+4|0;if((0|(s=s+1|0))==(0|p)){t=c;break}t=t+(f<<1)|0,i=i+(m<<2)|0}}else{if(e)break e;for(c=t+((0|I(n+-1-c|0,(u=o<<1)-(o=s<<1)|0))+u-o)|0,o=0;;){for(e=i,s=0,n=t;a[n>>1]=l[e>>2],(0|(s=s+1|0))!=(0|f);)e=e+4|0,n=n+2|0;if((0|(o=o+1|0))==(0|p)){t=c;break}i=i+(m<<2)|0,t=t+(f<<1)|0}}break;case 4:if(!(0==(0|p)|0==(0|f)))for(c=t+((0|I(n+-1-c|0,(u=o<<2)-(i=s<<2)|0))+u-i)|0,i=0|l[h+32>>2],s=0;;){for(e=t,o=i,n=0;l[e>>2]=l[o>>2],(0|(n=n+1|0))!=(0|f);)e=e+4|0,o=o+4|0;if((0|(s=s+1|0))==(0|p)){t=c;break}t=t+(f<<2)|0,i=i+(m<<2)|0}}}while(0);if((g=g+1|0)>>>0>=(0|l[16+(0|l[_>>2])>>2])>>>0){t=1;break}h=h+52|0,d=d+52|0}return 0|t}function an(e){var t=0,n=0,i=0,r=0,o=0;if(t=0|l[24+(e|=0)>>2],!(r=0|l[t+16>>2]))return 0;for(i=0|l[20+(0|l[l[e+20>>2]>>2])>>2],t=0|l[t+24>>2],e=0,n=0;o=((o=0|l[t+24>>2])>>>3)+(0!=(7&o|0)&1)|0,e=(0|I(0|I((0|l[i+12>>2])-(0|l[i+4>>2])|0,(0|l[i+8>>2])-(0|l[i>>2])|0),3==(0|o)?4:o))+e|0,!((n=n+1|0)>>>0>=r>>>0);)i=i+52|0,t=t+52|0;return 0|e}function sn(e,t,n){t|=0,n|=0;var i,o,s=0,c=0,u=0,f=0,p=0,m=0,g=0;if(i=0|l[24+(e|=0)>>2],m=0==(0|(p=0|l[(o=i+16|0)>>2])))s=0;else for(c=0|l[20+(0|l[l[e+20>>2]>>2])>>2],u=0|l[i+24>>2],s=0,f=0;g=((g=0|l[u+24>>2])>>>3)+(0!=(7&g|0)&1)|0,s=(0|I(0|I((0|l[c+12>>2])-(0|l[c+4>>2])|0,(0|l[c+8>>2])-(0|l[c>>2])|0),3==(0|g)?4:g))+s|0,(0|(f=f+1|0))!=(0|p);)c=c+52|0,u=u+52|0;if((s=(0|s)!=(0|n))|m)return 0|1&(1^s);for(e=0|l[20+(0|l[l[e+20>>2]>>2])>>2],n=0|l[i+24>>2],m=0;;){g=0|l[n+24>>2],c=(0|l[e+8>>2])-(0|l[e>>2])|0,u=(0|l[e+12>>2])-(0|l[e+4>>2])|0,p=0|I(u,c),g=(g>>>3)+(0!=(7&g|0)&1)|0;e:do{switch(1073741823&(3==(0|g)?4:g)|0){case 1:if(c=0|l[e+32>>2],s=0!=(0|p),0|l[n+32>>2]){if(!s)break e;for(s=c,c=t,u=0;l[s>>2]=r[c>>0],(0|(u=u+1|0))!=(0|p);)s=s+4|0,c=c+1|0;t=t+p|0;break e}if(!s)break e;for(u=0,s=c,c=t;l[s>>2]=h[c>>0],(0|(u=u+1|0))!=(0|p);)s=s+4|0,c=c+1|0;t=t+p|0;break e;case 2:if(s=0|l[e+32>>2],f=0!=(0|p),0|l[n+32>>2]){if(!f)break e;for(u=t+(0|I(u<<1,c))|0,c=0;;){if(l[s>>2]=a[t>>1],(0|(c=c+1|0))==(0|p)){t=u;break}t=t+2|0,s=s+4|0}}else{if(!f)break e;for(u=t+(0|I(u<<1,c))|0,c=0;;){if(l[s>>2]=d[t>>1],(0|(c=c+1|0))==(0|p)){t=u;break}t=t+2|0,s=s+4|0}}break;case 4:if(p)for(u=t+(0|I(u<<2,c))|0,c=0|l[e+32>>2],s=0;;){if(l[c>>2]=l[t>>2],(0|(s=s+1|0))==(0|p)){t=u;break}c=c+4|0,t=t+4|0}}}while(0);if((m=m+1|0)>>>0>=(0|l[o>>2])>>>0){t=1;break}e=e+52|0,n=n+52|0}return 0|t}function ln(e,t,n){e|=0,t|=0,n|=0;var i,r,o,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0;if(o=w,w=w+288|0,u=o+16|0,c=o+8|0,r=o+152|0,v=o+24|0,!(i=0|je(1,20)))return me(n,1,20123,o),w=o,0;for(l[i>>2]=e,l[(d=i+4|0)>>2]=t,l[r>>2]=e,l[v>>2]=t,l[(h=i+8|0)>>2]=0,y=0,s=0;_=0|I(t,e),e=(e+1|0)/2|0,l[r+((a=y+1|0)<<2)>>2]=e,t=(t+1|0)/2|0,l[v+(a<<2)>>2]=t,s=s+_|0,!(_>>>0<=1);)y=a;if(l[h>>2]=s,!s)return Ve(i),me(n,2,20161,c),w=o,0;if(t=0|je(s,16),l[i+12>>2]=t,!t)return me(n,1,20211,u),Ve(i),w=o,0;if(_=0|l[h>>2],l[i+16>>2]=_<<4,e=t+((0|I(0|l[d>>2],0|l[i>>2]))<<4)|0,y){g=0,s=e,a=e,e=t;do{p=0|l[v+(g<<2)>>2];e:do{if((0|p)>0){if((0|(m=0|l[r+(g<<2)>>2]))<=0)for(h=p+-1|0,n=0;;){if(c=(f=0!=(1&n|0)|(0|n)==(0|h))?a:s,s=f?a:s+(m<<4)|0,(0|(n=n+1|0))>=(0|p)){a=c;break e}a=c}d=(m+2+((0|(d=~m))>-3?d:-3)|0)>>>1,f=p+-1|0,u=0;do{for(h=a+16|0,n=m;;){if(l[e>>2]=a,c=e+16|0,1==(0|n)){e=c;break}if(l[c>>2]=a,e=e+32|0,!((0|n)>2))break;n=n+-2|0,a=a+16|0}h=h+(d<<4)|0,a=(n=0!=(1&u|0)|(0|u)==(0|f))?h:s,s=n?h:s+(m<<4)|0,u=u+1|0}while((0|u)<(0|p))}}while(0);g=g+1|0}while((0|g)!=(0|y))}else e=t;if(l[e>>2]=0,!_)return w=o,0|i;for(e=0;l[t+4>>2]=999,l[t+8>>2]=0,l[t+12>>2]=0,(0|(e=e+1|0))!=(0|_);)t=t+16|0;return w=o,0|i}function cn(e){var t,n=0;if((e|=0)&&(t=0|l[e+8>>2]))for(n=0,e=0|l[e+12>>2];l[e+4>>2]=999,l[e+8>>2]=0,l[e+12>>2]=0,!((n=n+1|0)>>>0>=t>>>0);)e=e+16|0}function hn(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0;if(o=w,w=w+272|0,f=o,r=o+136|0,y=o+8|0,!(e|=0))return w=o,0;if(d=e+4|0,(0|l[e>>2])==(0|t)&&(0|l[d>>2])==(0|n))a=e+8|0;else{for(l[e>>2]=t,l[d>>2]=n,l[r>>2]=t,l[y>>2]=n,l[(a=e+8|0)>>2]=0,_=0,s=n,c=t,u=0;g=0|I(s,c),c=(c+1|0)/2|0,l[r+((h=_+1|0)<<2)>>2]=c,s=(s+1|0)/2|0,l[y+(h<<2)>>2]=s,u=u+g|0,!(g>>>0<=1);)_=h;if(l[a>>2]=u,!u)return 0|(s=0|l[(a=e+12|0)>>2])&&(Ve(s),l[a>>2]=0),Ve(e),w=o,0;c=u<<4,h=e+16|0,u=e+12|0;do{if(c>>>0>(0|l[h>>2])>>>0){if(0|(s=0|Ue(0|l[u>>2],c))){l[u>>2]=s,Tr(s+(n=0|l[h>>2])|0,0,c-n|0),l[h>>2]=c,n=0|l[d>>2],t=0|l[e>>2];break}return me(i,1,20255,f),0|(a=0|l[u>>2])&&(Ve(a),l[u>>2]=0),Ve(e),w=o,0}}while(0);if(t=(s=0|l[u>>2])+((0|I(n,t))<<4)|0,_){n=t,g=0;do{p=0|l[y+(g<<2)>>2];e:do{if((0|p)>0){if((0|(m=0|l[r+(g<<2)>>2]))<=0)for(u=p+-1|0,h=0;;){if(c=(f=0!=(1&h|0)|(0|h)==(0|u))?t:n+(m<<4)|0,t=f?t:n,(0|(h=h+1|0))>=(0|p)){n=c;break e}n=c}for(d=(m+2+((0|(d=~m))>-3?d:-3)|0)>>>1,f=p+-1|0,i=0;;){for(u=t+16|0,h=m;;){if(l[s>>2]=t,c=s+16|0,1==(0|h)){s=c;break}if(l[c>>2]=t,s=s+32|0,!((0|h)>2))break;h=h+-2|0,t=t+16|0}if(t=u+(d<<4)|0,c=(u=0!=(1&i|0)|(0|i)==(0|f))?t:n+(m<<4)|0,t=u?t:n,(0|(i=i+1|0))>=(0|p)){n=c;break}n=c}}}while(0);g=g+1|0}while((0|g)!=(0|_))}l[s>>2]=0}if(!(t=0|l[a>>2]))return w=o,0|e;for(a=0,s=0|l[e+12>>2];l[s+4>>2]=999,l[s+8>>2]=0,l[s+12>>2]=0,(0|(a=a+1|0))!=(0|t);)s=s+16|0;return w=o,0|e}function un(e){var t,n;(e|=0)&&(0|(n=0|l[(t=e+12|0)>>2])&&(Ve(n),l[t>>2]=0),Ve(e))}function dn(e,t,n){if(t|=0,n|=0,e=(0|l[12+(e|=0)>>2])+(t<<4)|0)for(;;){if((0|l[(t=e+4|0)>>2])<=(0|n)){e=4;break}if(l[t>>2]=n,!(e=0|l[e>>2])){e=4;break}}}function fn(e,t,n,i){e|=0,n|=0,i|=0;var r,o,a=0,s=0,c=0;if(o=w,w=w+128|0,r=o,n=(0|l[12+(t|=0)>>2])+(n<<4)|0,t=0|l[n>>2])for(a=0,s=t;;){if(c=a+1|0,l[r+(a<<2)>>2]=n,!(t=0|l[s>>2])){t=0,n=s;break}n=s,a=c,s=t}else t=0,c=0;for(;;){(0|t)>(0|(a=0|l[(s=n+8|0)>>2]))?l[s>>2]=t:t=a;e:do{if((0|t)<(0|i)){for(a=n+4|0;!((0|t)>=(0|l[a>>2]));)if(Sn(e,0,1),(0|(t=t+1|0))>=(0|i))break e;0|l[(n=n+12|0)>>2]||(Sn(e,1,1),l[n>>2]=1)}}while(0);if(l[s>>2]=t,!c)break;n=0|l[r+((s=c+-1|0)<<2)>>2],c=s}w=o}function pn(e,t,n,i){e|=0,n|=0,i|=0;var r,o,a=0,s=0,c=0;if(o=w,w=w+128|0,r=o,t=(0|l[12+(t|=0)>>2])+(n<<4)|0,n=0|l[t>>2])for(a=0;;){if(s=a+1|0,l[r+(a<<2)>>2]=t,!(t=0|l[n>>2])){a=0,t=n;break}c=n,a=s,n=t,t=c}else a=0,s=0;for(;;){(0|a)>(0|(n=0|l[(c=t+8|0)>>2]))&&(l[c>>2]=a,n=a),a=t+4|0;e:do{if((0|n)<(0|i)){for(t=n;;){if((0|t)>=(0|l[a>>2]))break e;if(0|Mn(e,1))break;if((0|(t=t+1|0))>=(0|i))break e}l[a>>2]=t}else t=n}while(0);if(l[c>>2]=t,!s)break;a=t,t=0|l[r+((c=s+-1|0)<<2)>>2],s=c}return w=o,(0|l[a>>2])<(0|i)|0}function mn(){var e=0,t=0;return(e=0|je(1,12))?(l[e+4>>2]=10,t=0|je(10,4),l[e+8>>2]=t,0|t?0|(t=e):(Ve(e),0|(t=0))):0|(e=0)}function gn(e){var t;(e|=0)&&(0|(t=0|l[e+8>>2])&&Ve(t),Ve(e))}function _n(e,t,n){t|=0,n|=0;var i,r,o,a=0,s=0;o=w,w=w+16|0,r=o,s=0|l[(i=4+(e|=0)|0)>>2],a=0|l[e>>2];do{if((0|s)==(0|a)){if(s=s+10|0,l[i>>2]=s,0|(s=0|Ue(0|l[(a=e+8|0)>>2],s<<2))){l[a>>2]=s,a=0|l[e>>2];break}return Ve(0|l[a>>2]),l[i>>2]=0,l[e>>2]=0,me(n,1,20303,r),w=o,0}s=0|l[e+8>>2]}while(0);return l[s+(a<<2)>>2]=t,l[e>>2]=a+1,w=o,1}function yn(e){return 0|l[(e|=0)>>2]}function vn(e){return 0|l[8+(e|=0)>>2]}function bn(e){l[(e|=0)>>2]=0}function wn(){return 0|Ne(20)}function xn(e){(e|=0)&&Ve(e)}function An(e){return(0|l[8+(e|=0)>>2])-(0|l[e>>2])|0}function Sn(e,t,n){e|=0,t|=0;var i,o,a,s,c=0,h=0,u=0,d=0;if(n|=0){a=e+12|0,s=e+8|0,i=e+4|0,u=n+-1|0,e=0|l[(o=e+16|0)>>2];do{d=t>>>u&1,e||(e=(c=0|l[a>>2])<<8&65280,l[a>>2]=e,e=65280==(0|e)?7:8,l[o>>2]=e,h=0|l[s>>2],(0|l[i>>2])>>>0>h>>>0&&(l[s>>2]=h+1,r[h>>0]=c,e=0|l[o>>2])),e=e+-1|0,l[o>>2]=e,l[a>>2]=l[a>>2]|d<>>0>>0)}}function Mn(e,t){var n,i,r,o=0,a=0,s=0,c=0,u=0;if(!(t|=0))return 0;i=16+(e|=0)|0,r=e+12|0,u=e+8|0,n=e+4|0,c=t+-1|0,e=0,o=0|l[r>>2],a=0|l[i>>2];do{a||(o=o<<8&65280,l[r>>2]=o,a=65280==(0|o)?7:8,l[i>>2]=a,s=0|l[u>>2],(0|l[n>>2])>>>0>s>>>0&&(l[u>>2]=s+1,o=0|o|h[s>>0],l[r>>2]=o)),a=a+-1|0,l[i>>2]=a,e|=(o>>>a&1)<>>0>>0);return 0|e}function En(e){var t=0,n=0,i=0,r=0,o=0;t=0|l[(o=12+(e|=0)|0)>>2];do{if(255==(255&t|0)){if(r=t<<8&65280,l[o>>2]=r,l[(t=e+16|0)>>2]=65280==(0|r)?7:8,i=0|l[(n=e+8|0)>>2],(0|l[e+4>>2])>>>0>i>>>0){l[n>>2]=i+1,l[o>>2]=0|r|h[i>>0];break}return 0}t=e+16|0}while(0);return l[t>>2]=0,1}function Tn(e){return 0|kn(e|=0,1)}function kn(e,t){t|=0;var n,i=0,r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0;if(M=(0|l[8+(e|=0)>>2])-(0|l[e>>2])|0,i=(s=0|l[e+16>>2])-1|0,n=0|l[e+32>>2],a=(e=0|l[e+24>>2])+(136*i|0)|0,o=0==(0|i))e=0;else{r=0;do{A=e,e=e+136|0,r=(S=r>>>0<(S=(0|l[A+144>>2])-(0|l[e>>2])|0)>>>0?S:r)>>>0<(A=(0|l[A+148>>2])-(0|l[A+140>>2])|0)>>>0?A:S,i=i+-1|0}while(0!=(0|i));e=r<<2}if(!(0==(0|e)|0!=(0|(S=0|Ne(e)))))return 0;if(!o)for(A=S+4|0,v=s+-2|0;;){h=a,a=a+-136|0,x=0|l[h>>2],y=(0|l[h+8>>2])-x|0,d=0|l[h+4>>2],b=(0|l[h+12>>2])-d|0,w=(0|l[h+-128>>2])-(0|l[a>>2])|0,x&=1,d&=1,f=b-(h=(0|l[h+-124>>2])-(0|l[h+-132>>2])|0)|0,_=(0|y)>0;e:do{if(_){if(c=0==(0|h),p=0==(0|f),m=A+(0-d<<2)|0,g=0|I(h,M),u=S+(d<<2)|0,(0|b)>0)for(s=0;;){o=n+(s<<2)|0,e=0;do{r=o+((0|I(e,M))<<2)|0,l[S+(e<<2)>>2]=l[r>>2],e=e+1|0}while((0|e)!=(0|b));if(no[3&t](S,f,h,d),!c)for(e=o,i=h,r=u;i=i+-1|0,l[e>>2]=l[r>>2],i;)e=e+(M<<2)|0,r=r+8|0;if(!p)for(e=o+(g<<2)|0,i=f,r=m;i=i+-1|0,l[e>>2]=l[r>>2],i;)e=e+(M<<2)|0,r=r+8|0;if((0|(s=s+1|0))==(0|y))break e}if(c)for(e=0;;){if(no[3&t](S,f,0,d),!p)for(i=n+(e<<2)+(g<<2)|0,r=f,o=m;r=r+-1|0,l[i>>2]=l[o>>2],r;)i=i+(M<<2)|0,o=o+8|0;if((0|(e=e+1|0))==(0|y))break e}else s=0;do{for(o=n+(s<<2)|0,no[3&t](S,f,h,d),e=o,i=h,r=u;i=i+-1|0,l[e>>2]=l[r>>2],i;)e=e+(M<<2)|0,r=r+8|0;if(!p)for(e=o+(g<<2)|0,i=f,r=m;i=i+-1|0,l[e>>2]=l[r>>2],i;)e=e+(M<<2)|0,r=r+8|0;s=s+1|0}while((0|s)!=(0|y))}}while(0);u=y-w|0;e:do{if((0|b)>0){if(c=(0|w)>0,h=S+(x<<2)|0,d=(0|u)>0,f=A+(0-x<<2)|0,_)for(s=0;;){o=n+((0|I(s,M))<<2)|0,e=0;do{l[S+(e<<2)>>2]=l[o+(e<<2)>>2],e=e+1|0}while((0|e)!=(0|y));if(no[3&t](S,u,w,x),c)for(e=o,i=0,r=h;l[e>>2]=l[r>>2],(0|(i=i+1|0))!=(0|w);)e=e+4|0,r=r+8|0;if(d)for(e=o+(w<<2)|0,i=0,r=f;l[e>>2]=l[r>>2],(0|(i=i+1|0))!=(0|u);)e=e+4|0,r=r+8|0;if((0|(s=s+1|0))==(0|b))break e}if(c)s=0;else for(e=0;;){if(no[3&t](S,u,w,x),d)for(i=n+((0|I(e,M))<<2)+(w<<2)|0,r=0,o=f;l[i>>2]=l[o>>2],(0|(r=r+1|0))!=(0|u);)i=i+4|0,o=o+8|0;if((0|(e=e+1|0))==(0|b))break e}do{for(o=n+((0|I(s,M))<<2)|0,no[3&t](S,u,w,x),e=o,i=0,r=h;l[e>>2]=l[r>>2],(0|(i=i+1|0))!=(0|w);)e=e+4|0,r=r+8|0;if(d)for(e=o+(w<<2)|0,i=0,r=f;l[e>>2]=l[r>>2],(0|(i=i+1|0))!=(0|u);)e=e+4|0,r=r+8|0;s=s+1|0}while((0|s)!=(0|b))}}while(0);if(!v)break;v=v+-1|0}return Ve(S),1}function In(e,t){t|=0;var n,i,r,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0;if(r=w,w=w+32|0,i=r+16|0,R=r,h=0|l[24+(e|=0)>>2],c=(0|l[h+8>>2])-(0|l[h>>2])|0,u=(0|l[h+12>>2])-(0|l[h+4>>2])|0,n=(0|l[e+8>>2])-(0|l[e>>2])|0,1==(0|t))return w=r,1;if(s=0==(0|(d=t+-1|0)))t=0;else{t=h,o=0,a=d;do{P=t,t=t+136|0,o=(L=o>>>0<(L=(0|l[P+144>>2])-(0|l[t>>2])|0)>>>0?L:o)>>>0<(P=(0|l[P+148>>2])-(0|l[P+140>>2])|0)>>>0?P:L,a=a+-1|0}while(0!=(0|a));t=o<<2}if(L=0|He(t),l[i>>2]=L,!L)return w=r,0;if(l[R>>2]=L,!s){A=e+32|0,S=i+8|0,M=R+8|0,E=i+4|0,T=i+12|0,k=R+4|0,C=R+12|0,P=L+4|0;do{if(x=0|l[A>>2],y=h,h=h+136|0,l[S>>2]=c,l[M>>2]=u,o=0|l[h>>2],g=c,c=(0|l[y+144>>2])-o|0,t=0|l[(_=y+140|0)>>2],b=u,u=(0|l[y+148>>2])-t|0,y=c-g|0,l[E>>2]=y,o=(0|o)%2|0,l[T>>2]=o,!(v=0==(0|u))){for(f=c<<2,p=0==(0|g),m=0==(0|y),t=0;;){if(e=x+((0|I(t,n))<<2)|0,p)a=0;else{for(o=L+(o<<2)|0,a=e,s=g;s=s+-1|0,l[o>>2]=l[a>>2],s;)o=o+8|0,a=a+4|0;o=0|l[T>>2],a=g}if(!m)for(s=P+(0-o<<2)|0,o=e+(a<<2)|0,a=y;a=a+-1|0,l[s>>2]=l[o>>2],a;)s=s+8|0,o=o+4|0;if(Cn(i),Er(0|e,0|L,0|f),(0|(t=t+1|0))==(0|u))break;o=0|l[T>>2]}t=0|l[_>>2]}m=u-b|0,l[k>>2]=m,o=(0|t)%2|0,l[C>>2]=o;e:do{if(0|c){if(f=0==(0|b),p=0==(0|m),v)for(t=0;;){if(e=x+(t<<2)|0,f)a=0;else{for(o=L+(o<<2)|0,a=e,s=b;s=s+-1|0,l[o>>2]=l[a>>2],s;)o=o+8|0,a=a+(n<<2)|0;o=0|l[C>>2],a=b}if(!p)for(s=P+(0-o<<2)|0,o=e+((0|I(a,n))<<2)|0,a=m;a=a+-1|0,l[s>>2]=l[o>>2],a;)s=s+8|0,o=o+(n<<2)|0;if(Cn(R),(0|(t=t+1|0))==(0|c))break e;o=0|l[C>>2]}else t=0;for(;;){if(e=x+(t<<2)|0,f)a=0;else{for(o=L+(o<<2)|0,a=e,s=b;s=s+-1|0,l[o>>2]=l[a>>2],s;)o=o+8|0,a=a+(n<<2)|0;o=0|l[C>>2],a=b}if(!p)for(s=P+(0-o<<2)|0,o=e+((0|I(a,n))<<2)|0,a=m;a=a+-1|0,l[s>>2]=l[o>>2],a;)s=s+8|0,o=o+(n<<2)|0;Cn(R),o=0;do{v=x+((0|I(o,n))+t<<2)|0,l[v>>2]=l[L+(o<<2)>>2],o=o+1|0}while((0|o)!=(0|u));if((0|(t=t+1|0))==(0|c))break e;o=0|l[C>>2]}}}while(0);d=d+-1|0}while(0!=(0|d))}return ze(L),w=r,1}function Cn(e){var t,n,i,r=0,o=0,a=0;if(t=0|l[(e|=0)>>2],n=0|l[e+4>>2],i=0|l[e+8>>2],0|l[e+12>>2])if(1==(0|n)&0==(0|i))l[t>>2]=(0|l[t>>2])/2|0;else{if((0|i)>0){r=n+-1|0,e=0;do{o=e,e=e+1|0,l[(a=t+((o<<1|1)<<2)|0)>>2]=(0|l[a>>2])-(2+(0|l[t+(((0|o)>=(0|n)?r:o)<<1<<2)>>2])+(0|l[t+(((0|e)>=(0|n)?r:e)<<1<<2)>>2])>>2)}while((0|e)!=(0|i))}if(!((0|n)<=0)){r=i+-1|0,e=0;do{l[(a=t+(e<<1<<2)|0)>>2]=((0|l[t+(((0|e)<1?1:(((0|e)>(0|i)?i:e)<<1)-1|0)<<2)>>2])+(0|l[t+((((0|e)>=(0|i)?r:e)<<1|1)<<2)>>2])>>1)+(0|l[a>>2]),e=e+1|0}while((0|e)!=(0|n))}}else{if(!((o=(0|n)>0)|(0|i)>1))return;if((0|i)>0){r=n+-1|0,e=0;do{l[(a=t+(e<<1<<2)|0)>>2]=(0|l[a>>2])-(2+(0|l[t+(((0|e)<1?1:(((0|e)>(0|n)?n:e)<<1)-1|0)<<2)>>2])+(0|l[t+((((0|e)>=(0|n)?r:e)<<1|1)<<2)>>2])>>2),e=e+1|0}while((0|e)!=(0|i))}if(!o)return;r=i+-1|0,e=0;do{o=e,e=e+1|0,l[(a=t+((o<<1|1)<<2)|0)>>2]=((0|l[t+(((0|e)>=(0|i)?r:e)<<1<<2)>>2])+(0|l[t+(((0|o)>=(0|i)?r:o)<<1<<2)>>2])>>1)+(0|l[a>>2])}while((0|e)!=(0|n))}}function Pn(e,t){return+ +_[56+(80*(t|=0)|0)+((e|=0)<<3)>>3]}function Ln(e){return 0|kn(e|=0,2)}function Rn(e,t){return+ +_[376+(80*(t|=0)|0)+((e|=0)<<3)>>3]}function Bn(e,t){t|=0;var n,i,r,o,a=0,s=0,c=0,h=0,u=0,d=0,f=0;if(i=(3*(0|l[(n=4+(e|=0)|0)>>2])|0)-2|0){r=e+20|0,o=e+24|0,f=0;do{if(f?(s=1+(((c=f+-1|0)>>>0)%3|0)|0,c=1+((c>>>0)/3|0)|0):(s=0,c=0),h=0==(0|s)|0==(0|l[r>>2])?0:(s+-1|0)>>>0<2?1:2,a=0|l[o>>2]?+(1<>2])+~c<<3)>>3]:1,u=h+t|0,(0|(d=~~+M(8192*a)))>1){for(s=d,h=0;;){if(!(s>>>0>3)){s=d,c=0;break}s>>>=1,h=h+1|0}for(;s>>>0>3;)s>>>=1,c=c+1|0;c=10-c|0,s=h+-12|0}else c=11,s=-13;l[e+28+(f<<3)+4>>2]=2047&((0|c)<0?d>>0-c:d<>2]=u-s,f=f+1|0}while((0|f)!=(0|i))}}function Dn(e,t){t|=0;var n,i,r,o,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0;if(o=w,w=w+32|0,r=o+16|0,W=o,f=0|l[24+(e|=0)>>2],h=0|l[f+8>>2],u=0|l[f>>2],_=0|l[f+12>>2],y=0|l[f+4>>2],i=(m=0|l[(n=e+8|0)>>2])-(g=0|l[e>>2])|0,c=0==(0|(d=t+-1|0)))t=80;else{t=f,a=0,s=d;do{z=t,t=t+136|0,a=(U=a>>>0<(U=(0|l[z+144>>2])-(0|l[t>>2])|0)>>>0?U:a)>>>0<(z=(0|l[z+148>>2])-(0|l[z+140>>2])|0)>>>0?z:U,s=s+-1|0}while(0!=(0|s));t=80+(a<<4)|0}if(p=0|He(t),l[r>>2]=p,!p)return w=o,0;l[W>>2]=p;e:do{if(c)t=p;else for(C=e+32|0,P=e+12|0,L=e+4|0,R=r+8|0,B=W+8|0,D=r+4|0,O=r+12|0,F=i<<2,G=i<<1,N=3*i|0,j=W+4|0,H=W+12|0,z=m-g<<2,U=g-m<<2,v=h-u|0,a=d,t=p,s=p,h=m,c=g,S=_-y|0,_=p;;){M=0|l[C>>2],c=0|I((0|l[P>>2])-(0|l[L>>2])|0,h-c|0),l[R>>2]=v,l[B>>2]=S,E=f+136|0,T=(y=0|l[f+144>>2])-(b=0|l[E>>2])|0,k=(u=0|l[f+148>>2])-(h=0|l[(g=f+140|0)>>2])|0,l[D>>2]=T-v,l[O>>2]=(0|b)%2|0;do{if((0|k)>3){if(m=M+(F<<2)+((0|I(z,p=(u+4+((0|(p=h+-1-u|0))>-8?p:-8)-h|0)>>>2))<<2)|0,p=0|I(U,p),!((0|T)>0)){for(h=k,u=c,d=M;On(r,d,i,u),Fn(r),(0|h)>7;)h=h+-4|0,u=u-F|0,d=d+(F<<2)|0;c=U+c+p|0,u=m;break}for(h=k,u=c,d=M;;){On(r,d,i,u),Fn(r),f=T;do{A=f,l[d+((f=f+-1|0)<<2)>>2]=l[_+(f<<4)>>2],l[d+(f+i<<2)>>2]=l[_+(f<<4)+4>>2],l[d+(f+G<<2)>>2]=l[_+(f<<4)+8>>2],l[d+(f+N<<2)>>2]=l[_+(f<<4)+12>>2]}while((0|A)>1);if(!((0|h)>7))break;h=h+-4|0,u=u-F|0,d=d+(F<<2)|0}c=U+c+p|0,u=m}else u=M}while(0);t:do{if(3&k){if(On(r,u,i,c),Fn(r),c=T+-1|0,(0|T)<=0){m=k-S|0,l[j>>2]=m,p=(0|l[g>>2])%2|0,l[H>>2]=p,g=M;break}switch(h=0|l[r>>2],3&k){case 3:for(t=c;;){if(l[u+(t+G<<2)>>2]=l[h+(t<<4)+8>>2],l[u+(t+i<<2)>>2]=l[h+(t<<4)+4>>2],l[u+(t<<2)>>2]=l[h+(t<<4)>>2],!((0|t)>0)){t=h,A=h,V=22;break}t=t+-1|0}break;case 2:for(t=c;;){if(l[u+(t+i<<2)>>2]=l[h+(t<<4)+4>>2],l[u+(t<<2)>>2]=l[h+(t<<4)>>2],!((0|t)>0)){t=h,A=h,V=22;break}t=t+-1|0}break;case 1:for(t=c;;){if(l[u+(t<<2)>>2]=l[h+(t<<4)>>2],!((0|t)>0)){t=h,A=h,V=22;break}t=t+-1|0}break;default:t=h,A=h,V=22;break t}}else A=_,V=22}while(0);do{if(22==(0|V))if(V=0,x=k-S|0,l[j>>2]=x,v=(0|l[g>>2])%2|0,l[H>>2]=v,(0|T)>3){if(y=y+4+((0|(_=b+-1-y|0))>-8?_:-8)-b&-4,!k){for(p=(0|S)>0,m=0|I(S,i),g=0-v|0,_=(0|x)>0,d=M,f=T;;){if(h=(s=0|l[W>>2])+(v<<4)|0,p){c=0;do{b=h+(c<<1<<4)|0,u=d+((0|I(c,i))<<2)|0,l[b>>2]=l[u>>2],l[b+4>>2]=l[u+4>>2],l[b+8>>2]=l[u+8>>2],l[b+12>>2]=l[u+12>>2],c=c+1|0}while((0|c)!=(0|S))}if(h=d+(m<<2)|0,u=s+16+(g<<4)|0,_){c=0;do{b=u+(c<<1<<4)|0,Z=h+((0|I(c,i))<<2)|0,l[b>>2]=l[Z>>2],l[b+4>>2]=l[Z+4>>2],l[b+8>>2]=l[Z+8>>2],l[b+12>>2]=l[Z+12>>2],c=c+1|0}while((0|c)!=(0|x))}if(Fn(W),!((0|f)>7))break;d=d+16|0,f=f+-4|0}g=M+16+(y<<2)|0,p=v,m=x,_=A;break}for(p=(0|(f=0|l[B>>2]))>0,m=0|I(f,i),g=0-v|0,_=(0|x)>0,u=M,d=T;;){if(h=s+(v<<4)|0,p){c=0;do{Z=h+(c<<1<<4)|0,S=u+((0|I(c,i))<<2)|0,l[Z>>2]=l[S>>2],l[Z+4>>2]=l[S+4>>2],l[Z+8>>2]=l[S+8>>2],l[Z+12>>2]=l[S+12>>2],c=c+1|0}while((0|c)!=(0|f))}if(h=u+(m<<2)|0,c=s+16+(g<<4)|0,_){s=0;do{Z=c+(s<<1<<4)|0,S=h+((0|I(s,i))<<2)|0,l[Z>>2]=l[S>>2],l[Z+4>>2]=l[S+4>>2],l[Z+8>>2]=l[S+8>>2],l[Z+12>>2]=l[S+12>>2],s=s+1|0}while((0|s)!=(0|x))}Fn(W),c=0;do{Z=u+((0|I(c,i))<<2)|0,S=(s=0|l[W>>2])+(c<<4)|0,l[Z>>2]=l[S>>2],l[Z+4>>2]=l[S+4>>2],l[Z+8>>2]=l[S+8>>2],l[Z+12>>2]=l[S+12>>2],c=c+1|0}while((0|c)!=(0|k));if(!((0|d)>7))break;u=u+16|0,d=d+-4|0}g=M+16+(y<<2)|0,p=v,m=x,_=A}else g=M,p=v,m=x,_=A}while(0);if(d=3&T){if(c=(f=0|l[W>>2])+(p<<4)|0,(0|(h=0|l[B>>2]))>0){u=d<<2,s=0;do{Er(c+(s<<1<<4)|0,g+((0|I(s,i))<<2)|0,0|u),s=s+1|0}while((0|s)!=(0|h))}if(u=g+((0|I(h,i))<<2)|0,c=f+16+(0-p<<4)|0,(0|m)>0){h=d<<2,s=0;do{Er(c+(s<<1<<4)|0,u+((0|I(s,i))<<2)|0,0|h),s=s+1|0}while((0|s)!=(0|m))}if(Fn(W),k){c=d<<2,s=0;do{Er(g+((0|I(s,i))<<2)|0,f+(s<<4)|0,0|c),s=s+1|0}while((0|s)!=(0|k));s=f}else s=f}if(!(a=a+-1|0))break e;v=T,f=E,h=0|l[n>>2],c=0|l[e>>2],S=k}}while(0);return ze(t),w=o,1}function On(e,t,n,i){t|=0,n|=0,i|=0;var r,o,a,s,c,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0;if(u=(d=0|l[(e|=0)>>2])+((r=0|l[e+12>>2])<<4)|0,o=0|l[e+8>>2],a=3*n|0,c=d+16+(0-r<<4)|0,s=0|l[e+4>>2],(o+a|0)<(0|i)&&0==(15&t|0)&&0==(15&(u|n)|0)){if((0|o)>0){e=0;do{l[d+(r<<4)+((u=e<<3)<<2)>>2]=l[t+(e<<2)>>2],_=e+n|0,l[d+(r<<4)+((1|u)<<2)>>2]=l[t+(_<<2)>>2],_=_+n|0,l[d+(r<<4)+((2|u)<<2)>>2]=l[t+(_<<2)>>2],l[d+(r<<4)+((3|u)<<2)>>2]=l[t+(_+n<<2)>>2],e=e+1|0}while((0|e)!=(0|o))}}else h=2;if(2==(0|h)&&(0|o)>0){e=0;do{l[d+(r<<4)+((h=e<<3)<<2)>>2]=l[t+(e<<2)>>2],(0|(u=e+n|0))<(0|i)&&(l[d+(r<<4)+((1|h)<<2)>>2]=l[t+(u<<2)>>2],(0|(f=u+n|0))<(0|i))&&(l[d+(r<<4)+((2|h)<<2)>>2]=l[t+(f<<2)>>2],(0|(p=f+n|0))<(0|i))&&(l[d+(r<<4)+((3|h)<<2)>>2]=l[t+(p<<2)>>2]),e=e+1|0}while((0|e)!=(0|o))}if(d=t+(o<<2)|0,(s+a|0)<(0|(t=i-o|0))&&0==(15&d|0)&&0==(15&(c|n)|0)){if(!((0|s)>0))return;e=0;do{l[c+((_=e<<3)<<2)>>2]=l[d+(e<<2)>>2],g=e+n|0,l[c+((1|_)<<2)>>2]=l[d+(g<<2)>>2],g=g+n|0,l[c+((2|_)<<2)>>2]=l[d+(g<<2)>>2],l[c+((3|_)<<2)>>2]=l[d+(g+n<<2)>>2],e=e+1|0}while((0|e)!=(0|s))}else if((0|s)>0){e=0;do{l[c+((h=e<<3)<<2)>>2]=l[d+(e<<2)>>2],(0|(u=e+n|0))<(0|t)&&(l[c+((1|h)<<2)>>2]=l[d+(u<<2)>>2],(0|(m=u+n|0))<(0|t))&&(l[c+((2|h)<<2)>>2]=l[d+(m<<2)>>2],(0|(g=m+n|0))<(0|t))&&(l[c+((3|h)<<2)>>2]=l[d+(g<<2)>>2]),e=e+1|0}while((0|e)!=(0|s))}}function Fn(e){e|=0;var t=0,n=0,i=0,r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0;do{if(0|l[e+12>>2]){if((0|(i=0|l[e+8>>2]))<=0){if((0|l[e+4>>2])>1){r=1,a=0,o=0|l[e>>2];break}return}n=0,t=1,s=7}else{if(i=0|l[e+8>>2],(0|l[e+4>>2])>0){if(t=0|l[e>>2],(0|i)>0){r=0,n=1,o=t,s=9;break}r=0,a=1,o=t;break}if(!((0|i)>1))return;n=1,t=0,s=7}}while(0);if(7==(0|s)&&(r=t,o=0|l[e>>2],s=9),9==(0|s)){t=0;do{f=o+(r<<4)+((s=t<<3)<<2)|0,d=+m[(u=o+(r<<4)+((1|s)<<2)|0)>>2],h=+m[(a=o+(r<<4)+((2|s)<<2)|0)>>2],c=+m[(s=o+(r<<4)+((3|s)<<2)|0)>>2],m[f>>2]=1.2301740646362305*+m[f>>2],m[u>>2]=1.2301740646362305*d,m[a>>2]=1.2301740646362305*h,m[s>>2]=1.2301740646362305*c,t=t+1|0}while((0|t)!=(0|i));a=n}if((0|(n=0|l[e+4>>2]))>0){t=0;do{s=o+(a<<4)+((f=t<<3)<<2)|0,c=+m[(e=o+(a<<4)+((1|f)<<2)|0)>>2],h=+m[(u=o+(a<<4)+((2|f)<<2)|0)>>2],d=+m[(f=o+(a<<4)+((3|f)<<2)|0)>>2],m[s>>2]=1.625732421875*+m[s>>2],m[e>>2]=1.625732421875*c,m[u>>2]=1.625732421875*h,m[f>>2]=1.625732421875*d,t=t+1|0}while((0|t)!=(0|n))}Gn(t=o+(a<<4)|0,o=16+(e=o+(r<<4)|0)|0,i,s=(0|i)<(0|(s=n-r|0))?i:s,-.4435068666934967),Gn(e,u=t+16|0,n,f=(0|n)<(0|(f=i-a|0))?n:f,-.8829110860824585),Gn(t,o,i,s,.05298011749982834),Gn(e,u,n,f,1.5861343145370483)}function Gn(e,t,n,i,r){e|=0,t|=0,n|=0,r=+r;var o=0,a=0,s=0,l=0,c=0,h=0,u=0,d=0,f=0,p=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0;if((0|(i|=0))>0){for(u=(d=i<<1)-2|0,c=t,h=0,a=+m[e>>2],s=+m[e+4>>2],l=+m[e+8>>2],o=+m[e+12>>2];x=c+-16|0,w=+m[(v=c+-12|0)>>2],y=+m[(g=c+-8|0)>>2],p=+m[(e=c+-4|0)>>2],A=a,a=+m[c>>2],b=s,s=+m[c+4>>2],_=l,l=+m[c+8>>2],f=o,o=+m[c+12>>2],m[x>>2]=+m[x>>2]+(A+a)*r,m[v>>2]=w+(b+s)*r,m[g>>2]=y+(_+l)*r,m[e>>2]=p+(f+o)*r,(0|(h=h+1|0))!=(0|i);)c=c+32|0;e=t+(u<<4)|0,t=t+(d<<4)|0}if(!((0|i)>=(0|n)))for(a=(o=r+r)*+m[e>>2],s=o*+m[e+4>>2],l=o*+m[e+8>>2],o*=+m[e+12>>2];d=t+-16|0,b=+m[(g=t+-12|0)>>2],w=+m[(v=t+-8|0)>>2],A=+m[(x=t+-4|0)>>2],m[d>>2]=a+ +m[d>>2],m[g>>2]=s+b,m[v>>2]=l+w,m[x>>2]=o+A,(0|(i=i+1|0))!=(0|n);)t=t+32|0}function Nn(e,t,n){e|=0,t|=0;var i,r,o,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,g=0,_=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0;if(r=(n|=0)<<2,!(o=0|Ne(n<<4)))return 0;if(M=o+r|0,Tr(0|o,0,0|r),x=n+-1|0,!(i=0==(0|n)))for(a=o,s=0;l[a>>2]=s,(0|(s=s+1|0))!=(0|n);)a=a+4|0;e:do{if(0|x){for(g=1,_=e,y=0,a=0,v=o,w=n;b=_+(y<<2)|0,y>>>0>>0;){for(s=b,c=0,h=y;a=(S=(p=(p=+m[s>>2])>0?p:-p)>c)?h:a,c=S?p:c,(0|(h=h+1|0))!=(0|n);)s=s+(n<<2)|0;if(0==c)break;if((0|a)!=(0|y)&&(S=v+(a<<2)+(0-y<<2)|0,A=0|l[v>>2],l[v>>2]=l[S>>2],l[S>>2]=A,Er(0|M,0|(S=_+((0|I(a-y|0,n))<<2)|0),0|r),Er(0|S,0|_,0|r),Er(0|_,0|M,0|r)),c=+m[b>>2],g>>>0>>0)for(h=b+(n<<2)|0,d=g;;){p=+m[h>>2]/c,m[h>>2]=p,s=g,u=h,f=b;do{f=f+4|0,m[(u=u+4|0)>>2]=+m[u>>2]-p*+m[f>>2],s=s+1|0}while((0|s)!=(0|n));if((0|(d=d+1|0))==(0|n))break;h=h+(w<<2)+(y<<2)|0}if((y=y+1|0)>>>0>=x>>>0)break e;g=g+1|0,_=_+(n<<2)|0,v=v+4|0,w=w+-1|0}return Ve(o),0}}while(0);if(A=M+(n<<2)|0,S=M+(n<<1<<2)|0,!i)for(v=A+(n<<2)|0,b=S+(n<<2)|0,w=e+((0|I(n,n))<<2)+-4|0,x=~n,y=0;;){for(Tr(0|M,0,0|r),m[M+(y<<2)>>2]=1,u=o,d=e,f=S,g=0,_=1;;){if(g)for(a=d,s=S,c=0,h=1;c+=+m[a>>2]*+m[s>>2],(0|(h=h+1|0))!=(0|_);)a=a+4|0,s=s+4|0;else c=0;if(m[f>>2]=+m[M+(l[u>>2]<<2)>>2]-c,(0|(g=g+1|0))==(0|n)){u=n,d=w,f=v,g=b;break}u=u+4|0,d=d+(n<<2)|0,f=f+4|0,_=_+1|0}for(;;){if(g=g+-4|0,p=+m[d>>2],u>>>0>>0)for(a=d,s=f,c=0,h=u;c+=+m[(a=a+4|0)>>2]*+m[s>>2],(0|(h=h+1|0))!=(0|n);)s=s+4|0;else c=0;if(u=u+-1|0,m[(f=f+-4|0)>>2]=(+m[g>>2]-c)/p,!u){a=t,s=0;break}d=d+(x<<2)|0}for(;l[a>>2]=l[A+(s<<2)>>2],(0|(s=s+1|0))!=(0|n);)a=a+(n<<2)|0;if((0|(y=y+1|0))==(0|n))break;t=t+4|0}return Ve(o),1}function jn(e){e|=0;var t=0,n=0,i=0,r=0,o=0,a=0;return(o=0|je(1,44))?(a=0|Ne(104),l[o>>2]=a,a?(a=0|Ne(28),l[(t=o+4|0)>>2]=a,0|a?(l[o+40>>2]=e,0|(a=o)):(Qn(0|l[o>>2]),l[o>>2]=0,di(0|l[t>>2]),l[t>>2]=0,0==(0|l[o+40>>2])&&0|(r=0|l[(i=o+8|0)>>2])&&(ze(r),l[i>>2]=0),0|(n=0|l[(t=o+12|0)>>2])&&(ze(n),l[t>>2]=0),Ve(o),0|(a=0))):(Qn(0),l[o>>2]=0,di(0|l[(a=o+4|0)>>2]),l[a>>2]=0,0==(0|l[o+40>>2])&&0|(n=0|l[(t=o+8|0)>>2])&&(ze(n),l[t>>2]=0),0|(n=0|l[(t=o+12|0)>>2])&&(ze(n),l[t>>2]=0),Ve(o),0|(a=0))):0|(o=0)}function Hn(e){var t,n=0,i=0;(e|=0)&&(Qn(0|l[e>>2]),l[e>>2]=0,di(0|l[(t=e+4|0)>>2]),l[t>>2]=0,0==(0|l[e+40>>2])&&0|(i=0|l[(n=e+8|0)>>2])&&(ze(i),l[n>>2]=0),0|(i=0|l[(n=e+12|0)>>2])&&(ze(i),l[n>>2]=0),Ve(e))}function zn(e,t,n){e|=0,n|=0;var i,r,o,s,c,u,f,p,g,_,y,v,b=0,w=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0,te=0,ne=0,ie=0,re=0,oe=0,ae=0,se=0,le=0,ce=0,he=0,ue=0,de=0,fe=0,pe=0,me=0,ge=0,_e=0,ye=0,ve=0,be=0,we=0,xe=0,Ae=0,Se=0,Me=0,Ee=0,Te=0,ke=0;if(v=(0|l[8+(t|=0)>>2])-(0|l[t>>2])|0,!(b=0|l[(Te=t+20|0)>>2]))return 1;c=t+24|0,u=n+808|0,f=n+16|0,p=e+4|0,g=e+8|0,_=e+16|0,y=e+20|0,s=n+20|0,i=t+32|0,r=e+12|0,o=e+32|0,Me=0,n=b;e:for(;;){if(Ae=0|l[c>>2],t=0|l[(Se=Ae+(136*Me|0)+24|0)>>2]){be=Ae+(136*Me|0)+16|0,xe=Me+-1|0,ve=0,b=0|l[(we=Ae+(136*Me|0)+20|0)>>2],n=0|l[be>>2];do{if(0|I(b,n)){pe=Ae+(136*Me|0)+28+(36*ve|0)+20|0,me=Ae+(136*Me|0)+28+(36*ve|0)+16|0,ge=Ae+(136*Me|0)+28+(36*ve|0)|0,_e=Ae+(136*Me|0)+28+(36*ve|0)+4|0,ye=Ae+(136*Me|0)+28+(36*ve|0)+32|0,fe=0;do{if(ue=(t=0|l[pe>>2])+(40*fe|0)+16|0,0|I(0|l[(de=t+(40*fe|0)+20|0)>>2],0|l[ue>>2])){he=t+(40*fe|0)+24|0,ce=0;do{if(n=0|l[he>>2],ne=0|l[me>>2],b=0|l[u>>2],t=0|l[f>>2],ie=0|l[p>>2],re=0|l[e>>2],oe=n+(56*ce|0)+8|0,le=n+(56*ce|0)+12|0,!(0|Un(e,(0|l[n+(56*ce|0)+16>>2])-(0|l[oe>>2])|0,(0|l[n+(56*ce|0)+20>>2])-(0|l[le>>2])|0))){n=0,V=219;break e}if(w=0|l[(ae=n+(56*ce|0)+24|0)>>2],oi(re),ai(re,18,0,46),ai(re,17,0,3),ai(re,0,0,4),0|l[(se=n+(56*ce|0)+48|0)>>2]){Q=n+(56*ce|0)+4|0,K=0!=(1&t|0),$=0==(2&t|0),ee=0==(8&t|0),te=ne<<8,q=0==(32&t|0),J=0,t=2,n=w+b|0;do{x=0|l[Q>>2],X=K&(t>>>0<2?(0|n)<=((0|l[ae>>2])-4|0):0),b=0|l[x+(J<<5)>>2];t:do{if(b){if(b=(0|l[b>>2])+(0|l[x+(J<<5)+4>>2])|0,w=0|l[x+(J<<5)+16>>2],X)fi(ie,b,w);else if(!(0|hi(re,b,w))){n=0,V=219;break e}if((0|n)>0&0!=(0|l[(Z=x+(J<<5)+12|0)>>2]))for(Y=$|X,W=0;;){n:do{switch(0|t){case 0:if(X){if(B=1<>1,!(b=0|l[y>>2]))break n;for(R=0-B|0,L=0,w=0|l[_>>2];;){if(P=L,L=L+4|0,w){k=-4==(0|P),C=3|P,T=0;do{i:do{if(!k)if(ee){b=P;do{if(b>>>0>=(0|l[y>>2])>>>0)break i;S=b,b=b+1|0,A=(w=0|l[r>>2])+(1+(x=(0|I(0|l[o>>2],b))+T|0)<<1)|0,S=(0|l[g>>2])+((0|I(0|l[_>>2],S))+T<<2)|0,M=0|l[p>>2],0!=(255&(V=0|a[A>>1])|0)&0==(20480&V|0)&&(0|pi(M)&&(U=0|pi(M),l[S>>2]=0|U?R:B,z=A+(0-(V=0|l[o>>2])<<1)|0,V=A+(V<<1)|0,a[(H=z+-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=w+(x<<1)|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[A>>1]=4096|a[A>>1],a[(z=A+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]),a[A>>1]=16384|a[A>>1])}while(b>>>0>>0)}else{b=P;do{if(b>>>0>=(w=0|l[y>>2])>>>0)break i;U=b,b=b+1|0,S=(x=0|l[r>>2])+(1+(A=(0|I(0|l[o>>2],b))+T|0)<<1)|0,M=(0|l[g>>2])+((0|I(0|l[_>>2],U))+T<<2)|0,E=0|l[p>>2],V=0|a[S>>1],0!=(255&(V=(0|U)==(0|C)|(0|U)==(w+-1|0)?-1095&V:V)|0)&0==(20480&V|0)&&(0|pi(E)&&(U=0|pi(E),l[M>>2]=0|U?R:B,z=S+(0-(V=0|l[o>>2])<<1)|0,V=S+(V<<1)|0,a[(H=z+-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=x+(A<<1)|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[S>>1]=4096|a[S>>1],a[(z=S+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]),a[S>>1]=16384|a[S>>1])}while(b>>>0>>0)}}while(0);T=T+1|0,w=0|l[_>>2]}while(T>>>0>>0);b=0|l[y>>2]}else w=0;if(L>>>0>=b>>>0){V=187;break n}}}if(!ee){if(D=1<>1,!(b=0|l[y>>2])){V=187;break n}for(O=0-D|0,B=0,x=w=0|l[_>>2];;){if(R=B,B=B+4|0,w){for(P=-4==(0|R),L=3|R,C=0;;){if(P)b=x;else{A=R;do{if(A>>>0>=(b=0|l[y>>2])>>>0)break;V=A,A=A+1|0,E=(S=0|l[r>>2])+(1+(M=(0|I(0|l[o>>2],A))+C|0)<<1)|0,T=(0|l[g>>2])+((0|I(0|l[_>>2],V))+C<<2)|0,k=0|l[e>>2],w=0|a[E>>1],0!=(0|(w=255&(b=(0|V)==(0|L)|(0|V)==(b+-1|0)?-1095&w:w)))&0==(20480&b|0)&&(l[(x=k+100|0)>>2]=k+24+(h[20356+(w|te)>>0]<<2),0|ui(k)&&(U=b>>>4&255,l[x>>2]=k+24+(h[21380+U>>0]<<2),U=(V=0|ui(k))^h[21636+U>>0],l[T>>2]=0|U?O:D,z=E+(0-(V=0|l[o>>2])<<1)|0,V=E+(V<<1)|0,a[(H=z+-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=S+(M<<1)|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[E>>1]=4096|a[E>>1],a[(z=E+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]),a[E>>1]=16384|a[E>>1])}while(A>>>0>>0);b=0|l[_>>2]}if((C=C+1|0)>>>0>=b>>>0)break;x=b}x=b,w=b,b=0|l[y>>2]}else w=0;if(B>>>0>=b>>>0){V=187;break n}}}if(w=0|l[g>>2],b=2+(0|l[r>>2])|0,B=1<>1,(A=0|l[y>>2])>>>0>3){R=0-B|0,M=0,S=x=0|l[_>>2];do{if(x){L=0,x=S;do{k=w+(L<<2)|0,C=b+(L<<1)+((A=0|l[o>>2])<<1)|0,T=0|l[e>>2],0!=(0|(E=255&(S=0|a[C>>1])))&0==(20480&S|0)&&(l[(x=T+100|0)>>2]=T+24+(h[20356+(E|te)>>0]<<2),0|ui(T)?(U=S>>>4&255,l[x>>2]=T+24+(h[21380+U>>0]<<2),U=(A=0|ui(T))^h[21636+U>>0],l[k>>2]=0|U?R:B,V=C+((A=0|l[o>>2])<<1)|0,a[(H=(z=C+(0-A<<1)|0)-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=C+-2|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[C>>1]=4096|a[C>>1],a[(z=C+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]):A=0|l[o>>2],a[C>>1]=16384|a[C>>1],x=0|l[_>>2],T=0|l[e>>2]),k=k+(x<<2)|0,0!=(0|(E=255&(S=0|a[(C=C+(A<<1)|0)>>1])))&0==(20480&S|0)&&(l[(x=T+100|0)>>2]=T+24+(h[20356+(E|te)>>0]<<2),0|ui(T)?(U=S>>>4&255,l[x>>2]=T+24+(h[21380+U>>0]<<2),U=(A=0|ui(T))^h[21636+U>>0],l[k>>2]=0|U?R:B,V=C+((A=0|l[o>>2])<<1)|0,a[(H=(z=C+(0-A<<1)|0)-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=C+-2|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[C>>1]=4096|a[C>>1],a[(z=C+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]):A=0|l[o>>2],a[C>>1]=16384|a[C>>1],x=0|l[_>>2],T=0|l[e>>2]),P=k+(x<<2)|0,0!=(0|(E=255&(S=0|a[(C=C+(A<<1)|0)>>1])))&0==(20480&S|0)?(l[(x=T+100|0)>>2]=T+24+(h[20356+(E|te)>>0]<<2),0|ui(T)?(U=S>>>4&255,l[x>>2]=T+24+(h[21380+U>>0]<<2),U=(A=0|ui(T))^h[21636+U>>0],l[P>>2]=0|U?R:B,V=C+((A=0|l[o>>2])<<1)|0,a[(H=(z=C+(0-A<<1)|0)-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=C+-2|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[C>>1]=4096|a[C>>1],a[(z=C+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]):A=0|l[o>>2],a[C>>1]=16384|a[C>>1],x=0|l[_>>2],k=0|l[e>>2]):k=T,T=P+(x<<2)|0,0!=(0|(E=255&(S=0|a[(A=C+(A<<1)|0)>>1])))&0==(20480&S|0)&&(l[(x=k+100|0)>>2]=k+24+(h[20356+(E|te)>>0]<<2),0|ui(k)&&(U=S>>>4&255,l[x>>2]=k+24+(h[21380+U>>0]<<2),U=(V=0|ui(k))^h[21636+U>>0],l[T>>2]=0|U?R:B,z=A+(0-(V=0|l[o>>2])<<1)|0,V=A+(V<<1)|0,a[(H=z+-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=A+-2|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[A>>1]=4096|a[A>>1],a[(z=A+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]),a[A>>1]=16384|a[A>>1],x=0|l[_>>2]),L=L+1|0}while(L>>>0>>0);S=x,A=0|l[y>>2]}else x=0;w=w+(x<<2<<2)|0,b=b+(l[o>>2]<<2<<1)|0,M=M+4|0}while(M>>>0<(-4&A)>>>0);x=S}else M=0,x=0|l[_>>2];if(!x){V=187;break n}R=0-B|0,L=0;do{if(M>>>0>>0)for(k=M,C=b+(L<<1)|0,P=w+(L<<2)|0;C=C+(l[o>>2]<<1)|0,S=0|l[e>>2],0!=(0|(T=255&(E=0|a[C>>1])))&0==(20480&E|0)&&(l[(x=S+100|0)>>2]=S+24+(h[20356+(T|te)>>0]<<2),0|ui(S)&&(U=E>>>4&255,l[x>>2]=S+24+(h[21380+U>>0]<<2),U=(V=0|ui(S))^h[21636+U>>0],l[P>>2]=0|U?R:B,z=C+(0-(V=0|l[o>>2])<<1)|0,V=C+(V<<1)|0,a[(H=z+-2|0)>>1]=2|a[H>>1],a[z>>1]=a[z>>1]|a[3160+(U<<1)>>1],a[(z=z+2|0)>>1]=4|a[z>>1],a[(z=C+-2|0)>>1]=a[z>>1]|a[3160+(U+2<<1)>>1],a[C>>1]=4096|a[C>>1],a[(z=C+2|0)>>1]=a[z>>1]|a[3160+(U+4<<1)>>1],a[(z=V+-2|0)>>1]=1|a[z>>1],a[V>>1]=a[V>>1]|a[3160+(U+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1]),a[C>>1]=16384|a[C>>1],x=0|l[_>>2],A=0|l[y>>2]),!((k=k+1|0)>>>0>=A>>>0);)P=P+(x<<2)|0;L=L+1|0}while(L>>>0>>0);V=187;break;case 1:if(X){if(k=0-(T=1<>1)|0,!(b=0|l[y>>2]))break n;for(E=0,x=w=0|l[_>>2];;){M=E,E=E+4|0;do{if(w){if(-4==(0|M)){A=x,w=x;break}S=0;do{w=S,S=S+1|0,b=M;do{if(b>>>0>=(0|l[y>>2])>>>0)break;A=b,b=b+1|0,x=(0|l[r>>2])+((0|I(0|l[o>>2],b))+S<<1)|0,A=(0|l[g>>2])+((0|I(0|l[_>>2],A))+w<<2)|0,4096==(20480&a[x>>1])&&(U=(U=0!=(0|pi(0|l[p>>2])))?T:k,V=0|l[A>>2],l[A>>2]=((0|V)<0?0-U|0:U)+V,a[x>>1]=8192|a[x>>1])}while(b>>>0>>0);b=0|l[_>>2]}while(S>>>0>>0);A=b,w=b,b=0|l[y>>2]}else A=x,w=0}while(0);if(E>>>0>=b>>>0){V=187;break n}x=A}}if(!ee){if(L=0-(P=1<>1)|0,!(b=0|l[y>>2])){V=187;break n}for(C=0,A=w=0|l[_>>2];;){k=C,C=C+4|0;do{if(w){if(T=3|k,-4==(0|k)){x=A,w=A;break}E=0;do{x=E,E=E+1|0,w=k;do{if(w>>>0>=(b=0|l[y>>2])>>>0)break;U=w,w=w+1|0,S=(0|l[r>>2])+((0|I(0|l[o>>2],w))+E<<1)|0,M=(0|l[g>>2])+((0|I(0|l[_>>2],U))+x<<2)|0,A=0|l[e>>2],V=0|a[S>>1],4096==(20480&(b=(0|U)==(0|T)|(0|U)==(b+-1|0)?-1095&V:V)|0)&&(l[A+100>>2]=A+24+((8192&b|0?16:255&b|0?15:14)<<2),U=(U=0!=(0|ui(A)))?P:L,V=0|l[M>>2],l[M>>2]=((0|V)<0?0-U|0:U)+V,a[S>>1]=8192|a[S>>1])}while(w>>>0>>0);b=0|l[_>>2]}while(E>>>0>>0);x=b,w=b,b=0|l[y>>2]}else x=A,w=0}while(0);if(C>>>0>=b>>>0){V=187;break n}A=x}}if(w=0|l[g>>2],b=2+(0|l[r>>2])|0,R=0-(L=1<>1)|0,A=0|l[y>>2],x=0|l[_>>2],A>>>0>3){M=0,S=x;do{if(x){P=0,x=S;do{T=w+(P<<2)|0,k=b+(P<<1)+((E=0|l[o>>2])<<1)|0,A=0|l[e>>2],4096==(20480&(S=0|a[k>>1])|0)&&(l[A+100>>2]=A+24+((8192&S|0?16:255&S|0?15:14)<<2),x=(x=0!=(0|ui(A)))?L:R,A=0|l[T>>2],l[T>>2]=((0|A)<0?0-x|0:x)+A,a[k>>1]=8192|a[k>>1],A=0|l[e>>2],x=0|l[_>>2],E=0|l[o>>2]),T=T+(x<<2)|0,4096==(20480&(S=0|a[(k=k+(E<<1)|0)>>1])|0)&&(l[A+100>>2]=A+24+((8192&S|0?16:255&S|0?15:14)<<2),x=(x=0!=(0|ui(A)))?L:R,A=0|l[T>>2],l[T>>2]=((0|A)<0?0-x|0:x)+A,a[k>>1]=8192|a[k>>1],A=0|l[e>>2],x=0|l[_>>2],E=0|l[o>>2]),C=T+(x<<2)|0,4096==(20480&(S=0|a[(k=k+(E<<1)|0)>>1])|0)?(l[A+100>>2]=A+24+((8192&S|0?16:255&S|0?15:14)<<2),x=(x=0!=(0|ui(A)))?L:R,T=0|l[C>>2],l[C>>2]=((0|T)<0?0-x|0:x)+T,a[k>>1]=8192|a[k>>1],T=0|l[e>>2],x=0|l[_>>2],A=0|l[o>>2]):(T=A,A=E),E=C+(x<<2)|0,4096==(20480&(S=0|a[(A=k+(A<<1)|0)>>1])|0)&&(l[T+100>>2]=T+24+((8192&S|0?16:255&S|0?15:14)<<2),V=(V=0!=(0|ui(T)))?L:R,x=0|l[E>>2],l[E>>2]=((0|x)<0?0-V|0:V)+x,a[A>>1]=8192|a[A>>1],x=0|l[_>>2]),P=P+1|0}while(P>>>0>>0);S=x,A=0|l[y>>2]}else x=0;w=w+(x<<2<<2)|0,b=b+(l[o>>2]<<2<<1)|0,M=M+4|0}while(M>>>0<(-4&A)>>>0);x=S}else M=0;if(!x){V=187;break n}P=0;do{if(M>>>0>>0)for(T=M,k=b+(P<<1)|0,C=w+(P<<2)|0;k=k+(l[o>>2]<<1)|0,S=0|l[e>>2],4096==(20480&(E=0|a[k>>1])|0)&&(l[S+100>>2]=S+24+((8192&E|0?16:255&E|0?15:14)<<2),A=(A=0!=(0|ui(S)))?L:R,x=0|l[C>>2],l[C>>2]=((0|x)<0?0-A|0:A)+x,a[k>>1]=8192|a[k>>1],x=0|l[_>>2],A=0|l[y>>2]),!((T=T+1|0)>>>0>=A>>>0);)C=C+(x<<2)|0;P=P+1|0}while(P>>>0>>0);V=187;break;case 2:z=0|l[e>>2],U=1<>1;do{if(ee){if(x=0|l[g>>2],w=2+(0|l[r>>2])|0,(b=0|l[y>>2])>>>0>3)for(R=z+92|0,B=z+100|0,D=z+96|0,O=0-U|0,A=w,M=0,S=V=0|l[_>>2],w=V;;){if(S){C=1+(k=1|M)|0,P=3|M,L=k+3|0,T=0;do{w=x+(T<<2)|0,S=A+(T<<1)|0,V=0|l[r>>2],b=0|l[o>>2],T=T+1|0,j=V+((0|I(b,k))+T<<1)|0,N=V+((0|I(b,C))+T<<1)|0,H=V+((0|I(b,P))+T<<1)|0,V=V+((0|I(b,L))+T<<1)|0;i:do{if(20735&(a[N>>1]|a[j>>1]|a[H>>1]|a[V>>1]))Vn(e,H=S+(b<<1)|0,w,ne,U),V=w+(l[_>>2]<<2)|0,Vn(e,H=H+(l[o>>2]<<1)|0,V,ne,U),V=V+(l[_>>2]<<2)|0,Vn(e,H=H+(l[o>>2]<<1)|0,V,ne,U),Vn(e,H+(l[o>>2]<<1)|0,V+(l[_>>2]<<2)|0,ne,U);else{if(l[B>>2]=R,!(0|ui(z)))break;if(l[B>>2]=D,(E=0|(E=(0|ui(z))<<1)|ui(z))>>>0>=4)break;for(w=w+((0|I(0|l[_>>2],E))<<2)|0,b=S+((0|I(0|l[o>>2],E))<<1)|0,S=E;;){if(S>>>0>=(0|l[y>>2])>>>0)break i;if(b=b+(l[o>>2]<<1)|0,(0|S)==(0|E)?(V=0|l[e>>2],H=(0|d[b>>1])>>>4&255,l[V+100>>2]=V+24+(h[21380+H>>0]<<2),H=(V=0|ui(V))^h[21636+H>>0],l[w>>2]=0|H?O:U,j=b+(0-(V=0|l[o>>2])<<1)|0,V=b+(V<<1)|0,a[(N=j+-2|0)>>1]=2|a[N>>1],a[j>>1]=a[j>>1]|a[3160+(H<<1)>>1],a[(j=j+2|0)>>1]=4|a[j>>1],a[(j=b+-2|0)>>1]=a[j>>1]|a[3160+(H+2<<1)>>1],a[b>>1]=4096|a[b>>1],a[(j=b+2|0)>>1]=a[j>>1]|a[3160+(H+4<<1)>>1],a[(j=V+-2|0)>>1]=1|a[j>>1],a[V>>1]=a[V>>1]|a[3160+(H+6<<1)>>1],a[(V=V+2|0)>>1]=8|a[V>>1],a[b>>1]=-16385&a[b>>1]):Vn(e,b,w,ne,U),(S=S+1|0)>>>0>=4)break;w=w+(l[_>>2]<<2)|0}}}while(0);w=0|l[_>>2]}while(T>>>0>>0);S=w,b=0|l[y>>2]}else S=0;if(x=x+(S<<2<<2)|0,A=A+(l[o>>2]<<2<<1)|0,(M=M+4|0)>>>0>=(-4&b)>>>0){k=A,T=x;break}}else k=w,T=x,M=0,w=0|l[_>>2];if(!w)break;E=0;do{if(M>>>0>>0)for(x=k+(E<<1)|0,A=T+(E<<2)|0,S=M;Vn(e,x=x+(l[o>>2]<<1)|0,A,ne,U),w=0|l[_>>2],!((S=S+1|0)>>>0>=(b=0|l[y>>2])>>>0);)A=A+(w<<2)|0;E=E+1|0}while(E>>>0>>0)}else{if(!(b=0|l[y>>2]))break;G=z+92|0,N=z+100|0,j=z+96|0,H=0-U|0,x=0,w=0|l[_>>2];do{if(w)for(R=3|x,D=1+(B=1|x)|0,O=B+3|0,F=x+4|0,L=0;;){do{if(R>>>0>>0){if(b=0|l[r>>2],w=0|l[o>>2],A=L+1|0,P=b+((0|I(w,B))+A<<1)|0,20735&a[P>>1]){b=0,P=0,V=152;break}if(P=b+((0|I(w,D))+A<<1)|0,20735&a[P>>1]){b=0,P=0,V=152;break}if(P=b+((0|I(w,R))+A<<1)|0,20735&a[P>>1]){b=0,P=0,V=152;break}if(P=b+((0|I(w,O))+A<<1)|0,20665&a[P>>1]){b=0,P=0,V=152;break}if(l[N>>2]=G,!(0|ui(z)))break;l[N>>2]=j,b=0|(b=(0|ui(z))<<1)|ui(z),P=1,V=152}else b=0,P=0,V=152}while(0);i:do{if(152==(0|V)){if(V=0,!((S=b+x|0)>>>0>>0))break;A=S;do{if(A>>>0>=(b=0|l[y>>2])>>>0)break i;ke=A,A=A+1|0,T=(M=0|l[r>>2])+(1+(E=(0|I(0|l[o>>2],A))+L|0)<<1)|0,k=(0|l[g>>2])+((0|I(0|l[_>>2],ke))+L<<2)|0,C=0|l[e>>2],w=0|a[T>>1],w=(0|ke)==(0|R)|(0|ke)==(b+-1|0)?-1095&w:w;do{if(P&(0|ke)==(0|S))b=C+100|0,V=158;else{if(20480&w|0)break;l[(b=C+100|0)>>2]=C+24+(h[20356+(255&w|te)>>0]<<2),0|ui(C)&&(V=158)}}while(0);158==(0|V)&&(V=0,ke=w>>>4&255,l[b>>2]=C+24+(h[21380+ke>>0]<<2),C=0|ui(C),C^=h[21636+ke>>0],l[k>>2]=0|C?H:U,k=T+(0-(ke=0|l[o>>2])<<1)|0,ke=T+(ke<<1)|0,a[(w=k+-2|0)>>1]=2|a[w>>1],a[k>>1]=a[k>>1]|a[3160+(C<<1)>>1],a[(k=k+2|0)>>1]=4|a[k>>1],a[(k=M+(E<<1)|0)>>1]=a[k>>1]|a[3160+(C+2<<1)>>1],a[T>>1]=4096|a[T>>1],a[(k=T+2|0)>>1]=a[k>>1]|a[3160+(C+4<<1)>>1],a[(k=ke+-2|0)>>1]=1|a[k>>1],a[ke>>1]=a[ke>>1]|a[3160+(C+6<<1)>>1],a[(ke=ke+2|0)>>1]=8|a[ke>>1]),a[T>>1]=-16385&a[T>>1]}while(A>>>0>>0)}}while(0);if(L=L+1|0,w=0|l[_>>2],b=0|l[y>>2],L>>>0>=w>>>0){x=F;break}}else x=x+4|0,w=0}while(x>>>0>>0)}}while(0);if(q){V=187;break n}l[z+100>>2]=z+96,ui(z),ui(z),ui(z),ui(z),V=187;break;default:V=187}}while(0);do{if(187==(0|V)){if(V=0,Y)break;oi(re),ai(re,18,0,46),ai(re,17,0,3),ai(re,0,0,4)}}while(0);if(t=(ke=3==(0|(t=t+1|0)))?0:t,W=W+1|0,!((0|(n=n+(ke<<31>>31)|0))>0&&W>>>0<(0|l[Z>>2])>>>0))break t}}}while(0);J=J+1|0}while(J>>>0<(0|l[se>>2])>>>0)}if(n=(0|l[oe>>2])-(0|l[ge>>2])|0,t=(0|l[le>>2])-(0|l[_e>>2])|0,1&(b=0|l[me>>2])&&(ke=0|l[c>>2],n=(0|l[ke+(136*xe|0)+8>>2])+n-(0|l[ke+(136*xe|0)>>2])|0),2&b&&(ke=0|l[c>>2],t=(0|l[ke+(136*xe|0)+12>>2])+t-(0|l[ke+(136*xe|0)+4>>2])|0),E=0|l[g>>2],T=0|l[_>>2],k=0|l[y>>2],0|(b=0|l[u>>2])&&(Ee=1<>2]))>-1?S:0-S|0))>=(0|Ee)&&(ke=M>>l[u>>2],l[A>>2]=(0|S)<0?0-ke|0:ke),w=w+1|0}while((0|w)!=(0|T));b=b+1|0}while((0|b)!=(0|k))}if(A=(0|l[i>>2])+((0|I(t,v))+n<<2)|0,n=0==(0|k)|0==(0|T),1==(0|l[s>>2])){if(!n){n=0;do{b=0|I(n,T),w=0|I(n,v),t=0;do{l[A+(t+w<<2)>>2]=(0|l[E+(t+b<<2)>>2])/2|0,t=t+1|0}while((0|t)!=(0|T));n=n+1|0}while((0|n)!=(0|k))}}else if(!n)for(t=E,w=0;;){for(n=A,b=t,x=0;m[n>>2]=+m[ye>>2]*+(0|l[b>>2]),(0|(x=x+1|0))!=(0|T);)n=n+4|0,b=b+4|0;if((0|(w=w+1|0))==(0|k))break;A=A+(v<<2)|0,t=t+(T<<2)|0}ce=ce+1|0}while(ce>>>0<(0|I(0|l[de>>2],0|l[ue>>2]))>>>0);b=0|l[we>>2],n=0|l[be>>2]}fe=fe+1|0}while(fe>>>0<(0|I(b,n))>>>0);t=0|l[Se>>2]}ve=ve+1|0}while(ve>>>0>>0);n=0|l[Te>>2]}if((Me=Me+1|0)>>>0>=n>>>0){n=1,V=219;break}}return 219==(0|V)?0|n:0}function Un(e,t,n){e|=0;var i,r=0,o=0,a=0,s=0;if(s=0|I(n|=0,t|=0),!(0|l[e+40>>2])){o=e+24|0,r=e+8|0;do{if(s>>>0>(0|l[o>>2])>>>0){if(ze(0|l[r>>2]),a=0|He(s<<2),l[r>>2]=a,a){l[o>>2]=s,o=a,r=a;break}return 0}o=r=0|l[r>>2]}while(0);0|o&&Tr(0|r,0,s<<2|0)}a=t+2|0,l[e+32>>2]=a,a=0|I(n+2|0,a),s=e+28|0,r=0|l[(i=e+12|0)>>2];do{if(a>>>0>(0|l[s>>2])>>>0){if(ze(r),r=0|He(o=a<<1),l[i>>2]=r,r){l[s>>2]=a;break}return 0}o=a<<1}while(0);return Tr(0|r,0,0|o),l[e+16>>2]=t,l[e+20>>2]=n,1}function Vn(e,t,n,i,r){t|=0,n|=0,i|=0,r|=0;var o,s=0,c=0;return s=0|l[(e|=0)>>2],20480&(c=0|a[t>>1])|0?(c=0|a[t>>1],c&=-16385,void(a[t>>1]=c)):(l[(o=s+100|0)>>2]=s+24+(h[20356+(255&c|i<<8)>>0]<<2),0|ui(s)?(c=c>>>4&255,l[o>>2]=s+24+(h[21380+c>>0]<<2),s=0|ui(s),s^=h[21636+c>>0],l[n>>2]=0|s?0-r|0:r,r=t+(0-(c=0|l[e+32>>2])<<1)|0,c=t+(c<<1)|0,a[(i=r+-2|0)>>1]=2|a[i>>1],a[r>>1]=a[r>>1]|a[3160+(s<<1)>>1],a[(r=r+2|0)>>1]=4|a[r>>1],a[(r=t+-2|0)>>1]=a[r>>1]|a[3160+(s+2<<1)>>1],a[t>>1]=4096|a[t>>1],a[(r=t+2|0)>>1]=a[r>>1]|a[3160+(s+4<<1)>>1],a[(r=c+-2|0)>>1]=1|a[r>>1],a[c>>1]=a[c>>1]|a[3160+(s+6<<1)>>1],a[(c=c+2|0)>>1]=8|a[c>>1],c=0|a[t>>1],c&=-16385,void(a[t>>1]=c)):(c=0|a[t>>1],c&=-16385,void(a[t>>1]=c)))}function Wn(e,t,n,i,o){e|=0,n|=0,i|=0,o|=0;var s,c,u,d,f,p,g,y,v,b,w=0,x=0,A=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0,z=0,U=0,V=0,W=0,Z=0,Y=0,X=0,J=0,q=0,Q=0,K=0,$=0,ee=0,te=0,ne=0,ie=0,re=0,oe=0,ae=0,se=0,le=0,ce=0,he=0,ue=0,de=0,fe=0,pe=0,me=0,ge=0,_e=0,ye=0,ve=0,be=0,we=0,xe=0,Ae=0,Se=0,Me=0,Ee=0,Te=0,ke=0,Ie=0,Ce=0,Pe=0,Le=0,Re=0,Be=0,De=0,Oe=0,Fe=0,Ge=0,Ne=0,je=0,He=0,ze=0,Ue=0,Ve=0,We=0,Ze=0,Ye=0,Xe=0,Je=0,qe=0,Qe=0,Ke=0;if(_[(b=32+(t|=0)|0)>>3]=0,!(w=0|l[(Qe=t+16|0)>>2]))return 1;v=t+20|0,s=n+5584|0,c=e+16|0,u=e+20|0,d=e+8|0,f=e+36|0,p=0!=(0|i),g=e+12|0,y=e+32|0,qe=0,t=w;e:for(;;){if(n=0|l[v>>2],w=0|l[s>>2],Xe=(0|l[n+(52*qe|0)+8>>2])-(0|l[n+(52*qe|0)>>2])|0,x=0|l[(Je=n+(52*qe|0)+16|0)>>2]){Ye=n+(52*qe|0)+24|0,We=n+(52*qe|0)+32|0,Ze=w+(1080*qe|0)+20|0,ze=w+(1080*qe|0)+16|0,Ve=p&qe>>>0>>0,Ue=i+(qe<<3)|0,He=0,t=x;do{if(Ge=0|l[Ye>>2],n=0|l[(Ne=Ge+(136*He|0)+24|0)>>2]){Be=Ge+(136*He|0)+16|0,Oe=~He,Fe=He+-1|0,Re=0,w=0|l[(De=Ge+(136*He|0)+20|0)>>2],t=0|l[Be>>2];do{if(Le=Ge+(136*He|0)+28+(36*Re|0)+32|0,0|I(w,t)){Te=Ge+(136*He|0)+28+(36*Re|0)+20|0,ke=Ge+(136*He|0)+28+(36*Re|0)|0,Ie=Ge+(136*He|0)+28+(36*Re|0)+4|0,Ce=Ge+(136*He|0)+28+(36*Re|0)+16|0,Pe=((0|(Ee=67108864/(0|~~+M(8192*+m[Le>>2]))|0))<0)<<31>>31,Me=0;do{if(Ae=(n=0|l[Te>>2])+(40*Me|0)+16|0,0|I(0|l[(Se=n+(40*Me|0)+20|0)>>2],0|l[Ae>>2])){xe=n+(40*Me|0)+24|0,we=0;do{if(be=0|l[xe>>2],t=(x=0|l[be+(52*we|0)+12>>2])-(0|l[ke>>2])|0,n=(A=0|l[be+(52*we|0)+16>>2])-(0|l[Ie>>2])|0,1&(w=0|l[Ce>>2])&&(ve=0|l[Ye>>2],t=(0|l[ve+(136*Fe|0)+8>>2])+t-(0|l[ve+(136*Fe|0)>>2])|0),2&w&&(ve=0|l[Ye>>2],n=(0|l[ve+(136*Fe|0)+12>>2])+n-(0|l[ve+(136*Fe|0)+4>>2])|0),!(0|Un(e,(0|l[be+(52*we|0)+20>>2])-x|0,(0|l[be+(52*we|0)+24>>2])-A|0))){t=0,je=163;break e}A=0|l[c>>2],E=0|l[u>>2],C=(0|l[We>>2])+((0|I(n,Xe))+t<<2)|0,l[d>>2]=C,l[f>>2]=Xe,t=0|l[Ze>>2],n=0!=(0|E);do{if(1==(0|t))if(n){if(!A){je=27;break}for(t=0,n=0;;){for(w=0,x=t;l[(je=C+(x<<2)|0)>>2]=l[je>>2]<<6,(0|(w=w+1|0))!=(0|A);)x=x+1|0;if((0|(n=n+1|0))==(0|E)){je=27;break}t=Xe+t|0}}else t=1;else if(n){if(!A){je=27;break}for(t=0,w=0;;){for(n=0,x=w;ve=0|Ar(0|(ve=0|gr(0|(ve=0|mr(0|(ve=0|l[(je=C+(x<<2)|0)>>2]),((0|ve)<0)<<31>>31|0,0|Ee,0|Pe)),0|S,4096,0)),0|S,18),l[je>>2]=ve,(0|(n=n+1|0))!=(0|A);)x=x+1|0;if((0|(t=t+1|0))==(0|E)){je=27;break}w=Xe+w|0}}}while(0);27==(0|je)&&(je=0,t=0|l[Ze>>2]),me=0|l[Ce>>2],ge=(0|l[Je>>2])+Oe|0,_e=+m[Le>>2],ye=0|l[ze>>2],ve=0|l[e>>2],E=0|l[c>>2];do{if(E){if(!(T=0|l[u>>2])){n=0;break}A=0|l[f>>2],x=0,w=0;do{n=0;do{pe=C+((0|I(n,A))+x<<2)|0,w=(0|w)>(0|(pe=(0|(pe=0|l[pe>>2]))>-1?pe:0-pe|0))?w:pe,n=n+1|0}while((0|n)!=(0|T));x=x+1|0}while((0|x)!=(0|E));if(!w){n=0;break}if((0|w)>1)for(n=0;n=n+1|0,w>>>0>3;)w>>>=1;else n=0;n=n+-5|0}else n=0}while(0);l[(fe=be+(52*we|0)+28|0)>>2]=n,n=n+-1|0,oi(ve),ai(ve,18,0,46),ai(ve,17,0,3),ai(ve,0,0,4),$n(ve,0|l[(pe=be+(52*we|0)|0)>>2]);t:do{if((0|n)>-1)for(ue=be+(52*we|0)+8|0,de=0!=(0|(ne=1&ye)),ie=1==(0|t),re=0==(4&ye|0),ne=0==(0|ne),oe=0==(2&ye|0),ae=0!=(0|(le=8&ye)),se=me<<8,ce=0==(32&ye|0),he=1^(le=0==(0|le)),t=0,ee=2,w=0,te=0;;){$=0|l[ue>>2],V=de&(ee>>>0<2?(0|n)<((0|l[fe>>2])-4|0):0);n:do{switch(0|ee){case 0:if(z=1<>2])){w=0;break n}U=0==(0|n)?3176:3432,H=0,w=0,A=E=0|l[c>>2];do{if(j=H,H=H+4|0,A){for(G=-4==(0|j),N=3|j,F=0;;){if(G)A=E;else{O=j;do{if(O>>>0>=(x=0|l[u>>2])>>>0)break;K=O,O=O+1|0,D=(L=0|l[g>>2])+(1+(R=(0|I(0|l[y>>2],O))+F|0)<<1)|0,T=(0|l[d>>2])+((0|I(0|l[f>>2],K))+F<<2)|0,B=0|l[e>>2],C=0|a[D>>1],0!=(0|(x=255&(C=ae&((0|K)==(0|N)|(0|K)==(x+-1|0))?-1095&C:C)))&0==(20480&C|0)&&(E=1&(A=0!=(((0|(A=0|l[T>>2]))<0?0-A|0:A)&z|0)),l[(P=B+100|0)>>2]=B+24+(h[20356+(x|se)>>0]<<2),V?ii(B,E):ei(B,E),A&&(A=(x=0|l[T>>2])>>>31,w=w+(0|a[U+((((0|x)<0?0-x|0:x)>>>n&127)<<1)>>1])|0,x=C>>>4&255,l[P>>2]=B+24+(h[21380+x>>0]<<2),V?ii(B,A):ei(B,A^h[21636+x>>0]),Q=D+(0-(K=0|l[y>>2])<<1)|0,K=D+(K<<1)|0,a[(q=Q+-2|0)>>1]=2|a[q>>1],a[Q>>1]=a[Q>>1]|a[3160+(A<<1)>>1],a[(Q=Q+2|0)>>1]=4|a[Q>>1],a[(Q=L+(R<<1)|0)>>1]=a[Q>>1]|a[3160+((2|A)<<1)>>1],a[D>>1]=4096|a[D>>1],a[(Q=D+2|0)>>1]=a[Q>>1]|a[3160+((4|A)<<1)>>1],a[(Q=K+-2|0)>>1]=1|a[Q>>1],a[K>>1]=a[K>>1]|a[3160+((6|A)<<1)>>1],a[(K=K+2|0)>>1]=8|a[K>>1]),a[D>>1]=16384|a[D>>1])}while(O>>>0>>0);A=0|l[c>>2]}if((F=F+1|0)>>>0>=A>>>0)break;E=A}x=0|l[u>>2],E=A}else A=0}while(H>>>0>>0);break;case 1:if(F=1<>2])){w=0;break n}G=0==(0|n)?3688:3944,O=0,w=0,A=0|l[c>>2];do{if(D=O,O=O+4|0,A){R=-4==(0|D),B=3|D,L=0;do{P=L,L=L+1|0;i:do{if(!R)if(le)if(V){C=D;do{if(C>>>0>=(0|l[u>>2])>>>0)break i;x=C,C=C+1|0,E=(0|l[g>>2])+((0|I(0|l[y>>2],C))+L<<1)|0,A=0|l[e>>2],4096==(20480&(T=0|a[E>>1])|0)&&(K=(0|l[d>>2])+((0|I(0|l[f>>2],x))+P<<2)|0,K=0|l[K>>2],w=w+(0|a[G+(((K=(0|K)<0?0-K|0:K)>>>n&127)<<1)>>1])|0,l[A+100>>2]=A+24+((8192&T|0?16:255&T|0?15:14)<<2),ii(A,0!=(K&F|0)&1),a[E>>1]=8192|a[E>>1])}while(C>>>0>>0)}else{C=D;do{if(C>>>0>=(0|l[u>>2])>>>0)break i;x=C,C=C+1|0,E=(0|l[g>>2])+((0|I(0|l[y>>2],C))+L<<1)|0,A=0|l[e>>2],4096==(20480&(T=0|a[E>>1])|0)&&(K=(0|l[d>>2])+((0|I(0|l[f>>2],x))+P<<2)|0,K=0|l[K>>2],w=w+(0|a[G+(((K=(0|K)<0?0-K|0:K)>>>n&127)<<1)>>1])|0,l[A+100>>2]=A+24+((8192&T|0?16:255&T|0?15:14)<<2),ei(A,0!=(K&F|0)&1),a[E>>1]=8192|a[E>>1])}while(C>>>0>>0)}else if(V){C=D;do{if(C>>>0>=(x=0|l[u>>2])>>>0)break i;A=C,C=C+1|0,T=(0|l[g>>2])+((0|I(0|l[y>>2],C))+L<<1)|0,E=0|l[e>>2],K=0|a[T>>1],4096==(20480&(x=(0|A)==(0|B)|(0|A)==(x+-1|0)?-1095&K:K)|0)&&(K=(0|l[d>>2])+((0|I(0|l[f>>2],A))+P<<2)|0,K=0|l[K>>2],w=w+(0|a[G+(((K=(0|K)<0?0-K|0:K)>>>n&127)<<1)>>1])|0,l[E+100>>2]=E+24+((8192&x|0?16:255&x|0?15:14)<<2),ii(E,0!=(K&F|0)&1),a[T>>1]=8192|a[T>>1])}while(C>>>0>>0)}else{C=D;do{if(C>>>0>=(x=0|l[u>>2])>>>0)break i;A=C,C=C+1|0,T=(0|l[g>>2])+((0|I(0|l[y>>2],C))+L<<1)|0,E=0|l[e>>2],K=0|a[T>>1],4096==(20480&(x=(0|A)==(0|B)|(0|A)==(x+-1|0)?-1095&K:K)|0)&&(K=(0|l[d>>2])+((0|I(0|l[f>>2],A))+P<<2)|0,K=0|l[K>>2],w=w+(0|a[G+(((K=(0|K)<0?0-K|0:K)>>>n&127)<<1)>>1])|0,l[E+100>>2]=E+24+((8192&x|0?16:255&x|0?15:14)<<2),ei(E,0!=(K&F|0)&1),a[T>>1]=8192|a[T>>1])}while(C>>>0>>0)}}while(0);A=0|l[c>>2]}while(L>>>0>>0);x=0|l[u>>2]}else A=0}while(O>>>0>>0);break;case 2:if(Y=0|l[e>>2],X=1<>2]){J=Y+92|0,q=Y+100|0,Q=Y+96|0,K=0==(0|n)?3176:3432,E=0,w=0,A=0|l[c>>2];do{if(A)for(N=3|E,H=1+(j=1|E)|0,z=j+3|0,Z=E+4|0,U=E+1|0,V=E+2|0,W=E+3|0,G=0;;){do{if(N>>>0>>0){if(x=0|l[g>>2],A=0|l[y>>2],T=G+1|0,C=x+((0|I(A,j))+T<<1)|0,C=0|a[C>>1],le){if(D=x+((0|I(A,H))+T<<1)|0,O=x+((0|I(A,N))+T<<1)|0,F=x+((0|I(A,z))+T<<1)|0,20735&(a[D>>1]|C|a[O>>1]|a[F>>1])){F=0,x=0,je=105;break}}else{if(20735&C){F=0,x=0,je=105;break}if(F=x+((0|I(A,H))+T<<1)|0,20735&a[F>>1]){F=0,x=0,je=105;break}if(F=x+((0|I(A,N))+T<<1)|0,20735&a[F>>1]){F=0,x=0,je=105;break}if(F=x+((0|I(A,z))+T<<1)|0,20665&a[F>>1]){F=0,x=0,je=105;break}}x=0|l[d>>2],A=0|l[f>>2],F=x+((0|I(A,E))+G<<2)|0,F=0|l[F>>2];do{if(((0|F)<0?0-F|0:F)&X)x=0;else{if(F=x+((0|I(A,U))+G<<2)|0,((0|(F=0|l[F>>2]))<0?0-F|0:F)&X|0){x=1;break}if(F=x+((0|I(A,V))+G<<2)|0,((0|(F=0|l[F>>2]))<0?0-F|0:F)&X|0){x=2;break}x=x+((0|I(A,W))+G<<2)|0,x=0==(((0|(x=0|l[x>>2]))<0?0-x|0:x)&X|0)?4:3}}while(0);if(l[q>>2]=J,ei(Y,4!=(0|x)&1),4==(0|x))break;l[q>>2]=Q,ei(Y,x>>>1),ei(Y,1&x),F=1,je=105}else F=0,x=0,je=105}while(0);i:do{if(105==(0|je)){if(je=0,!((O=x+E|0)>>>0>>0))break;D=O;do{if(D>>>0>=(x=0|l[u>>2])>>>0)break i;Ke=D,D=D+1|0,B=(C=0|l[g>>2])+(1+(P=(0|I(0|l[y>>2],D))+G|0)<<1)|0,L=(0|l[d>>2])+((0|I(0|l[f>>2],Ke))+G<<2)|0,R=0|l[e>>2],A=0|a[B>>1],T=((0|Ke)==(0|N)|(0|Ke)==(x+-1|0))&he?-1095&A:A;do{if(F&(0|Ke)==(0|O))x=R+100|0,je=111;else{if(20480&A|0)break;l[(x=R+100|0)>>2]=R+24+(h[20356+(255&T|se)>>0]<<2),ei(R,1&(Ke=0!=(((0|(Ke=0|l[L>>2]))<0?0-Ke|0:Ke)&X|0))),Ke&&(je=111)}}while(0);111==(0|je)&&(je=0,L=0|l[L>>2],w=w+(0|a[K+((((0|L)<0?0-L|0:L)>>>n&127)<<1)>>1])|0,Ke=T>>>4&255,l[x>>2]=R+24+(h[21380+Ke>>0]<<2),ei(R,(L>>>=31)^h[21636+Ke>>0]),R=B+(0-(Ke=0|l[y>>2])<<1)|0,Ke=B+(Ke<<1)|0,a[(T=R+-2|0)>>1]=2|a[T>>1],a[R>>1]=a[R>>1]|a[3160+(L<<1)>>1],a[(R=R+2|0)>>1]=4|a[R>>1],a[(R=C+(P<<1)|0)>>1]=a[R>>1]|a[3160+((2|L)<<1)>>1],a[B>>1]=4096|a[B>>1],a[(R=B+2|0)>>1]=a[R>>1]|a[3160+((4|L)<<1)>>1],a[(R=Ke+-2|0)>>1]=1|a[R>>1],a[Ke>>1]=a[Ke>>1]|a[3160+((6|L)<<1)>>1],a[(Ke=Ke+2|0)>>1]=8|a[Ke>>1]),a[B>>1]=-16385&a[B>>1]}while(D>>>0>>0)}}while(0);if(G=G+1|0,A=0|l[c>>2],x=0|l[u>>2],G>>>0>=A>>>0){E=Z;break}}else E=E+4|0,A=0}while(E>>>0>>0)}else w=0;if(ce)break n;ci(ve)}}while(0);k=(Ve?+_[Ue>>3]:1)*(k=ie?+Pn(ge,me):+Rn(ge,me))*_e*+(1<>3]=+_[b>>3]+k;do{if(re)je=127;else{if((0|n)<1&2==(0|ee)){je=127;break}ti(ve),A=1|r[(x=$+(24*t|0)+20|0)>>0],r[x>>0]=A,x=1}}while(0);do{if(127==(0|je)){if(130==(0|(je=0!=(0|ee)&(0|n)<(0|(x=(0|l[fe>>2])-4|0))?ne?131:130:ne|2!=(0|ee)|(0|n)!=(0|x)?131:130))){je=0,ti(ve),A=1|r[(x=$+(24*t|0)+20|0)>>0],r[x>>0]=A,x=1;break}if(131==(0|je)){je=0,A=-2&r[(x=$+(24*t|0)+20|0)>>0],r[x>>0]=A,x=3;break}}}while(0);ee=(Ke=3==(0|(K=ee+1|0)))?0:K,n=n+(Ke<<31>>31)|0;do{if((0|n)>0&0!=(1&A)){if(de&(ee>>>0<2?(0|n)<((0|l[fe>>2])-4|0):0)){ni(ve);break}si(ve);break}}while(0);if(_[$+(24*t|0)+8>>3]=te,Ke=(0|Kn(ve))+x|0,l[$+(24*t|0)>>2]=Ke,oe||ri(ve),t=t+1|0,(0|n)<=-1)break t}else t=0}while(0);do{if(16&ye)li(ve);else{if(1&ye|0)break;ti(ve)}}while(0);if(l[(T=be+(52*we|0)+48|0)>>2]=t,0|t){A=be+(52*we|0)+8|0,x=0;do{E=0|l[A>>2],(Ke=0|l[(n=E+(24*x|0)|0)>>2])>>>0>(0|Kn(ve))>>>0?(t=0|Kn(ve),l[n>>2]=t):t=0|l[n>>2];do{if(t>>>0>1){if(w=t+-1|0,-1!=(0|r[(0|l[pe>>2])+w>>0]))break;l[n>>2]=w,t=w}}while(0);n=x?0|l[(0|l[A>>2])+(24*(x+-1|0)|0)>>2]:0,l[E+(24*x|0)+16>>2]=t-n,x=x+1|0}while(x>>>0<(0|l[T>>2])>>>0)}we=we+1|0}while(we>>>0<(0|I(0|l[Se>>2],0|l[Ae>>2]))>>>0);w=0|l[De>>2],t=0|l[Be>>2]}Me=Me+1|0}while(Me>>>0<(0|I(w,t))>>>0);n=0|l[Ne>>2]}Re=Re+1|0}while(Re>>>0>>0);t=0|l[Je>>2]}He=He+1|0}while(He>>>0>>0);t=0|l[Qe>>2]}if((qe=qe+1|0)>>>0>=t>>>0){t=1,je=163;break}}return 163==(0|je)?0|t:0}function Zn(e,t,n,i,r,o,s,c,u,d,f,p){e|=0,t|=0,n|=0,i|=0,r|=0,o|=0,s|=0,c|=0,u|=0,d|=0,f|=0,p|=0;var m,g,_,y,v,b=0,x=0,A=0,M=0,E=0,T=0,k=0,I=0,C=0,P=0,L=0,R=0;if(v=w,w=w+16|0,l[(_=v)>>2]=0,b=0|l[e>>2],P=0|l[e+4>>2],m=(e=0|l[P+76>>2])+(5640*t|0)|0,x=4==(0|a[P>>1])?2:1,M=0|l[(A=P+80|0)>>2]?0|l[b+16>>2]:1,y=1+(0|l[e+(5640*t|0)+420>>2])|0,!(g=0|Ht(b,P,t,p)))return w=v,0;l[o>>2]=0;e:do{if(p){if(Ut(g,P,t,f,u,d,p),C=g+(232*f|0)|0,-1==(0|l[g+(232*f|0)+80>>2]))return jt(g,y),w=v,0;k=g+(232*f|0)+36|0,I=n+840|0,d=c+12|0,E=c+8|0,T=c+88|0,M=P+93|0,A=e+(5640*t|0)+5636|0;t:do{if(c)for(;;){do{if(!(0|Zt(C)))break e}while((0|l[k>>2])>>>0>=i>>>0);if(l[_>>2]=0,!(0|Yn(t,n,m,C,r,_,s,c)))break t;if(r=r+(x=0|l[_>>2])|0,s=s-x|0,l[o>>2]=(0|l[o>>2])+x,0|l[d>>2]){b=0|l[T>>2],u=(f=0|l[b+(592*t|0)+548>>2])+((e=0|l[E>>2])<<5)|0;do{if(e){if(1&((0|h[A>>0])>>>2|(0|h[M>>0])>>>3)&&!(0==(0|(L=0|l[(R=u)>>2]))&0==(0|(R=0|l[R+4>>2])))){b=L,p=R;break}b=0|gr(0|l[(b=f+(e+-1<<5)+16|0)>>2],0|l[b+4>>2],1,0),p=S}else b=p=1+(0|l[b+(592*t|0)+12>>2])|0,p=((0|p)<0)<<31>>31}while(0);l[u>>2]=b,l[u+4>>2]=p,p=0|gr(0|b,0|p,-1,-1),x=0|gr(0|p,0|(u=S),0|x,0),l[(P=f+(e<<5)+16|0)>>2]=x,l[P+4>>2]=S,x=0|gr(0|p,0|u,0|l[(x=P=f+(e<<5)+8|0)>>2],0|l[x+4>>2]),l[P>>2]=x,l[P+4>>2]=S}else e=0|l[E>>2];l[E>>2]=e+1,l[I>>2]=1+(0|l[I>>2])}else for(;;){do{if(!(0|Zt(C)))break e}while((0|l[k>>2])>>>0>=i>>>0);if(l[_>>2]=0,!(0|Yn(t,n,m,C,r,_,s,0)))break t;c=0|l[_>>2],l[o>>2]=(0|l[o>>2])+c,l[I>>2]=1+(0|l[I>>2]),s=s-c|0,r=r+c|0}}while(0);return jt(g,y),w=v,0}if(0|M){p=0;t:for(;;){for(e=0,u=0,f=g;;){if(Ut(g,P,t,u,p,d,0),-1==(0|l[f+80>>2])){r=9;break t}b=f+36|0;n:for(;;){do{if(!(0|Zt(f)))break n}while((0|l[b>>2])>>>0>=i>>>0);if(l[_>>2]=0,!(0|Yn(t,n,m,f,r,_,s,c))){r=13;break t}R=0|l[_>>2],l[o>>2]=(0|l[o>>2])+R,e=R+e|0,s=s-R|0,r=r+R|0}if(0!=(0|(R=0|l[A>>2]))&e>>>0>R>>>0){r=17;break t}if((u=u+1|0)>>>0>=x>>>0)break;f=f+232|0}if((p=p+1|0)>>>0>=M>>>0)break e}if(9==(0|r))return jt(g,y),w=v,0;if(13==(0|r))return jt(g,y),w=v,0;if(17==(0|r))return jt(g,y),w=v,0}}while(0);return jt(g,y),w=v,1}function Yn(e,t,n,i,o,a,s,c){e|=0,t|=0,n|=0,o|=0,a|=0,s|=0,c|=0;var h,u,d,f,p=0,m=0,g=0,y=0,v=0,b=0,w=0,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0;if(A=0|l[28+(i|=0)>>2],d=0|l[i+32>>2],f=0|l[i+36>>2],x=0|l[(0|l[t+20>>2])+(52*(0|l[i+24>>2])|0)+24>>2],2&l[n>>2]?(r[o>>0]=-1,r[o+1>>0]=-111,r[o+2>>0]=0,r[o+3>>0]=4,O=t+840|0,r[o+4>>0]=(0|l[O>>2])>>>8,r[o+5>>0]=l[O>>2],s=s+-6|0,O=o+6|0):O=o,0==(0|f)&&0|l[(w=x+(136*A|0)+24|0)>>2])for(g=0,y=x+(136*A|0)+28|0;;){if(i=0|l[y+20>>2],cn(0|l[i+(40*d|0)+32>>2]),cn(0|l[(v=i+(40*d|0)+36|0)>>2]),0|(b=0|I(0|l[i+(40*d|0)+20>>2],0|l[i+(40*d|0)+16>>2]))){t=i+(40*d|0)+24|0,m=y+28|0,i=0;do{F=0|l[t>>2],l[F+(52*i|0)+40>>2]=0,dn(0|l[v>>2],i,(0|l[m>>2])-(0|l[F+(52*i|0)+28>>2])|0),i=i+1|0}while((0|i)!=(0|b))}if((g=g+1|0)>>>0>=(0|l[w>>2])>>>0)break;y=y+36|0}if(!(h=0|wn()))return 0;if(function(e,t,n){t|=0,n|=0,l[(e|=0)>>2]=t,l[e+4>>2]=t+n,l[e+8>>2]=t,l[e+12>>2]=0,l[e+16>>2]=8}(h,O,s),Sn(h,1,1),u=x+(136*A|0)+28|0,0|l[(F=x+(136*A|0)+24|0)>>2])for(B=f+1|0,L=0,R=u;;){if(v=(y=0|l[R+20>>2])+(40*d|0)+24|0,!(m=0==(0|(D=0|I(0|l[y+(40*d|0)+20>>2],0|l[y+(40*d|0)+16>>2]))))){for(g=y+(40*d|0)+32|0,i=0|l[v>>2],t=0;0==(0|l[i+40>>2])&&0|l[(0|l[i+4>>2])+(24*f|0)>>2]&&dn(0|l[g>>2],t,f),(0|(t=t+1|0))!=(0|D);)i=i+52|0;if(!m)for(P=y+(40*d|0)+32|0,C=y+(40*d|0)+36|0,E=0|l[v>>2],T=0;;){if(i=(0|l[E+4>>2])+(24*f|0)|0,0|l[(k=E+40|0)>>2]?Sn(h,0!=(0|l[i>>2])&1,1):fn(h,0|l[P>>2],T,B),0|(t=0|l[i>>2])){0|l[k>>2]||(l[E+32>>2]=3,fn(h,0|l[C>>2],T,999),t=0|l[i>>2]);e:do{switch(0|t){case 1:Sn(h,0,1);break;case 2:Sn(h,2,2);break;default:if(t>>>0<6){Sn(h,t+-3|12,4);break e}if(t>>>0<37){Sn(h,t+-6|480,9);break e}t>>>0<165&&Sn(h,t+-37|65408,16)}}while(0);if(S=E+8|0,(g=0|l[k>>2])>>>0<(M=(t=0|l[i>>2])+g|0)>>>0){for(A=E+32|0,x=g+-1+t|0,w=g,m=0,t=0,y=0,b=(0|l[S>>2])+(24*g|0)|0;;){if(g=t+1|0,m=(0|l[b+16>>2])+m|0,0!=(1&r[b+20>>0])|(0|w)==(0|x)){if((0|m)>1)for(t=0;;){if(t=t+1|0,!(m>>>0>3)){m=t;break}m>>>=1}else m=0;if(v=0|l[A>>2],(0|g)>1)for(t=0;t=t+1|0,g>>>0>3;)g>>>=1;else t=0;v=m+1-v-t|0,m=0,g=0,y=(0|y)>(0|v)?y:v}if((0|(w=w+1|0))==(0|M))break;t=g,b=b+24|0}if((0|y)>0)for(t=y;;){if(Sn(h,1,1),!((0|t)>1)){t=y;break}t=t+-1|0}else t=y}else m=0,g=0,t=0;if(Sn(h,0,1),l[(w=E+32|0)>>2]=(0|l[w>>2])+t,(t=0|l[k>>2])>>>0>>0)for(b=t,v=(0|l[S>>2])+(24*t|0)|0,t=g;;){if(t=t+1|0,m=(0|l[v+16>>2])+m|0,0!=(1&r[v+20>>0])||(0|b)==((0|l[k>>2])-1+(0|l[i>>2])|0)){if(y=0|l[w>>2],(0|t)>1)for(g=0;;){if(g=g+1|0,!(t>>>0>3)){t=g;break}t>>>=1}else t=0;Sn(h,m,t+y|0),m=0,t=0}if((0|(b=b+1|0))==(0|M))break;v=v+24|0}}if((0|(T=T+1|0))==(0|D))break;E=E+52|0}}if((L=L+1|0)>>>0>=(0|l[F>>2])>>>0)break;R=R+36|0}if(!(0|function(e){var t,n,i,o,a=0,s=0;return s=(a=0|l[(n=12+(e|=0)|0)>>2])<<8&65280,l[n>>2]=s,l[(o=e+16|0)>>2]=65280==(0|s)?7:8,t=0|l[(s=e+8|0)>>2],(0|l[(i=e+4|0)>>2])>>>0<=t>>>0?0|(s=0):(l[s>>2]=t+1,r[t>>0]=a,7!=(0|l[o>>2])?0|(s=1):(e=(a=0|l[n>>2])<<8&65280,l[n>>2]=e,l[o>>2]=65280==(0|e)?7:8,e=0|l[s>>2],(0|l[i>>2])>>>0<=e>>>0?0|(s=0):(l[s>>2]=e+1,r[e>>0]=a,0|(s=1))))}(h)))return xn(h),0;i=O+(t=0|An(h))|0,t=s-t|0,xn(h),4&l[n>>2]&&(r[i>>0]=-1,r[i+1>>0]=-110,t=t+-2|0,i=i+2|0),(S=0!=(0|c))&&0|l[c+12>>2]&&(O=i-o|0,n=(0|l[(0|l[c+88>>2])+(592*e|0)+548>>2])+(l[c+8>>2]<<5)+8|0,l[n>>2]=O,l[n+4>>2]=((0|O)<0)<<31>>31);e:do{if(0|l[F>>2]){M=c+12|0,E=c+88|0,T=c+8|0,A=0,x=u;t:for(;;){m=0|l[x+20>>2],w=0|I(0|l[m+(40*d|0)+20>>2],0|l[m+(40*d|0)+16>>2]),m=0|l[m+(40*d|0)+24>>2];n:do{if(w){i:do{if(S)for(b=0;;){if(v=0|l[m+4>>2],0|l[(s=v+(24*f|0)|0)>>2])if((y=0|l[(g=v+(24*f|0)+4|0)>>2])>>>0>t>>>0)s=1;else{Er(0|i,0|l[v+(24*f|0)+16>>2],0|y),l[(n=m+40|0)>>2]=(0|l[n>>2])+(0|l[s>>2]),i=i+(n=0|l[g>>2])|0,t=t-n|0;do{if(0|l[M>>2]){if(n=(0|l[(0|l[E>>2])+(592*e|0)+548>>2])+(l[T>>2]<<5)+24|0,p=+_[v+(24*f|0)+8>>3]+ +_[n>>3],_[n>>3]=p,!(+_[c>>3]>3]=p}}while(0);s=0,m=m+52|0}else s=28,m=m+52|0;switch(31&s){case 28:case 0:break;default:break i}if((b=b+1|0)>>>0>=w>>>0){G=83;break n}}else for(b=0;;){switch(s=0|l[m+4>>2],0|l[(g=s+(24*f|0)|0)>>2]?(v=0|l[(y=s+(24*f|0)+4|0)>>2])>>>0>t>>>0?s=1:(Er(0|i,0|l[s+(24*f|0)+16>>2],0|v),l[(n=m+40|0)>>2]=(0|l[n>>2])+(0|l[g>>2]),s=0,t=t-(n=0|l[y>>2])|0,i=i+n|0,m=m+52|0):(s=28,m=m+52|0),31&s){case 28:case 0:break;default:break i}if((b=b+1|0)>>>0>=w>>>0){G=83;break n}}}while(0);if(s){i=0;break t}s=x}else G=83}while(0);if(83==(0|G)&&(G=0,s=x+36|0),(A=A+1|0)>>>0>=(0|l[F>>2])>>>0)break e;x=s}return 0|i}}while(0);return l[a>>2]=i-o+(0|l[a>>2]),1}function Xn(e,t,n,i,o,a,s,c,h){e|=0,t|=0,n|=0,i|=0,o|=0,s|=0,c|=0,h|=0;var u,d,f,p,m,g,_,y,v,b,x=0,A=0,S=0,M=0,E=0,T=0,k=0,C=0,P=0,L=0,R=0,B=0,D=0,O=0,F=0,G=0,N=0,j=0,H=0;b=w,w=w+64|0,_=b+48|0,y=b+40|0,D=b+32|0,B=b+24|0,L=b+16|0,P=b+8|0,C=b,R=b+56|0,H=a|=0,l[(v=b+52|0)>>2]=H,u=0|l[t+(52*(0|l[(g=i+24|0)>>2])|0)+24>>2],d=0|l[i+28>>2],m=i+36|0;e:do{if(0==(0|l[m>>2])&&(k=u+(136*d|0)+24|0,0|l[k>>2])){for(E=i+32|0,A=0,M=u+(136*d|0)+28|0;;){if((0|l[M+8>>2])!=(0|l[M>>2])&&(0|l[M+12>>2])!=(0|l[M+4>>2])){if(t=0|l[M+20>>2],(x=0|l[E>>2])>>>0>=(((0|l[M+24>>2])>>>0)/40|0)>>>0)break;if(cn(0|l[t+(40*x|0)+32>>2]),cn(0|l[t+(40*x|0)+36>>2]),0|(T=0|I(0|l[t+(40*x|0)+20>>2],0|l[t+(40*x|0)+16>>2])))for(S=0,t=0|l[t+(40*x|0)+24>>2];l[t+44>>2]=0,l[t+48>>2]=0,(0|(S=S+1|0))!=(0|T);)t=t+56|0}if((A=A+1|0)>>>0>=(0|l[k>>2])>>>0)break e;M=M+36|0}return me(h,1,22161,C),w=b,0}}while(0);do{if(2&l[n>>2]){if(c>>>0<6){me(h,2,22179,P),t=H;break}if(-1==(0|r[a>>0])&&-111==(0|r[a+1>>0])){t=a+6|0,l[v>>2]=t;break}me(h,2,22221,L),t=H}else t=H}while(0);if(!(p=0|wn()))return w=b,0;do{if(!(1&r[e+96>>0])){if(2&r[n+5636>>0]){j=N=n+5168|0,N=0|l[N>>2],R=n+5180|0;break}l[R>>2]=a+c-t,j=v,N=t;break}j=N=e+40|0,N=0|l[N>>2],R=e+44|0}while(0);if(function(e,t,n){t|=0,n|=0,l[(e|=0)>>2]=t,l[e+4>>2]=t+n,l[e+8>>2]=t,l[e+12>>2]=0,l[e+16>>2]=0}(p,N,0|l[R>>2]),!(0|Mn(p,1))){En(p),t=N+(0|An(p))|0,xn(p);do{if(4&l[n>>2]){if(((0|l[R>>2])-t+(0|l[j>>2])|0)>>>0<2){me(h,2,22242,B),x=j;break}if(-1==(0|r[t>>0])&&-110==(0|r[t+1>>0])){t=t+2|0,x=j;break}me(h,2,22284,D),x=j}else x=j}while(0);return h=t-(n=0|l[x>>2])|0,l[R>>2]=(0|l[R>>2])-h,l[j>>2]=n+h,l[o>>2]=0,l[s>>2]=(0|l[v>>2])-H,w=b,1}f=u+(136*d|0)+24|0;e:do{if(0|l[f>>2]){F=i+32|0,G=n+5584|0,D=0,t=u+(136*d|0)+28|0;t:for(;;){x=0|l[t+20>>2],A=0|l[F>>2];n:do{if((0|l[t+8>>2])!=(0|l[t>>2])&&(0|l[t+12>>2])!=(0|l[t+4>>2])){c=0|I(0|l[x+(40*A|0)+20>>2],0|l[x+(40*A|0)+16>>2]);i:do{if(0|c){e=x+(40*A|0)+32|0,i=x+(40*A|0)+36|0,B=t+28|0,a=0,x=0|l[x+(40*A|0)+24>>2];r:for(;;){A=0|l[(S=x+44|0)>>2]?0|Mn(p,1):0|pn(p,0|l[e>>2],a,1+(0|l[m>>2])|0);o:do{if(A){if(!(0|l[S>>2])){for(A=0;!(0|pn(p,0|l[i>>2],a,A));)A=A+1|0;l[x+24>>2]=1-A+(0|l[B>>2]),l[x+28>>2]=3}do{if(0|Mn(p,1)){if(!(0|Mn(p,1))){A=2;break}if(3!=(0|(A=0|Mn(p,2)))){A=A+3|0;break}if(31==(0|(A=0|Mn(p,5)))){A=37+(0|Mn(p,7))|0;break}A=A+6|0;break}A=1}while(0);for(l[(C=x+40|0)>>2]=A,A=0;0|Mn(p,1);)A=A+1|0;l[(L=x+28|0)>>2]=(0|l[L>>2])+A,T=0|l[S>>2];do{if(T){if(A=T+-1|0,S=0|l[(k=x+4|0)>>2],(0|l[S+(A<<5)+8>>2])!=(0|l[S+(A<<5)+20>>2]))break;E=0|l[(0|l[G>>2])+(1080*(0|l[g>>2])|0)+16>>2],A=0|l[(M=x+52|0)>>2];do{if((T+1|0)>>>0>A>>>0){if(A=A+10|0,l[M>>2]=A,A=0|Ue(S,A<<5)){l[k>>2]=A,S=A;break}Ve(0|l[k>>2]),l[k>>2]=0,l[M>>2]=0,xn(p),A=1;break o}}while(0);l[(A=S+(T<<5)|0)>>2]=0,l[A+4>>2]=0,l[A+8>>2]=0,l[A+12>>2]=0,l[A+16>>2]=0,l[A+20>>2]=0,l[A+24>>2]=0,l[A+28>>2]=0;do{if(4&E)A=1;else{if(!(1&E)){A=109;break}A=1==(0|(A=0|l[A+-32+20>>2]))|10==(0|A)?2:1}}while(0);M=T,E=k,S=S+(T<<5)+20|0,O=77}else{E=0|l[(0|l[G>>2])+(1080*(0|l[g>>2])|0)+16>>2],A=x+52|0;do{if(!(0|l[A>>2])){if(l[A>>2]=10,M=0|Ue(0|l[(S=x+4|0)>>2],320)){l[S>>2]=M,A=M,S=M;break}Ve(0|l[S>>2]),l[S>>2]=0,l[A>>2]=0,xn(p),A=1;break o}A=S=0|l[x+4>>2]}while(0);l[A>>2]=0,l[A+4>>2]=0,l[A+8>>2]=0,l[A+12>>2]=0,l[A+16>>2]=0,l[A+20>>2]=0,l[A+24>>2]=0,l[A+28>>2]=0,A=4&E?1:0==(1&E|0)?109:10,M=0,E=x+4|0,S=S+20|0,O=77}}while(0);for(77==(0|O)&&(l[S>>2]=A,A=M,k=E),P=x+52|0,E=0|l[C>>2],C=A;;){if(M=0|l[k>>2],A=(0|(A=(0|l[M+(C<<5)+20>>2])-(0|l[M+(C<<5)+8>>2])|0))<(0|E)?A:E,l[M+(C<<5)+24>>2]=A,M=0|l[L>>2],A>>>0>1)for(S=A,A=0;A=A+1|0,S>>>0>3;)S>>>=1;else A=0;if(O=0|Mn(p,A+M|0),S=0|l[k>>2],l[S+(C<<5)+28>>2]=O,(0|(E=E-(0|l[S+(C<<5)+24>>2])|0))<=0){O=90;break}if(T=C+1|0,M=0|l[(0|l[G>>2])+(1080*(0|l[g>>2])|0)+16>>2],(C+2|0)>>>0>(A=0|l[P>>2])>>>0){if(A=A+10|0,l[P>>2]=A,!(A=0|Ue(S,A<<5))){O=89;break}l[k>>2]=A,S=A}l[(O=S+(T<<5)|0)>>2]=0,l[O+4>>2]=0,l[O+8>>2]=0,l[O+12>>2]=0,l[O+16>>2]=0,l[O+20>>2]=0,l[O+24>>2]=0,l[O+28>>2]=0;do{if(4&M)A=1;else{if(!(1&M)){A=109;break}A=1==(0|(A=0|l[S+(C<<5)+20>>2]))|10==(0|A)?2:1}}while(0);l[S+(T<<5)+20>>2]=A,C=T}if(89==(0|O)){O=0,Ve(0|l[k>>2]),l[k>>2]=0,l[P>>2]=0,xn(p),A=1;break}if(90==(0|O)){O=0,A=0,x=x+56|0;break}}else l[x+40>>2]=0,A=13,x=x+56|0}while(0);switch(15&A){case 13:case 0:break;default:break r}if((a=a+1|0)>>>0>=c>>>0)break i}if(A){t=0;break t}break n}}while(0);t=t+36|0}else O=39}while(0);if(39==(0|O)&&(O=0,t=t+36|0),(D=D+1|0)>>>0>=(0|l[f>>2])>>>0)break e}return w=b,0|t}}while(0);if(!(0|En(p)))return xn(p),w=b,0;t=N+(0|An(p))|0,xn(p);do{if(4&l[n>>2]){if(((0|l[R>>2])-t+(0|l[j>>2])|0)>>>0<2){me(h,2,22242,y),x=j;break}if(-1==(0|r[t>>0])&&-110==(0|r[t+1>>0])){t=t+2|0,x=j;break}me(h,2,22284,_),x=j}else x=j}while(0);return h=t-(n=0|l[x>>2])|0,l[R>>2]=(0|l[R>>2])-h,l[j>>2]=n+h,l[o>>2]=1,l[s>>2]=(0|l[v>>2])-H,w=b,1}function Jn(e,t){e|=0,t|=0;var n=0;return(n=0|je(1,8))?(l[n>>2]=e,l[n+4>>2]=t,0|n):0|(n=0)}function qn(e){(e|=0)&&Ve(e)}function Qn(e){(e|=0)&&Ve(e)}function Kn(e){return(0|l[12+(e|=0)>>2])-(0|l[e+16>>2])|0}function $n(e,t){t|=0,l[100+(e|=0)>>2]=e+24,l[e+4>>2]=32768,l[e>>2]=0,l[e+12>>2]=t+-1,l[e+8>>2]=12,l[e+16>>2]=t}function ei(e,t){t|=0;var n,i=0,o=0,a=0,s=0,c=0,h=0,u=0;if(o=0|l[100+(e|=0)>>2],a=0|l[o>>2],u=(0|l[a+4>>2])==(0|t),i=0|l[a>>2],t=(0|l[(n=e+4|0)>>2])-i|0,l[n>>2]=t,u)if(32768&t|0)l[e>>2]=(0|l[e>>2])+i;else for(t>>>0>>0?(l[n>>2]=i,t=i,u=e,i=0|l[e>>2]):(i=(0|l[e>>2])+i|0,l[e>>2]=i,u=e),l[o>>2]=l[a+8>>2],c=e+8|0,h=e+12|0,s=e+16|0,e=i,i=0|l[c>>2];;){if(t<<=1,l[n>>2]=t,o=e<<1,l[u>>2]=o,i=i+-1|0,l[c>>2]=i,!i){t=0|l[h>>2];do{if((0|t)!=((0|l[s>>2])-1|0)){if((i=0|r[t>>0])<<24>>24==-1){a=t+1|0,l[h>>2]=a,i=7,o=1048575,t=e>>>19&4095;break}if(!(134217728&o)){a=t+1|0,l[h>>2]=a,i=8,o=524287,t=e>>>18&8191;break}if(r[t>>0]=i+1<<24>>24,t=0|l[h>>2],-1==(0|r[t>>0])){e=134217727&l[u>>2],l[u>>2]=e,a=t+1|0,l[h>>2]=a,i=7,o=1048575,t=e>>>20;break}a=t+1|0,l[h>>2]=a,i=8,o=524287,t=(0|l[u>>2])>>>19;break}a=t+1|0,l[h>>2]=a,i=8,o=524287,t=e>>>18&8191}while(0);r[a>>0]=t,o=l[u>>2]&o,l[u>>2]=o,l[c>>2]=i,t=0|l[n>>2]}if(32768&t)break;e=o}else for(t>>>0>>0?(i=(0|l[e>>2])+i|0,l[e>>2]=i,u=e):(l[n>>2]=i,t=i,u=e,i=0|l[e>>2]),l[o>>2]=l[a+12>>2],c=e+8|0,h=e+12|0,s=e+16|0,e=i,o=0|l[c>>2];;){if(t<<=1,l[n>>2]=t,i=e<<1,l[u>>2]=i,o=o+-1|0,l[c>>2]=o,!o){t=0|l[h>>2];do{if((0|t)!=((0|l[s>>2])-1|0)){if((o=0|r[t>>0])<<24>>24==-1){o=t+1|0,l[h>>2]=o,a=7,i=1048575,t=e>>>19&4095;break}if(!(134217728&i)){o=t+1|0,l[h>>2]=o,a=8,i=524287,t=e>>>18&8191;break}if(r[t>>0]=o+1<<24>>24,t=0|l[h>>2],-1==(0|r[t>>0])){e=134217727&l[u>>2],l[u>>2]=e,o=t+1|0,l[h>>2]=o,a=7,i=1048575,t=e>>>20;break}o=t+1|0,l[h>>2]=o,a=8,i=524287,t=(0|l[u>>2])>>>19;break}o=t+1|0,l[h>>2]=o,a=8,i=524287,t=e>>>18&8191}while(0);r[o>>0]=t,i=l[u>>2]&i,l[u>>2]=i,l[c>>2]=a,t=0|l[n>>2],o=a}if(32768&t)break;e=i}}function ti(e){var t,n=0,i=0,o=0,a=0,s=0,c=0,h=0;t=8+(e|=0)|0,s=((s=65535|(h=0|l[e>>2]))>>>0<((0|l[e+4>>2])+h|0)>>>0?s:s+-32768|0)<>2],l[e>>2]=s,n=0|l[(h=e+12|0)>>2],c=e+16|0;do{if((0|n)!=((0|l[c>>2])-1|0)){if((i=0|r[n>>0])<<24>>24==-1){a=n+1|0,l[h>>2]=a,i=7,o=1048575,n=s>>>20;break}if(!(134217728&s)){a=n+1|0,l[h>>2]=a,i=8,o=524287,n=s>>>19;break}if(r[n>>0]=i+1<<24>>24,n=0|l[h>>2],-1==(0|r[n>>0])){s=134217727&l[e>>2],l[e>>2]=s,a=n+1|0,l[h>>2]=a,i=7,o=1048575,n=s>>>20;break}a=n+1|0,l[h>>2]=a,i=8,o=524287,n=(0|l[e>>2])>>>19;break}a=n+1|0,l[h>>2]=a,i=8,o=524287,n=s>>>19}while(0);r[a>>0]=n,s=l[e>>2]&o,l[t>>2]=i,s<<=i,l[e>>2]=s,i=0|l[h>>2];do{if((0|i)!=((0|l[c>>2])-1|0)){if((n=0|r[i>>0])<<24>>24==-1){a=i+1|0,l[h>>2]=a,i=7,o=1048575,n=s>>>20;break}if(!(134217728&s)){a=i+1|0,l[h>>2]=a,i=8,o=524287,n=s>>>19;break}if(r[i>>0]=n+1<<24>>24,n=0|l[h>>2],-1==(0|r[n>>0])){c=134217727&l[e>>2],l[e>>2]=c,a=n+1|0,l[h>>2]=a,i=7,o=1048575,n=c>>>20;break}a=n+1|0,l[h>>2]=a,i=8,o=524287,n=(0|l[e>>2])>>>19;break}a=i+1|0,l[h>>2]=a,i=8,o=524287,n=s>>>19}while(0);r[a>>0]=n,l[e>>2]=l[e>>2]&o,l[t>>2]=i,n=0|l[h>>2],-1!=(0|r[n>>0])&&(l[h>>2]=n+1)}function ni(e){l[(e|=0)>>2]=0,l[e+8>>2]=8}function ii(e,t){t|=0;var n,i,o=0;o=(0|l[(n=8+(e|=0)|0)>>2])-1|0,l[n>>2]=o,t=(0|l[e>>2])+(t<>2]=t,0|o||(i=1+(0|l[(o=e+12|0)>>2])|0,l[o>>2]=i,r[i>>0]=t,l[n>>2]=8,l[n>>2]=-1==(0|r[l[o>>2]>>0])?7:8,l[e>>2]=0)}function ri(e){l[28+(e|=0)>>2]=1156,l[e+32>>2]=1156,l[e+36>>2]=1156,l[e+40>>2]=1156,l[e+44>>2]=1156,l[e+48>>2]=1156,l[e+52>>2]=1156,l[e+56>>2]=1156,l[e+60>>2]=1156,l[e+64>>2]=1156,l[e+68>>2]=1156,l[e+72>>2]=1156,l[e+76>>2]=1156,l[e+80>>2]=1156,l[e+84>>2]=1156,l[e+88>>2]=1156,l[e+96>>2]=2628,l[e+92>>2]=1252,l[e+24>>2]=1284}function oi(e){l[24+(e|=0)>>2]=1156,l[e+28>>2]=1156,l[e+32>>2]=1156,l[e+36>>2]=1156,l[e+40>>2]=1156,l[e+44>>2]=1156,l[e+48>>2]=1156,l[e+52>>2]=1156,l[e+56>>2]=1156,l[e+60>>2]=1156,l[e+64>>2]=1156,l[e+68>>2]=1156,l[e+72>>2]=1156,l[e+76>>2]=1156,l[e+80>>2]=1156,l[e+84>>2]=1156,l[e+88>>2]=1156,l[e+92>>2]=1156,l[e+96>>2]=1156}function ai(e,t,n,i){n|=0,i|=0,l[24+(e|=0)+((t|=0)<<2)>>2]=1156+((i<<1)+n<<4)}function si(e){var t,n;l[100+(e|=0)>>2]=e+24,l[e+4>>2]=32768,l[e>>2]=0,l[(t=e+8|0)>>2]=12,e=(0|l[(n=e+12|0)>>2])-1|0,l[n>>2]=e,-1==(0|r[e>>0])&&(l[t>>2]=13)}function li(e){var t,n=0,i=0,o=0,a=0,s=0,c=0,h=0,u=0;if((0|(n=12-(i=0|l[(t=8+(e|=0)|0)>>2])|0))>0){o=e+12|0,u=e+16|0,h=n,a=0|l[e>>2],n=i;do{c=a<>2]=c,l[t>>2]=0,n=0|l[o>>2];do{if((0|n)!=((0|l[u>>2])-1|0)){if((i=0|r[n>>0])<<24>>24==-1){s=n+1|0,l[o>>2]=s,n=7,a=1048575,i=c>>>20;break}if(!(134217728&c)){s=n+1|0,l[o>>2]=s,n=8,a=524287,i=c>>>19;break}if(r[n>>0]=i+1<<24>>24,n=0|l[o>>2],-1==(0|r[n>>0])){i=134217727&l[e>>2],l[e>>2]=i,s=n+1|0,l[o>>2]=s,n=7,a=1048575,i>>>=20;break}s=n+1|0,l[o>>2]=s,n=8,a=524287,i=(0|l[e>>2])>>>19;break}s=n+1|0,l[o>>2]=s,n=8,a=524287,i=c>>>19}while(0);r[s>>0]=i,a=l[e>>2]&a,l[e>>2]=a,l[t>>2]=n,h=h-n|0}while((0|h)>0)}else o=e+12|0;if(n=0|l[o>>2],(i=0|r[n>>0])<<24>>24!=-1){do{if((0|n)!=((0|l[e+16>>2])-1|0)){if(!(134217728&(c=0|l[e>>2]))){s=n+1|0,l[o>>2]=s,i=e,o=8,a=524287,n=c>>>19;break}if(r[n>>0]=i+1<<24>>24,n=0|l[o>>2],-1==(0|r[n>>0])){u=134217727&l[e>>2],l[e>>2]=u,s=n+1|0,l[o>>2]=s,i=e,o=7,a=1048575,n=u>>>20;break}s=n+1|0,l[o>>2]=s,i=e,o=8,a=524287,n=(0|l[e>>2])>>>19;break}s=n+1|0,l[o>>2]=s,i=e,o=8,a=524287,n=(0|l[e>>2])>>>19}while(0);r[s>>0]=n,l[i>>2]=l[i>>2]&a,l[t>>2]=o}}function ci(e){l[100+(e|=0)>>2]=e+96,ei(e,1),ei(e,0),ei(e,1),ei(e,0)}function hi(e,t,n){t|=0,n|=0;var i,o=0,a=0,s=0;l[100+(e|=0)>>2]=e+24,l[e+16>>2]=t,l[e+20>>2]=t+n,l[(i=e+12|0)>>2]=t;do{if(n){if(o=h[t>>0]<<16,l[e>>2]=o,a=t+1|0,s=1==(0|n)?255:0|h[a>>0],-1==(0|r[t>>0])){if(s>>>0>143){a=8,t=65280,n=e;break}t=9,n=7}else t=8,n=8;l[i>>2]=a,a=n,t=s<>2]=16711680,a=8,t=65280,o=16711680,n=e}while(0);return l[n>>2]=o+t<<7,l[e+8>>2]=a+-7,l[e+4>>2]=32768,1}function ui(e){var t=0,n=0,i=0,o=0,a=0,s=0,c=0,u=0,d=0,f=0,p=0,m=0;if(t=0|l[100+(e|=0)>>2],n=0|l[t>>2],o=0|l[n>>2],a=(0|l[(m=e+4|0)>>2])-o|0,l[m>>2]=a,(i=0|l[e>>2])>>>16>>>0>>0){f=a>>>0>>0,l[m>>2]=o,p=0|l[n+4>>2],l[t>>2]=l[(f?n+8|0:n+12|0)>>2],u=e+12|0,d=e+20|0,t=0|l[(c=e+8|0)>>2],n=i,s=o;do{if(!t){i=0|l[u>>2],t=0|l[d>>2];do{if((0|i)==(0|t))o=8,t=65280;else{if(a=(0|(o=i+1|0))==(0|t)?255:0|h[o>>0],-1==(0|r[i>>0])){if(a>>>0>143){o=8,t=65280;break}i=9,t=7}else i=8,t=8;l[u>>2]=o,o=t,t=a<>2]=n,l[c>>2]=o,t=o}s<<=1,l[m>>2]=s,n<<=1,l[e>>2]=n,t=t+-1|0,l[c>>2]=t}while(s>>>0<32768);return 0|(f?p:1-p|0)}if(i=i-(o<<16)|0,l[e>>2]=i,32768&a|0)return 0|l[n+4>>2];f=a>>>0>>0,p=0|l[n+4>>2],l[t>>2]=l[(f?n+12|0:n+8|0)>>2],u=e+12|0,d=e+20|0,t=0|l[(c=e+8|0)>>2],n=i,s=a;do{if(!t){i=0|l[u>>2],t=0|l[d>>2];do{if((0|i)==(0|t))o=8,t=65280;else{if(a=(0|(o=i+1|0))==(0|t)?255:0|h[o>>0],-1==(0|r[i>>0])){if(a>>>0>143){o=8,t=65280;break}i=9,t=7}else i=8,t=8;l[u>>2]=o,o=t,t=a<>2]=n,l[c>>2]=o,t=o}s<<=1,l[m>>2]=s,n<<=1,l[e>>2]=n,t=t+-1|0,l[c>>2]=t}while(s>>>0<32768);return 0|(f?1-p|0:p)}function di(e){(e|=0)&&Ve(e)}function fi(e,t,n){t|=0,n|=0,l[20+(e|=0)>>2]=t,l[e+8>>2]=n,l[e+12>>2]=0,r[e>>0]=0,l[e+4>>2]=0}function pi(e){var t,n=0,i=0,o=0,a=0;n=0|l[(t=4+(e|=0)|0)>>2];do{if(n)i=n,n=0|r[e>>0];else{if(l[t>>2]=8,(0|(o=0|l[(n=e+12|0)>>2]))==(0|l[e+8>>2])){r[e>>0]=-1,i=8,n=-1;break}-1==(0|r[e>>0])?(l[t>>2]=7,i=7):i=8,a=0|r[(0|l[e+20>>2])+o>>0],r[e>>0]=a,l[n>>2]=o+1,n=a}}while(0);return a=i+-1|0,l[t>>2]=a,(255&n)>>>a&1|0}function mi(e){e|=0;var t,n=0,i=0,r=0,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,_=0,y=0,v=0,b=0,x=0,A=0;t=w,w=w+16|0,m=t;do{if(e>>>0<245){if(e=(d=e>>>0<11?16:e+11&-8)>>>3,3&(i=(p=0|l[6184])>>>e)|0)return r=0|l[(i=8+(e=24776+((n=(1&i^1)+e|0)<<1<<2)|0)|0)>>2],(0|(a=0|l[(o=r+8|0)>>2]))==(0|e)?l[6184]=p&~(1<>2]=e,l[i>>2]=a),A=n<<3,l[r+4>>2]=3|A,l[(A=r+A+4|0)>>2]=1|l[A>>2],w=t,0|o;if(d>>>0>(f=0|l[6186])>>>0){if(0|i)return n=((n=i<>>=c=n>>>12&16)>>>5&8)|c|(a=(n>>>=i)>>>2&4)|(e=(n>>>=a)>>>1&2)|(r=(n>>>=e)>>>1&1))+(n>>>r)|0)<<1<<2)|0)|0)>>2],(0|(i=0|l[(c=a+8|0)>>2]))==(0|n)?(e=p&~(1<>2]=n,l[e>>2]=i,e=p),s=(A=r<<3)-d|0,l[a+4>>2]=3|d,l[4+(o=a+d|0)>>2]=1|s,l[a+A>>2]=s,0|f&&(r=0|l[6189],i=24776+((n=f>>>3)<<1<<2)|0,e&(n=1<>2]:(l[6184]=e|n,n=i,e=i+8|0),l[e>>2]=r,l[n+12>>2]=r,l[r+8>>2]=n,l[r+12>>2]=i),l[6186]=s,l[6189]=o,w=t,0|c;if(h=0|l[6185]){if(i=(h&0-h)-1|0,e=0|l[25040+(((s=(i>>>=c=i>>>12&16)>>>5&8)|c|(u=(i>>>=s)>>>2&4)|(r=(i>>>=u)>>>1&2)|(e=(i>>>=r)>>>1&1))+(i>>>e)<<2)>>2],i=(-8&l[e+4>>2])-d|0,r=0|l[e+16+((0==(0|l[e+16>>2])&1)<<2)>>2]){do{i=(u=(c=(-8&l[r+4>>2])-d|0)>>>0>>0)?c:i,e=u?r:e,r=0|l[r+16+((0==(0|l[r+16>>2])&1)<<2)>>2]}while(0!=(0|r));u=e,s=i}else u=e,s=i;if((c=u+d|0)>>>0>u>>>0){o=0|l[u+24>>2],n=0|l[u+12>>2];do{if((0|n)==(0|u)){if(!(n=0|l[(e=u+20|0)>>2])&&!(n=0|l[(e=u+16|0)>>2])){i=0;break}for(;;)if(0|(r=0|l[(i=n+20|0)>>2]))n=r,e=i;else{if(!(r=0|l[(i=n+16|0)>>2]))break;n=r,e=i}l[e>>2]=0,i=n}else i=0|l[u+8>>2],l[i+12>>2]=n,l[n+8>>2]=i,i=n}while(0);do{if(0|o){if(n=0|l[u+28>>2],(0|u)==(0|l[(e=25040+(n<<2)|0)>>2])){if(l[e>>2]=i,!i){l[6185]=h&~(1<>2])!=(0|u)&1)<<2)>>2]=i,!i)break;l[i+24>>2]=o,0|(n=0|l[u+16>>2])&&(l[i+16>>2]=n,l[n+24>>2]=i),0|(n=0|l[u+20>>2])&&(l[i+20>>2]=n,l[n+24>>2]=i)}}while(0);return s>>>0<16?(A=s+d|0,l[u+4>>2]=3|A,l[(A=u+A+4|0)>>2]=1|l[A>>2]):(l[u+4>>2]=3|d,l[c+4>>2]=1|s,l[c+s>>2]=s,0|f&&(r=0|l[6189],i=24776+((n=f>>>3)<<1<<2)|0,p&(n=1<>2]:(l[6184]=p|n,n=i,e=i+8|0),l[e>>2]=r,l[n+12>>2]=r,l[r+8>>2]=n,l[r+12>>2]=i),l[6186]=s,l[6189]=c),w=t,0|u+8}f=d}else f=d}else f=d}else if(e>>>0<=4294967231)if(d=-8&(e=e+11|0),u=0|l[6185]){r=0-d|0,h=(e>>>=8)?d>>>0>16777215?31:d>>>(7+(h=14-((f=(520192+(x=e<<(p=(e+1048320|0)>>>16&8))|0)>>>16&4)|p|(h=(245760+(x<<=f)|0)>>>16&2))+(x<>>15)|0)|0)&1|h<<1:0,i=0|l[25040+(h<<2)>>2];e:do{if(i)for(e=0,c=i,s=d<<(31==(0|h)?0:25-(h>>>1)|0),i=0;;){if((o=(-8&l[c+4>>2])-d|0)>>>0>>0){if(!o){r=0,i=c,e=c,x=61;break e}e=c,r=o}if(i=0==(0|(o=0|l[c+20>>2]))|(0|o)==(0|(c=0|l[c+16+(s>>>31<<2)>>2]))?i:o,o=0==(0|c)){x=57;break}s<<=1&(1^o)}else i=0,e=0,x=57}while(0);if(57==(0|x)){if(0==(0|i)&0==(0|e)){if(!(e=u&((e=2<>>=c=p>>>12&16)>>>5&8)|c|(h=(p>>>=s)>>>2&4)|(f=(p>>>=h)>>>1&2)|(i=(p>>>=f)>>>1&1))+(p>>>i)<<2)>>2]}i?x=61:(c=e,s=r)}if(61==(0|x))for(;;){if(x=0,r=(p=(f=(-8&l[i+4>>2])-d|0)>>>0>>0)?f:r,e=p?i:e,!(i=0|l[i+16+((0==(0|l[i+16>>2])&1)<<2)>>2])){c=e,s=r;break}x=61}if(0!=(0|c)&&s>>>0<((0|l[6186])-d|0)>>>0){if((a=c+d|0)>>>0<=c>>>0)return w=t,0;o=0|l[c+24>>2],n=0|l[c+12>>2];do{if((0|n)==(0|c)){if(!(n=0|l[(e=c+20|0)>>2])&&!(n=0|l[(e=c+16|0)>>2])){n=0;break}for(;;)if(0|(r=0|l[(i=n+20|0)>>2]))n=r,e=i;else{if(!(r=0|l[(i=n+16|0)>>2]))break;n=r,e=i}l[e>>2]=0}else A=0|l[c+8>>2],l[A+12>>2]=n,l[n+8>>2]=A}while(0);do{if(o){if(e=0|l[c+28>>2],(0|c)==(0|l[(i=25040+(e<<2)|0)>>2])){if(l[i>>2]=n,!n){r=u&~(1<>2])!=(0|c)&1)<<2)>>2]=n,!n){r=u;break}l[n+24>>2]=o,0|(e=0|l[c+16>>2])&&(l[n+16>>2]=e,l[e+24>>2]=n),(e=0|l[c+20>>2])?(l[n+20>>2]=e,l[e+24>>2]=n,r=u):r=u}else r=u}while(0);do{if(s>>>0>=16){if(l[c+4>>2]=3|d,l[a+4>>2]=1|s,l[a+s>>2]=s,n=s>>>3,s>>>0<256){i=24776+(n<<1<<2)|0,(e=0|l[6184])&(n=1<>2]:(l[6184]=e|n,n=i,e=i+8|0),l[e>>2]=a,l[n+12>>2]=a,l[a+8>>2]=n,l[a+12>>2]=i;break}if(i=25040+((n=(n=s>>>8)?s>>>0>16777215?31:s>>>(7+(n=14-((b=(520192+(A=n<<(x=(n+1048320|0)>>>16&8))|0)>>>16&4)|x|(n=(245760+(A<<=b)|0)>>>16&2))+(A<>>15)|0)|0)&1|n<<1:0)<<2)|0,l[a+28>>2]=n,l[4+(e=a+16|0)>>2]=0,l[e>>2]=0,!(r&(e=1<>2]=a,l[a+24>>2]=i,l[a+12>>2]=a,l[a+8>>2]=a;break}for(e=s<<(31==(0|n)?0:25-(n>>>1)|0),i=0|l[i>>2];;){if((-8&l[i+4>>2]|0)==(0|s)){x=97;break}if(!(n=0|l[(r=i+16+(e>>>31<<2)|0)>>2])){x=96;break}e<<=1,i=n}if(96==(0|x)){l[r>>2]=a,l[a+24>>2]=i,l[a+12>>2]=a,l[a+8>>2]=a;break}if(97==(0|x)){A=0|l[(x=i+8|0)>>2],l[A+12>>2]=a,l[x>>2]=a,l[a+8>>2]=A,l[a+12>>2]=i,l[a+24>>2]=0;break}}else A=s+d|0,l[c+4>>2]=3|A,l[(A=c+A+4|0)>>2]=1|l[A>>2]}while(0);return w=t,0|c+8}f=d}else f=d;else f=-1}while(0);if((i=0|l[6186])>>>0>=f>>>0)return n=i-f|0,e=0|l[6189],n>>>0>15?(A=e+f|0,l[6189]=A,l[6186]=n,l[A+4>>2]=1|n,l[e+i>>2]=n,l[e+4>>2]=3|f):(l[6186]=0,l[6189]=0,l[e+4>>2]=3|i,l[(A=e+i+4|0)>>2]=1|l[A>>2]),w=t,0|e+8;if((c=0|l[6187])>>>0>f>>>0)return b=c-f|0,l[6187]=b,x=(A=0|l[6190])+f|0,l[6190]=x,l[x+4>>2]=1|b,l[A+4>>2]=3|f,w=t,0|A+8;if(0|l[6302]?e=0|l[6304]:(l[6304]=4096,l[6303]=4096,l[6305]=-1,l[6306]=-1,l[6307]=0,l[6295]=0,l[6302]=-16&m^1431655768,e=4096),h=f+48|0,(d=(s=e+(u=f+47|0)|0)&(o=0-e|0))>>>0<=f>>>0)return w=t,0;if(0|(e=0|l[6294])&&(m=(p=0|l[6292])+d|0)>>>0<=p>>>0|m>>>0>e>>>0)return w=t,0;e:do{if(4&l[6295])n=0,x=133;else{i=0|l[6190];t:do{if(i){for(r=25184;!((e=0|l[r>>2])>>>0<=i>>>0&&(e+(0|l[(y=r+4|0)>>2])|0)>>>0>i>>>0);){if(!(e=0|l[r+8>>2])){x=118;break t}r=e}if((n=s-c&o)>>>0<2147483647)if((0|(e=0|Cr(0|n)))==((0|l[r>>2])+(0|l[y>>2])|0)){if(-1!=(0|e)){s=n,a=e,x=135;break e}}else r=e,x=126;else n=0}else x=118}while(0);do{if(118==(0|x))if(-1!=(0|(i=0|Cr(0)))&&(n=i,_=(n=(0==((_=(g=0|l[6303])-1|0)&n|0)?0:(_+n&0-g)-n|0)+d|0)+(g=0|l[6292])|0,n>>>0>f>>>0&n>>>0<2147483647)){if(0|(y=0|l[6294])&&_>>>0<=g>>>0|_>>>0>y>>>0){n=0;break}if((0|(e=0|Cr(0|n)))==(0|i)){s=n,a=i,x=135;break e}r=e,x=126}else n=0}while(0);do{if(126==(0|x)){if(i=0-n|0,!(h>>>0>n>>>0&n>>>0<2147483647&-1!=(0|r))){if(-1==(0|r)){n=0;break}s=n,a=r,x=135;break e}if((e=u-n+(e=0|l[6304])&0-e)>>>0>=2147483647){s=n,a=r,x=135;break e}if(-1==(0|Cr(0|e))){Cr(0|i),n=0;break}s=e+n|0,a=r,x=135;break e}}while(0);l[6295]=4|l[6295],x=133}}while(0);if(133==(0|x)&&d>>>0<2147483647&&!(-1==(0|(a=0|Cr(0|d)))|1^(b=(v=(y=0|Cr(0))-a|0)>>>0>(f+40|0)>>>0)|a>>>0>>0&-1!=(0|a)&-1!=(0|y)^1)&&(s=b?v:n,x=135),135==(0|x)){n=(0|l[6292])+s|0,l[6292]=n,n>>>0>(0|l[6293])>>>0&&(l[6293]=n),h=0|l[6190];do{if(h){for(n=25184;;){if((0|a)==((e=0|l[n>>2])+(r=0|l[(i=n+4|0)>>2])|0)){x=143;break}if(!(o=0|l[n+8>>2]))break;n=o}if(143==(0|x)&&0==(8&l[n+12>>2]|0)&&a>>>0>h>>>0&e>>>0<=h>>>0){l[i>>2]=r+s,x=h+(b=0==(7&(b=h+8|0)|0)?0:0-b&7)|0,b=(A=(0|l[6187])+s|0)-b|0,l[6190]=x,l[6187]=b,l[x+4>>2]=1|b,l[h+A+4>>2]=40,l[6191]=l[6306];break}for(a>>>0<(0|l[6188])>>>0&&(l[6188]=a),e=a+s|0,n=25184;;){if((0|l[n>>2])==(0|e)){x=151;break}if(!(n=0|l[n+8>>2])){e=25184;break}}if(151==(0|x)){if(!(8&l[n+12>>2])){l[n>>2]=a,l[(d=n+4|0)>>2]=(0|l[d>>2])+s,u=(d=a+(0==(7&(d=a+8|0)|0)?0:0-d&7)|0)+f|0,c=(n=e+(0==(7&(n=e+8|0)|0)?0:0-n&7)|0)-d-f|0,l[d+4>>2]=3|f;do{if((0|h)!=(0|n)){if((0|l[6189])==(0|n)){A=(0|l[6186])+c|0,l[6186]=A,l[6189]=u,l[u+4>>2]=1|A,l[u+A>>2]=A;break}if(1==(3&(e=0|l[n+4>>2])|0)){s=-8&e,r=e>>>3;e:do{if(e>>>0<256){if(e=0|l[n+8>>2],(0|(i=0|l[n+12>>2]))==(0|e)){l[6184]=l[6184]&~(1<>2]=i,l[i+8>>2]=e;break}a=0|l[n+24>>2],e=0|l[n+12>>2];do{if((0|e)==(0|n)){if(!(e=0|l[(i=4+(r=n+16|0)|0)>>2])){if(!(e=0|l[r>>2])){e=0;break}i=r}for(;;)if(0|(o=0|l[(r=e+20|0)>>2]))e=o,i=r;else{if(!(o=0|l[(r=e+16|0)>>2]))break;e=o,i=r}l[i>>2]=0}else A=0|l[n+8>>2],l[A+12>>2]=e,l[e+8>>2]=A}while(0);if(!a)break;r=25040+((i=0|l[n+28>>2])<<2)|0;do{if((0|l[r>>2])==(0|n)){if(l[r>>2]=e,0|e)break;l[6185]=l[6185]&~(1<>2])!=(0|n)&1)<<2)>>2]=e,!e)break e}while(0);if(l[e+24>>2]=a,0|(r=0|l[(i=n+16|0)>>2])&&(l[e+16>>2]=r,l[r+24>>2]=e),!(i=0|l[i+4>>2]))break;l[e+20>>2]=i,l[i+24>>2]=e}while(0);n=n+s|0,o=s+c|0}else o=c;if(l[(n=n+4|0)>>2]=-2&l[n>>2],l[u+4>>2]=1|o,l[u+o>>2]=o,n=o>>>3,o>>>0<256){i=24776+(n<<1<<2)|0,(e=0|l[6184])&(n=1<>2]:(l[6184]=e|n,n=i,e=i+8|0),l[e>>2]=u,l[n+12>>2]=u,l[u+8>>2]=n,l[u+12>>2]=i;break}n=o>>>8;do{if(n){if(o>>>0>16777215){n=31;break}n=o>>>(7+(n=14-((b=(520192+(A=n<<(x=(n+1048320|0)>>>16&8))|0)>>>16&4)|x|(n=(245760+(A<<=b)|0)>>>16&2))+(A<>>15)|0)|0)&1|n<<1}else n=0}while(0);if(r=25040+(n<<2)|0,l[u+28>>2]=n,l[4+(e=u+16|0)>>2]=0,l[e>>2]=0,!((e=0|l[6185])&(i=1<>2]=u,l[u+24>>2]=r,l[u+12>>2]=u,l[u+8>>2]=u;break}for(e=o<<(31==(0|n)?0:25-(n>>>1)|0),i=0|l[r>>2];;){if((-8&l[i+4>>2]|0)==(0|o)){x=192;break}if(!(n=0|l[(r=i+16+(e>>>31<<2)|0)>>2])){x=191;break}e<<=1,i=n}if(191==(0|x)){l[r>>2]=u,l[u+24>>2]=i,l[u+12>>2]=u,l[u+8>>2]=u;break}if(192==(0|x)){A=0|l[(x=i+8|0)>>2],l[A+12>>2]=u,l[x>>2]=u,l[u+8>>2]=A,l[u+12>>2]=i,l[u+24>>2]=0;break}}else A=(0|l[6187])+c|0,l[6187]=A,l[6190]=u,l[u+4>>2]=1|A}while(0);return w=t,0|d+8}e=25184}for(;!((n=0|l[e>>2])>>>0<=h>>>0&&(A=n+(0|l[e+4>>2])|0)>>>0>h>>>0);)e=0|l[e+8>>2];n=(e=(e=(o=A+-47|0)+(0==(7&(e=o+8|0)|0)?0:0-e&7)|0)>>>0<(o=h+16|0)>>>0?h:e)+8|0,x=a+(b=0==(7&(b=a+8|0)|0)?0:0-b&7)|0,b=(i=s+-40|0)-b|0,l[6190]=x,l[6187]=b,l[x+4>>2]=1|b,l[a+i+4>>2]=40,l[6191]=l[6306],l[(i=e+4|0)>>2]=27,l[n>>2]=l[6296],l[n+4>>2]=l[6297],l[n+8>>2]=l[6298],l[n+12>>2]=l[6299],l[6296]=a,l[6297]=s,l[6299]=0,l[6298]=n,n=e+24|0;do{x=n,l[(n=n+4|0)>>2]=7}while((x+8|0)>>>0>>0);if((0|e)!=(0|h)){if(a=e-h|0,l[i>>2]=-2&l[i>>2],l[h+4>>2]=1|a,l[e>>2]=a,n=a>>>3,a>>>0<256){i=24776+(n<<1<<2)|0,(e=0|l[6184])&(n=1<>2]:(l[6184]=e|n,n=i,e=i+8|0),l[e>>2]=h,l[n+12>>2]=h,l[h+8>>2]=n,l[h+12>>2]=i;break}if(r=25040+((i=(n=a>>>8)?a>>>0>16777215?31:a>>>(7+(i=14-((b=(520192+(A=n<<(x=(n+1048320|0)>>>16&8))|0)>>>16&4)|x|(i=(245760+(A<<=b)|0)>>>16&2))+(A<>>15)|0)|0)&1|i<<1:0)<<2)|0,l[h+28>>2]=i,l[h+20>>2]=0,l[o>>2]=0,!((n=0|l[6185])&(e=1<>2]=h,l[h+24>>2]=r,l[h+12>>2]=h,l[h+8>>2]=h;break}for(e=a<<(31==(0|i)?0:25-(i>>>1)|0),i=0|l[r>>2];;){if((-8&l[i+4>>2]|0)==(0|a)){x=213;break}if(!(n=0|l[(r=i+16+(e>>>31<<2)|0)>>2])){x=212;break}e<<=1,i=n}if(212==(0|x)){l[r>>2]=h,l[h+24>>2]=i,l[h+12>>2]=h,l[h+8>>2]=h;break}if(213==(0|x)){A=0|l[(x=i+8|0)>>2],l[A+12>>2]=h,l[x>>2]=h,l[h+8>>2]=A,l[h+12>>2]=i,l[h+24>>2]=0;break}}}else 0==(0|(A=0|l[6188]))|a>>>0>>0&&(l[6188]=a),l[6296]=a,l[6297]=s,l[6299]=0,l[6193]=l[6302],l[6192]=-1,l[6197]=24776,l[6196]=24776,l[6199]=24784,l[6198]=24784,l[6201]=24792,l[6200]=24792,l[6203]=24800,l[6202]=24800,l[6205]=24808,l[6204]=24808,l[6207]=24816,l[6206]=24816,l[6209]=24824,l[6208]=24824,l[6211]=24832,l[6210]=24832,l[6213]=24840,l[6212]=24840,l[6215]=24848,l[6214]=24848,l[6217]=24856,l[6216]=24856,l[6219]=24864,l[6218]=24864,l[6221]=24872,l[6220]=24872,l[6223]=24880,l[6222]=24880,l[6225]=24888,l[6224]=24888,l[6227]=24896,l[6226]=24896,l[6229]=24904,l[6228]=24904,l[6231]=24912,l[6230]=24912,l[6233]=24920,l[6232]=24920,l[6235]=24928,l[6234]=24928,l[6237]=24936,l[6236]=24936,l[6239]=24944,l[6238]=24944,l[6241]=24952,l[6240]=24952,l[6243]=24960,l[6242]=24960,l[6245]=24968,l[6244]=24968,l[6247]=24976,l[6246]=24976,l[6249]=24984,l[6248]=24984,l[6251]=24992,l[6250]=24992,l[6253]=25e3,l[6252]=25e3,l[6255]=25008,l[6254]=25008,l[6257]=25016,l[6256]=25016,l[6259]=25024,l[6258]=25024,x=a+(b=0==(7&(b=a+8|0)|0)?0:0-b&7)|0,b=(A=s+-40|0)-b|0,l[6190]=x,l[6187]=b,l[x+4>>2]=1|b,l[a+A+4>>2]=40,l[6191]=l[6306]}while(0);if((n=0|l[6187])>>>0>f>>>0)return b=n-f|0,l[6187]=b,x=(A=0|l[6190])+f|0,l[6190]=x,l[x+4>>2]=1|b,l[A+4>>2]=3|f,w=t,0|A+8}return l[(A=25296)>>2]=12,w=t,0}function gi(e){var t=0,n=0,i=0,r=0,o=0,a=0,s=0,c=0;if(e|=0){n=e+-8|0,r=0|l[6188],c=n+(t=-8&(e=0|l[e+-4>>2]))|0;do{if(1&e)s=n,a=n;else{if(i=0|l[n>>2],!(3&e))return;if(o=i+t|0,(a=n+(0-i)|0)>>>0>>0)return;if((0|l[6189])==(0|a)){if(3!=(3&(t=0|l[(e=c+4|0)>>2])|0)){s=a,t=o;break}return l[6186]=o,l[e>>2]=-2&t,l[a+4>>2]=1|o,void(l[a+o>>2]=o)}if(n=i>>>3,i>>>0<256){if(e=0|l[a+8>>2],(0|(t=0|l[a+12>>2]))==(0|e)){l[6184]=l[6184]&~(1<>2]=t,l[t+8>>2]=e,s=a,t=o;break}r=0|l[a+24>>2],e=0|l[a+12>>2];do{if((0|e)==(0|a)){if(!(e=0|l[(t=4+(n=a+16|0)|0)>>2])){if(!(e=0|l[n>>2])){e=0;break}t=n}for(;;)if(0|(i=0|l[(n=e+20|0)>>2]))e=i,t=n;else{if(!(i=0|l[(n=e+16|0)>>2]))break;e=i,t=n}l[t>>2]=0}else s=0|l[a+8>>2],l[s+12>>2]=e,l[e+8>>2]=s}while(0);if(r){if(t=0|l[a+28>>2],(0|l[(n=25040+(t<<2)|0)>>2])==(0|a)){if(l[n>>2]=e,!e){l[6185]=l[6185]&~(1<>2])!=(0|a)&1)<<2)>>2]=e,!e){s=a,t=o;break}l[e+24>>2]=r,0|(n=0|l[(t=a+16|0)>>2])&&(l[e+16>>2]=n,l[n+24>>2]=e),(t=0|l[t+4>>2])?(l[e+20>>2]=t,l[t+24>>2]=e,s=a,t=o):(s=a,t=o)}else s=a,t=o}}while(0);if(!(a>>>0>=c>>>0)&&1&(i=0|l[(e=c+4|0)>>2])){if(2&i)l[e>>2]=-2&i,l[s+4>>2]=1|t,l[a+t>>2]=t,r=t;else{if((0|l[6190])==(0|c)){if(c=(0|l[6187])+t|0,l[6187]=c,l[6190]=s,l[s+4>>2]=1|c,(0|s)!=(0|l[6189]))return;return l[6189]=0,void(l[6186]=0)}if((0|l[6189])==(0|c))return c=(0|l[6186])+t|0,l[6186]=c,l[6189]=a,l[s+4>>2]=1|c,void(l[a+c>>2]=c);r=(-8&i)+t|0,n=i>>>3;do{if(i>>>0<256){if(t=0|l[c+8>>2],(0|(e=0|l[c+12>>2]))==(0|t)){l[6184]=l[6184]&~(1<>2]=e,l[e+8>>2]=t;break}o=0|l[c+24>>2],e=0|l[c+12>>2];do{if((0|e)==(0|c)){if(!(e=0|l[(t=4+(n=c+16|0)|0)>>2])){if(!(e=0|l[n>>2])){n=0;break}t=n}for(;;)if(0|(i=0|l[(n=e+20|0)>>2]))e=i,t=n;else{if(!(i=0|l[(n=e+16|0)>>2]))break;e=i,t=n}l[t>>2]=0,n=e}else n=0|l[c+8>>2],l[n+12>>2]=e,l[e+8>>2]=n,n=e}while(0);if(0|o){if(e=0|l[c+28>>2],(0|l[(t=25040+(e<<2)|0)>>2])==(0|c)){if(l[t>>2]=n,!n){l[6185]=l[6185]&~(1<>2])!=(0|c)&1)<<2)>>2]=n,!n)break;l[n+24>>2]=o,0|(t=0|l[(e=c+16|0)>>2])&&(l[n+16>>2]=t,l[t+24>>2]=n),0|(e=0|l[e+4>>2])&&(l[n+20>>2]=e,l[e+24>>2]=n)}}while(0);if(l[s+4>>2]=1|r,l[a+r>>2]=r,(0|s)==(0|l[6189]))return void(l[6186]=r)}if(e=r>>>3,r>>>0<256)return n=24776+(e<<1<<2)|0,(t=0|l[6184])&(e=1<>2]:(l[6184]=t|e,e=n,t=n+8|0),l[t>>2]=s,l[e+12>>2]=s,l[s+8>>2]=e,void(l[s+12>>2]=n);i=25040+((e=(e=r>>>8)?r>>>0>16777215?31:r>>>(7+(e=14-((o=(520192+(c=e<<(a=(e+1048320|0)>>>16&8))|0)>>>16&4)|a|(e=(245760+(c<<=o)|0)>>>16&2))+(c<>>15)|0)|0)&1|e<<1:0)<<2)|0,l[s+28>>2]=e,l[s+20>>2]=0,l[s+16>>2]=0,t=0|l[6185],n=1<>>1)|0),n=0|l[i>>2];;){if((-8&l[n+4>>2]|0)==(0|r)){e=73;break}if(!(e=0|l[(i=n+16+(t>>>31<<2)|0)>>2])){e=72;break}t<<=1,n=e}if(72==(0|e)){l[i>>2]=s,l[s+24>>2]=n,l[s+12>>2]=s,l[s+8>>2]=s;break}if(73==(0|e)){c=0|l[(a=n+8|0)>>2],l[c+12>>2]=s,l[a>>2]=s,l[s+8>>2]=c,l[s+12>>2]=n,l[s+24>>2]=0;break}}else l[6185]=t|n,l[i>>2]=s,l[s+24>>2]=i,l[s+12>>2]=s,l[s+8>>2]=s}while(0);if(c=(0|l[6192])-1|0,l[6192]=c,!c){for(e=25192;e=0|l[e>>2];)e=e+8|0;l[6192]=-1}}}}function _i(e,t){var n=0,i=0,r=0,o=0,a=0,s=0;s=(e|=0)+(t|=0)|0,n=0|l[e+4>>2];do{if(1&n)a=e;else{if(r=0|l[e>>2],!(3&n))return;if(a=e+(0-r)|0,t=r+t|0,(0|l[6189])==(0|a)){if(3!=(3&(n=0|l[(e=s+4|0)>>2])|0))break;return l[6186]=t,l[e>>2]=-2&n,l[a+4>>2]=1|t,void(l[s>>2]=t)}if(i=r>>>3,r>>>0<256){if(e=0|l[a+8>>2],(0|(n=0|l[a+12>>2]))==(0|e)){l[6184]=l[6184]&~(1<>2]=n,l[n+8>>2]=e;break}o=0|l[a+24>>2],e=0|l[a+12>>2];do{if((0|e)==(0|a)){if(!(e=0|l[(n=4+(i=a+16|0)|0)>>2])){if(!(e=0|l[i>>2])){e=0;break}n=i}for(;;)if(0|(r=0|l[(i=e+20|0)>>2]))e=r,n=i;else{if(!(r=0|l[(i=e+16|0)>>2]))break;e=r,n=i}l[n>>2]=0}else r=0|l[a+8>>2],l[r+12>>2]=e,l[e+8>>2]=r}while(0);if(o){if(n=0|l[a+28>>2],(0|l[(i=25040+(n<<2)|0)>>2])==(0|a)){if(l[i>>2]=e,!e){l[6185]=l[6185]&~(1<>2])!=(0|a)&1)<<2)>>2]=e,!e)break;l[e+24>>2]=o,0|(i=0|l[(n=a+16|0)>>2])&&(l[e+16>>2]=i,l[i+24>>2]=e),(n=0|l[n+4>>2])&&(l[e+20>>2]=n,l[n+24>>2]=e)}}}while(0);if(2&(i=0|l[(e=s+4|0)>>2]))l[e>>2]=-2&i,l[a+4>>2]=1|t,l[a+t>>2]=t,r=t;else{if((0|l[6190])==(0|s)){if(s=(0|l[6187])+t|0,l[6187]=s,l[6190]=a,l[a+4>>2]=1|s,(0|a)!=(0|l[6189]))return;return l[6189]=0,void(l[6186]=0)}if((0|l[6189])==(0|s))return s=(0|l[6186])+t|0,l[6186]=s,l[6189]=a,l[a+4>>2]=1|s,void(l[a+s>>2]=s);r=(-8&i)+t|0,n=i>>>3;do{if(i>>>0<256){if(e=0|l[s+8>>2],(0|(t=0|l[s+12>>2]))==(0|e)){l[6184]=l[6184]&~(1<>2]=t,l[t+8>>2]=e;break}o=0|l[s+24>>2],t=0|l[s+12>>2];do{if((0|t)==(0|s)){if(!(t=0|l[(e=4+(n=s+16|0)|0)>>2])){if(!(t=0|l[n>>2])){n=0;break}e=n}for(;;)if(0|(i=0|l[(n=t+20|0)>>2]))t=i,e=n;else{if(!(i=0|l[(n=t+16|0)>>2]))break;t=i,e=n}l[e>>2]=0,n=t}else n=0|l[s+8>>2],l[n+12>>2]=t,l[t+8>>2]=n,n=t}while(0);if(0|o){if(t=0|l[s+28>>2],(0|l[(e=25040+(t<<2)|0)>>2])==(0|s)){if(l[e>>2]=n,!n){l[6185]=l[6185]&~(1<>2])!=(0|s)&1)<<2)>>2]=n,!n)break;l[n+24>>2]=o,0|(e=0|l[(t=s+16|0)>>2])&&(l[n+16>>2]=e,l[e+24>>2]=n),0|(t=0|l[t+4>>2])&&(l[n+20>>2]=t,l[t+24>>2]=n)}}while(0);if(l[a+4>>2]=1|r,l[a+r>>2]=r,(0|a)==(0|l[6189]))return void(l[6186]=r)}if(t=r>>>3,r>>>0<256)return n=24776+(t<<1<<2)|0,(e=0|l[6184])&(t=1<>2]:(l[6184]=e|t,t=n,e=n+8|0),l[e>>2]=a,l[t+12>>2]=a,l[a+8>>2]=t,void(l[a+12>>2]=n);if(t=(t=r>>>8)?r>>>0>16777215?31:r>>>(7+(t=14-((i=(520192+(s=t<<(o=(t+1048320|0)>>>16&8))|0)>>>16&4)|o|(t=(245760+(s<<=i)|0)>>>16&2))+(s<>>15)|0)|0)&1|t<<1:0,i=25040+(t<<2)|0,l[a+28>>2]=t,l[a+20>>2]=0,l[a+16>>2]=0,!((e=0|l[6185])&(n=1<>2]=a,l[a+24>>2]=i,l[a+12>>2]=a,void(l[a+8>>2]=a);for(e=r<<(31==(0|t)?0:25-(t>>>1)|0),n=0|l[i>>2];;){if((-8&l[n+4>>2]|0)==(0|r)){t=69;break}if(!(t=0|l[(i=n+16+(e>>>31<<2)|0)>>2])){t=68;break}e<<=1,n=t}return 68==(0|t)?(l[i>>2]=a,l[a+24>>2]=n,l[a+12>>2]=a,void(l[a+8>>2]=a)):69==(0|t)?(s=0|l[(o=n+8|0)>>2],l[s+12>>2]=a,l[o>>2]=a,l[a+8>>2]=s,l[a+12>>2]=n,void(l[a+24>>2]=0)):void 0}function yi(e,t){t|=0;var n,i=0,r=0,o=0,a=0,s=0;if((e=(e|=0)>>>0>16?e:16)+-1&e)for(i=16;;){if(!(i>>>0>>0)){e=i;break}i<<=1}if((-64-e|0)>>>0<=t>>>0)return l[(a=25296)>>2]=12,0;if(!(i=0|mi(12+(n=t>>>0<11?16:t+11&-8)+e|0)))return 0;o=i+-8|0;do{if(e+-1&i){if(t=(r=((r=(i+e+-1&0-e)-8|0)-(t=o)|0)>>>0>15?r:r+e|0)-t|0,i=(-8&(s=0|l[(e=i+-4|0)>>2]))-t|0,3&s){l[(s=r+4|0)>>2]=i|1&l[s>>2]|2,l[(i=r+i+4|0)>>2]=1|l[i>>2],l[e>>2]=t|1&l[e>>2]|2,l[s>>2]=1|l[s>>2],_i(o,t),e=r,t=r;break}l[r>>2]=(0|l[o>>2])+t,l[r+4>>2]=i,e=r,t=r;break}e=o,t=o}while(0);return 3&(i=0|l[(e=e+4|0)>>2])|0&&(a=-8&i)>>>0>(n+16|0)>>>0&&(s=a-n|0,o=t+n|0,l[e>>2]=n|1&i|2,l[o+4>>2]=3|s,l[(a=t+a+4|0)>>2]=1|l[a>>2],_i(o,s)),0|t+8}function vi(e,t,n){e|=0,t|=0,n|=0;var i=0;do{if(8!=(0|t)){if(0!=(3&t|0)|0==(0|(i=t>>>2)))return 22;if(i+1073741823&i|0)return 22;if((-64-t|0)>>>0>>0)return 12;t=0|yi(t>>>0>16?t:16,n);break}t=0|mi(n)}while(0);return t?(l[e>>2]=t,0|(e=0)):0|(e=12)}function bi(e,t,n){t|=0,n|=0;var i,r,o,a,s,c=0,h=0,u=0,d=0,f=0,p=0;s=w,w=w+48|0,a=s+16|0,u=s,h=s+32|0,c=0|l[(r=28+(e|=0)|0)>>2],l[h>>2]=c,c=(0|l[(o=e+20|0)>>2])-c|0,l[h+4>>2]=c,l[h+8>>2]=t,l[h+12>>2]=n,c=c+n|0,i=e+60|0,l[u>>2]=l[i>>2],l[u+4>>2]=h,l[u+8>>2]=2,u=0|wi(0|N(146,0|u));e:do{if((0|c)!=(0|u)){for(t=2;!((0|u)<0);)if(c=c-u|0,t=t+((f=u>>>0>(p=0|l[h+4>>2])>>>0)<<31>>31)|0,p=u-(f?p:0)|0,l[(h=f?h+8|0:h)>>2]=(0|l[h>>2])+p,l[(f=h+4|0)>>2]=(0|l[f>>2])-p,l[a>>2]=l[i>>2],l[a+4>>2]=h,l[a+8>>2]=t,(0|c)==(0|(u=0|wi(0|N(146,0|a))))){d=3;break e}l[e+16>>2]=0,l[r>>2]=0,l[o>>2]=0,l[e>>2]=32|l[e>>2],n=2==(0|t)?0:n-(0|l[h+4>>2])|0}else d=3}while(0);return 3==(0|d)&&(p=0|l[e+44>>2],l[e+16>>2]=p+(0|l[e+48>>2]),l[r>>2]=p,l[o>>2]=p),w=s,0|n}function wi(e){return(e|=0)>>>0>4294963200&&(l[6324]=0-e,e=-1),0|e}function xi(e,t){t|=0;var n=0,i=0;if(n=0|r[(e|=0)>>0],i=0|r[t>>0],n<<24>>24==0||n<<24>>24!=i<<24>>24)e=i;else{do{t=t+1|0,n=0|r[(e=e+1|0)>>0],i=0|r[t>>0]}while(n<<24>>24!=0&&n<<24>>24==i<<24>>24);e=i}return(255&n)-(255&e)|0}function Ai(e){var t,n=0,i=0;t=e|=0;e:do{if(3&t)for(n=t;;){if(!(0|r[e>>0])){e=n;break e}if(!(3&(n=e=e+1|0))){i=4;break}}else i=4}while(0);if(4==(0|i)){for(;!((-2139062144&(n=0|l[e>>2])^-2139062144)&n+-16843009);)e=e+4|0;if((255&n)<<24>>24)do{e=e+1|0}while(0!=(0|r[e>>0]))}return e-t|0}function Si(e,t){var n;return t|=0,((0|Mi(e|=0,1,n=0|Ai(e),t))!=(0|n))<<31>>31|0}function Mi(e,t,n,i){e|=0,i|=0;var r;return r=0|I(n|=0,t|=0),n=0==(0|t)?0:n,(0|l[i+76>>2])>-1?(!0,e=0|ki(e,r,i)):e=0|ki(e,r,i),(0|e)!=(0|r)&&(n=(e>>>0)/(t>>>0)|0),0|n}function Ei(e,t){e|=0;var n,i,o,a=0,s=0,c=0,u=0;o=w,w=w+16|0,i=255&(t|=0),r[(n=o)>>0]=i,(c=0|l[(s=e+16|0)>>2])?u=4:0|Ti(e)?a=-1:(c=0|l[s>>2],u=4);do{if(4==(0|u)){if((s=0|l[(u=e+20|0)>>2])>>>0>>0&&(0|(a=255&t))!=(0|r[e+75>>0])){l[u>>2]=s+1,r[s>>0]=i;break}a=1==(0|Yr[63&l[e+36>>2]](e,n,1))?0|h[n>>0]:-1}}while(0);return w=o,0|a}function Ti(e){var t=0,n=0;return n=0|r[(t=74+(e|=0)|0)>>0],r[t>>0]=n+255|n,8&(t=0|l[e>>2])?(l[e>>2]=32|t,e=-1):(l[e+8>>2]=0,l[e+4>>2]=0,n=0|l[e+44>>2],l[e+28>>2]=n,l[e+20>>2]=n,l[e+16>>2]=n+(0|l[e+48>>2]),e=0),0|e}function ki(e,t,n){e|=0,t|=0;var i=0,o=0,a=0,s=0,c=0;(o=0|l[(i=16+(n|=0)|0)>>2])?a=5:0|Ti(n)?i=0:(o=0|l[i>>2],a=5);e:do{if(5==(0|a)){if(i=s=0|l[(c=n+20|0)>>2],(o-s|0)>>>0>>0){i=0|Yr[63&l[n+36>>2]](n,e,t);break}t:do{if((0|r[n+75>>0])>-1){for(s=t;;){if(!s){a=0,o=e;break t}if(10==(0|r[e+(o=s+-1|0)>>0]))break;s=o}if((i=0|Yr[63&l[n+36>>2]](n,e,s))>>>0>>0)break e;a=s,o=e+s|0,t=t-s|0,i=0|l[c>>2]}else a=0,o=e}while(0);Er(0|i,0|o,0|t),l[c>>2]=(0|l[c>>2])+t,i=a+t|0}}while(0);return 0|i}function Ii(e,t,n){t|=0,n|=0;var i,o=0,a=0,s=0,c=0,h=0,u=0,d=0,f=0,p=0;i=1794895138+(0|l[(e|=0)>>2])|0,s=0|Ci(0|l[e+8>>2],i),o=0|Ci(0|l[e+12>>2],i),a=0|Ci(0|l[e+16>>2],i);e:do{if(s>>>0>>2>>>0&&(p=t-(s<<2)|0,o>>>0